@nextclaw/ui 0.15.10 → 0.15.11

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 (360) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/assets/{abnfDiagram-VRR7QNED-BYpK0F5F.js → abnfDiagram-VRR7QNED-M4g_AyR8.js} +1 -1
  3. package/dist/assets/{aiden0z-pptx-renderer.es-D87ywFdC.js → aiden0z-pptx-renderer.es-Bd99vut2.js} +1 -1
  4. package/dist/assets/api-pbx14YAL.js +13 -0
  5. package/dist/assets/app-presenter-provider-Q6u2xBAn.js +106 -0
  6. package/dist/assets/appearance-settings-page-D9wJdf-0.js +1 -0
  7. package/dist/assets/{arc-DFELHWM2.js → arc-IO7WNWOB.js} +1 -1
  8. package/dist/assets/architecture-TIHT7OUA-Cii4JyA2.js +1 -0
  9. package/dist/assets/{architectureDiagram-ZJ3FMSHR-CvRhdovL.js → architectureDiagram-ZJ3FMSHR-Dc-lvdUh.js} +1 -1
  10. package/dist/assets/{blockDiagram-677ZJIJ3-DVYNkbR_.js → blockDiagram-677ZJIJ3-CcsoWpIY.js} +1 -1
  11. package/dist/assets/{book-open-w3160PZf.js → book-open-DZyssdCc.js} +1 -1
  12. package/dist/assets/{c4Diagram-LMCZKHZV-B1w-iwRe.js → c4Diagram-LMCZKHZV-Bsrtg6b2.js} +1 -1
  13. package/dist/assets/card-D7l-gWkY.js +1 -0
  14. package/dist/assets/channel-BSKkTPe8.js +1 -0
  15. package/dist/assets/channels-list-page-B3qW3T-B.js +8 -0
  16. package/dist/assets/chat-page-DUI_Jm6r.js +1 -0
  17. package/dist/assets/chunk-2Q5K7J3B-CDMOR1xZ.js +1 -0
  18. package/dist/assets/{chunk-32BRIVSS-kG3lg0bC.js → chunk-32BRIVSS-Bt08t8oG.js} +1 -1
  19. package/dist/assets/{chunk-52WLFC77-BLeB7iGk.js → chunk-52WLFC77-Ddx68Xzx.js} +1 -1
  20. package/dist/assets/{chunk-5FCAYU7R-BQga1Rr7.js → chunk-5FCAYU7R-B7p9_q55.js} +1 -1
  21. package/dist/assets/{chunk-5HE753X5-DU81hkcF.js → chunk-5HE753X5-D52KvdTm.js} +1 -1
  22. package/dist/assets/{chunk-5JV3BV7I-C2bAx0m7.js → chunk-5JV3BV7I-C329h8nI.js} +1 -1
  23. package/dist/assets/{chunk-5TONJI2A-BExIIgWY.js → chunk-5TONJI2A-BZyUBxWt.js} +1 -1
  24. package/dist/assets/{chunk-5VM5RSS4-C3XB05yh.js → chunk-5VM5RSS4-BUiYXZmu.js} +1 -1
  25. package/dist/assets/{chunk-7BUUIJ7U-JiyRtrGu.js → chunk-7BUUIJ7U-B7o-mn4r.js} +1 -1
  26. package/dist/assets/{chunk-BIQX33UG-BZRV20pI.js → chunk-BIQX33UG-Bey9GoRP.js} +1 -1
  27. package/dist/assets/{chunk-C7G6YPKG-AsyDSQ9j.js → chunk-C7G6YPKG-C6tosszM.js} +1 -1
  28. package/dist/assets/{chunk-CQNSW5MT-iN-fiXVA.js → chunk-CQNSW5MT-BNrdkgGQ.js} +1 -1
  29. package/dist/assets/{chunk-CYSBUYHQ-DhC_TRzI.js → chunk-CYSBUYHQ-DHODFeyB.js} +1 -1
  30. package/dist/assets/{chunk-EMLP6XTP-QFLK8R6d.js → chunk-EMLP6XTP-BcmLjrcq.js} +1 -1
  31. package/dist/assets/{chunk-EX3LRPZG-DzUwhkCz.js → chunk-EX3LRPZG-r-_eEtJI.js} +1 -1
  32. package/dist/assets/{chunk-FWX5IMBZ-DFelpZBy.js → chunk-FWX5IMBZ-DOObDWbf.js} +2 -2
  33. package/dist/assets/{chunk-HOUHSVGY-BMPwFEwN.js → chunk-HOUHSVGY-Bd0FnbWZ.js} +1 -1
  34. package/dist/assets/{chunk-ICXQ74PX-DH8NJMok.js → chunk-ICXQ74PX-ntNwAm4_.js} +1 -1
  35. package/dist/assets/{chunk-JG7HCLWE-D-95AsO4.js → chunk-JG7HCLWE-YtRpblZN.js} +1 -1
  36. package/dist/assets/{chunk-JWPE2WC7-DIaTv8kx.js → chunk-JWPE2WC7-De5-D9ta.js} +1 -1
  37. package/dist/assets/{chunk-MOJQB5TN-BPFLzWgj.js → chunk-MOJQB5TN-CdvKhyp2.js} +1 -1
  38. package/dist/assets/{chunk-MOZMSUNE-DR_fzxG0.js → chunk-MOZMSUNE-DJMMN_lu.js} +1 -1
  39. package/dist/assets/{chunk-OGEWGWER-TIcEoPPH.js → chunk-OGEWGWER-DOFWVw3O.js} +1 -1
  40. package/dist/assets/{chunk-OSBZ3O6U-BALNvSfG.js → chunk-OSBZ3O6U-DZkrIN9r.js} +1 -1
  41. package/dist/assets/{chunk-PUDLZKDR-I-EXhf_k.js → chunk-PUDLZKDR-D1wma2Yf.js} +1 -1
  42. package/dist/assets/{chunk-Q4XR5HBZ-uvIGstBS.js → chunk-Q4XR5HBZ-CjPy94Lz.js} +1 -1
  43. package/dist/assets/{chunk-QBLGF6JB-r-TjLdxa.js → chunk-QBLGF6JB-Hy1bEgS-.js} +1 -1
  44. package/dist/assets/{chunk-R7FJI6CG-N-1LDgvy.js → chunk-R7FJI6CG-CUPIHyh-.js} +1 -1
  45. package/dist/assets/{chunk-RYQCIY6F-jxNASx65.js → chunk-RYQCIY6F-D5Ua4pcv.js} +1 -1
  46. package/dist/assets/{chunk-U6XO7XAA-Cphbuc7q.js → chunk-U6XO7XAA-DaUQcqb7.js} +1 -1
  47. package/dist/assets/{chunk-V7JOEXUC-BLEuBf1s.js → chunk-V7JOEXUC-DX2zLfQe.js} +1 -1
  48. package/dist/assets/chunk-VAUOI2AC-BRvqNW76.js +1 -0
  49. package/dist/assets/{chunk-VR4S4FIN-BAUbR0ke.js → chunk-VR4S4FIN-CFA-WQik.js} +1 -1
  50. package/dist/assets/{chunk-WYO6CB5R-Do6SJrnY.js → chunk-WYO6CB5R-Bk2HeDvJ.js} +2 -2
  51. package/dist/assets/chunk-XXDRQBXY-CwX_mqJ3.js +1 -0
  52. package/dist/assets/{chunk-YOTPTUD7-CQqvMTCr.js → chunk-YOTPTUD7-DUG4FpBN.js} +1 -1
  53. package/dist/assets/{chunk-ZGVPDNZ5-B7kWWaXv.js → chunk-ZGVPDNZ5-70JdIGo0.js} +1 -1
  54. package/dist/assets/{chunk-ZIRB5QZD-DTU0cDNh.js → chunk-ZIRB5QZD-XZdgBt5L.js} +1 -1
  55. package/dist/assets/classDiagram-OUVF2IWQ-RzbGxG77.js +1 -0
  56. package/dist/assets/classDiagram-v2-EOCWNBFH-C_gWB7WT.js +1 -0
  57. package/dist/assets/config-split-page-DFEKStD7.js +1 -0
  58. package/dist/assets/confirm-dialog-7wpxfMCp.js +5 -0
  59. package/dist/assets/{cose-bilkent-JH36ORCC-B9LrtV-q.js → cose-bilkent-JH36ORCC-B-PQoGX-.js} +1 -1
  60. package/dist/assets/cynefin-VYW2F7L2-fSLIS0X3.js +1 -0
  61. package/dist/assets/{cynefinDiagram-TSTJHNR4-BfjvW4su.js → cynefinDiagram-TSTJHNR4-BoLCPEM0.js} +1 -1
  62. package/dist/assets/{dagre-DkiXZKkL.js → dagre-D7Ie4eXr.js} +1 -1
  63. package/dist/assets/{dagre-VKFMJZFB-B1pQKQSY.js → dagre-VKFMJZFB-CKRrwZA-.js} +1 -1
  64. package/dist/assets/desktop-update-config-DP6IbxBO.js +1 -0
  65. package/dist/assets/{diagram-FQU43EPY-cB4EZdaP.js → diagram-FQU43EPY-CASL1J3_.js} +1 -1
  66. package/dist/assets/{diagram-G47NLZAW-CtW8im1B.js → diagram-G47NLZAW-CvLPBIzf.js} +1 -1
  67. package/dist/assets/{diagram-NH7WQ7WH-BDCtrCCm.js → diagram-NH7WQ7WH-Ba6fGdYP.js} +1 -1
  68. package/dist/assets/{diagram-OA4YK3LP-DEMJ42Gt.js → diagram-OA4YK3LP-DkpfgEjM.js} +1 -1
  69. package/dist/assets/{diagram-WEI45ONY-CdCcxSYU.js → diagram-WEI45ONY-BP5UMVsN.js} +1 -1
  70. package/dist/assets/{dist-DEJlYi0E.js → dist-B9UN0HrS.js} +1 -1
  71. package/dist/assets/doc-browser-D7klPMHs.js +1 -0
  72. package/dist/assets/{doc-browser-context-CpvHiuQG.js → doc-browser-context-Bw9m83Jp.js} +1 -1
  73. package/dist/assets/doc-browser-wgEeLkn1.js +1 -0
  74. package/dist/assets/{docx-preview-zis3U0Fa.js → docx-preview-D0tp3a9T.js} +1 -1
  75. package/dist/assets/{ebnfDiagram-CCIWWBDH-DBZETBwE.js → ebnfDiagram-CCIWWBDH-TJKbUcmc.js} +1 -1
  76. package/dist/assets/{erDiagram-Q63AITRT-y2zDXprP.js → erDiagram-Q63AITRT-DzGPKkKH.js} +1 -1
  77. package/dist/assets/eventmodeling-45OFAUF4-XVcQGgha.js +1 -0
  78. package/dist/assets/eye-IVMB0Rrz.js +1 -0
  79. package/dist/assets/flowDiagram-23GEKE2U-BiFSctqz.js +1 -0
  80. package/dist/assets/{form-actions-5OsDRt0g.js → form-actions-DrFAgO58.js} +1 -1
  81. package/dist/assets/{ganttDiagram-NO4QXBWP-D2DP344e.js → ganttDiagram-NO4QXBWP-JhJzsGp2.js} +1 -1
  82. package/dist/assets/gitGraph-TEB2WS4Q-C014uXqS.js +1 -0
  83. package/dist/assets/{gitGraphDiagram-IHSO6WYX-D37uiwA2.js → gitGraphDiagram-IHSO6WYX-DZ1CKMj8.js} +1 -1
  84. package/dist/assets/index-D297NGOb.js +2 -0
  85. package/dist/assets/index-DqZoodZL.css +1 -0
  86. package/dist/assets/info-DKCQHKI2-CQ2qjGhU.js +1 -0
  87. package/dist/assets/{infoDiagram-FWYZ7A6U-CG-WAIRi.js → infoDiagram-FWYZ7A6U-BNXNKfRQ.js} +1 -1
  88. package/dist/assets/{ishikawaDiagram-FXEZZL3T-WeCTnW0f.js → ishikawaDiagram-FXEZZL3T-DoiEfjNw.js} +1 -1
  89. package/dist/assets/{journeyDiagram-5HDEW3XC-DUFBW9Td.js → journeyDiagram-5HDEW3XC-D6oK2HSy.js} +1 -1
  90. package/dist/assets/{kanban-definition-HUTT4EX6-B0lxgMpg.js → kanban-definition-HUTT4EX6-B2UnLOH-.js} +1 -1
  91. package/dist/assets/{line-B78frP_c.js → line-BM7PoxY5.js} +1 -1
  92. package/dist/assets/{linear-C6lVEcb2.js → linear-B3DiqMjk.js} +1 -1
  93. package/dist/assets/loader-circle-DDgFo4Kv.js +1 -0
  94. package/dist/assets/{logo-badge-TdPa95AC.js → logo-badge-DoZOVuPr.js} +1 -1
  95. package/dist/assets/{map-Bdri5UL5.js → map-BAAdHTqR.js} +1 -1
  96. package/dist/assets/mcp-marketplace-page-BtNExfMn.js +1 -0
  97. package/dist/assets/{mcp-marketplace-page-cm3ifaKu.js → mcp-marketplace-page-C151EGP-.js} +2 -2
  98. package/dist/assets/{mermaid-parser.core-Cue18vLo.js → mermaid-parser.core-BeMviefY.js} +2 -2
  99. package/dist/assets/{mermaid.core-CXwWRh5i.js → mermaid.core-D0Q77r9I.js} +3 -3
  100. package/dist/assets/{mindmap-definition-LN4V7U3C-CFxz0P0-.js → mindmap-definition-LN4V7U3C-BQ7r7bR8.js} +1 -1
  101. package/dist/assets/model-config-page-BmfQzc52.js +1 -0
  102. package/dist/assets/navigation-link-CJw6FLOj.js +1 -0
  103. package/dist/assets/{ordinal-Cbd8t4LB.js → ordinal-Bt2N4IkA.js} +1 -1
  104. package/dist/assets/packet-7NZHBO7P-6IFyydij.js +1 -0
  105. package/dist/assets/{pegDiagram-2B236MQR-B_Qt9zyT.js → pegDiagram-2B236MQR-B-C9-LGz.js} +1 -1
  106. package/dist/assets/pie-RZYD4A2V-spXQC_wr.js +1 -0
  107. package/dist/assets/{pieDiagram-ENE6RG2P-CRQdSuwS.js → pieDiagram-ENE6RG2P-CtirZLtn.js} +1 -1
  108. package/dist/assets/plus-CYxLSfLh.js +1 -0
  109. package/dist/assets/{popover-EulxhA0q.js → popover-DitLJE6k.js} +1 -1
  110. package/dist/assets/provider-scoped-model-input-CuAtduIc.js +1 -0
  111. package/dist/assets/providers-config-page-CrmuY4DC.js +1 -0
  112. package/dist/assets/{quadrantDiagram-ABIIQ3AL-D5kPpttq.js → quadrantDiagram-ABIIQ3AL-DiBWAzDU.js} +1 -1
  113. package/dist/assets/radar-I7S5WNFK-DWVA8lvY.js +1 -0
  114. package/dist/assets/railroad-3IZDKUUU-Ce51u8y1.js +1 -0
  115. package/dist/assets/railroad-abnf-AHOZXSZD-D7i7cqI_.js +1 -0
  116. package/dist/assets/railroad-ebnf-EBAXGLYW-BEg2hcPs.js +1 -0
  117. package/dist/assets/railroad-peg-LSFZ7HO6-CxROSzbi.js +1 -0
  118. package/dist/assets/{railroadDiagram-RFXS5EU6-DGh_TGlQ.js → railroadDiagram-RFXS5EU6-CP6b3PBI.js} +1 -1
  119. package/dist/assets/{react-Bb0EYsLS.js → react-CTDaaQ9V.js} +1 -1
  120. package/dist/assets/{refresh-cw-CexL11m1.js → refresh-cw-E5qTlQY6.js} +1 -1
  121. package/dist/assets/remote-YzPpOPmK.js +1 -0
  122. package/dist/assets/{requirementDiagram-TGXJPOKE-EmFph0H_.js → requirementDiagram-TGXJPOKE-D8YV0-Jz.js} +1 -1
  123. package/dist/assets/rotate-cw-BXeiDT6C.js +1 -0
  124. package/dist/assets/runtime-config-page-1fPJJvo5.js +1 -0
  125. package/dist/assets/{sankeyDiagram-HTMAVEWB-BXWB5Ugi.js → sankeyDiagram-HTMAVEWB-C2vA4ojE.js} +1 -1
  126. package/dist/assets/{save-DtccrZld.js → save-CTiZvAd2.js} +1 -1
  127. package/dist/assets/{search-BArc_WOX.js → search-CztGmpnR.js} +1 -1
  128. package/dist/assets/search-config-page-D3jVALZU.js +1 -0
  129. package/dist/assets/secrets-config-page-CxWLQCjZ.js +3 -0
  130. package/dist/assets/security-config-DEyj4WBh.js +1 -0
  131. package/dist/assets/{select-C9FB0jlt.js → select-BPVI2dQ_.js} +1 -1
  132. package/dist/assets/{sequenceDiagram-DBY2YBRQ-ClKnO7v0.js → sequenceDiagram-DBY2YBRQ-B9LBmpUo.js} +1 -1
  133. package/dist/assets/settings-2-Cd7QaBsq.js +1 -0
  134. package/dist/assets/{sizeCapture-X5ZJPWSS-DSo-t5ou.js → sizeCapture-X5ZJPWSS-9UIfya9-.js} +1 -1
  135. package/dist/assets/skeleton-CUpAXGoe.js +1 -0
  136. package/dist/assets/{src-Dad2ZbCt.js → src-DKf77Yzo.js} +1 -1
  137. package/dist/assets/{stateDiagram-2N3HPSRC-BvAalBfz.js → stateDiagram-2N3HPSRC-oTW44vds.js} +1 -1
  138. package/dist/assets/stateDiagram-v2-6OUMAXLB-Bui4RXQK.js +1 -0
  139. package/dist/assets/{swimlanes-5IMT3BWC-DdVqVa1a.js → swimlanes-5IMT3BWC-Cf7lcsay.js} +2 -2
  140. package/dist/assets/swimlanesDiagram-G3AALYLV-DTwUsCBz.js +8 -0
  141. package/dist/assets/{tabs-D_mjyOOf.js → tabs-DrUmYwEQ.js} +1 -1
  142. package/dist/assets/{tag-chip-C011rd9q.js → tag-chip-CmViAZKK.js} +1 -1
  143. package/dist/assets/{timeline-definition-FHXFAJF6-D4ar8IQY.js → timeline-definition-FHXFAJF6-DoCuWKDJ.js} +1 -1
  144. package/dist/assets/{trash-2-bDhfsO1O.js → trash-2-DMRJ63AB.js} +1 -1
  145. package/dist/assets/treeView-QDETBFTQ-D5zsTiuL.js +1 -0
  146. package/dist/assets/treemap-6X3UGDF4-CR3dxqNs.js +1 -0
  147. package/dist/assets/{use-config-BNrlfEck.js → use-config-gpXy2Iyc.js} +1 -1
  148. package/dist/assets/use-confirm-dialog-Du33bHPz.js +1 -0
  149. package/dist/assets/{use-viewport-layout-P0q6Nt_N.js → use-viewport-layout-D80O1d90.js} +1 -1
  150. package/dist/assets/{vennDiagram-L72KCM5P-CDXJ_i3p.js → vennDiagram-L72KCM5P-CpU0pzGe.js} +1 -1
  151. package/dist/assets/wardley-OPB4EBWU-LatRT_Lx.js +1 -0
  152. package/dist/assets/{wardleyDiagram-EHGQE667-D-dSuT_7.js → wardleyDiagram-EHGQE667-CkN6nn6-.js} +1 -1
  153. package/dist/assets/x-CsLMuNFe.js +1 -0
  154. package/dist/assets/{xychartDiagram-FW5EYKEG-C9JCzsZF.js → xychartDiagram-FW5EYKEG-DATpapm2.js} +1 -1
  155. package/dist/index.html +31 -32
  156. package/dist/runtime-icons/opencode.svg +16 -0
  157. package/package.json +10 -9
  158. package/public/runtime-icons/opencode.svg +16 -0
  159. package/src/app/components/layout/__tests__/settings-entry-page.test.tsx +6 -4
  160. package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +24 -12
  161. package/src/app/components/layout/sidebar-items.tsx +11 -2
  162. package/src/app/components/layout/sidebar.tsx +33 -234
  163. package/src/app/configs/app-navigation.config.ts +10 -24
  164. package/src/app/index.tsx +0 -5
  165. package/src/features/channels/components/config/channel-form.tsx +26 -26
  166. package/src/features/channels/components/config/weixin-channel-auth-section.tsx +6 -7
  167. package/src/features/channels/pages/__tests__/channels-list-page.test.tsx +2 -2
  168. package/src/features/channels/pages/channels-list-page.tsx +33 -32
  169. package/src/features/chat/components/conversation/__tests__/chat-conversation-content.test.tsx +68 -7
  170. package/src/features/chat/components/conversation/__tests__/chat-conversation-header-section.test.tsx +27 -0
  171. package/src/features/chat/components/conversation/__tests__/chat-conversation-panel.test.tsx +0 -8
  172. package/src/features/chat/components/conversation/chat-conversation-content.tsx +65 -21
  173. package/src/features/chat/components/conversation/chat-conversation-header-section.tsx +36 -12
  174. package/src/features/chat/components/conversation/chat-conversation-panel.tsx +0 -7
  175. package/src/features/chat/components/layout/__tests__/chat-sidebar-toolbar.test.tsx +0 -1
  176. package/src/features/chat/components/layout/__tests__/chat-sidebar.test.tsx +17 -8
  177. package/src/features/chat/components/layout/chat-page-shell.tsx +2 -2
  178. package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +2 -23
  179. package/src/features/chat/components/layout/chat-sidebar.tsx +3 -12
  180. package/src/features/chat/features/conversation/components/__tests__/session-conversation-area.test.tsx +155 -93
  181. package/src/features/chat/features/conversation/components/session-conversation-area.tsx +126 -93
  182. package/src/features/chat/features/conversation/hooks/__tests__/use-session-conversation-input-state.test.tsx +8 -0
  183. package/src/features/chat/features/conversation/hooks/use-session-conversation-input-state.ts +27 -13
  184. package/src/features/chat/features/message/components/__tests__/chat-inline-file-preview.test.tsx +15 -9
  185. package/src/features/chat/features/message/components/__tests__/chat-inline-panel-app-card.test.tsx +127 -49
  186. package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +187 -20
  187. package/src/features/chat/features/message/components/chat-inline-content-surface.tsx +55 -0
  188. package/src/features/chat/features/message/components/chat-inline-file-preview.tsx +49 -71
  189. package/src/features/chat/features/message/components/chat-inline-panel-app-card.tsx +65 -55
  190. package/src/features/chat/features/message/components/chat-message-list.container.tsx +275 -267
  191. package/src/features/chat/features/message/hooks/__tests__/use-chat-message-virtualizer.test.tsx +163 -0
  192. package/src/features/chat/features/message/hooks/use-chat-message-virtualizer.ts +68 -0
  193. package/src/features/chat/features/message/utils/__tests__/chat-message-execution-summary.utils.test.ts +188 -0
  194. package/src/features/chat/features/message/utils/__tests__/chat-message-texts.utils.test.ts +14 -1
  195. package/src/features/chat/features/message/utils/__tests__/chat-message.utils.test.ts +33 -0
  196. package/src/features/chat/features/message/utils/chat-inline-panel-app-card.utils.ts +24 -9
  197. package/src/features/chat/features/message/utils/chat-message-execution-summary.utils.ts +178 -0
  198. package/src/features/chat/features/message/utils/chat-message-texts.utils.ts +44 -0
  199. package/src/features/chat/features/message/utils/chat-message-timeline.utils.ts +194 -0
  200. package/src/features/chat/features/message/utils/chat-message.utils.ts +5 -0
  201. package/src/features/chat/features/ncp/hooks/__tests__/use-ncp-session-conversation.test.tsx +151 -13
  202. package/src/features/chat/features/ncp/hooks/use-ncp-session-conversation.ts +44 -70
  203. package/src/features/chat/features/ncp/hooks/use-ncp-session-message-history.ts +197 -0
  204. package/src/features/chat/features/session/components/__tests__/chat-sidebar-session-item.test.tsx +21 -3
  205. package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +7 -7
  206. package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +2 -2
  207. package/src/features/chat/features/session/components/session-context-icon.tsx +1 -1
  208. package/src/features/chat/features/session-type/components/__tests__/chat-session-type-option-item.test.tsx +5 -1
  209. package/src/features/chat/features/session-type/components/chat-session-type-option-item.tsx +1 -1
  210. package/src/features/chat/features/workspace/components/__tests__/workspace-file-content-preview.test.tsx +32 -10
  211. package/src/features/chat/features/workspace/components/workspace-file-content-preview.tsx +5 -15
  212. package/src/features/chat/features/workspace/utils/__tests__/chat-workspace-panel-view-model.utils.test.ts +62 -9
  213. package/src/features/chat/features/workspace/utils/chat-thread-workspace-session.utils.ts +6 -1
  214. package/src/features/chat/features/workspace/utils/chat-workspace-panel-view-model.utils.ts +1 -25
  215. package/src/features/chat/managers/__tests__/chat-session-list.manager.test.ts +190 -109
  216. package/src/features/chat/managers/__tests__/chat-thread-workspace.manager.test.ts +9 -10
  217. package/src/features/chat/managers/chat-session-list.manager.ts +68 -27
  218. package/src/features/cron/components/__tests__/cron-config.test.tsx +260 -0
  219. package/src/features/cron/components/cron-config.tsx +392 -388
  220. package/src/features/cron/components/cron-job-detail-dialog.tsx +210 -0
  221. package/src/features/cron/components/cron-job-row.tsx +271 -0
  222. package/src/features/cron/components/cron-task-discovery.tsx +157 -0
  223. package/src/features/cron/hooks/use-cron-jobs.ts +3 -1
  224. package/src/features/marketplace/components/__tests__/marketplace-page.test.tsx +3 -2
  225. package/src/features/marketplace/components/marketplace-external-skill-source-action.tsx +8 -6
  226. package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +26 -40
  227. package/src/features/pwa/components/pwa-install-entry.tsx +45 -58
  228. package/src/features/remote/components/remote-access-page.tsx +128 -208
  229. package/src/features/settings/components/config/provider-auth-section.tsx +32 -17
  230. package/src/features/settings/components/config/provider-form.tsx +6 -6
  231. package/src/features/settings/components/config/provider-models-section.tsx +52 -46
  232. package/src/features/settings/components/config/secrets-config-form.tsx +78 -84
  233. package/src/features/settings/index.ts +0 -1
  234. package/src/features/settings/pages/__tests__/appearance-settings-page.test.tsx +35 -1
  235. package/src/features/settings/pages/__tests__/model-config-page.test.tsx +18 -1
  236. package/src/features/settings/pages/__tests__/search-config-page.test.tsx +8 -0
  237. package/src/features/settings/pages/__tests__/secrets-config-page.test.tsx +18 -17
  238. package/src/features/settings/pages/appearance-settings-page.tsx +87 -64
  239. package/src/features/settings/pages/model-config-page.tsx +75 -70
  240. package/src/features/settings/pages/providers-config-page.tsx +107 -73
  241. package/src/features/settings/pages/search-config-page.tsx +159 -152
  242. package/src/features/settings/pages/secrets-config-page.tsx +6 -1
  243. package/src/features/system-status/components/config/runtime-agent-list-card.tsx +23 -22
  244. package/src/features/system-status/components/config/runtime-binding-list-card.tsx +23 -22
  245. package/src/features/system-status/components/config/runtime-config-editor.tsx +17 -7
  246. package/src/features/system-status/components/config/runtime-config-overview.tsx +0 -3
  247. package/src/features/system-status/components/config/runtime-entry-list-card.tsx +24 -23
  248. package/src/features/system-status/components/config/runtime-settings-card.tsx +59 -52
  249. package/src/features/system-status/components/desktop-update-config.tsx +117 -112
  250. package/src/features/system-status/components/runtime-control-card.tsx +62 -59
  251. package/src/features/system-status/components/runtime-presence-card.tsx +79 -98
  252. package/src/features/system-status/components/runtime-security-card.tsx +74 -62
  253. package/src/features/system-status/components/security-config.tsx +3 -4
  254. package/src/features/system-status/pages/runtime-config-page.tsx +6 -1
  255. package/src/platforms/desktop/components/desktop-app-shell.tsx +1 -1
  256. package/src/platforms/mobile/components/mobile-settings-shell.tsx +2 -2
  257. package/src/shared/components/__tests__/config-split-page.test.tsx +15 -3
  258. package/src/shared/components/__tests__/settings-page.test.tsx +31 -0
  259. package/src/shared/components/actions/__tests__/navigation-link.test.tsx +47 -0
  260. package/src/shared/components/actions/navigation-link.tsx +116 -0
  261. package/src/shared/components/common/__tests__/brand-header.test.tsx +5 -5
  262. package/src/shared/components/common/__tests__/searchable-model-input.test.tsx +24 -0
  263. package/src/shared/components/common/brand-header.tsx +12 -10
  264. package/src/shared/components/common/searchable-model-input.tsx +9 -10
  265. package/src/shared/components/config-split-page.tsx +70 -65
  266. package/src/shared/components/doc-browser/doc-browser-panel-parts.tsx +6 -7
  267. package/src/shared/components/settings/setting-row.tsx +61 -30
  268. package/src/shared/components/settings/settings-page.tsx +34 -0
  269. package/src/shared/components/ui/actions/__tests__/icon-action-button.test.tsx +23 -2
  270. package/src/shared/components/ui/actions/icon-action-button.tsx +9 -2
  271. package/src/shared/components/ui/overlays/sheet.tsx +142 -0
  272. package/src/shared/lib/api/ncp-session.types.ts +8 -2
  273. package/src/shared/lib/api/types.ts +22 -1
  274. package/src/shared/lib/api/utils/config.utils.ts +2 -1
  275. package/src/shared/lib/api/utils/ncp-session.utils.ts +25 -11
  276. package/src/shared/lib/i18n/locales/en-US/chat.json +32 -1
  277. package/src/shared/lib/i18n/locales/en-US/core.json +3 -3
  278. package/src/shared/lib/i18n/locales/en-US/cron.json +87 -17
  279. package/src/shared/lib/i18n/locales/zh-CN/chat.json +34 -3
  280. package/src/shared/lib/i18n/locales/zh-CN/core.json +6 -6
  281. package/src/shared/lib/i18n/locales/zh-CN/cron.json +80 -10
  282. package/src/shared/lib/transport/__tests__/remote.transport.test.ts +16 -4
  283. package/dist/assets/api-D0U10BcF.js +0 -13
  284. package/dist/assets/app-presenter-provider-Dffdm_Ek.js +0 -106
  285. package/dist/assets/appearance-settings-page-sfusZc2d.js +0 -1
  286. package/dist/assets/architecture-TIHT7OUA-ClwVFq-K.js +0 -1
  287. package/dist/assets/channel-BEHOSFc5.js +0 -1
  288. package/dist/assets/channels-list-page-Dkfe87Zq.js +0 -8
  289. package/dist/assets/chat-page-CeapbQnG.js +0 -1
  290. package/dist/assets/chunk-2Q5K7J3B-DrIhesSX.js +0 -1
  291. package/dist/assets/chunk-VAUOI2AC-Dpcz6BhT.js +0 -1
  292. package/dist/assets/chunk-XXDRQBXY-C2QjjwYX.js +0 -1
  293. package/dist/assets/classDiagram-OUVF2IWQ-DESMaY3_.js +0 -1
  294. package/dist/assets/classDiagram-v2-EOCWNBFH-DwOlByYH.js +0 -1
  295. package/dist/assets/config-split-page-CnQI8cKT.js +0 -1
  296. package/dist/assets/confirm-dialog-RZUWA_j9.js +0 -5
  297. package/dist/assets/cynefin-VYW2F7L2-CzjeeOq9.js +0 -1
  298. package/dist/assets/desktop-update-config-CbSYQMYz.js +0 -1
  299. package/dist/assets/doc-browser-DwXHr-mm.js +0 -1
  300. package/dist/assets/doc-browser-jVTq8iY_2.js +0 -1
  301. package/dist/assets/download-BP7ZxrwI.js +0 -1
  302. package/dist/assets/eventmodeling-45OFAUF4-C38BqG8w.js +0 -1
  303. package/dist/assets/external-link-DvHCEe3h.js +0 -1
  304. package/dist/assets/eye-C--6dxv_.js +0 -1
  305. package/dist/assets/flowDiagram-23GEKE2U-BoKk8RRq.js +0 -1
  306. package/dist/assets/folder-BfeO1zCY.js +0 -1
  307. package/dist/assets/gitGraph-TEB2WS4Q-IsQHHJuS.js +0 -1
  308. package/dist/assets/index-BlKbckX4.css +0 -1
  309. package/dist/assets/index-DoZR11Nh.js +0 -2
  310. package/dist/assets/info-DKCQHKI2-ofy2qlHI.js +0 -1
  311. package/dist/assets/loader-circle-BWdgwVnn.js +0 -1
  312. package/dist/assets/mcp-marketplace-page-XnRWiC8c.js +0 -1
  313. package/dist/assets/model-config-page-CXnqSbSI.js +0 -1
  314. package/dist/assets/packet-7NZHBO7P-Rfopfa1o.js +0 -1
  315. package/dist/assets/pie-RZYD4A2V-CJR1xKEv.js +0 -1
  316. package/dist/assets/plus-BeApS21t.js +0 -1
  317. package/dist/assets/provider-scoped-model-input-ll_Btc9h.js +0 -1
  318. package/dist/assets/providers-config-page-Bcuhqkdl.js +0 -1
  319. package/dist/assets/radar-I7S5WNFK-CDg8Z-1r.js +0 -1
  320. package/dist/assets/railroad-3IZDKUUU-BHnNmjxO.js +0 -1
  321. package/dist/assets/railroad-abnf-AHOZXSZD-DGtNcusW.js +0 -1
  322. package/dist/assets/railroad-ebnf-EBAXGLYW-BRFtsQmm.js +0 -1
  323. package/dist/assets/railroad-peg-LSFZ7HO6-Bj5IypCA.js +0 -1
  324. package/dist/assets/remote-CqKpuOP9.js +0 -1
  325. package/dist/assets/rotate-cw-DHXoiqFB.js +0 -1
  326. package/dist/assets/runtime-config-page-D-Aqxizs.js +0 -1
  327. package/dist/assets/search-config-page-XTKf5rc0.js +0 -1
  328. package/dist/assets/secrets-config-page-Cx-qptcj.js +0 -3
  329. package/dist/assets/security-config-DWGFM2u9.js +0 -1
  330. package/dist/assets/setting-row-DFvioO2a.js +0 -1
  331. package/dist/assets/settings-2-RMWqf-ey.js +0 -1
  332. package/dist/assets/skeleton-DQ5WhuDG.js +0 -1
  333. package/dist/assets/stateDiagram-v2-6OUMAXLB-CfMU38yc.js +0 -1
  334. package/dist/assets/swimlanesDiagram-G3AALYLV-D9Zb9X57.js +0 -8
  335. package/dist/assets/treeView-QDETBFTQ-Uy7M0WvH.js +0 -1
  336. package/dist/assets/treemap-6X3UGDF4-BJfGV7KX.js +0 -1
  337. package/dist/assets/use-confirm-dialog-CTNA1PC0.js +0 -1
  338. package/dist/assets/wardley-OPB4EBWU-q263iF3K.js +0 -1
  339. package/dist/assets/x-qvh05iyu.js +0 -1
  340. package/src/features/chat/components/conversation/chat-conversation-skeleton.tsx +0 -86
  341. package/src/features/settings/pages/__tests__/language-settings-page.test.tsx +0 -36
  342. package/src/features/settings/pages/language-settings-page.tsx +0 -56
  343. package/src/shared/components/actions/action-link.tsx +0 -49
  344. /package/dist/assets/{array-BqYdCIE6.js → array-CAkJT3no.js} +0 -0
  345. /package/dist/assets/{chunk-KEIR6QF5-A3jEqwzn.js → chunk-KEIR6QF5-BgdDoWEH.js} +0 -0
  346. /package/dist/assets/{chunk-Y2CYZVJY-BGrd8tLy.js → chunk-Y2CYZVJY-pTllD0P3.js} +0 -0
  347. /package/dist/assets/{config-hints-LxG80Uj5.js → config-hints-S3g-UVZb.js} +0 -0
  348. /package/dist/assets/{cytoscape.esm-CRW8q92n.js → cytoscape.esm-DmURt-5G.js} +0 -0
  349. /package/dist/assets/{defaultLocale-Cdv9x6q7.js → defaultLocale-BKy_KP3O.js} +0 -0
  350. /package/dist/assets/{dist-dw-gAfM_.js → dist-IgNNB7K9.js} +0 -0
  351. /package/dist/assets/{graphlib-BcNFQr5y.js → graphlib-xw_TBHyH.js} +0 -0
  352. /package/dist/assets/{host-capabilities-CFbAfrrA.js → host-capabilities-B-TtABsP.js} +0 -0
  353. /package/dist/assets/{init-D8TjIqfm.js → init-C9xlLIAu.js} +0 -0
  354. /package/dist/assets/{jszip.min-CP5uPNQa.js → jszip.min-Das2IAnb.js} +0 -0
  355. /package/dist/assets/{katex-wEmrEFTg.js → katex-DSy1eD2d.js} +0 -0
  356. /package/dist/assets/{middleware-CAXxl-af.js → middleware-Df-a4x-q.js} +0 -0
  357. /package/dist/assets/{path-DzBnMI1r.js → path-DB0USYHi.js} +0 -0
  358. /package/dist/assets/{provider-models-BoUhFo9R.js → provider-models-CXUgDxGR.js} +0 -0
  359. /package/dist/assets/{rough.esm-wJ1d3nQl.js → rough.esm-B1B52ZQS.js} +0 -0
  360. /package/dist/assets/{xlsx-DUqJhg5u.js → xlsx-DfjC_iml.js} +0 -0
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-A3jEqwzn.js";import{n as e}from"./chunk-5HE753X5-DU81hkcF.js";export{e as createRailroadAbnfServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-A3jEqwzn.js";import{n as e}from"./chunk-U6XO7XAA-Cphbuc7q.js";export{e as createRailroadEbnfServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-A3jEqwzn.js";import{n as e}from"./chunk-JG7HCLWE-D-95AsO4.js";export{e as createRailroadPegServices};
@@ -1 +0,0 @@
1
- import{X as e}from"./app-presenter-provider-Dffdm_Ek.js";export{e as RemoteAccessPage};
@@ -1 +0,0 @@
1
- import{c as e}from"./dist-DEJlYi0E.js";var t=e(`RotateCw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]);export{t};
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{h as t,p as n,r}from"./react-Bb0EYsLS.js";import{Q as i,_ as a,et as o,g as s,x as c}from"./app-presenter-provider-Dffdm_Ek.js";import{$t as l,At as u,Ft as d,Gt as f,Jt as p,Kt as m,Mt as h,Pt as g,St as _,Xt as v,Yt as y,Zt as ee,en as b,in as x,qt as S}from"./api-D0U10BcF.js";import{a as C,i as w,n as T,r as E,t as D}from"./select-C9FB0jlt.js";import{a as O}from"./use-confirm-dialog-CTNA1PC0.js";import{t as k}from"./loader-circle-BWdgwVnn.js";import{t as A}from"./plus-BeApS21t.js";import{t as te}from"./rotate-cw-DHXoiqFB.js";import{t as j}from"./save-DtccrZld.js";import{t as M}from"./trash-2-bDhfsO1O.js";import{t as N}from"./form-actions-5OsDRt0g.js";import{g as ne,t as re}from"./use-config-BNrlfEck.js";import{t as P}from"./setting-row-DFvioO2a.js";var F=e(t(),1),I=n(),L={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},R={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},z={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function B(e){return r(L[e]??`runtimeControlUnavailable`)}function V(e){return r(R[e]??`runtimeControlServiceUnknown`)}function H(e){return r(z[e.environment])}function U(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function W(e){return e?[{action:`start-service`,capability:e.canStartService,label:r(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:r(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:r(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:r(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function G(e){let{busy:t,icon:n}=e;return t?(0,I.jsx)(k,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,I.jsx)(o,{className:`mr-2 h-4 w-4`}):n===`square`?(0,I.jsx)(i,{className:`mr-2 h-4 w-4`}):(0,I.jsx)(te,{className:`mr-2 h-4 w-4`})}function K(){let{busy:e,busyAction:t,controlView:n,errorMessage:i,pendingRestart:a,visibleLifecycle:o,visibleMessage:s,visibleServiceState:c}=u(),l=W(n??void 0),h=async e=>{let t=U(n,e);if(!t?.available){x.error(d(t?.reasonIfUnavailable)??r(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&t.requiresConfirmation&&!window.confirm(r(`runtimeControlStopServiceConfirm`))))try{let t=await g.runRuntimeControlAction(e);x.success(d(t.message)??t.message)}catch(e){let t=e instanceof Error?e.message:r(`runtimeControlActionFailed`);x.error(`${r(`runtimeControlActionFailed`)}: ${t}`)}},_=async()=>{if(!n?.canRestartApp.available){x.error(d(n?.canRestartApp.reasonIfUnavailable)??r(`runtimeRestartAppUnavailable`));return}if(window.confirm(r(`runtimeControlRestartAppConfirm`)))try{let e=await g.runRuntimeControlAction(`restart-app`);x.success(d(e.message)??e.message)}catch(e){let t=e instanceof Error?e.message:r(`runtimeControlActionFailed`);x.error(`${r(`runtimeControlActionFailed`)}: ${t}`)}};return(0,I.jsxs)(f,{children:[(0,I.jsxs)(p,{children:[(0,I.jsx)(y,{children:r(`runtimeControlTitle`)}),(0,I.jsx)(S,{children:r(`runtimeControlDescription`)})]}),(0,I.jsxs)(m,{className:`space-y-4`,children:[(0,I.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-gray-200 bg-gray-50 p-4`,children:[(0,I.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,I.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:V(c)}),(0,I.jsx)(`div`,{className:`text-xs text-gray-500`,children:n?H(n):r(`runtimeControlLoading`)})]}),(0,I.jsx)(`p`,{className:`text-sm text-gray-600`,children:s}),(0,I.jsx)(`div`,{className:`text-xs text-gray-500`,children:B(o)}),n?.managementHint?(0,I.jsx)(`p`,{className:`text-xs text-gray-500`,children:d(n.managementHint)}):null,i&&!e?(0,I.jsx)(`p`,{className:`text-sm text-amber-700`,children:i}):null]}),a?(0,I.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-amber-200 bg-amber-50 p-4`,children:[(0,I.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:r(`runtimeControlPendingRestartTitle`)}),(0,I.jsx)(`p`,{className:`text-sm text-amber-800`,children:r(`runtimeControlPendingRestartDescription`)}),a.changedPaths.length>0?(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:r(`runtimeControlPendingRestartPaths`)}),(0,I.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a.changedPaths.map(e=>(0,I.jsx)(`span`,{className:`rounded-full border border-amber-200 bg-white px-2.5 py-1 text-xs text-amber-800`,children:e},e))})]}):null]}):null,(0,I.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:l.map(n=>(0,I.jsxs)(b,{type:`button`,variant:n.variant??`default`,onClick:()=>{if(n.action===`restart-app`){_();return}h(n.action)},disabled:!n.capability.available||e,children:[(0,I.jsx)(G,{icon:n.icon,busy:t===n.action}),n.label]},n.action))}),l.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,I.jsx)(`p`,{className:`text-xs text-gray-500`,children:d(e.capability.reasonIfUnavailable)},`${e.action}-reason`))]})]})}function q(e){let{description:t,title:n}=e;return(0,I.jsx)(O,{tone:`neutral`,title:n,description:t})}function J(e){let{children:t}=e;return(0,I.jsxs)(f,{children:[(0,I.jsxs)(p,{children:[(0,I.jsx)(y,{children:r(`runtimePresenceTitle`)}),(0,I.jsx)(S,{children:r(`runtimePresenceDescription`)})]}),(0,I.jsx)(m,{children:t})]})}function Y(){let e=h().runtimeControlView?.environment,t=a(e=>e.supported),n=a(e=>e.initialized),i=a(e=>e.busyAction),o=a(e=>e.snapshot);return(0,F.useEffect)(()=>{if(e===`desktop-embedded`){s.start();return}s.markUnsupported()},[e]),e===`desktop-embedded`?(0,I.jsx)(J,{children:(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsx)(O,{tone:`neutral`,title:r(`runtimePresenceBehaviorLabel`),description:o?.closeToBackground?r(`runtimePresenceBehaviorBackground`):r(`runtimePresenceBehaviorQuit`),className:`rounded-xl`}),!n||t&&!o?(0,I.jsx)(`p`,{className:`text-sm text-gray-500`,children:r(`runtimePresenceLoading`)}):null,o?(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsx)(P,{title:r(`runtimePresenceCloseToBackground`),description:r(`runtimePresenceCloseToBackgroundHelp`),control:(0,I.jsx)(_,{id:`runtime-presence-close-background`,"aria-label":r(`runtimePresenceCloseToBackground`),checked:o.closeToBackground,disabled:i===`saving-preferences`,onCheckedChange:e=>{s.updatePreferences({closeToBackground:e})}})}),(0,I.jsx)(P,{title:r(`runtimePresenceLaunchAtLogin`),description:o.supportsLaunchAtLogin?r(`runtimePresenceLaunchAtLoginHelp`):o.launchAtLoginReason??r(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,I.jsx)(_,{id:`runtime-presence-launch-login`,"aria-label":r(`runtimePresenceLaunchAtLogin`),checked:o.launchAtLogin,disabled:!o.supportsLaunchAtLogin||i===`saving-preferences`,onCheckedChange:e=>{s.updatePreferences({launchAtLogin:e})}})})]}):null]})}):e===`managed-local-service`?(0,I.jsx)(J,{children:(0,I.jsx)(q,{title:r(`runtimePresenceManagedLocalTitle`),description:r(`runtimePresenceManagedLocalDescription`)})}):e===`self-hosted-web`?(0,I.jsx)(J,{children:(0,I.jsx)(q,{title:r(`runtimePresenceSelfHostedTitle`),description:r(`runtimePresenceSelfHostedDescription`)})}):e===`shared-web`?(0,I.jsx)(J,{children:(0,I.jsx)(q,{title:r(`runtimePresenceSharedTitle`),description:r(`runtimePresenceSharedDescription`)})}):(0,I.jsx)(J,{children:(0,I.jsx)(`p`,{className:`text-sm text-gray-500`,children:r(`runtimePresenceLoading`)})})}function X(){return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(v,{title:r(`runtimePageTitle`),description:r(`runtimePageDescription`)}),(0,I.jsx)(K,{}),(0,I.jsx)(Y,{}),(0,I.jsx)(c,{})]})}var Z={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function ie(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0,maxToolIterations:void 0}}function ae(){return{agentId:``,match:{channel:``,accountId:``}}}function oe(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Z,configText:JSON.stringify(Z,null,2)}}function se(e){return{id:e.id??``,default:!!e.default,displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,workspace:e.workspace??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:e.contextTokens,maxToolIterations:e.maxToolIterations}}function ce(e){return{agentId:e.agentId??``,match:{channel:e.match?.channel??``,accountId:e.match?.accountId??``,peer:e.match?.peer?{kind:e.match.peer.kind,id:e.match.peer.id}:void 0}}}function Q(e){let t=e.trim();if(!t)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function le(e){return{companionEnabled:e.companion?.enabled===!0,agents:(e.agents.list??[]).map(se),bindings:(e.bindings??[]).map(ce),runtimeEntries:Object.entries(e.agents.runtimes?.entries??{}).map(([e,t])=>({id:e,enabled:t.enabled!==!1,label:t.label??``,type:t.type,config:t.config??{},configText:JSON.stringify(t.config??{},null,2)})),dmScope:e.session?.dmScope??`per-channel-peer`,defaultContextTokens:e.agents.defaults.contextTokens??2e5,defaultEngine:e.agents.defaults.engine??`native`}}function ue(e){let t={id:e.id.trim()};e.default&&(t.default=!0),e.displayName?.trim()&&(t.displayName=e.displayName.trim()),e.description?.trim()&&(t.description=e.description.trim()),e.avatar?.trim()&&(t.avatar=e.avatar.trim()),e.workspace?.trim()&&(t.workspace=e.workspace.trim()),e.model?.trim()&&(t.model=e.model.trim());let n=e.runtime?.trim()??e.engine?.trim();return n&&(t.engine=n),typeof e.contextTokens==`number`&&(t.contextTokens=Math.max(1e3,e.contextTokens)),typeof e.maxToolIterations==`number`&&(t.maxToolIterations=e.maxToolIterations),t}function de(e){let t=e.agents.map((e,t)=>{if(!e.id.trim())throw Error(r(`agentIdRequiredError`).replace(`{index}`,String(t)));return ue(e)}),n=t.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(n.length>0)throw Error(`${r(`duplicateAgentId`)}: ${n[0]}`);let i=e.bindings.map((t,n)=>{let i=t.agentId.trim(),a=t.match.channel.trim(),o=t.match.accountId?.trim()??``,s=t.match.peer?.kind,c=t.match.peer?.id?.trim()??``;if(!i)throw Error(r(`bindingAgentIdRequired`).replace(`{index}`,String(n)));if(!e.knownAgentIds.has(i))throw Error(`${r(`bindingAgentIdNotFound`).replace(`{index}`,String(n))}: ${i}`);if(!a)throw Error(r(`bindingChannelRequired`).replace(`{index}`,String(n)));let l={agentId:i,match:{channel:a}};if(o&&(l.match.accountId=o),s){if(!c)throw Error(r(`bindingPeerIdRequired`).replace(`{index}`,String(n)));l.match.peer={kind:s,id:c}}return l}),a=e.runtimeEntries.reduce((e,t,n)=>{let i=t.id.trim(),a=t.type.trim();if(!i)throw Error(r(`runtimeEntryIdRequired`).replace(`{index}`,String(n)));if(!a)throw Error(r(`runtimeEntryTypeRequired`).replace(`{id}`,i));if(e[i])throw Error(`${r(`runtimeEntryDuplicate`)}: ${i}`);let o=t.configText.trim()?JSON.parse(t.configText):{};if(o&&(typeof o!=`object`||Array.isArray(o)))throw Error(r(`runtimeEntryConfigObjectRequired`).replace(`{id}`,i));return e[i]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:a,config:o??{}},e},{});return{companion:{enabled:e.companionEnabled},agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:t,runtimes:{entries:a}},bindings:i,session:{dmScope:e.dmScope}}}function fe({agents:e,onAddAgent:t,onRemoveAgent:n,onSetDefaultAgent:i,onUpdateAgent:a}){return(0,I.jsxs)(f,{children:[(0,I.jsxs)(p,{children:[(0,I.jsx)(y,{children:r(`agentList`)}),(0,I.jsx)(S,{children:r(`agentListHelp`)})]}),(0,I.jsxs)(m,{className:`space-y-3`,children:[e.map((e,t)=>(0,I.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-3 space-y-3`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,I.jsx)(l,{value:e.id,onChange:e=>a(t,{id:e.target.value}),placeholder:r(`agentIdPlaceholder`)}),(0,I.jsx)(l,{value:e.workspace??``,onChange:e=>a(t,{workspace:e.target.value}),placeholder:r(`workspaceOverridePlaceholder`)}),(0,I.jsx)(l,{value:e.model??``,onChange:e=>a(t,{model:e.target.value}),placeholder:r(`modelOverridePlaceholder`)}),(0,I.jsx)(l,{value:e.runtime??e.engine??``,onChange:e=>a(t,{runtime:e.target.value}),placeholder:r(`engineOverridePlaceholder`)}),(0,I.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-2`,children:[(0,I.jsx)(l,{type:`number`,min:1e3,step:1e3,value:e.contextTokens??``,onChange:e=>a(t,{contextTokens:Q(e.target.value)}),placeholder:r(`contextTokensPlaceholder`)}),(0,I.jsx)(l,{type:`number`,min:1,value:e.maxToolIterations??``,onChange:e=>a(t,{maxToolIterations:Q(e.target.value)}),placeholder:r(`maxToolsPlaceholder`)})]})]}),(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-gray-600`,children:[(0,I.jsx)(_,{checked:!!e.default,onCheckedChange:e=>i(t,e)}),(0,I.jsx)(`span`,{children:r(`defaultAgent`)})]}),(0,I.jsxs)(b,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>n(t),children:[(0,I.jsx)(M,{className:`h-4 w-4 mr-1`}),r(`remove`)]})]})]},`${t}-${e.id}`)),(0,I.jsxs)(b,{type:`button`,variant:`outline`,onClick:t,children:[(0,I.jsx)(A,{className:`h-4 w-4 mr-2`}),r(`addAgent`)]})]})]})}function pe({bindings:e,onAddBinding:t,onRemoveBinding:n,onUpdateBinding:i}){return(0,I.jsxs)(f,{children:[(0,I.jsxs)(p,{children:[(0,I.jsx)(y,{children:r(`bindings`)}),(0,I.jsx)(S,{children:r(`bindingsHelp`)})]}),(0,I.jsxs)(m,{className:`space-y-3`,children:[e.map((e,t)=>{let a=e.match.peer?.kind??``;return(0,I.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-3 space-y-3`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,I.jsx)(l,{value:e.agentId,onChange:n=>i(t,{...e,agentId:n.target.value}),placeholder:r(`targetAgentIdPlaceholder`)}),(0,I.jsx)(l,{value:e.match.channel,onChange:n=>i(t,{...e,match:{...e.match,channel:n.target.value}}),placeholder:r(`channelPlaceholder`)}),(0,I.jsx)(l,{value:e.match.accountId??``,onChange:n=>i(t,{...e,match:{...e.match,accountId:n.target.value}}),placeholder:r(`accountIdOptionalPlaceholder`)}),(0,I.jsxs)(D,{value:a||`__none__`,onValueChange:n=>{let r=n===`__none__`?``:n;i(t,r?{...e,match:{...e.match,peer:{kind:r,id:e.match.peer?.id??``}}}:{...e,match:{...e.match,peer:void 0}})},children:[(0,I.jsx)(w,{children:(0,I.jsx)(C,{})}),(0,I.jsxs)(T,{children:[(0,I.jsx)(E,{value:`__none__`,children:r(`peerKindOptional`)}),(0,I.jsx)(E,{value:`direct`,children:r(`peerKindDirect`)}),(0,I.jsx)(E,{value:`group`,children:r(`peerKindGroup`)}),(0,I.jsx)(E,{value:`channel`,children:r(`peerKindChannel`)})]})]}),(0,I.jsx)(l,{value:e.match.peer?.id??``,onChange:n=>i(t,{...e,match:{...e.match,peer:a?{kind:a,id:n.target.value}:void 0}}),placeholder:r(`peerIdPlaceholder`)})]}),(0,I.jsx)(`div`,{className:`flex justify-end`,children:(0,I.jsxs)(b,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>n(t),children:[(0,I.jsx)(M,{className:`h-4 w-4 mr-1`}),r(`remove`)]})})]},`${t}-${e.agentId}`)}),(0,I.jsxs)(b,{type:`button`,variant:`outline`,onClick:t,children:[(0,I.jsx)(A,{className:`h-4 w-4 mr-2`}),r(`addBinding`)]})]})]})}function $({entries:e,onAddEntry:t,onRemoveEntry:n,onUpdateEntry:i}){return(0,I.jsxs)(f,{children:[(0,I.jsxs)(p,{children:[(0,I.jsx)(y,{children:r(`runtimeEntries`)}),(0,I.jsx)(S,{children:r(`runtimeEntriesHelp`)})]}),(0,I.jsxs)(m,{className:`space-y-3`,children:[e.map((e,t)=>(0,I.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-3 space-y-3`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,I.jsx)(l,{value:e.id,onChange:e=>i(t,{id:e.target.value}),placeholder:r(`runtimeEntryIdPlaceholder`)}),(0,I.jsx)(l,{value:e.label??``,onChange:e=>i(t,{label:e.target.value}),placeholder:r(`runtimeEntryLabelPlaceholder`)}),(0,I.jsx)(l,{value:e.type,onChange:e=>i(t,{type:e.target.value}),placeholder:r(`runtimeEntryTypePlaceholder`)}),(0,I.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-200 px-3 py-2`,children:[(0,I.jsx)(`span`,{className:`text-sm text-gray-700`,children:r(`enabled`)}),(0,I.jsx)(_,{checked:e.enabled!==!1,onCheckedChange:e=>i(t,{enabled:e})})]})]}),(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:r(`runtimeEntryConfigJson`)}),(0,I.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-gray-200 px-3 py-2 text-sm font-mono`,value:e.configText,onChange:e=>i(t,{configText:e.target.value}),spellCheck:!1})]}),(0,I.jsx)(`div`,{className:`flex justify-end`,children:(0,I.jsxs)(b,{type:`button`,variant:`outline`,onClick:()=>n(t),children:[(0,I.jsx)(M,{className:`mr-2 h-4 w-4`}),r(`delete`)]})})]},`${t}-${e.id||`runtime-entry`}`)),(0,I.jsxs)(b,{type:`button`,variant:`outline`,onClick:t,children:[(0,I.jsx)(A,{className:`mr-2 h-4 w-4`}),r(`addRuntimeEntry`)]})]})]})}var me=[{value:`main`,labelKey:`dmScopeMain`},{value:`per-peer`,labelKey:`dmScopePerPeer`},{value:`per-channel-peer`,labelKey:`dmScopePerChannelPeer`},{value:`per-account-channel-peer`,labelKey:`dmScopePerAccountChannelPeer`}];function he({companionEnabled:e,defaultContextTokens:t,defaultEngine:n,dmScope:i,onCompanionEnabledChange:a,onDefaultContextTokensChange:o,onDefaultEngineChange:s,onDmScopeChange:c}){return(0,I.jsxs)(f,{children:[(0,I.jsxs)(p,{children:[(0,I.jsx)(y,{children:r(`dmScope`)}),(0,I.jsx)(S,{children:r(`dmScopeHelp`)})]}),(0,I.jsxs)(m,{className:`space-y-4`,children:[(0,I.jsxs)(`div`,{className:`flex items-start justify-between gap-4 rounded-md border border-gray-200 px-4 py-3`,children:[(0,I.jsxs)(`div`,{className:`space-y-1`,children:[(0,I.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:r(`runtimeCompanionEnabled`)}),(0,I.jsx)(`p`,{className:`text-xs text-gray-500`,children:r(`runtimeCompanionEnabledHelp`)})]}),(0,I.jsx)(_,{checked:e,onCheckedChange:a})]}),(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:r(`defaultContextTokens`)}),(0,I.jsx)(l,{type:`number`,min:1e3,step:1e3,value:t,onChange:e=>o(Math.max(1e3,Number.parseInt(e.target.value,10)||1e3))}),(0,I.jsx)(`p`,{className:`text-xs text-gray-500`,children:r(`defaultContextTokensHelp`)})]}),(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:r(`defaultEngine`)}),(0,I.jsx)(l,{value:n,onChange:e=>s(e.target.value),placeholder:r(`defaultEnginePlaceholder`)}),(0,I.jsx)(`p`,{className:`text-xs text-gray-500`,children:r(`defaultEngineHelp`)})]}),(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:r(`dmScope`)}),(0,I.jsxs)(D,{value:i,onValueChange:e=>c(e),children:[(0,I.jsx)(w,{children:(0,I.jsx)(C,{})}),(0,I.jsx)(T,{children:me.map(e=>(0,I.jsx)(E,{value:e.value,children:r(e.labelKey)},e.value))})]})]})]})]})}function ge({config:e,updateRuntime:t}){let n=(0,F.useMemo)(()=>le(e),[e]),[i,a]=(0,F.useState)(n.agents),[o,s]=(0,F.useState)(n.bindings),[c,l]=(0,F.useState)(n.runtimeEntries),[u,d]=(0,F.useState)(n.dmScope),[f,p]=(0,F.useState)(n.companionEnabled),[m,h]=(0,F.useState)(n.defaultContextTokens),[g,_]=(0,F.useState)(n.defaultEngine),v=(0,F.useMemo)(()=>{let e=new Set([`main`]);return i.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[i]);return(0,I.jsxs)(ee,{className:`space-y-6`,children:[(0,I.jsx)(X,{}),(0,I.jsx)(he,{companionEnabled:f,dmScope:u,defaultContextTokens:m,defaultEngine:g,onCompanionEnabledChange:p,onDmScopeChange:d,onDefaultContextTokensChange:h,onDefaultEngineChange:_}),(0,I.jsx)($,{entries:c,onUpdateEntry:(e,t)=>l(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>l(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>l(e=>[...e,oe()])}),(0,I.jsx)(fe,{agents:i,onUpdateAgent:(e,t)=>{a(n=>n.map((n,r)=>r===e?{...n,...t}:n))},onRemoveAgent:e=>a(t=>t.filter((t,n)=>n!==e)),onAddAgent:()=>a(e=>[...e,ie()]),onSetDefaultAgent:(e,t)=>a(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t))}),(0,I.jsx)(pe,{bindings:o,onUpdateBinding:(e,t)=>{s(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>s(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>s(e=>[...e,ae()])}),(0,I.jsx)(N,{children:(0,I.jsxs)(b,{type:`button`,size:`sm`,onClick:()=>{try{let e=de({companionEnabled:f,agents:i,bindings:o,runtimeEntries:c,dmScope:u,defaultContextTokens:m,defaultEngine:g,knownAgentIds:v});t.mutate({data:e})}catch(e){x.error(e instanceof Error?e.message:String(e))}},disabled:t.isPending,children:[(0,I.jsx)(j,{className:`mr-1.5 h-3.5 w-3.5`}),t.isPending?r(`saving`):r(`saveRuntimeSettings`)]})})]})}function _e(){let{data:e,isLoading:t}=re(),n=ne();return t||!e?(0,I.jsx)(`div`,{className:`p-8 text-gray-400`,children:r(`runtimeLoading`)}):(0,I.jsx)(ge,{config:e,updateRuntime:n})}export{_e as RuntimeConfig};
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{h as t,p as n,r}from"./react-Bb0EYsLS.js";import{$t as i,Qt as a,Xt as o,Zt as s,en as c}from"./api-D0U10BcF.js";import{t as l}from"./search-BArc_WOX.js";import{a as u,i as d,n as f,r as p,t as m}from"./select-C9FB0jlt.js";import{t as h}from"./external-link-DvHCEe3h.js";import{i as g,t as _}from"./use-viewport-layout-P0q6Nt_N.js";import{t as v}from"./form-actions-5OsDRt0g.js";import{_ as y,n as b,t as x}from"./use-config-BNrlfEck.js";import{a as S,c as C,i as w,n as T,o as E,s as D,t as O}from"./config-split-page-CnQI8cKT.js";var k=e(t(),1),A=n(),j=[{value:`noLimit`,label:`searchFreshnessNoLimit`},{value:`oneDay`,label:`searchFreshnessOneDay`},{value:`oneWeek`,label:`searchFreshnessOneWeek`},{value:`oneMonth`,label:`searchFreshnessOneMonth`},{value:`oneYear`,label:`searchFreshnessOneYear`}],M=[{value:`basic`,label:`searchDepthBasic`},{value:`advanced`,label:`searchDepthAdvanced`}],N=[{value:`true`,label:`enabled`},{value:`false`,label:`disabled`}],P={bocha:`searchProviderBochaDescription`,tavily:`searchProviderTavilyDescription`,brave:`searchProviderBraveDescription`};function F(e){return{activeProvider:e.provider,enabledProviders:e.enabledProviders,maxResults:String(e.defaults.maxResults),providers:{bocha:{apiKey:``,baseUrl:e.providers.bocha.baseUrl,summary:!!e.providers.bocha.summary,freshness:e.providers.bocha.freshness??`noLimit`},tavily:{apiKey:``,baseUrl:e.providers.tavily.baseUrl,searchDepth:e.providers.tavily.searchDepth??`basic`,includeAnswer:!!e.providers.tavily.includeAnswer},brave:{apiKey:``,baseUrl:e.providers.brave.baseUrl}}}}function I(e){return{provider:e.activeProvider,enabledProviders:e.enabledProviders,defaults:{maxResults:Number(e.maxResults)||10},providers:{bocha:{apiKey:e.providers.bocha.apiKey||void 0,baseUrl:e.providers.bocha.baseUrl,summary:e.providers.bocha.summary,freshness:e.providers.bocha.freshness},tavily:{apiKey:e.providers.tavily.apiKey||void 0,baseUrl:e.providers.tavily.baseUrl,searchDepth:e.providers.tavily.searchDepth,includeAnswer:e.providers.tavily.includeAnswer},brave:{apiKey:e.providers.brave.apiKey||void 0,baseUrl:e.providers.brave.baseUrl}}}}function L(e){let{label:t,value:n,onChange:r,placeholder:o,type:s=`text`,inputMode:c}=e;return(0,A.jsxs)(`div`,{className:`space-y-2`,children:[(0,A.jsx)(a,{children:t}),(0,A.jsx)(i,{type:s,value:n,onChange:e=>r(e.target.value),placeholder:o,inputMode:c,className:`rounded-xl`})]})}function R(e){let{label:t,value:n,options:i,onChange:o}=e;return(0,A.jsxs)(`div`,{className:`space-y-2`,children:[(0,A.jsx)(a,{children:t}),(0,A.jsxs)(m,{value:n,onValueChange:o,children:[(0,A.jsx)(d,{className:`rounded-xl`,children:(0,A.jsx)(u,{})}),(0,A.jsx)(f,{children:i.map(e=>(0,A.jsx)(p,{value:e.value,children:r(e.label)},e.value))})]})]})}function z({docsUrl:e}){return e?(0,A.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,children:(0,A.jsxs)(c,{type:`button`,variant:`outline`,className:`rounded-xl`,children:[(0,A.jsx)(h,{className:`mr-2 h-4 w-4`}),r(`searchProviderOpenDocs`)]})}):null}function B(e){let{draft:t,provider:n,search:i,selectedDocsUrl:a,updateProviderDraft:o}=e;if(n===`bocha`){let{bocha:e}=t.providers;return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(L,{label:r(`apiKey`),value:e.apiKey,onChange:e=>o(`bocha`,{apiKey:e}),placeholder:i.providers.bocha.apiKeyMasked||r(`enterApiKey`),type:`password`}),(0,A.jsx)(L,{label:r(`searchProviderBaseUrl`),value:e.baseUrl,onChange:e=>o(`bocha`,{baseUrl:e})}),(0,A.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,A.jsx)(R,{label:r(`searchProviderSummary`),value:e.summary?`true`:`false`,options:N,onChange:e=>o(`bocha`,{summary:e===`true`})}),(0,A.jsx)(R,{label:r(`searchProviderFreshness`),value:e.freshness,options:j,onChange:e=>o(`bocha`,{freshness:e})})]}),(0,A.jsx)(z,{docsUrl:a??`https://open.bocha.cn`})]})}if(n===`tavily`){let{tavily:e}=t.providers;return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(L,{label:r(`apiKey`),value:e.apiKey,onChange:e=>o(`tavily`,{apiKey:e}),placeholder:i.providers.tavily.apiKeyMasked||r(`enterApiKey`),type:`password`}),(0,A.jsx)(L,{label:r(`searchProviderBaseUrl`),value:e.baseUrl,onChange:e=>o(`tavily`,{baseUrl:e})}),(0,A.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,A.jsx)(R,{label:r(`searchProviderSearchDepth`),value:e.searchDepth,options:M,onChange:e=>o(`tavily`,{searchDepth:e})}),(0,A.jsx)(R,{label:r(`searchProviderIncludeAnswer`),value:e.includeAnswer?`true`:`false`,options:N,onChange:e=>o(`tavily`,{includeAnswer:e===`true`})})]}),(0,A.jsx)(z,{docsUrl:a})]})}let{brave:s}=t.providers;return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(L,{label:r(`apiKey`),value:s.apiKey,onChange:e=>o(`brave`,{apiKey:e}),placeholder:i.providers.brave.apiKeyMasked||r(`enterApiKey`),type:`password`}),(0,A.jsx)(L,{label:r(`searchProviderBaseUrl`),value:s.baseUrl,onChange:e=>o(`brave`,{baseUrl:e})})]})}function V(e){let{draft:t,providers:n,search:i,selectedProvider:a,onSelect:o}=e;return(0,A.jsxs)(S,{children:[(0,A.jsx)(C,{className:`px-4 py-4`,children:(0,A.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-gray-500`,children:r(`searchChannels`)})}),(0,A.jsx)(E,{className:`space-y-2 p-3`,children:n.map(e=>{let n=i.providers[e.name],s=t.enabledProviders.includes(e.name);return(0,A.jsx)(O,{onClick:()=>o(e.name),active:a===e.name,className:`p-3`,children:(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsx)(`p`,{className:`truncate text-sm font-semibold text-gray-900`,children:e.displayName}),(0,A.jsx)(`p`,{className:`line-clamp-2 text-[11px] text-gray-500`,children:r(P[e.name])})]}),(0,A.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,A.jsx)(`span`,{className:`rounded-full bg-gray-100 px-2 py-0.5 text-[11px] font-medium text-gray-600`,children:n.apiKeySet?r(`searchStatusConfigured`):r(`searchStatusNeedsSetup`)}),s?(0,A.jsx)(`span`,{className:`rounded-full bg-emerald-50 px-2 py-0.5 text-[11px] font-medium text-emerald-700`,children:r(`searchProviderActivated`)}):null]})]})},e.name)})})]})}function H(e){let{initialDraft:t,providers:n,search:i,onSubmit:a,isPending:o}=e,{isMobile:s}=_(),[u,d]=(0,k.useState)(s?null:i.provider),[f,p]=(0,k.useState)(t),m=u&&n.some(e=>e.name===u)?u:s?null:i.provider,h=n.find(e=>e.name===m)??null,y=m?i.providers[m]:null,b=m?f.enabledProviders.includes(m):!1,x=y?.docsUrl??h?.docsUrl;return(0,A.jsxs)(w,{className:`xl:min-h-0`,mobileView:s?m?`detail`:`list`:void 0,onMobileBack:()=>d(null),mobileListLabel:r(`searchPageTitle`),children:[(0,A.jsx)(V,{draft:f,providers:n,search:i,selectedProvider:m??i.provider,onSelect:d}),h?(0,A.jsx)(S,{children:(0,A.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),a(f)},className:`flex min-h-0 flex-1 flex-col`,children:[(0,A.jsx)(C,{className:`px-6 py-5`,children:(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,A.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-primary text-white`,children:(0,A.jsx)(l,{className:`h-5 w-5`})}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`h3`,{className:`text-lg font-semibold text-gray-900`,children:h.displayName}),(0,A.jsx)(`p`,{className:`text-sm text-gray-500`,children:h.description})]})]}),(0,A.jsx)(c,{type:`button`,variant:b?`secondary`:`outline`,className:`rounded-xl`,onClick:()=>{let e=b?f.enabledProviders.filter(e=>e!==m):m?[...f.enabledProviders,m]:f.enabledProviders,t={...f,enabledProviders:e};p(t),a(t)},children:r(b?`searchProviderDeactivate`:`searchProviderActivate`)})]})}),(0,A.jsxs)(E,{className:`space-y-6 px-6 py-5`,children:[(0,A.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,A.jsx)(R,{label:r(`searchActiveProvider`),value:f.activeProvider,options:n.map(e=>({value:e.name,label:e.displayName})),onChange:e=>p({...f,activeProvider:e})}),(0,A.jsx)(L,{label:r(`searchDefaultMaxResults`),value:f.maxResults,onChange:e=>p({...f,maxResults:e}),inputMode:`numeric`})]}),(0,A.jsx)(B,{draft:f,provider:m,search:i,selectedDocsUrl:x,updateProviderDraft:(e,t)=>{p(n=>({...n,providers:{...n.providers,[e]:{...n.providers[e],...t}}}))}})]}),(0,A.jsx)(D,{children:(0,A.jsx)(v,{children:(0,A.jsxs)(c,{type:`submit`,size:`sm`,disabled:o,children:[(0,A.jsx)(g,{className:`mr-1.5 h-3.5 w-3.5`}),r(o?`saving`:`saveChanges`)]})})})]})}):(0,A.jsx)(T,{children:(0,A.jsx)(`p`,{className:`text-sm text-gray-500`,children:r(`searchNoProviderSelected`)})})]})}function U(){let{data:e}=x(),{data:t}=b(),n=y(),i=t?.search??[],a=e?.search;return!a||i.length===0?(0,A.jsx)(`div`,{className:`p-8`,children:r(`loading`)}):(0,A.jsxs)(s,{className:`pb-0 xl:flex xl:h-full xl:min-h-0 xl:flex-col`,children:[(0,A.jsx)(o,{title:r(`searchPageTitle`),description:r(`searchPageDescription`)}),(0,A.jsx)(H,{initialDraft:F(a),providers:i,search:a,onSubmit:e=>n.mutate({data:I(e)}),isPending:n.isPending},JSON.stringify(a))]})}export{U as SearchConfigPage};
@@ -1,3 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{h as t,p as n,r}from"./react-Bb0EYsLS.js";import{$t as i,Gt as a,Jt as o,Kt as s,Qt as c,St as l,Xt as u,Yt as d,Zt as f,en as p,in as m,qt as h}from"./api-D0U10BcF.js";import{a as g,i as _,n as v,r as y,t as b}from"./select-C9FB0jlt.js";import{t as x}from"./plus-BeApS21t.js";import{t as S}from"./save-DtccrZld.js";import{t as C}from"./trash-2-bDhfsO1O.js";import{t as w}from"./form-actions-5OsDRt0g.js";import{t as T,v as E}from"./use-config-BNrlfEck.js";var D=e(t(),1),O=[`env`,`file`,`exec`];function k(e=``){return{alias:e,source:`env`,prefix:``,path:``,command:``,argsText:``,cwd:``,timeoutMs:5e3}}function A(){return{path:``,source:`env`,provider:``,id:``}}function j(e,t){return t.source===`env`?{...k(e),source:`env`,prefix:t.prefix??``}:t.source===`file`?{...k(e),source:`file`,path:t.path}:{...k(e),source:`exec`,command:t.command,argsText:(t.args??[]).join(`
2
- `),cwd:t.cwd??``,timeoutMs:t.timeoutMs??5e3}}function M(e){return e.source===`env`?{source:`env`,...e.prefix.trim()?{prefix:e.prefix.trim()}:{}}:e.source===`file`?{source:`file`,path:e.path.trim(),format:`json`}:{source:`exec`,command:e.command.trim(),args:e.argsText.split(`
3
- `).map(e=>e.trim()).filter(Boolean),...e.cwd.trim()?{cwd:e.cwd.trim()}:{},timeoutMs:Math.max(1,Math.trunc(e.timeoutMs||5e3))}}function N(e){return e?{enabled:!!e.enabled,defaultEnv:e.defaults.env??``,defaultFile:e.defaults.file??``,defaultExec:e.defaults.exec??``,providers:Object.entries(e.providers).map(([e,t])=>j(e,t)),refs:Object.entries(e.refs).map(([e,t])=>({path:e,source:t.source,provider:t.provider??``,id:t.id}))}:{enabled:!0,defaultEnv:``,defaultFile:``,defaultExec:``,providers:[],refs:[]}}function P(e){let t={};for(let[n,i]of e.providers.entries()){let e=i.alias.trim();if(!e)throw Error(`${r(`providerAlias`)} #${n+1} ${r(`isRequired`)}`);if(t[e])throw Error(`${r(`providerAlias`)}: ${e} (${r(`duplicate`)})`);if(i.source===`file`&&!i.path.trim())throw Error(`${r(`secretFilePath`)} #${n+1} ${r(`isRequired`)}`);if(i.source===`exec`&&!i.command.trim())throw Error(`${r(`secretExecCommand`)} #${n+1} ${r(`isRequired`)}`);t[e]=M(i)}let n={};for(let[i,a]of e.refs.entries()){let e=a.path.trim(),o=a.id.trim();if(!e)throw Error(`${r(`secretConfigPath`)} #${i+1} ${r(`isRequired`)}`);if(!o)throw Error(`${r(`secretId`)} #${i+1} ${r(`isRequired`)}`);let s=a.provider.trim();if(s&&!t[s])throw Error(`${r(`secretProviderAlias`)}: ${s} ${r(`notFound`)}`);n[e]={source:a.source,...s?{provider:s}:{},id:o}}return{enabled:e.enabled,defaultEnv:e.defaultEnv.trim(),defaultFile:e.defaultFile.trim(),defaultExec:e.defaultExec.trim(),providers:Object.entries(t).map(([e,t])=>j(e,t)),refs:Object.entries(n).map(([e,t])=>({path:e,source:t.source,provider:t.provider??``,id:t.id}))}}function F(e){return{enabled:e.enabled,defaults:{env:e.defaultEnv||null,file:e.defaultFile||null,exec:e.defaultExec||null},providers:Object.fromEntries(e.providers.map(e=>[e.alias.trim(),M(e)]).filter(([e])=>e)),refs:Object.fromEntries(e.refs.map(e=>[e.path.trim(),{source:e.source,...e.provider.trim()?{provider:e.provider.trim()}:{},id:e.id.trim()}]).filter(([e,t])=>e&&t.id))}}var I=n();function L(e){let{defaultEnv:t,defaultFile:n,defaultExec:i,providerAliases:l,onChange:u}=e;return(0,I.jsxs)(a,{children:[(0,I.jsxs)(o,{children:[(0,I.jsx)(d,{children:r(`secrets`)}),(0,I.jsx)(h,{children:r(`secretsEnabledHelp`)})]}),(0,I.jsx)(s,{className:`space-y-4`,children:[{label:r(`defaultEnvProvider`),value:t,key:`defaultEnv`},{label:r(`defaultFileProvider`),value:n,key:`defaultFile`},{label:r(`defaultExecProvider`),value:i,key:`defaultExec`}].map(e=>(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(c,{children:e.label}),(0,I.jsxs)(b,{value:e.value||`__none__`,onValueChange:t=>u(e.key,t===`__none__`?``:t),children:[(0,I.jsx)(_,{children:(0,I.jsx)(g,{placeholder:r(`noneOption`)})}),(0,I.jsxs)(v,{children:[(0,I.jsx)(y,{value:`__none__`,children:r(`noneOption`)}),l.map(e=>(0,I.jsx)(y,{value:e,children:e},e))]})]})]},e.key))})]})}function R(e){let{providers:t,onUpdate:n,onRemove:c,onAdd:l}=e;return(0,I.jsxs)(a,{children:[(0,I.jsxs)(o,{children:[(0,I.jsx)(d,{children:r(`secretProvidersTitle`)}),(0,I.jsx)(h,{children:r(`secretProvidersDescription`)})]}),(0,I.jsxs)(s,{className:`space-y-3`,children:[t.map((e,t)=>(0,I.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-gray-200 p-3`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 md:grid-cols-3`,children:[(0,I.jsx)(i,{value:e.alias,onChange:e=>n(t,{alias:e.target.value}),placeholder:r(`providerAlias`)}),(0,I.jsxs)(b,{value:e.source,onValueChange:e=>n(t,{source:e}),children:[(0,I.jsx)(_,{children:(0,I.jsx)(g,{})}),(0,I.jsx)(v,{children:O.map(e=>(0,I.jsx)(y,{value:e,children:e},e))})]}),(0,I.jsxs)(p,{type:`button`,variant:`outline`,onClick:()=>c(t),children:[(0,I.jsx)(C,{className:`mr-2 h-4 w-4`}),r(`removeProvider`)]})]}),e.source===`env`?(0,I.jsx)(i,{value:e.prefix,onChange:e=>n(t,{prefix:e.target.value}),placeholder:r(`envPrefix`)}):null,e.source===`file`?(0,I.jsx)(i,{value:e.path,onChange:e=>n(t,{path:e.target.value}),placeholder:r(`secretFilePath`)}):null,e.source===`exec`?(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(i,{value:e.command,onChange:e=>n(t,{command:e.target.value}),placeholder:r(`secretExecCommand`)}),(0,I.jsx)(`textarea`,{className:`min-h-[84px] w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-xs font-mono`,value:e.argsText,onChange:e=>n(t,{argsText:e.target.value}),placeholder:r(`secretExecArgs`)}),(0,I.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 md:grid-cols-2`,children:[(0,I.jsx)(i,{value:e.cwd,onChange:e=>n(t,{cwd:e.target.value}),placeholder:r(`secretExecCwd`)}),(0,I.jsx)(i,{type:`number`,min:1,value:e.timeoutMs,onChange:e=>n(t,{timeoutMs:Number.parseInt(e.target.value,10)||5e3}),placeholder:r(`secretExecTimeoutMs`)})]})]}):null]},`provider-${t}`)),(0,I.jsxs)(p,{type:`button`,variant:`outline`,onClick:l,children:[(0,I.jsx)(x,{className:`mr-2 h-4 w-4`}),r(`addSecretProvider`)]})]})]})}function z(e){let{refs:t,providerAliases:n,onUpdate:c,onRemove:l,onAdd:u}=e;return(0,I.jsxs)(a,{children:[(0,I.jsxs)(o,{children:[(0,I.jsx)(d,{children:r(`secretRefsTitle`)}),(0,I.jsx)(h,{children:r(`secretRefsDescription`)})]}),(0,I.jsxs)(s,{className:`space-y-3`,children:[t.map((e,t)=>(0,I.jsx)(`div`,{className:`space-y-3 rounded-xl border border-gray-200 p-3`,children:(0,I.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 md:grid-cols-2`,children:[(0,I.jsx)(i,{value:e.path,onChange:e=>c(t,{path:e.target.value}),placeholder:r(`secretConfigPath`)}),(0,I.jsx)(i,{value:e.id,onChange:e=>c(t,{id:e.target.value}),placeholder:r(`secretId`)}),(0,I.jsxs)(b,{value:e.source,onValueChange:e=>c(t,{source:e}),children:[(0,I.jsx)(_,{children:(0,I.jsx)(g,{})}),(0,I.jsx)(v,{children:O.map(e=>(0,I.jsx)(y,{value:e,children:e},e))})]}),(0,I.jsxs)(`div`,{className:`grid grid-cols-[1fr_auto] gap-2`,children:[(0,I.jsxs)(b,{value:e.provider||`__none__`,onValueChange:e=>c(t,{provider:e===`__none__`?``:e}),children:[(0,I.jsx)(_,{children:(0,I.jsx)(g,{placeholder:r(`secretProviderAlias`)})}),(0,I.jsxs)(v,{children:[(0,I.jsx)(y,{value:`__none__`,children:r(`noneOption`)}),n.map(e=>(0,I.jsx)(y,{value:e,children:e},e))]})]}),(0,I.jsx)(p,{type:`button`,variant:`outline`,onClick:()=>l(t),children:(0,I.jsx)(C,{className:`h-4 w-4`})})]})]})},`ref-${t}`)),(0,I.jsxs)(p,{type:`button`,variant:`outline`,onClick:u,children:[(0,I.jsx)(x,{className:`mr-2 h-4 w-4`}),r(`addSecretRef`)]})]})]})}function B(e){let{initialState:t,isPending:n,onSubmit:i}=e,[c,g]=(0,D.useState)(t),_=(0,D.useMemo)(()=>{let e=c.providers.map(e=>e.alias.trim()).filter(Boolean);return Array.from(new Set(e))},[c.providers]);return(0,I.jsxs)(f,{className:`space-y-6`,children:[(0,I.jsx)(u,{title:r(`secretsPageTitle`),description:r(`secretsPageDescription`)}),(0,I.jsxs)(a,{children:[(0,I.jsxs)(o,{children:[(0,I.jsx)(d,{children:r(`secrets`)}),(0,I.jsx)(h,{children:r(`secretsEnabledHelp`)})]}),(0,I.jsxs)(s,{className:`space-y-4`,children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl border border-gray-200 p-3`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`p`,{className:`text-sm font-medium text-gray-800`,children:r(`enabled`)}),(0,I.jsx)(`p`,{className:`text-xs text-gray-500`,children:r(`secretsEnabledHelp`)})]}),(0,I.jsx)(l,{checked:c.enabled,onCheckedChange:e=>g(t=>({...t,enabled:e}))})]}),(0,I.jsx)(L,{defaultEnv:c.defaultEnv,defaultFile:c.defaultFile,defaultExec:c.defaultExec,providerAliases:_,onChange:(e,t)=>g(n=>({...n,[e]:t}))})]})]}),(0,I.jsx)(R,{providers:c.providers,onUpdate:(e,t)=>{g(n=>({...n,providers:n.providers.map((n,r)=>r===e?{...n,...t}:n)}))},onRemove:e=>g(t=>({...t,providers:t.providers.filter((t,n)=>n!==e)})),onAdd:()=>g(e=>({...e,providers:[...e.providers,k()]}))}),(0,I.jsx)(z,{refs:c.refs,providerAliases:_,onUpdate:(e,t)=>{g(n=>({...n,refs:n.refs.map((n,r)=>r===e?{...n,...t}:n)}))},onRemove:e=>g(t=>({...t,refs:t.refs.filter((t,n)=>n!==e)})),onAdd:()=>g(e=>({...e,refs:[...e.refs,A()]}))}),(0,I.jsx)(w,{children:(0,I.jsxs)(p,{type:`button`,size:`sm`,onClick:()=>{try{i(P(c))}catch(e){m.error(e instanceof Error?e.message:String(e))}},disabled:n,children:[(0,I.jsx)(S,{className:`mr-1.5 h-3.5 w-3.5`}),r(n?`saving`:`save`)]})})]})}function V(){let{data:e,isLoading:t}=T(),n=E();return t?(0,I.jsx)(`div`,{className:`p-8 text-gray-400`,children:r(`loading`)}):(0,I.jsx)(B,{initialState:N(e?.secrets),isPending:n.isPending,onSubmit:e=>n.mutate({data:F(e)})},JSON.stringify(e?.secrets??null))}export{V as SecretsConfigPage};
@@ -1 +0,0 @@
1
- import{vt as e}from"./api-D0U10BcF.js";export{e as SecurityConfig};
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{h as t,p as n,u as r}from"./react-Bb0EYsLS.js";import{tn as i}from"./api-D0U10BcF.js";var a=e(t(),1),o=n(),s=i(`flex items-start justify-between gap-4 rounded-xl border p-4`,{variants:{tone:{default:`border-gray-200 bg-white`,muted:`border-gray-200 bg-gray-50`}},defaultVariants:{tone:`default`}}),c=a.forwardRef(({className:e,tone:t,title:n,description:i,control:a,children:c,...l},u)=>(0,o.jsxs)(`div`,{ref:u,className:r(s({tone:t}),e),...l,children:[(0,o.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,o.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:n}),i?(0,o.jsx)(`p`,{className:`text-sm leading-6 text-gray-500`,children:i}):null,c]}),a?(0,o.jsx)(`div`,{className:`shrink-0`,children:a}):null]}));c.displayName=`SettingRow`;export{c as t};
@@ -1 +0,0 @@
1
- import{c as e}from"./dist-DEJlYi0E.js";var t=e(`Ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),n=e(`Settings2`,[[`path`,{d:`M20 7h-9`,key:`3s1dr2`}],[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]);export{t as n,n as t};
@@ -1 +0,0 @@
1
- import{p as e,u as t}from"./react-Bb0EYsLS.js";import{c as n}from"./dist-DEJlYi0E.js";var r=n(`Sparkles`,[[`path`,{d:`M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z`,key:`4pj2yx`}],[`path`,{d:`M20 3v4`,key:`1olli1`}],[`path`,{d:`M22 5h-4`,key:`1gvqau`}],[`path`,{d:`M4 17v2`,key:`vumght`}],[`path`,{d:`M5 18H3`,key:`zchphs`}]]),i=e();function a({className:e,...n}){return(0,i.jsx)(`div`,{className:t(`animate-pulse rounded-md bg-slate-200`,e),...n})}export{r as n,a as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-BGrd8tLy.js";import"./src-Dad2ZbCt.js";import"./chunk-WYO6CB5R-Do6SJrnY.js";import"./chunk-ICXQ74PX-DH8NJMok.js";import"./chunk-HOUHSVGY-BMPwFEwN.js";import"./chunk-Q4XR5HBZ-uvIGstBS.js";import"./chunk-7BUUIJ7U-JiyRtrGu.js";import"./chunk-OGEWGWER-TIcEoPPH.js";import"./chunk-32BRIVSS-kG3lg0bC.js";import"./chunk-XXDRQBXY-C2QjjwYX.js";import"./chunk-VR4S4FIN-BAUbR0ke.js";import"./chunk-C7G6YPKG-AsyDSQ9j.js";import"./chunk-ZGVPDNZ5-B7kWWaXv.js";import"./chunk-52WLFC77-BLeB7iGk.js";import"./chunk-FWX5IMBZ-DFelpZBy.js";import{i as t,n,r,t as i}from"./chunk-EX3LRPZG-DzUwhkCz.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1,8 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-BGrd8tLy.js";import"./src-Dad2ZbCt.js";import"./chunk-WYO6CB5R-Do6SJrnY.js";import"./chunk-ICXQ74PX-DH8NJMok.js";import"./chunk-HOUHSVGY-BMPwFEwN.js";import"./chunk-Q4XR5HBZ-uvIGstBS.js";import"./chunk-7BUUIJ7U-JiyRtrGu.js";import"./chunk-OGEWGWER-TIcEoPPH.js";import"./chunk-32BRIVSS-kG3lg0bC.js";import"./chunk-XXDRQBXY-C2QjjwYX.js";import"./chunk-VR4S4FIN-BAUbR0ke.js";import"./chunk-C7G6YPKG-AsyDSQ9j.js";import"./chunk-ZGVPDNZ5-B7kWWaXv.js";import"./chunk-52WLFC77-BLeB7iGk.js";import"./chunk-FWX5IMBZ-DFelpZBy.js";import"./chunk-ZIRB5QZD-DTU0cDNh.js";import{r as t,t as n}from"./chunk-PUDLZKDR-I-EXhf_k.js";var r=n({defaultLayout:`swimlane`,styles:e(e=>`${t(e)}
2
- .swimlane.cluster rect {
3
- stroke: ${e.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,`getStyles`)});export{r as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-A3jEqwzn.js";import{n as e}from"./chunk-CQNSW5MT-iN-fiXVA.js";export{e as createTreeViewServices};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-A3jEqwzn.js";import{n as e}from"./chunk-R7FJI6CG-N-1LDgvy.js";export{e as createTreemapServices};
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{a as t,c as n,h as r,l as i,p as a,r as o,s,u as c}from"./react-Bb0EYsLS.js";import{tn as l}from"./api-D0U10BcF.js";import{c as u}from"./dist-DEJlYi0E.js";import{t as d}from"./confirm-dialog-RZUWA_j9.js";import"./doc-browser-DwXHr-mm.js";import{m as f,n as p}from"./doc-browser-context-CpvHiuQG.js";var m=u(`CircleAlert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),h=u(`FileText`,[[`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`,key:`1rqfz7`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),g=e(r(),1),_=a(),v=l(`rounded-2xl border px-4 py-3`,{variants:{tone:{neutral:`border-gray-200 bg-gray-50 text-gray-900`,success:`border-emerald-200 bg-emerald-50 text-emerald-900`,warning:`border-amber-200 bg-amber-50 text-amber-900`,danger:`border-rose-200 bg-rose-50 text-rose-700`,info:`border-primary/20 bg-primary/10 text-primary`},borderStyle:{solid:``,dashed:`border-dashed`}},defaultVariants:{tone:`neutral`,borderStyle:`solid`}}),y={neutral:`text-gray-900`,success:`text-emerald-800`,warning:`text-amber-900`,danger:`text-rose-700`,info:`text-primary`},b={neutral:`text-gray-600`,success:`text-emerald-700`,warning:`text-amber-800`,danger:`text-rose-700`,info:`text-primary/90`},x=g.forwardRef(({className:e,tone:t=`neutral`,borderStyle:n=`solid`,title:r,description:i,icon:a,actions:o,children:s,...l},u)=>{let d=t??`neutral`,f=!!r||!!i||!!a||!!o;return(0,_.jsxs)(`div`,{ref:u,className:c(v({tone:d,borderStyle:n}),e),...l,children:[f?(0,_.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,_.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,_.jsxs)(`div`,{className:`flex items-start gap-2`,children:[a?(0,_.jsx)(`div`,{className:`mt-0.5 shrink-0`,children:a}):null,(0,_.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[r?(0,_.jsx)(`p`,{className:c(`text-sm font-medium`,y[d]),children:r}):null,i?(0,_.jsx)(`p`,{className:c(r?`mt-1`:``,`text-sm leading-6`,b[d]),children:i}):null]})]})}),o?(0,_.jsx)(`div`,{className:`shrink-0`,children:o}):null]}):null,s?(0,_.jsx)(`div`,{className:c(f?`mt-3`:``),children:s}):null]})});x.displayName=`NoticeCard`;function S(){let e=p();(0,g.useEffect)(()=>{let t=t=>{let n=t.target.closest(`a[href]`);if(!n)return;let r=n.getAttribute(`href`)||``;f(r)&&(n.hasAttribute(`data-doc-external`)||t.ctrlKey||t.metaKey||t.shiftKey||(t.preventDefault(),t.stopPropagation(),e.open(r)))};return document.addEventListener(`click`,t,!0),()=>document.removeEventListener(`click`,t,!0)},[e])}var C=(0,g.createContext)(null);function w({children:e}){let[r,a]=(0,g.useState)(()=>s());(0,g.useEffect)(()=>i(e=>{a(e)}),[]);let o=(0,g.useCallback)(e=>{n(e),a(t())},[]),c=(0,g.useCallback)(()=>{o(r===`en`?`zh`:`en`)},[r,o]),l=(0,g.useMemo)(()=>({language:r,setLanguage:o,toggleLanguage:c}),[r,o,c]);return(0,_.jsx)(C.Provider,{value:l,children:e})}function T(){let e=(0,g.useContext)(C);if(!e)throw Error(`useI18n must be used within I18nProvider`);return{...e,t:o}}var E={open:!1,title:``,description:``,confirmLabel:o(`confirm`),cancelLabel:o(`cancel`),variant:`default`,resolve:null};function D(){let[e,t]=(0,g.useState)(E),n=(0,g.useCallback)(e=>new Promise(n=>{t({open:!0,title:e.title,description:e.description??``,confirmLabel:e.confirmLabel??o(`confirm`),cancelLabel:e.cancelLabel??o(`cancel`),variant:e.variant??`default`,resolve:e=>{n(e),t(e=>({...e,open:!1,resolve:null}))}})}),[]),r=(0,g.useCallback)(e=>{t(t=>(!e&&t.resolve&&t.resolve(!1),{...t,open:e,resolve:e?t.resolve:null}))},[]);return{confirm:n,ConfirmDialog:(0,g.useCallback)(()=>(0,_.jsx)(d,{open:e.open,onOpenChange:r,title:e.title,description:e.description||void 0,confirmLabel:e.confirmLabel,cancelLabel:e.cancelLabel,variant:e.variant,onConfirm:()=>e.resolve?.(!0),onCancel:()=>e.resolve?.(!1)}),[e,r])}}export{x as a,S as i,w as n,h as o,T as r,m as s,D as t};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-A3jEqwzn.js";import{n as e}from"./chunk-5FCAYU7R-BQga1Rr7.js";export{e as createWardleyServices};
@@ -1 +0,0 @@
1
- import{c as e}from"./dist-DEJlYi0E.js";var t=e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
@@ -1,86 +0,0 @@
1
- import { Skeleton } from "@/shared/components/ui/skeleton";
2
- import { cn } from "@/shared/lib/utils";
3
-
4
- const CHAT_CONVERSATION_SKELETON_BUBBLES = [
5
- {
6
- key: "hero",
7
- alignmentClassName: "justify-start",
8
- bubbleClassName: "max-w-[78%] h-32 rounded-[30px]",
9
- },
10
- {
11
- key: "follow-up",
12
- alignmentClassName: "justify-start",
13
- bubbleClassName: "max-w-[62%] h-24 rounded-[28px]",
14
- },
15
- {
16
- key: "reply",
17
- alignmentClassName: "justify-end",
18
- bubbleClassName: "max-w-[70%] h-24 rounded-[28px]",
19
- },
20
- {
21
- key: "detail",
22
- alignmentClassName: "justify-start",
23
- bubbleClassName: "max-w-[88%] h-36 rounded-[30px]",
24
- },
25
- ] as const;
26
-
27
- export function ChatConversationSkeleton() {
28
- return (
29
- <section
30
- data-testid="chat-conversation-skeleton"
31
- className="flex-1 min-h-0 flex flex-col overflow-hidden bg-background"
32
- >
33
- <div className="flex-1 min-h-0 overflow-y-auto custom-scrollbar">
34
- <div className="mx-auto flex min-h-full w-full max-w-[min(1120px,100%)] flex-col px-6 py-5">
35
- <div className="flex flex-1 flex-col gap-8">
36
- <div className="space-y-6">
37
- <Skeleton className="h-6 w-52 rounded-lg bg-muted" />
38
- <div className="space-y-5">
39
- {CHAT_CONVERSATION_SKELETON_BUBBLES.map((bubble) => (
40
- <div
41
- key={bubble.key}
42
- className={cn("flex w-full", bubble.alignmentClassName)}
43
- >
44
- <Skeleton
45
- data-testid="chat-conversation-skeleton-bubble"
46
- className={cn(
47
- "w-full bg-muted",
48
- bubble.bubbleClassName,
49
- )}
50
- />
51
- </div>
52
- ))}
53
- </div>
54
- </div>
55
- <div className="mt-auto grid gap-4 pb-2 sm:grid-cols-[minmax(0,1fr)_minmax(180px,240px)] sm:items-end">
56
- <div className="space-y-3">
57
- <Skeleton className="h-4 w-40 rounded-full bg-muted" />
58
- <Skeleton className="h-[112px] w-full rounded-[30px] bg-muted" />
59
- </div>
60
- <div className="hidden justify-end sm:flex">
61
- <Skeleton className="h-10 w-36 rounded-full bg-muted" />
62
- </div>
63
- </div>
64
- </div>
65
- </div>
66
- </div>
67
- <div className="bg-background p-4">
68
- <div className="mx-auto w-full max-w-[min(1120px,100%)]">
69
- <div className="overflow-hidden rounded-2xl border border-border bg-card shadow-card">
70
- <div className="px-4 py-2.5">
71
- <Skeleton className="h-[84px] w-full rounded-[28px] bg-muted" />
72
- </div>
73
- <div className="flex items-center justify-between gap-3 px-3 pb-3">
74
- <div className="flex items-center gap-2">
75
- <Skeleton className="h-8 w-20 rounded-full bg-muted" />
76
- <Skeleton className="h-8 w-28 rounded-full bg-muted" />
77
- <Skeleton className="hidden h-8 w-24 rounded-full bg-muted sm:block" />
78
- </div>
79
- <Skeleton className="h-8 w-8 rounded-full bg-muted" />
80
- </div>
81
- </div>
82
- </div>
83
- </div>
84
- </section>
85
- );
86
- }
@@ -1,36 +0,0 @@
1
- import { fireEvent, render, screen } from "@testing-library/react";
2
- import { describe, expect, it, vi } from "vitest";
3
- import { LanguageSettingsPage } from "@/features/settings/pages/language-settings-page";
4
-
5
- const mocks = vi.hoisted(() => ({
6
- selectLanguage: vi.fn(),
7
- }));
8
-
9
- vi.mock("@/features/settings/hooks/use-language-preference", () => ({
10
- useLanguagePreference: () => ({
11
- currentLanguage: "en",
12
- currentLanguageLabel: "English",
13
- languageOptions: [
14
- { value: "en", label: "English" },
15
- { value: "zh", label: "中文" },
16
- ],
17
- selectLanguage: mocks.selectLanguage,
18
- }),
19
- }));
20
-
21
- describe("LanguageSettingsPage", () => {
22
- it("reuses the shared language preference model for a mobile-friendly list", () => {
23
- render(<LanguageSettingsPage />);
24
-
25
- expect(screen.getByRole("heading", { name: "Language" })).toBeTruthy();
26
- expect(
27
- screen.getByRole("button", { name: "English" }).getAttribute(
28
- "aria-current",
29
- ),
30
- ).toBe("true");
31
-
32
- fireEvent.click(screen.getByRole("button", { name: "中文" }));
33
-
34
- expect(mocks.selectLanguage).toHaveBeenCalledWith("zh");
35
- });
36
- });
@@ -1,56 +0,0 @@
1
- import { Check, Languages } from "lucide-react";
2
- import { useLanguagePreference } from "@/features/settings/hooks/use-language-preference";
3
- import { t } from "@/shared/lib/i18n";
4
- import { cn } from "@/shared/lib/utils";
5
-
6
- export function LanguageSettingsPage() {
7
- const {
8
- currentLanguage,
9
- currentLanguageLabel,
10
- languageOptions,
11
- selectLanguage,
12
- } = useLanguagePreference();
13
-
14
- return (
15
- <section className="mx-auto w-full max-w-3xl space-y-4">
16
- <div className="rounded-3xl border border-gray-200/80 bg-white p-5 shadow-card">
17
- <div className="flex items-start gap-3">
18
- <div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl bg-gray-100 text-gray-600">
19
- <Languages className="h-4 w-4" />
20
- </div>
21
- <div className="min-w-0 flex-1">
22
- <h2 className="text-base font-semibold text-gray-900">
23
- {t("language")}
24
- </h2>
25
- <p className="mt-1 text-sm text-gray-500">
26
- {currentLanguageLabel}
27
- </p>
28
- </div>
29
- </div>
30
- </div>
31
-
32
- <div className="overflow-hidden rounded-3xl border border-gray-200/80 bg-white shadow-card">
33
- {languageOptions.map((option) => {
34
- const active = option.value === currentLanguage;
35
- return (
36
- <button
37
- key={option.value}
38
- type="button"
39
- onClick={() => selectLanguage(option.value)}
40
- className={cn(
41
- "flex w-full items-center justify-between gap-3 border-b border-gray-100 px-5 py-4 text-left text-sm transition-colors last:border-b-0",
42
- active
43
- ? "bg-gray-50 text-gray-900"
44
- : "text-gray-700 hover:bg-gray-50/70",
45
- )}
46
- aria-current={active ? "true" : undefined}
47
- >
48
- <span className="font-medium">{option.label}</span>
49
- {active ? <Check className="h-4 w-4 text-gray-700" /> : null}
50
- </button>
51
- );
52
- })}
53
- </div>
54
- </section>
55
- );
56
- }
@@ -1,49 +0,0 @@
1
- import { cn } from '@/shared/lib/utils';
2
- import { ArrowRight, ExternalLink } from 'lucide-react';
3
-
4
- interface ActionLinkProps {
5
- label: string;
6
- className?: string;
7
- onClick?: () => void;
8
- }
9
-
10
- interface ExternalActionLinkProps {
11
- label: string;
12
- className?: string;
13
- onClick: () => void;
14
- }
15
-
16
- /**
17
- * Unified action link with arrow indicator.
18
- * Used in card footers for "Configure →", "Enable →", etc.
19
- */
20
- export function ActionLink({ label, className, onClick }: ActionLinkProps) {
21
- return (
22
- <span
23
- onClick={onClick}
24
- className={cn(
25
- 'inline-flex items-center gap-1 text-[13px] font-medium text-gray-600 hover:text-primary transition-colors cursor-pointer group/action',
26
- className
27
- )}
28
- >
29
- {label}
30
- <ArrowRight className="h-3 w-3 transition-transform group-hover/action:translate-x-0.5" />
31
- </span>
32
- );
33
- }
34
-
35
- export function ExternalActionLink({ label, className, onClick }: ExternalActionLinkProps) {
36
- return (
37
- <button
38
- type="button"
39
- className={cn(
40
- 'inline-flex h-7 shrink-0 items-center gap-1.5 rounded-md px-1.5 text-[13px] font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
41
- className
42
- )}
43
- onClick={onClick}
44
- >
45
- <ExternalLink className="h-3.5 w-3.5" />
46
- {label}
47
- </button>
48
- );
49
- }