@nextclaw/ui 0.12.19 → 0.12.20-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 (185) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/assets/api-BcqDx0tm.js +15 -0
  3. package/dist/assets/app-manager-provider-DVYBjif-.js +1 -0
  4. package/dist/assets/app-navigation.config-CMoWvFEI.js +1 -0
  5. package/dist/assets/{book-open-CVEuA0y5.js → book-open-DgLqYpNY.js} +1 -1
  6. package/dist/assets/{channels-list-page-BqhqaBf1.js → channels-list-page-CsoI4OJm.js} +2 -2
  7. package/dist/assets/{chat-D4KecKjB.js → chat-CA3aRmhx.js} +13 -12
  8. package/dist/assets/chat-page-gdSN6Pr6.js +1 -0
  9. package/dist/assets/chunk-JZWAC4HX-u4uYphxM.js +3 -0
  10. package/dist/assets/{config-split-page-BGjVACdO.js → config-split-page-BMRGuCJQ.js} +1 -1
  11. package/dist/assets/{createLucideIcon-PPrXCGK8.js → createLucideIcon-BZkY6emz.js} +1 -1
  12. package/dist/assets/desktop-update-config-CD6-2PfI.js +1 -0
  13. package/dist/assets/{dialog-CTCX7oLf.js → dialog-csshWetU.js} +1 -1
  14. package/dist/assets/{dist-FL5e8mMi.js → dist-Bl94Ahwx.js} +1 -1
  15. package/dist/assets/{doc-browser-C02neCIE.js → doc-browser-BUlCkZo2.js} +1 -1
  16. package/dist/assets/doc-browser-CzCV73NJ.js +1 -0
  17. package/dist/assets/doc-browser-Doh2541x.js +1 -0
  18. package/dist/assets/{doc-browser-context-C-WPOji4.js → doc-browser-context-DfLHAWbG.js} +1 -1
  19. package/dist/assets/{es2015-BNy4R8AC.js → es2015-JCM5-KtW.js} +1 -1
  20. package/dist/assets/{external-link-BNtqJE01.js → external-link-Sw3ah_JD.js} +1 -1
  21. package/dist/assets/{folder-QyJHVUNz.js → folder-D7-VTnkz.js} +1 -1
  22. package/dist/assets/{hash-BGYUE-zr.js → hash-zajSTDXZ.js} +1 -1
  23. package/dist/assets/i18n-C5Mibli1.js +1 -0
  24. package/dist/assets/index-BTDFuKka.js +2 -0
  25. package/dist/assets/index-CUmk8xFK.css +1 -0
  26. package/dist/assets/{key-round-DenCfA2w.js → key-round-CnI1mc9F.js} +1 -1
  27. package/dist/assets/loader-circle-B5i8oMMY.js +1 -0
  28. package/dist/assets/{logo-badge-CKAxvQFc.js → logo-badge-BQgKnVtz.js} +1 -1
  29. package/dist/assets/{logos-CqXnaJIm.js → logos-CqVm0q0W.js} +1 -1
  30. package/dist/assets/marketplace-page-DJGDpTAo.js +1 -0
  31. package/dist/assets/{marketplace-page-XnDa2ulT.js → marketplace-page-DxlxHCFm.js} +2 -2
  32. package/dist/assets/mcp-marketplace-page-5UjYRWOR.js +40 -0
  33. package/dist/assets/mcp-marketplace-page-C1XaHZZO.js +1 -0
  34. package/dist/assets/message-square-D6Z4NwpG.js +1 -0
  35. package/dist/assets/{model-config-ByeL6Toe.js → model-config-PccJ9XyH.js} +1 -1
  36. package/dist/assets/{notice-card-D00-02yg.js → notice-card-CCgk6FvF.js} +1 -1
  37. package/dist/assets/play-D8WJLnJe.js +1 -0
  38. package/dist/assets/plus-Di0KAkiO.js +1 -0
  39. package/dist/assets/{popover-AmJkxio3.js → popover-YAsxDBhY.js} +1 -1
  40. package/dist/assets/{provider-scoped-model-input-CfFJsJp-.js → provider-scoped-model-input-CzpF7cug.js} +1 -1
  41. package/dist/assets/{providers-list-HMQzW2WV.js → providers-list-8qDMER8o.js} +1 -1
  42. package/dist/assets/{refresh-ccw-B-dhb3yS.js → refresh-ccw-Bii4w8aB.js} +1 -1
  43. package/dist/assets/refresh-cw-BxojR62w.js +1 -0
  44. package/dist/assets/remote-D4TtLPAp.js +1 -0
  45. package/dist/assets/{rotate-cw-BWqAG3Fv.js → rotate-cw-1Xqa7LZ8.js} +1 -1
  46. package/dist/assets/runtime-config-page-D-4c5H5z.js +1 -0
  47. package/dist/assets/{save-DpdkGieJ.js → save--BVI5wZX.js} +1 -1
  48. package/dist/assets/search-config-D3a65l3r.js +1 -0
  49. package/dist/assets/{search-CQUdr7j_.js → search-vChioOoe.js} +1 -1
  50. package/dist/assets/{secrets-config-YCsGd1am.js → secrets-config-CoMlR_7i.js} +2 -2
  51. package/dist/assets/{select-DVUtSFHZ.js → select-DIZrwsKU.js} +1 -1
  52. package/dist/assets/{sessions-config-page-BKN-XdKr.js → sessions-config-page-Cc0TJStn.js} +2 -2
  53. package/dist/assets/{setting-row-Cb5-lFs-.js → setting-row-DiQyrE81.js} +1 -1
  54. package/dist/assets/{settings-DgtZZlnF.js → settings-CiRChctQ.js} +1 -1
  55. package/dist/assets/skeleton-CFQRIUzt.js +1 -0
  56. package/dist/assets/{sparkles-DNSCyDhL.js → sparkles-D1ZKWdm4.js} +1 -1
  57. package/dist/assets/{status-dot-X_j51OfA.js → status-dot-Dv_hiUVa.js} +1 -1
  58. package/dist/assets/{tabs-custom-CcWmekaF.js → tabs-custom-CsACkVji.js} +1 -1
  59. package/dist/assets/{tag-chip-fdbK2wE6.js → tag-chip-C3wDBe_-.js} +1 -1
  60. package/dist/assets/theme-provider-aOmrJ9J6.js +1 -0
  61. package/dist/assets/{tooltip-BkZCQcKw.js → tooltip-Dq5Xehpk.js} +1 -1
  62. package/dist/assets/{trash-2-CqciSCsg.js → trash-2-rY9ZteZX.js} +1 -1
  63. package/dist/assets/use-config-BQJjq1mP.js +1 -0
  64. package/dist/assets/{use-confirm-dialog-DSrb9205.js → use-confirm-dialog-DBoV5n5P.js} +1 -1
  65. package/dist/assets/{use-infinite-scroll-loader-DmowtyTI.js → use-infinite-scroll-loader-JAicqVC5.js} +1 -1
  66. package/dist/assets/{use-viewport-layout-CaALCA51.js → use-viewport-layout-BX3XqzJ4.js} +1 -1
  67. package/dist/assets/x-DpTzXQcX.js +1 -0
  68. package/dist/index.html +40 -39
  69. package/package.json +9 -6
  70. package/src/app/hooks/use-realtime-query-bridge.ts +5 -5
  71. package/src/app/index.tsx +7 -1
  72. package/src/features/channels/components/config/channel-form.tsx +3 -3
  73. package/src/features/channels/components/config/weixin-channel-auth-section.tsx +1 -1
  74. package/src/features/chat/components/conversation/chat-conversation-panel.tsx +1 -0
  75. package/src/features/chat/components/conversation/chat-input-bar.container.tsx +9 -4
  76. package/src/features/chat/components/conversation/chat-message-list.container.test.tsx +64 -6
  77. package/src/features/chat/components/conversation/chat-message-list.container.tsx +185 -17
  78. package/src/features/chat/components/session/session-context-icon.tsx +1 -4
  79. package/src/features/chat/hooks/use-ncp-chat-derived-state.ts +3 -1
  80. package/src/features/chat/hooks/use-ncp-chat-page-data.ts +7 -6
  81. package/src/features/chat/hooks/use-ncp-session-conversation.test.tsx +74 -2
  82. package/src/features/chat/hooks/use-ncp-session-conversation.ts +32 -10
  83. package/src/features/chat/hooks/use-selected-session-context-window-indicator.ts +20 -0
  84. package/src/features/chat/managers/ncp-chat-input.manager.test.ts +25 -0
  85. package/src/features/chat/managers/ncp-chat-input.manager.ts +5 -1
  86. package/src/features/chat/pages/ncp-chat-page.test.ts +22 -8
  87. package/src/features/chat/pages/ncp-chat-page.tsx +15 -11
  88. package/src/features/chat/stores/chat-thread.store.ts +8 -2
  89. package/src/features/chat/utils/chat-context-window-indicator.utils.ts +50 -0
  90. package/src/features/chat/utils/chat-runtime.utils.ts +1 -1
  91. package/src/features/chat/utils/chat-session-preference-governance.utils.test.tsx +114 -0
  92. package/src/features/chat/utils/chat-session-preference-governance.utils.ts +30 -36
  93. package/src/features/chat/utils/ncp-chat-runtime-availability.utils.test.ts +165 -0
  94. package/src/features/chat/utils/ncp-chat-runtime-availability.utils.ts +50 -0
  95. package/src/features/chat/utils/ncp-session-adapter.utils.test.ts +27 -0
  96. package/src/features/chat/utils/ncp-session-adapter.utils.ts +6 -4
  97. package/src/features/chat/utils/ncp-session-context-metadata.utils.ts +121 -0
  98. package/src/features/chat/utils/session-context.utils.ts +1 -2
  99. package/src/features/system-status/components/config/runtime-config-editor.tsx +6 -0
  100. package/src/features/system-status/components/config/runtime-settings-card.tsx +12 -0
  101. package/src/features/system-status/components/desktop-update-config.test.tsx +17 -7
  102. package/src/features/system-status/components/desktop-update-config.tsx +75 -30
  103. package/src/features/system-status/hooks/use-system-status.ts +0 -11
  104. package/src/features/system-status/index.ts +4 -1
  105. package/src/features/system-status/managers/runtime-update.manager.ts +330 -0
  106. package/src/features/system-status/managers/system-status.manager.test.ts +0 -25
  107. package/src/features/system-status/managers/system-status.manager.ts +1 -30
  108. package/src/features/system-status/stores/runtime-update.store.ts +24 -0
  109. package/src/features/system-status/types/system-status.types.ts +0 -2
  110. package/src/features/system-status/utils/runtime-config-agent.utils.ts +6 -1
  111. package/src/features/system-status/utils/system-status.utils.test.ts +1 -85
  112. package/src/features/system-status/utils/system-status.utils.ts +1 -23
  113. package/src/platforms/desktop/managers/desktop-update.manager.ts +6 -0
  114. package/src/platforms/desktop/types/desktop-update.types.ts +21 -19
  115. package/src/shared/components/common/brand-header.test.tsx +142 -0
  116. package/src/shared/components/common/brand-header.tsx +93 -0
  117. package/src/shared/components/cron-config.tsx +1 -1
  118. package/src/shared/components/doc-browser/doc-browser-context.test.tsx +1 -1
  119. package/src/shared/components/doc-browser/doc-browser.tsx +1 -1
  120. package/src/shared/components/search-config.tsx +3 -3
  121. package/src/shared/lib/api/README.md +3 -0
  122. package/src/shared/lib/api/index.ts +13 -11
  123. package/src/shared/lib/api/ncp-session.test.ts +17 -18
  124. package/src/shared/lib/api/ncp-session.types.ts +92 -0
  125. package/src/shared/lib/api/raw-client.utils.ts +3 -126
  126. package/src/shared/lib/api/services/agents.service.ts +18 -0
  127. package/src/shared/lib/api/services/channel-auth.service.ts +21 -0
  128. package/src/shared/lib/api/{client.ts → services/client.service.ts} +45 -1
  129. package/src/shared/lib/api/services/config.service.ts +171 -0
  130. package/src/shared/lib/api/services/marketplace.service.ts +66 -0
  131. package/src/shared/lib/api/services/mcp-marketplace.service.ts +70 -0
  132. package/src/shared/lib/api/services/ncp-attachments.service.ts +14 -0
  133. package/src/shared/lib/api/services/ncp-session.service.ts +39 -0
  134. package/src/shared/lib/api/services/remote.service.ts +50 -0
  135. package/src/shared/lib/api/services/runtime-control.service.ts +18 -0
  136. package/src/shared/lib/api/services/runtime-update.service.ts +26 -0
  137. package/src/shared/lib/api/services/server-path.service.ts +16 -0
  138. package/src/shared/lib/api/types.ts +9 -74
  139. package/src/shared/lib/i18n/{chat.ts → chat-labels.utils.ts} +13 -1
  140. package/src/shared/lib/i18n/desktop-update-labels.utils.ts +65 -0
  141. package/src/shared/lib/i18n/index.ts +4 -5
  142. package/src/shared/lib/i18n/runtime/i18n-language-owner.ts +5 -5
  143. package/src/shared/lib/transport/index.ts +1 -0
  144. package/src/shared/lib/transport/local-transport.service.ts +24 -4
  145. package/src/shared/lib/transport/remote-transport.service.ts +2 -2
  146. package/src/shared/lib/transport/request-raw-api-response.utils.ts +133 -0
  147. package/src/shared/lib/transport/transport.types.ts +8 -2
  148. package/src/shared/lib/ui-document-title/index.ts +1 -1
  149. package/tsconfig.json +1 -0
  150. package/dist/assets/api-BurjmW4A.js +0 -15
  151. package/dist/assets/app-manager-provider-DhxUmyTv.js +0 -1
  152. package/dist/assets/app-navigation.config-Bpd16Pem.js +0 -1
  153. package/dist/assets/chat-page-Cc7n80lW.js +0 -1
  154. package/dist/assets/chunk-JZWAC4HX-24FLdHl7.js +0 -3
  155. package/dist/assets/desktop-update-config-fMLlSStv.js +0 -1
  156. package/dist/assets/doc-browser-COj7x090.js +0 -1
  157. package/dist/assets/doc-browser-fyn7eDTp.js +0 -1
  158. package/dist/assets/i18n-CM4y8Mw9.js +0 -1
  159. package/dist/assets/index-CtVSzMPM.js +0 -2
  160. package/dist/assets/index-N3hjuljD.css +0 -1
  161. package/dist/assets/loader-circle-R23uEPkM.js +0 -1
  162. package/dist/assets/marketplace-page-mF-M5mku.js +0 -1
  163. package/dist/assets/mcp-marketplace-page-BArKWcRZ.js +0 -40
  164. package/dist/assets/mcp-marketplace-page-DBUcIIHJ.js +0 -1
  165. package/dist/assets/message-square-Dm34zD6k.js +0 -1
  166. package/dist/assets/play-ul4L6MWm.js +0 -1
  167. package/dist/assets/plus-D14303DH.js +0 -1
  168. package/dist/assets/remote-B4ELSd3u.js +0 -1
  169. package/dist/assets/runtime-config-page-N4FP6H0M.js +0 -1
  170. package/dist/assets/search-config-B62TY-z2.js +0 -1
  171. package/dist/assets/skeleton-BCPi52jT.js +0 -1
  172. package/dist/assets/theme-provider-WTWq_jYq.js +0 -1
  173. package/dist/assets/use-config-CyvhbRhf.js +0 -1
  174. package/dist/assets/x-tYcSDsrY.js +0 -1
  175. package/src/shared/lib/api/agents.ts +0 -34
  176. package/src/shared/lib/api/channel-auth.ts +0 -35
  177. package/src/shared/lib/api/config.ts +0 -362
  178. package/src/shared/lib/api/marketplace.ts +0 -156
  179. package/src/shared/lib/api/mcp-marketplace.ts +0 -138
  180. package/src/shared/lib/api/ncp-attachments.ts +0 -41
  181. package/src/shared/lib/api/ncp-session.ts +0 -78
  182. package/src/shared/lib/api/remote.ts +0 -86
  183. package/src/shared/lib/api/runtime-control.ts +0 -34
  184. package/src/shared/lib/api/server-path.ts +0 -46
  185. /package/dist/assets/{config-hints-CPNzbMEp.js → config-hints-MogHYQ8G.js} +0 -0
@@ -1,40 +0,0 @@
1
- import{_ as e,i as t,m as n,p as r,u as i}from"./i18n-CM4y8Mw9.js";import{At as a,C as o,Dt as s,E as c,Ft as l,It as u,Pt as d,S as f,T as p,kt as m,pt as h,w as g,x as _,zt as v}from"./api-BurjmW4A.js";import{a as ee,c as y,i as b,l as x,n as S,o as te,r as C,s as w,t as T}from"./use-infinite-scroll-loader-DmowtyTI.js";import{a as E,i as D,n as O,o as k,r as A,t as j}from"./dialog-CTCX7oLf.js";import{t as M}from"./createLucideIcon-PPrXCGK8.js";import{t as N}from"./sparkles-DNSCyDhL.js";import{t as P}from"./notice-card-D00-02yg.js";import{i as F}from"./doc-browser-context-C-WPOji4.js";import{n as I}from"./doc-browser-C02neCIE.js";import{t as L}from"./tag-chip-fdbK2wE6.js";import{t as R}from"./use-confirm-dialog-DSrb9205.js";var z=M(`PackageCheck`,[[`path`,{d:`m16 16 2 2 4-4`,key:`gfu2re`}],[`path`,{d:`M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14`,key:`e7tb2h`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`line`,{x1:`12`,x2:`12`,y1:`22`,y2:`12`,key:`a4e8g8`}]]);function B(e){return(e??``).trim().toLowerCase()}function ne(e){let t=new Map;for(let n of e){let e=[n.catalogSlug,n.spec,n.id,n.label];for(let r of e){let e=B(r);!e||t.has(e)||t.set(e,n)}}return t}function re(e,t){let n=[e.slug,e.install.spec,e.id,e.name];for(let e of n){let n=B(e);if(!n)continue;let r=t.get(n);if(r)return r}}function V(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function H(e,t,n,r,i){let a=`<!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>${V(e)}</title>
7
- <style>
8
- body { margin: 0; background: #f8fafc; color: #0f172a; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
9
- .wrap { max-width: 980px; margin: 0 auto; padding: 28px 20px 40px; }
10
- .hero { border: 1px solid #dbeafe; border-radius: 16px; background: linear-gradient(180deg, #eff6ff, #ffffff); padding: 20px; }
11
- .hero h1 { margin: 0; font-size: 26px; }
12
- .grid { display: grid; grid-template-columns: 280px 1fr; gap: 14px; margin-top: 16px; }
13
- .card { border: 1px solid #e2e8f0; background: #fff; border-radius: 14px; overflow: hidden; }
14
- .card h2 { margin: 0; padding: 12px 14px; font-size: 13px; font-weight: 700; color: #1d4ed8; border-bottom: 1px solid #e2e8f0; background: #f8fafc; }
15
- .body { padding: 12px 14px; }
16
- pre { margin: 0; white-space: pre-wrap; line-height: 1.7; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
17
- a { color: #2563eb; text-decoration: none; }
18
- @media (max-width: 860px) { .grid { grid-template-columns: 1fr; } }
19
- </style>
20
- </head>
21
- <body>
22
- <main class="wrap">
23
- <section class="hero">
24
- <h1>${V(e)}</h1>
25
- ${i?`<p>${V(i)}</p>`:``}
26
- ${r?`<p><a href="${V(r)}" target="_blank" rel="noopener noreferrer">${V(r)}</a></p>`:``}
27
- </section>
28
- <section class="grid">
29
- <article class="card">
30
- <h2>Metadata</h2>
31
- <div class="body"><pre>${V(t)}</pre></div>
32
- </article>
33
- <article class="card">
34
- <h2>Content</h2>
35
- <div class="body"><pre>${V(n)}</pre></div>
36
- </article>
37
- </section>
38
- </main>
39
- </body>
40
- </html>`;return`data:text/html;charset=utf-8,${encodeURIComponent(a)}`}function U(e,n,r){return b(n?.summaryI18n,n?.summary,e)||C(r,e)||t(`marketplaceInstalledLocalSummary`)}function W(e,t){return t?.transport?t.transport.toUpperCase():(e?.install?.transportTypes??[]).map(e=>e.toUpperCase()).join(` / `)||`MCP`}var G=r();function K(e){let{item:n,record:r,localeFallbacks:i,onOpen:o,onInstall:s,onToggle:c,onDoctor:l,onRemove:u}=e,d=r,f=n?.name??r?.label??r?.id??`MCP`,p=U(i,n,r),m=W(n,r),h=d?d.enabled===!1?t(`marketplaceDisable`):t(`statusReady`):null;return(0,G.jsx)(`article`,{onClick:o,className:`cursor-pointer rounded-2xl border border-gray-200/70 bg-white p-4 shadow-sm transition hover:border-blue-300 hover:shadow-md`,children:(0,G.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`text-sm font-semibold text-gray-900`,children:f}),(0,G.jsx)(`div`,{className:`mt-1 text-xs text-gray-500`,children:m}),(0,G.jsx)(`div`,{className:`mt-2 line-clamp-2 text-sm text-gray-600`,children:p}),(0,G.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(n?.tags??[]).map(e=>(0,G.jsx)(L,{children:e},e)),h?(0,G.jsx)(L,{tone:`success`,children:h}):null]})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2`,children:[!d&&n&&s?(0,G.jsx)(a,{type:`button`,size:`sm`,variant:`primary`,className:`rounded-xl`,onClick:e=>{e.stopPropagation(),s()},children:t(`marketplaceInstall`)}):null,d?(0,G.jsxs)(G.Fragment,{children:[c?(0,G.jsx)(a,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-gray-200 text-gray-700`,onClick:e=>{e.stopPropagation(),c()},children:d.enabled===!1?t(`marketplaceEnable`):t(`marketplaceDisable`)}):null,l?(0,G.jsx)(a,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-blue-200 text-blue-700 hover:border-blue-300 hover:bg-blue-50 hover:text-blue-700`,onClick:e=>{e.stopPropagation(),l()},children:t(`marketplaceMcpDoctor`)}):null,u?(0,G.jsx)(a,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-rose-200 text-rose-600 hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600`,onClick:e=>{e.stopPropagation(),u()},children:t(`marketplaceMcpRemove`)}):null]}):null]})]})})}var q=e(n(),1);function J(e){let{item:t,open:n,pending:r,onOpenChange:i,onSubmit:a}=e;return(0,G.jsx)(j,{open:n,onOpenChange:i,children:t?(0,G.jsx)(Y,{item:t,pending:r,onOpenChange:i,onSubmit:a},`${t.slug}:${n?`open`:`closed`}`):null})}function Y(e){let{item:n,pending:r,onOpenChange:i,onSubmit:o}=e,s=n.install,[c,l]=(0,q.useState)(s?.defaultName??``),[u,d]=(0,q.useState)(!0),[f,p]=(0,q.useState)(Object.fromEntries((s?.inputs??[]).map(e=>[e.id,e.defaultValue??``])));return(0,G.jsxs)(O,{children:[(0,G.jsxs)(E,{children:[(0,G.jsx)(k,{children:t(`marketplaceMcpInstallDialogTitle`)}),(0,G.jsx)(A,{children:n.name})]}),(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsxs)(`div`,{className:`space-y-2`,children:[(0,G.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:t(`marketplaceMcpServerName`)}),(0,G.jsx)(m,{value:c,onChange:e=>l(e.target.value),placeholder:s?.defaultName??`mcp-server`})]}),(0,G.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl border border-gray-200 px-3 py-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:t(`marketplaceMcpAllAgents`)}),(0,G.jsx)(`div`,{className:`text-xs text-gray-500`,children:t(`marketplaceMcpAllAgentsDescription`)})]}),(0,G.jsx)(h,{checked:u,onCheckedChange:d})]}),(s?.inputs??[]).map(e=>(0,G.jsxs)(`div`,{className:`space-y-2`,children:[(0,G.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:e.label}),e.description?(0,G.jsx)(`div`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,G.jsx)(m,{type:e.secret?`password`:`text`,value:f[e.id]??``,onChange:t=>p(n=>({...n,[e.id]:t.target.value})),placeholder:e.defaultValue??``})]},e.id))]}),(0,G.jsxs)(D,{children:[(0,G.jsx)(a,{variant:`outline`,onClick:()=>i(!1),disabled:r,children:t(`cancel`)}),(0,G.jsx)(a,{onClick:()=>void o({name:c,allAgents:u,inputs:f}),disabled:r||!c.trim(),children:t(r?`marketplaceInstalling`:`marketplaceInstall`)})]})]})}function ie(e){let{result:n,targetName:r,open:i,pending:a,onOpenChange:o}=e;return(0,G.jsx)(j,{open:i,onOpenChange:o,children:(0,G.jsxs)(O,{children:[(0,G.jsxs)(E,{children:[(0,G.jsx)(k,{children:t(`marketplaceMcpDoctorTitle`)}),(0,G.jsx)(A,{children:r??`-`})]}),a?(0,G.jsx)(`div`,{className:`text-sm text-gray-500`,children:t(`loading`)}):null,!a&&n?(0,G.jsxs)(`div`,{className:`space-y-3 text-sm text-gray-700`,children:[(0,G.jsxs)(`div`,{children:[t(`marketplaceMcpDoctorAccessible`),`:`,` `,n.accessible?t(`statusReady`):t(`marketplaceOperationFailed`)]}),(0,G.jsxs)(`div`,{children:[t(`marketplaceMcpDoctorTransport`),`:`,` `,n.transport.toUpperCase()]}),(0,G.jsxs)(`div`,{children:[t(`marketplaceMcpDoctorTools`),`: `,n.toolCount]}),n.error?(0,G.jsx)(P,{tone:`danger`,description:n.error,className:`rounded-lg`}):null]}):null]})})}function ae(e){let t=x({queryKey:[`marketplace-mcp-items`,e],initialPageParam:1,queryFn:({pageParam:t})=>g({...e,page:t}),getNextPageParam:e=>e.page<e.totalPages?e.page+1:void 0,staleTime:15e3}),n=(0,q.useMemo)(()=>y(t.data),[t.data]);return{...t,data:n}}function oe(){return u({queryKey:[`marketplace-mcp-installed`],queryFn:()=>o(),staleTime:1e4})}function X(){let e=v();return l({mutationFn:p,onSuccess:n=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),d.success(n.message||t(`marketplaceInstallSuccessMcp`))},onError:e=>{d.error(e.message||t(`marketplaceInstallFailed`))}})}function se(){let e=v();return l({mutationFn:c,onSuccess:n=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),d.success(n.message||t(`marketplaceMcpManageSuccess`))},onError:e=>{d.error(e.message||t(`marketplaceOperationFailed`))}})}var Z=12;function Q(){let[e,n]=(0,q.useState)(`catalog`),[r,a]=(0,q.useState)(``),[o,c]=(0,q.useState)(``),[u,d]=(0,q.useState)(`relevance`),[p,m]=(0,q.useState)(null),[h,g]=(0,q.useState)(null),[v,y]=(0,q.useState)(null),{language:b}=I(),x=F(),{confirm:C,ConfirmDialog:E}=R(),D=(0,q.useMemo)(()=>S(b),[b]);(0,q.useEffect)(()=>{let e=window.setTimeout(()=>{c(r.trim())},250);return()=>window.clearTimeout(e)},[r]);let O=ae({q:o||void 0,sort:u,pageSize:Z}),k=oe(),{containerRef:A,sentinelRef:j}=T({disabled:e!==`catalog`||O.isError||!O.hasNextPage||O.isFetchingNextPage,onLoadMore:()=>O.fetchNextPage(),watchValue:`${e}:${o}:${u}:${O.data?.loadedItems??0}:${O.data?.loadedPages??0}`});(0,q.useEffect)(()=>{let e=A.current;e&&typeof e.scrollTo==`function`&&e.scrollTo({top:0})},[A,o,e,u]);let M=X(),L=se(),B=l({mutationFn:_,onSuccess:(e,t)=>{g(t),y(e)}}),V=(0,q.useMemo)(()=>ne(k.data?.records??[]),[k.data?.records]),W=(0,q.useMemo)(()=>(k.data?.records??[]).filter(e=>{let t=[e.id??``,e.label??``,e.catalogSlug??``,e.description??``,e.descriptionZh??``].join(` `).toLowerCase();return o?t.includes(o.toLowerCase()):!0}),[k.data?.records,o]),Y=async(e,n)=>{let r=e?.name??n?.label??n?.id??`MCP`,i={title:r,kind:`content`,dedupeKey:e?`marketplace:mcp:${e.slug}`:`marketplace:mcp:${n?.id??n?.spec??r}`},a=U(D,e,n);if(!e){let e=H(r,JSON.stringify(n??{},null,2),t(`marketplaceInstalledLocalSummary`),n?.docsUrl,a);x.open(e,i);return}try{let t=await f(e.slug),n=H(r,t.metadataRaw||JSON.stringify(e,null,2),t.bodyRaw||t.raw,t.sourceUrl,a);x.open(n,i)}catch(e){let t=H(r,JSON.stringify({error:e instanceof Error?e.message:String(e)},null,2),a,void 0,a);x.open(t,i)}},Q=async e=>{p&&(await M.mutateAsync({spec:p.slug,name:e.name.trim(),allAgents:e.allAgents,inputs:e.inputs}),m(null))},$=async(e,n)=>{let r=n.id||n.spec;r&&(e===`remove`&&!await C({title:`${t(`marketplaceMcpRemoveTitle`)} ${r}?`,description:t(`marketplaceMcpRemoveDescription`),confirmLabel:t(`marketplaceMcpRemove`),variant:`destructive`})||await L.mutateAsync({action:e,id:r,spec:n.spec}))},ce=[{id:`catalog`,label:t(`marketplaceMcpTabCatalog`),icon:N},{id:`installed`,label:t(`marketplaceMcpTabInstalled`),icon:z,count:k.data?.total??0}];return(0,G.jsxs)(s,{className:`flex h-full min-h-0 flex-col pb-0 px-0`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-6 w-full max-w-[1400px] h-full min-h-0 mx-auto`,children:[(0,G.jsxs)(`div`,{className:`relative overflow-hidden rounded-[32px] bg-gradient-to-br from-[#0F172A] via-[#1E1B4B] to-[#312E81] px-10 py-14 text-white shadow-xl isolate`,children:[(0,G.jsx)(`div`,{className:`absolute top-0 right-0 -m-32 opacity-30 pointer-events-none mix-blend-screen scale-150 transform-gpu`,children:(0,G.jsx)(`div`,{className:`w-[500px] h-[500px] rounded-full bg-gradient-to-tl from-fuchsia-500/40 via-purple-500/30 to-indigo-500/20 blur-[80px]`})}),(0,G.jsx)(`div`,{className:`absolute bottom-0 left-0 -m-32 opacity-20 pointer-events-none mix-blend-screen transform-gpu`,children:(0,G.jsx)(`div`,{className:`w-[400px] h-[400px] rounded-full bg-gradient-to-tr from-blue-500/40 to-cyan-500/20 blur-[80px]`})}),(0,G.jsxs)(`div`,{className:`relative z-10 flex flex-col gap-3`,children:[(0,G.jsx)(`h1`,{className:`text-[38px] font-extrabold tracking-[-0.02em] leading-tight drop-shadow-sm text-transparent bg-clip-text bg-gradient-to-r from-white via-white to-white/70`,children:t(`marketplaceMcpPageTitle`)}),(0,G.jsx)(`p`,{className:`text-[17px] font-medium text-purple-100/70 max-w-2xl leading-relaxed tracking-wide`,children:t(`marketplaceMcpPageDescription`)})]})]}),(0,G.jsxs)(`div`,{className:`flex flex-col md:flex-row md:items-center justify-between gap-4 mt-2`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-1.5 p-1 bg-gray-100/60 backdrop-blur-sm rounded-2xl w-fit border border-gray-200/50 shadow-inner`,children:ce.map(t=>{let r=e===t.id,a=t.icon;return(0,G.jsxs)(`button`,{onClick:()=>n(t.id),className:i(`relative flex items-center gap-2 px-5 py-2.5 rounded-xl font-semibold text-[14px] transition-all duration-300`,r?`text-gray-900 bg-white shadow-[0_2px_10px_rgb(0,0,0,0.06)]`:`text-gray-500 hover:text-gray-700 hover:bg-gray-200/40`),children:[(0,G.jsx)(a,{className:i(`w-4 h-4`,r?`text-primary`:`text-gray-400`)}),t.label,t.id===`installed`&&typeof t.count==`number`&&(0,G.jsx)(`span`,{className:i(`ml-1 flex items-center justify-center h-5 px-1.5 min-w-5 rounded-full text-[11px] font-bold transition-colors`,r?`bg-primary/10 text-primary`:`bg-gray-200 text-gray-500`),children:t.count})]},t.id)})}),(0,G.jsx)(`div`,{className:`flex-1 w-full md:max-w-md`,children:(0,G.jsx)(ee,{scope:e===`catalog`?`all`:`installed`,searchText:r,searchPlaceholder:t(`marketplaceMcpSearchPlaceholder`),sort:u,onSearchTextChange:a,onSortChange:d})})]}),(0,G.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col mt-2`,children:[(0,G.jsx)(`div`,{className:`flex items-center justify-between mb-4 px-1`,children:(0,G.jsxs)(`h3`,{className:`text-[18px] font-bold tracking-tight text-gray-900 flex items-center gap-2`,children:[t(e===`catalog`?`marketplaceMcpSectionCatalog`:`marketplaceMcpSectionInstalled`),(0,G.jsx)(`span`,{className:`flex items-center justify-center h-6 px-2 rounded-lg bg-gray-100 text-[12px] font-semibold text-gray-500`,children:e===`catalog`?O.data?.total??0:k.data?.total??0})]})}),(0,G.jsxs)(`div`,{ref:A,className:`min-h-0 flex-1 overflow-y-auto pr-3 pb-8 -mx-1 px-1 custom-scrollbar`,"aria-busy":O.isLoading||O.isFetchingNextPage,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-[22px] md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 items-stretch`,children:[e===`catalog`&&O.isLoading&&(0,G.jsx)(w,{count:Z}),e===`catalog`&&!O.isLoading&&(O.data?.items??[]).map(e=>{let t=re(e,V);return(0,G.jsx)(K,{item:e,record:t,localeFallbacks:D,onOpen:()=>void Y(e,t),onInstall:()=>m(e),onToggle:t?()=>void $(t.enabled===!1?`enable`:`disable`,t):void 0,onDoctor:t?()=>{g(t.id??null),y(null),B.mutateAsync(t.id??``)}:void 0,onRemove:t?()=>void $(`remove`,t):void 0},e.id)}),e===`installed`&&W.map(e=>(0,G.jsx)(K,{record:e,localeFallbacks:D,onOpen:()=>void Y(void 0,e),onToggle:()=>void $(e.enabled===!1?`enable`:`disable`,e),onDoctor:()=>{g(e.id??null),y(null),B.mutateAsync(e.id??``)},onRemove:()=>void $(`remove`,e)},e.id??e.spec))]}),e===`catalog`&&O.isError&&(0,G.jsx)(P,{tone:`danger`,title:t(`marketplaceMcpSectionCatalog`),description:O.error.message}),e===`installed`&&k.isError&&(0,G.jsx)(P,{tone:`danger`,title:t(`marketplaceMcpSectionInstalled`),description:k.error.message}),e===`catalog`&&!O.isLoading&&!O.isError&&(O.data?.items?.length??0)===0&&(0,G.jsx)(`div`,{className:`flex flex-col items-center justify-center py-20 bg-gray-50/50 rounded-3xl border border-dashed border-gray-200 mt-4`,children:(0,G.jsx)(`p`,{className:`text-[15px] font-medium text-gray-500`,children:t(`marketplaceNoMcp`)})}),e===`installed`&&!k.isError&&W.length===0&&(0,G.jsx)(`div`,{className:`flex flex-col items-center justify-center py-20 bg-gray-50/50 rounded-3xl border border-dashed border-gray-200 mt-4`,children:(0,G.jsx)(`p`,{className:`text-[15px] font-medium text-gray-500`,children:t(`marketplaceNoInstalledMcp`)})}),e===`catalog`&&!O.isError&&(0,G.jsx)(te,{hasMore:!!O.hasNextPage,loading:O.isFetchingNextPage,sentinelRef:j})]})]})]}),(0,G.jsx)(J,{item:p,open:!!p,pending:M.isPending,onOpenChange:e=>!e&&m(null),onSubmit:Q}),(0,G.jsx)(ie,{open:!!h,targetName:h,result:v,pending:B.isPending,onOpenChange:e=>!e&&g(null)}),(0,G.jsx)(E,{})]})}export{Q as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./mcp-marketplace-page-BArKWcRZ.js";export{e as McpMarketplacePage};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-PPrXCGK8.js";var t=e(`MessageSquare`,[[`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`,key:`1lielz`}]]);export{t};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-PPrXCGK8.js";var t=e(`Play`,[[`polygon`,{points:`6 3 20 12 6 21 6 3`,key:`1oa8hb`}]]);export{t};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-PPrXCGK8.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
@@ -1 +0,0 @@
1
- import{m as e}from"./app-manager-provider-DhxUmyTv.js";export{e as RemoteAccessPage};
@@ -1 +0,0 @@
1
- import{_ as e,i as t,m as n,p as r}from"./i18n-CM4y8Mw9.js";import{At as i,Ct as a,Dt as o,Et as s,Pt as c,St as l,Tt as u,_t as d,ht as f,kt as p,pt as m,wt as h,xt as g,yt as _}from"./api-BurjmW4A.js";import{t as v}from"./createLucideIcon-PPrXCGK8.js";import{a as y}from"./theme-provider-WTWq_jYq.js";import{a as b,i as x,n as S,r as C,t as w}from"./select-DVUtSFHZ.js";import{t as ee}from"./loader-circle-R23uEPkM.js";import{t as te}from"./play-ul4L6MWm.js";import{t as T}from"./plus-D14303DH.js";import{t as E}from"./rotate-cw-BWqAG3Fv.js";import{t as ne}from"./save-DpdkGieJ.js";import{t as D}from"./trash-2-CqciSCsg.js";import{t as O}from"./notice-card-D00-02yg.js";import{i as k,n as A,w as j}from"./use-config-CyvhbRhf.js";import{a as M,i as N}from"./index-CtVSzMPM.js";import{t as P}from"./config-hints-CPNzbMEp.js";import{t as F}from"./setting-row-Cb5-lFs-.js";var re=v(`Square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),I=e(n(),1),L=r(),R={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},z={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},B={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function V(e){return t(R[e]??`runtimeControlUnavailable`)}function H(e){return t(z[e]??`runtimeControlServiceUnknown`)}function U(e){return t(B[e.environment])}function W(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function G(e){return e?[{action:`start-service`,capability:e.canStartService,label:t(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:t(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:t(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:t(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function K(e){let{busy:t,icon:n}=e;return t?(0,L.jsx)(ee,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,L.jsx)(te,{className:`mr-2 h-4 w-4`}):n===`square`?(0,L.jsx)(re,{className:`mr-2 h-4 w-4`}):(0,L.jsx)(E,{className:`mr-2 h-4 w-4`})}function q(){let{busy:e,busyAction:n,controlView:r,errorMessage:o,pendingRestart:s,visibleLifecycle:d,visibleMessage:p,visibleServiceState:m}=f(),v=G(r??void 0),y=async e=>{let n=W(r,e);if(!n?.available){c.error(n?.reasonIfUnavailable??t(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&n.requiresConfirmation&&!window.confirm(t(`runtimeControlStopServiceConfirm`))))try{let t=await _.runRuntimeControlAction(e);c.success(t.message)}catch(e){let n=e instanceof Error?e.message:t(`runtimeControlActionFailed`);c.error(`${t(`runtimeControlActionFailed`)}: ${n}`)}},b=async()=>{if(!r?.canRestartApp.available){c.error(r?.canRestartApp.reasonIfUnavailable??t(`runtimeRestartAppUnavailable`));return}if(window.confirm(t(`runtimeControlRestartAppConfirm`)))try{let e=await _.runRuntimeControlAction(`restart-app`);c.success(e.message)}catch(e){let n=e instanceof Error?e.message:t(`runtimeControlActionFailed`);c.error(`${t(`runtimeControlActionFailed`)}: ${n}`)}};return(0,L.jsxs)(g,{children:[(0,L.jsxs)(h,{children:[(0,L.jsx)(u,{children:t(`runtimeControlTitle`)}),(0,L.jsx)(a,{children:t(`runtimeControlDescription`)})]}),(0,L.jsxs)(l,{className:`space-y-4`,children:[(0,L.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-gray-200 bg-gray-50 p-4`,children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,L.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:H(m)}),(0,L.jsx)(`div`,{className:`text-xs text-gray-500`,children:r?U(r):t(`runtimeControlLoading`)})]}),(0,L.jsx)(`p`,{className:`text-sm text-gray-600`,children:p}),(0,L.jsx)(`div`,{className:`text-xs text-gray-500`,children:V(d)}),r?.managementHint?(0,L.jsx)(`p`,{className:`text-xs text-gray-500`,children:r.managementHint}):null,o&&!e?(0,L.jsx)(`p`,{className:`text-sm text-amber-700`,children:o}):null]}),s?(0,L.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-amber-200 bg-amber-50 p-4`,children:[(0,L.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:t(`runtimeControlPendingRestartTitle`)}),(0,L.jsx)(`p`,{className:`text-sm text-amber-800`,children:t(`runtimeControlPendingRestartDescription`)}),s.changedPaths.length>0?(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:t(`runtimeControlPendingRestartPaths`)}),(0,L.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:s.changedPaths.map(e=>(0,L.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,L.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:v.map(t=>(0,L.jsxs)(i,{type:`button`,variant:t.variant??`default`,onClick:()=>{if(t.action===`restart-app`){b();return}y(t.action)},disabled:!t.capability.available||e,children:[(0,L.jsx)(K,{icon:t.icon,busy:n===t.action}),t.label]},t.action))}),v.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,L.jsx)(`p`,{className:`text-xs text-gray-500`,children:e.capability.reasonIfUnavailable},`${e.action}-reason`))]})]})}function J(e){let{description:t,title:n}=e;return(0,L.jsx)(O,{tone:`neutral`,title:n,description:t})}function Y(e){let{children:n}=e;return(0,L.jsxs)(g,{children:[(0,L.jsxs)(h,{children:[(0,L.jsx)(u,{children:t(`runtimePresenceTitle`)}),(0,L.jsx)(a,{children:t(`runtimePresenceDescription`)})]}),(0,L.jsx)(l,{children:n})]})}function X(){let e=d().runtimeControlView?.environment,n=M(e=>e.supported),r=M(e=>e.initialized),i=M(e=>e.busyAction),a=M(e=>e.snapshot);return(0,I.useEffect)(()=>{if(e===`desktop-embedded`){N.start();return}N.markUnsupported()},[e]),e===`desktop-embedded`?(0,L.jsx)(Y,{children:(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsx)(O,{tone:`neutral`,title:t(`runtimePresenceBehaviorLabel`),description:a?.closeToBackground?t(`runtimePresenceBehaviorBackground`):t(`runtimePresenceBehaviorQuit`),className:`rounded-xl`}),!r||n&&!a?(0,L.jsx)(`p`,{className:`text-sm text-gray-500`,children:t(`runtimePresenceLoading`)}):null,a?(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsx)(F,{title:t(`runtimePresenceCloseToBackground`),description:t(`runtimePresenceCloseToBackgroundHelp`),control:(0,L.jsx)(m,{id:`runtime-presence-close-background`,"aria-label":t(`runtimePresenceCloseToBackground`),checked:a.closeToBackground,disabled:i===`saving-preferences`,onCheckedChange:e=>{N.updatePreferences({closeToBackground:e})}})}),(0,L.jsx)(F,{title:t(`runtimePresenceLaunchAtLogin`),description:a.supportsLaunchAtLogin?t(`runtimePresenceLaunchAtLoginHelp`):a.launchAtLoginReason??t(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,L.jsx)(m,{id:`runtime-presence-launch-login`,"aria-label":t(`runtimePresenceLaunchAtLogin`),checked:a.launchAtLogin,disabled:!a.supportsLaunchAtLogin||i===`saving-preferences`,onCheckedChange:e=>{N.updatePreferences({launchAtLogin:e})}})})]}):null]})}):e===`managed-local-service`?(0,L.jsx)(Y,{children:(0,L.jsx)(J,{title:t(`runtimePresenceManagedLocalTitle`),description:t(`runtimePresenceManagedLocalDescription`)})}):e===`self-hosted-web`?(0,L.jsx)(Y,{children:(0,L.jsx)(J,{title:t(`runtimePresenceSelfHostedTitle`),description:t(`runtimePresenceSelfHostedDescription`)})}):e===`shared-web`?(0,L.jsx)(Y,{children:(0,L.jsx)(J,{title:t(`runtimePresenceSharedTitle`),description:t(`runtimePresenceSharedDescription`)})}):(0,L.jsx)(Y,{children:(0,L.jsx)(`p`,{className:`text-sm text-gray-500`,children:t(`runtimePresenceLoading`)})})}function ie(){return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(s,{title:t(`runtimePageTitle`),description:t(`runtimePageDescription`)}),(0,L.jsx)(q,{}),(0,L.jsx)(X,{}),(0,L.jsx)(y,{})]})}var Z={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function ae(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0,maxToolIterations:void 0}}function oe(){return{agentId:``,match:{channel:``,accountId:``}}}function se(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Z,configText:JSON.stringify(Z,null,2)}}function ce(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 le(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 ue(e){return{agents:(e.agents.list??[]).map(ce),bindings:(e.bindings??[]).map(le),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 $(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 n=e.agents.map((e,n)=>{if(!e.id.trim())throw Error(t(`agentIdRequiredError`).replace(`{index}`,String(n)));return $(e)}),r=n.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(r.length>0)throw Error(`${t(`duplicateAgentId`)}: ${r[0]}`);let i=e.bindings.map((n,r)=>{let i=n.agentId.trim(),a=n.match.channel.trim(),o=n.match.accountId?.trim()??``,s=n.match.peer?.kind,c=n.match.peer?.id?.trim()??``;if(!i)throw Error(t(`bindingAgentIdRequired`).replace(`{index}`,String(r)));if(!e.knownAgentIds.has(i))throw Error(`${t(`bindingAgentIdNotFound`).replace(`{index}`,String(r))}: ${i}`);if(!a)throw Error(t(`bindingChannelRequired`).replace(`{index}`,String(r)));let l={agentId:i,match:{channel:a}};if(o&&(l.match.accountId=o),s){if(!c)throw Error(t(`bindingPeerIdRequired`).replace(`{index}`,String(r)));l.match.peer={kind:s,id:c}}return l}),a=e.runtimeEntries.reduce((e,t,n)=>{let r=t.id.trim(),i=t.type.trim();if(!r)throw Error(`Runtime entry id is required at index ${n}.`);if(!i)throw Error(`Runtime entry type is required for "${r}".`);if(e[r])throw Error(`Duplicate runtime entry id: ${r}`);let a=t.configText.trim()?JSON.parse(t.configText):{};if(a&&(typeof a!=`object`||Array.isArray(a)))throw Error(`Runtime entry config for "${r}" must be a JSON object.`);return e[r]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:i,config:a??{}},e},{});return{agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:n,runtimes:{entries:a}},bindings:i,session:{dmScope:e.dmScope}}}function fe(e){return(0,L.jsxs)(g,{children:[(0,L.jsxs)(h,{children:[(0,L.jsx)(u,{children:e.label??t(`agentList`)}),(0,L.jsx)(a,{children:e.help??t(`agentListHelp`)})]}),(0,L.jsxs)(l,{className:`space-y-3`,children:[e.agents.map((n,r)=>(0,L.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-3 space-y-3`,children:[(0,L.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,L.jsx)(p,{value:n.id,onChange:t=>e.onUpdateAgent(r,{id:t.target.value}),placeholder:t(`agentIdPlaceholder`)}),(0,L.jsx)(p,{value:n.workspace??``,onChange:t=>e.onUpdateAgent(r,{workspace:t.target.value}),placeholder:t(`workspaceOverridePlaceholder`)}),(0,L.jsx)(p,{value:n.model??``,onChange:t=>e.onUpdateAgent(r,{model:t.target.value}),placeholder:t(`modelOverridePlaceholder`)}),(0,L.jsx)(p,{value:n.runtime??n.engine??``,onChange:t=>e.onUpdateAgent(r,{runtime:t.target.value}),placeholder:e.engineLabel??t(`engineOverridePlaceholder`)}),(0,L.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-2`,children:[(0,L.jsx)(p,{type:`number`,min:1e3,step:1e3,value:n.contextTokens??``,onChange:t=>e.onUpdateAgent(r,{contextTokens:Q(t.target.value)}),placeholder:e.contextTokensLabel??t(`contextTokensPlaceholder`)}),(0,L.jsx)(p,{type:`number`,min:1,value:n.maxToolIterations??``,onChange:t=>e.onUpdateAgent(r,{maxToolIterations:Q(t.target.value)}),placeholder:t(`maxToolsPlaceholder`)})]})]}),(0,L.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-gray-600`,children:[(0,L.jsx)(m,{checked:!!n.default,onCheckedChange:t=>e.onSetDefaultAgent(r,t)}),(0,L.jsx)(`span`,{children:t(`defaultAgent`)})]}),(0,L.jsxs)(i,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>e.onRemoveAgent(r),children:[(0,L.jsx)(D,{className:`h-4 w-4 mr-1`}),t(`remove`)]})]})]},`${r}-${n.id}`)),(0,L.jsxs)(i,{type:`button`,variant:`outline`,onClick:e.onAddAgent,children:[(0,L.jsx)(T,{className:`h-4 w-4 mr-2`}),t(`addAgent`)]})]})]})}function pe(e){return(0,L.jsxs)(g,{children:[(0,L.jsxs)(h,{children:[(0,L.jsx)(u,{children:e.label??t(`bindings`)}),(0,L.jsx)(a,{children:e.help??t(`bindingsHelp`)})]}),(0,L.jsxs)(l,{className:`space-y-3`,children:[e.bindings.map((n,r)=>{let a=n.match.peer?.kind??``;return(0,L.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-3 space-y-3`,children:[(0,L.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,L.jsx)(p,{value:n.agentId,onChange:t=>e.onUpdateBinding(r,{...n,agentId:t.target.value}),placeholder:t(`targetAgentIdPlaceholder`)}),(0,L.jsx)(p,{value:n.match.channel,onChange:t=>e.onUpdateBinding(r,{...n,match:{...n.match,channel:t.target.value}}),placeholder:t(`channelPlaceholder`)}),(0,L.jsx)(p,{value:n.match.accountId??``,onChange:t=>e.onUpdateBinding(r,{...n,match:{...n.match,accountId:t.target.value}}),placeholder:t(`accountIdOptionalPlaceholder`)}),(0,L.jsxs)(w,{value:a||`__none__`,onValueChange:t=>{let i=t===`__none__`?``:t;e.onUpdateBinding(r,i?{...n,match:{...n.match,peer:{kind:i,id:n.match.peer?.id??``}}}:{...n,match:{...n.match,peer:void 0}})},children:[(0,L.jsx)(x,{children:(0,L.jsx)(b,{})}),(0,L.jsxs)(S,{children:[(0,L.jsx)(C,{value:`__none__`,children:t(`peerKindOptional`)}),(0,L.jsx)(C,{value:`direct`,children:`direct`}),(0,L.jsx)(C,{value:`group`,children:`group`}),(0,L.jsx)(C,{value:`channel`,children:`channel`})]})]}),(0,L.jsx)(p,{value:n.match.peer?.id??``,onChange:t=>e.onUpdateBinding(r,{...n,match:{...n.match,peer:a?{kind:a,id:t.target.value}:void 0}}),placeholder:t(`peerIdPlaceholder`)})]}),(0,L.jsx)(`div`,{className:`flex justify-end`,children:(0,L.jsxs)(i,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>e.onRemoveBinding(r),children:[(0,L.jsx)(D,{className:`h-4 w-4 mr-1`}),t(`remove`)]})})]},`${r}-${n.agentId}`)}),(0,L.jsxs)(i,{type:`button`,variant:`outline`,onClick:e.onAddBinding,children:[(0,L.jsx)(T,{className:`h-4 w-4 mr-2`}),t(`addBinding`)]})]})]})}function me(e){return(0,L.jsxs)(g,{children:[(0,L.jsxs)(h,{children:[(0,L.jsx)(u,{children:e.label??`Runtime Entries`}),(0,L.jsx)(a,{children:e.help??`统一管理可见的 runtime entry 与其配置。`})]}),(0,L.jsxs)(l,{className:`space-y-3`,children:[e.entries.map((t,n)=>(0,L.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-3 space-y-3`,children:[(0,L.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,L.jsx)(p,{value:t.id,onChange:t=>e.onUpdateEntry(n,{id:t.target.value}),placeholder:`entry id,例如 hermes`}),(0,L.jsx)(p,{value:t.label??``,onChange:t=>e.onUpdateEntry(n,{label:t.target.value}),placeholder:`展示名称,例如 Hermes`}),(0,L.jsx)(p,{value:t.type,onChange:t=>e.onUpdateEntry(n,{type:t.target.value}),placeholder:`runtime type,例如 narp-stdio`}),(0,L.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-200 px-3 py-2`,children:[(0,L.jsx)(`span`,{className:`text-sm text-gray-700`,children:`Enabled`}),(0,L.jsx)(m,{checked:t.enabled!==!1,onCheckedChange:t=>e.onUpdateEntry(n,{enabled:t})})]})]}),(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:`Config JSON`}),(0,L.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-gray-200 px-3 py-2 text-sm font-mono`,value:t.configText,onChange:t=>e.onUpdateEntry(n,{configText:t.target.value}),spellCheck:!1})]}),(0,L.jsx)(`div`,{className:`flex justify-end`,children:(0,L.jsxs)(i,{type:`button`,variant:`outline`,onClick:()=>e.onRemoveEntry(n),children:[(0,L.jsx)(D,{className:`mr-2 h-4 w-4`}),`Delete`]})})]},`${n}-${t.id||`runtime-entry`}`)),(0,L.jsxs)(i,{type:`button`,variant:`outline`,onClick:e.onAddEntry,children:[(0,L.jsx)(T,{className:`mr-2 h-4 w-4`}),`Add Runtime Entry`]})]})]})}var he=[{value:`main`,label:`main`},{value:`per-peer`,label:`per-peer`},{value:`per-channel-peer`,label:`per-channel-peer`},{value:`per-account-channel-peer`,label:`per-account-channel-peer`}];function ge(e){return(0,L.jsxs)(g,{children:[(0,L.jsxs)(h,{children:[(0,L.jsx)(u,{children:e.dmScopeLabel??t(`dmScope`)}),(0,L.jsx)(a,{children:e.dmScopeHelp??t(`dmScopeHelp`)})]}),(0,L.jsxs)(l,{className:`space-y-4`,children:[(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:e.defaultContextTokensLabel??t(`defaultContextTokens`)}),(0,L.jsx)(p,{type:`number`,min:1e3,step:1e3,value:e.defaultContextTokens,onChange:t=>e.onDefaultContextTokensChange(Math.max(1e3,Number.parseInt(t.target.value,10)||1e3))}),(0,L.jsx)(`p`,{className:`text-xs text-gray-500`,children:e.defaultContextTokensHelp??t(`defaultContextTokensHelp`)})]}),(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:e.defaultEngineLabel??t(`defaultEngine`)}),(0,L.jsx)(p,{value:e.defaultEngine,onChange:t=>e.onDefaultEngineChange(t.target.value),placeholder:t(`defaultEnginePlaceholder`)}),(0,L.jsx)(`p`,{className:`text-xs text-gray-500`,children:e.defaultEngineHelp??t(`defaultEngineHelp`)})]}),(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:e.dmScopeLabel??t(`dmScope`)}),(0,L.jsxs)(w,{value:e.dmScope,onValueChange:t=>e.onDmScopeChange(t),children:[(0,L.jsx)(x,{children:(0,L.jsx)(b,{})}),(0,L.jsx)(S,{children:he.map(e=>(0,L.jsx)(C,{value:e.value,children:e.label},e.value))})]})]})]})]})}function _e(e){let n=(0,I.useMemo)(()=>ue(e.config),[e.config]),[r,a]=(0,I.useState)(n.agents),[s,l]=(0,I.useState)(n.bindings),[u,d]=(0,I.useState)(n.runtimeEntries),[f,p]=(0,I.useState)(n.dmScope),[m,h]=(0,I.useState)(n.defaultContextTokens),[g,_]=(0,I.useState)(n.defaultEngine),v=(0,I.useMemo)(()=>{let e=new Set([`main`]);return r.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[r]);return(0,L.jsxs)(o,{className:`space-y-6`,children:[(0,L.jsx)(ie,{}),(0,L.jsx)(ge,{dmScope:f,defaultContextTokens:m,defaultEngine:g,onDmScopeChange:p,onDefaultContextTokensChange:h,onDefaultEngineChange:_,dmScopeLabel:P(`session.dmScope`,e.uiHints)?.label,dmScopeHelp:P(`session.dmScope`,e.uiHints)?.help,defaultContextTokensLabel:P(`agents.defaults.contextTokens`,e.uiHints)?.label,defaultContextTokensHelp:P(`agents.defaults.contextTokens`,e.uiHints)?.help,defaultEngineLabel:P(`agents.defaults.engine`,e.uiHints)?.label,defaultEngineHelp:P(`agents.defaults.engine`,e.uiHints)?.help}),(0,L.jsx)(me,{entries:u,onUpdateEntry:(e,t)=>d(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>d(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>d(e=>[...e,se()]),label:P(`agents.runtimes.entries`,e.uiHints)?.label,help:P(`agents.runtimes.entries`,e.uiHints)?.help}),(0,L.jsx)(fe,{agents:r,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,ae()]),onSetDefaultAgent:(e,t)=>a(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t)),label:P(`agents.list`,e.uiHints)?.label,help:P(`agents.list`,e.uiHints)?.help,contextTokensLabel:P(`agents.list.*.contextTokens`,e.uiHints)?.label,engineLabel:P(`agents.list.*.engine`,e.uiHints)?.label}),(0,L.jsx)(pe,{bindings:s,onUpdateBinding:(e,t)=>{l(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>l(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>l(e=>[...e,oe()]),label:P(`bindings`,e.uiHints)?.label,help:P(`bindings`,e.uiHints)?.help}),(0,L.jsx)(`div`,{className:`flex justify-end`,children:(0,L.jsxs)(i,{type:`button`,onClick:()=>{try{let t=de({agents:r,bindings:s,runtimeEntries:u,dmScope:f,defaultContextTokens:m,defaultEngine:g,knownAgentIds:v});e.updateRuntime.mutate({data:t})}catch(e){c.error(e instanceof Error?e.message:String(e))}},disabled:e.updateRuntime.isPending,children:[(0,L.jsx)(ne,{className:`h-4 w-4 mr-2`}),e.updateRuntime.isPending?t(`saving`):t(`saveRuntimeSettings`)]})})]})}function ve(){let{data:e,isLoading:n}=A(),{data:r}=k(),i=j();return n||!e?(0,L.jsx)(`div`,{className:`p-8 text-gray-400`,children:t(`runtimeLoading`)}):(0,L.jsx)(_e,{config:e,uiHints:r?.uiHints,updateRuntime:i})}export{ve as RuntimeConfig};
@@ -1 +0,0 @@
1
- import{_ as e,i as t,m as n,p as r}from"./i18n-CM4y8Mw9.js";import{At as i,Dt as a,Et as o,Ot as s,kt as c}from"./api-BurjmW4A.js";import{t as l}from"./search-CQUdr7j_.js";import{a as u,i as d,n as f,r as p,t as m}from"./select-DVUtSFHZ.js";import{t as h}from"./external-link-BNtqJE01.js";import{t as g}from"./key-round-DenCfA2w.js";import{t as _}from"./use-viewport-layout-CaALCA51.js";import{T as v,n as y,r as b}from"./use-config-CyvhbRhf.js";import{a as x,c as S,i as C,n as w,o as T,s as E,t as D}from"./config-split-page-BGjVACdO.js";var O=e(n(),1),k=r(),A=[{value:`noLimit`,label:`searchFreshnessNoLimit`},{value:`oneDay`,label:`searchFreshnessOneDay`},{value:`oneWeek`,label:`searchFreshnessOneWeek`},{value:`oneMonth`,label:`searchFreshnessOneMonth`},{value:`oneYear`,label:`searchFreshnessOneYear`}],j=[{value:`basic`,label:`searchDepthBasic`},{value:`advanced`,label:`searchDepthAdvanced`}],M=[{value:`true`,label:`enabled`},{value:`false`,label:`disabled`}],N={bocha:`searchProviderBochaDescription`,tavily:`searchProviderTavilyDescription`,brave:`searchProviderBraveDescription`};function P(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 F(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 I(e){let{label:t,value:n,onChange:r,placeholder:i,type:a=`text`,inputMode:o}=e;return(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{children:t}),(0,k.jsx)(c,{type:a,value:n,onChange:e=>r(e.target.value),placeholder:i,inputMode:o,className:`rounded-xl`})]})}function L(e){let{label:n,value:r,options:i,onChange:a}=e;return(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{children:n}),(0,k.jsxs)(m,{value:r,onValueChange:a,children:[(0,k.jsx)(d,{className:`rounded-xl`,children:(0,k.jsx)(u,{})}),(0,k.jsx)(f,{children:i.map(e=>(0,k.jsx)(p,{value:e.value,children:t(e.label)},e.value))})]})]})}function R({docsUrl:e}){return e?(0,k.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,children:(0,k.jsxs)(i,{type:`button`,variant:`outline`,className:`rounded-xl`,children:[(0,k.jsx)(h,{className:`mr-2 h-4 w-4`}),t(`searchProviderOpenDocs`)]})}):null}function z(e){let{draft:n,provider:r,search:i,selectedDocsUrl:a,updateProviderDraft:o}=e;if(r===`bocha`){let e=n.providers.bocha;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(I,{label:t(`apiKey`),value:e.apiKey,onChange:e=>o(`bocha`,{apiKey:e}),placeholder:i.providers.bocha.apiKeyMasked||t(`enterApiKey`),type:`password`}),(0,k.jsx)(I,{label:t(`searchProviderBaseUrl`),value:e.baseUrl,onChange:e=>o(`bocha`,{baseUrl:e})}),(0,k.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,k.jsx)(L,{label:t(`searchProviderSummary`),value:e.summary?`true`:`false`,options:M,onChange:e=>o(`bocha`,{summary:e===`true`})}),(0,k.jsx)(L,{label:t(`searchProviderFreshness`),value:e.freshness,options:A,onChange:e=>o(`bocha`,{freshness:e})})]}),(0,k.jsx)(R,{docsUrl:a??`https://open.bocha.cn`})]})}if(r===`tavily`){let e=n.providers.tavily;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(I,{label:t(`apiKey`),value:e.apiKey,onChange:e=>o(`tavily`,{apiKey:e}),placeholder:i.providers.tavily.apiKeyMasked||t(`enterApiKey`),type:`password`}),(0,k.jsx)(I,{label:t(`searchProviderBaseUrl`),value:e.baseUrl,onChange:e=>o(`tavily`,{baseUrl:e})}),(0,k.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,k.jsx)(L,{label:t(`searchProviderSearchDepth`),value:e.searchDepth,options:j,onChange:e=>o(`tavily`,{searchDepth:e})}),(0,k.jsx)(L,{label:t(`searchProviderIncludeAnswer`),value:e.includeAnswer?`true`:`false`,options:M,onChange:e=>o(`tavily`,{includeAnswer:e===`true`})})]}),(0,k.jsx)(R,{docsUrl:a})]})}let s=n.providers.brave;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(I,{label:t(`apiKey`),value:s.apiKey,onChange:e=>o(`brave`,{apiKey:e}),placeholder:i.providers.brave.apiKeyMasked||t(`enterApiKey`),type:`password`}),(0,k.jsx)(I,{label:t(`searchProviderBaseUrl`),value:s.baseUrl,onChange:e=>o(`brave`,{baseUrl:e})})]})}function B(e){let{draft:n,providers:r,search:i,selectedProvider:a,onSelect:o}=e;return(0,k.jsxs)(x,{children:[(0,k.jsx)(S,{className:`px-4 py-4`,children:(0,k.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-gray-500`,children:t(`searchChannels`)})}),(0,k.jsx)(T,{className:`space-y-2 p-3`,children:r.map(e=>{let r=i.providers[e.name],s=n.enabledProviders.includes(e.name);return(0,k.jsx)(D,{onClick:()=>o(e.name),active:a===e.name,className:`p-3`,children:(0,k.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`p`,{className:`truncate text-sm font-semibold text-gray-900`,children:e.displayName}),(0,k.jsx)(`p`,{className:`line-clamp-2 text-[11px] text-gray-500`,children:t(N[e.name])})]}),(0,k.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,k.jsx)(`span`,{className:`rounded-full bg-gray-100 px-2 py-0.5 text-[11px] font-medium text-gray-600`,children:r.apiKeySet?t(`searchStatusConfigured`):t(`searchStatusNeedsSetup`)}),s?(0,k.jsx)(`span`,{className:`rounded-full bg-emerald-50 px-2 py-0.5 text-[11px] font-medium text-emerald-700`,children:t(`searchProviderActivated`)}):null]})]})},e.name)})})]})}function V(e){let{initialDraft:n,providers:r,search:a,onSubmit:o,isPending:s}=e,{isMobile:c}=_(),[u,d]=(0,O.useState)(c?null:a.provider),[f,p]=(0,O.useState)(n),m=u&&r.some(e=>e.name===u)?u:c?null:a.provider,h=r.find(e=>e.name===m)??null,v=m?a.providers[m]:null,y=m?f.enabledProviders.includes(m):!1,b=v?.docsUrl??h?.docsUrl;return(0,k.jsxs)(C,{className:`xl:min-h-0`,mobileView:c?m?`detail`:`list`:void 0,onMobileBack:()=>d(null),mobileListLabel:t(`searchPageTitle`),children:[(0,k.jsx)(B,{draft:f,providers:r,search:a,selectedProvider:m??a.provider,onSelect:d}),h?(0,k.jsx)(x,{children:(0,k.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),o(f)},className:`flex min-h-0 flex-1 flex-col`,children:[(0,k.jsx)(S,{className:`px-6 py-5`,children:(0,k.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-primary text-white`,children:(0,k.jsx)(l,{className:`h-5 w-5`})}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h3`,{className:`text-lg font-semibold text-gray-900`,children:h.displayName}),(0,k.jsx)(`p`,{className:`text-sm text-gray-500`,children:h.description})]})]}),(0,k.jsx)(i,{type:`button`,variant:y?`secondary`:`outline`,className:`rounded-xl`,onClick:()=>{let e=y?f.enabledProviders.filter(e=>e!==m):m?[...f.enabledProviders,m]:f.enabledProviders,t={...f,enabledProviders:e};p(t),o(t)},children:t(y?`searchProviderDeactivate`:`searchProviderActivate`)})]})}),(0,k.jsxs)(T,{className:`space-y-6 px-6 py-5`,children:[(0,k.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,k.jsx)(L,{label:t(`searchActiveProvider`),value:f.activeProvider,options:r.map(e=>({value:e.name,label:e.displayName})),onChange:e=>p({...f,activeProvider:e})}),(0,k.jsx)(I,{label:t(`searchDefaultMaxResults`),value:f.maxResults,onChange:e=>p({...f,maxResults:e}),inputMode:`numeric`})]}),(0,k.jsx)(z,{draft:f,provider:m,search:a,selectedDocsUrl:b,updateProviderDraft:(e,t)=>{p(n=>({...n,providers:{...n.providers,[e]:{...n.providers[e],...t}}}))}})]}),(0,k.jsx)(E,{className:`flex justify-end px-6 py-4`,children:(0,k.jsxs)(i,{type:`submit`,disabled:s,children:[(0,k.jsx)(g,{className:`mr-2 h-4 w-4`}),t(s?`saving`:`saveChanges`)]})})]})}):(0,k.jsx)(w,{children:(0,k.jsx)(`p`,{className:`text-sm text-gray-500`,children:t(`searchNoProviderSelected`)})})]})}function H(){let{data:e}=y(),{data:n}=b(),r=v(),i=n?.search??[],s=e?.search;return!s||i.length===0?(0,k.jsx)(`div`,{className:`p-8`,children:t(`loading`)}):(0,k.jsxs)(a,{className:`pb-0 xl:flex xl:h-full xl:min-h-0 xl:flex-col`,children:[(0,k.jsx)(o,{title:t(`searchPageTitle`),description:t(`searchPageDescription`)}),(0,k.jsx)(V,{initialDraft:P(s),providers:i,search:s,onSubmit:e=>r.mutate({data:F(e)}),isPending:r.isPending},JSON.stringify(s))]})}export{H as SearchConfig};
@@ -1 +0,0 @@
1
- import{p as e,u as t}from"./i18n-CM4y8Mw9.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`animate-pulse rounded-md bg-slate-200`,e),...r})}export{r as t};
@@ -1 +0,0 @@
1
- import{_ as e,i as t,m as n,p as r,u as i}from"./i18n-CM4y8Mw9.js";import{At as a,Ct as o,Pt as s,St as c,Tt as l,bt as u,gt as d,wt as ee,xt as te,yt as ne}from"./api-BurjmW4A.js";import{r as re}from"./chunk-JZWAC4HX-24FLdHl7.js";import{t as f}from"./createLucideIcon-PPrXCGK8.js";import{i as p,n as m,t as h}from"./select-DVUtSFHZ.js";import{t as g}from"./x-tYcSDsrY.js";import{t as _}from"./use-config-CyvhbRhf.js";import{n as v,r as ie,t as ae}from"./popover-AmJkxio3.js";var oe=f(`AlarmClock`,[[`circle`,{cx:`12`,cy:`13`,r:`8`,key:`3y4lt7`}],[`path`,{d:`M12 9v4l2 2`,key:`1c63tq`}],[`path`,{d:`M5 3 2 6`,key:`18tl5t`}],[`path`,{d:`m22 6-3-3`,key:`1opdir`}],[`path`,{d:`M6.38 18.7 4 21`,key:`17xu3x`}],[`path`,{d:`M17.64 18.67 20 21`,key:`kv2oe2`}]]),se=f(`Bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),ce=f(`BrainCircuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),y=f(`Download`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`7 10 12 15 17 10`,key:`2ggqvy`}],[`line`,{x1:`12`,x2:`12`,y1:`15`,y2:`3`,key:`1vk2je`}]]),le=f(`Languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),ue=f(`MessageCircle`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}]]),de=f(`Palette`,[[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`path`,{d:`M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z`,key:`12rzf8`}]]),b=f(`RefreshCw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),fe=f(`Smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),pe=f(`Wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`,key:`cbrjhi`}]]),x=`nextclaw.ui.theme`,me=[{value:`warm`,labelKey:`themeWarm`},{value:`cool`,labelKey:`themeCool`}],S=`warm`,C=!1,w=new Set;function T(e){return e===`warm`||e===`cool`}function E(e){typeof document>`u`||document.documentElement.setAttribute(`data-theme`,e)}function D(){if(typeof window>`u`)return`warm`;try{let e=window.localStorage.getItem(x);if(T(e))return e}catch{}return`warm`}function O(){return C||=(S=D(),E(S),!0),S}function k(){return C?S:O()}function A(e){if(O(),e!==S){if(S=e,E(S),typeof window<`u`)try{window.localStorage.setItem(x,S)}catch{}w.forEach(e=>e(S))}}function j(e){return w.add(e),()=>{w.delete(e)}}var M=r(),N={healthy:`bg-emerald-500 shadow-[0_0_0_3px_rgba(16,185,129,0.14)]`,attention:`bg-amber-400 shadow-[0_0_0_3px_rgba(251,191,36,0.16)]`,inactive:`bg-gray-300 shadow-[0_0_0_3px_rgba(156,163,175,0.12)]`};function P(){let e=d(),n=e.actionLabel===t(`runtimeStatusRestartAction`),r=async()=>{if(n)try{let e=await ne.runRuntimeControlAction(`restart-service`);s.success(e.message)}catch(e){let n=e instanceof Error?e.message:t(`runtimeControlActionFailed`);s.error(`${t(`runtimeControlActionFailed`)}: ${n}`)}};return(0,M.jsxs)(ae,{children:[(0,M.jsx)(ie,{asChild:!0,children:(0,M.jsx)(`button`,{type:`button`,className:`inline-flex items-center justify-center rounded-full p-0.5 transition-transform hover:scale-105`,"aria-label":e.title,title:e.title,"data-testid":`runtime-status-entry`,children:(0,M.jsx)(`span`,{className:i(`h-2.5 w-2.5 rounded-full`,N[e.tone])})})}),(0,M.jsxs)(v,{align:`start`,sideOffset:10,className:`w-[290px] space-y-3 rounded-2xl border border-gray-200 bg-white p-4`,children:[(0,M.jsxs)(`div`,{className:`space-y-1`,children:[(0,M.jsx)(`div`,{className:`text-sm font-semibold text-gray-900`,children:e.title}),(0,M.jsx)(`p`,{className:`text-xs leading-5 text-gray-600`,children:e.description})]}),e.reasonLines.length>0?(0,M.jsx)(`div`,{className:`space-y-2`,children:e.reasonLines.map(e=>(0,M.jsx)(`div`,{className:`rounded-xl border border-amber-200 bg-amber-50 px-3 py-2 text-xs leading-5 text-amber-900`,children:e},e))}):null,e.actionLabel?(0,M.jsxs)(`div`,{className:`flex items-center justify-between border-t border-gray-100 pt-1`,children:[(0,M.jsx)(`span`,{className:`text-[11px] text-gray-500`,children:t(`runtimeStatusActionHint`)}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>void r(),disabled:e.isBusy,className:`text-sm font-semibold text-sky-600 transition-colors hover:text-sky-700 disabled:text-gray-400`,children:e.isBusy?t(`runtimeStatusRestartingAction`):e.actionLabel})]}):null]})]})}function F({className:e,suffix:t}){let{data:n}=_(),r=n?.name??`NextClaw`,i=n?.productVersion?.trim(),a=t??(0,M.jsx)(P,{});return(0,M.jsxs)(`div`,{className:e??`flex items-center gap-2.5`,children:[(0,M.jsx)(`div`,{className:`h-7 w-7 rounded-lg overflow-hidden flex items-center justify-center`,children:(0,M.jsx)(`img`,{src:`/logo.svg`,alt:r,className:`h-full w-full object-contain`})}),(0,M.jsxs)(`div`,{className:`flex items-baseline gap-2 min-w-0`,children:[(0,M.jsx)(`span`,{className:`truncate text-[15px] font-semibold tracking-[-0.01em] text-gray-800`,children:r}),i?(0,M.jsxs)(`span`,{className:`text-[13px] font-medium text-gray-500`,children:[`v`,i]}):null,a?(0,M.jsx)(`span`,{className:`inline-flex items-center shrink-0`,children:a}):null]})]})}var I={default:{row:`gap-3 px-3 py-2.5 text-[14px]`,icon:`h-[17px] w-[17px]`,value:`text-xs`,gap:`gap-3`},compact:{row:`gap-2.5 px-3 py-2 text-[13px]`,icon:`h-4 w-4`,value:`text-[11px]`,gap:`gap-2.5`}};function L(e){return I[e]}function R({to:e,label:t,icon:n,density:r=`default`,className:a}){let o=L(r);return(0,M.jsx)(re,{to:e,className:({isActive:e})=>i(`group flex w-full items-center rounded-xl font-medium transition-colors duration-base`,o.row,e?`bg-gray-200 text-gray-900 shadow-sm`:`text-gray-600 hover:bg-gray-200/60 hover:text-gray-900`,a),children:({isActive:e})=>(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(n,{className:i(o.icon,`transition-colors`,e?`text-gray-900`:`text-gray-500 group-hover:text-gray-800`)}),(0,M.jsx)(`span`,{className:`min-w-0 flex-1 text-left`,children:t})]})})}function z({label:e,icon:t,onClick:n,density:r=`default`,className:a,labelClassName:o,trailing:s,trailingClassName:c,testId:l,trailingTestId:u}){let d=L(r);return(0,M.jsxs)(`button`,{type:`button`,onClick:n,className:i(`flex w-full items-center rounded-xl font-medium text-gray-600 transition-all duration-base hover:bg-gray-200/60 hover:text-gray-800`,d.row,a),"data-testid":l,children:[(0,M.jsx)(t,{className:i(d.icon,`shrink-0 text-gray-400`)}),(0,M.jsx)(`span`,{className:i(`min-w-0 flex-1 text-left`,o),children:e}),s?(0,M.jsx)(`span`,{className:i(`shrink-0 text-gray-500`,d.value,c),"data-testid":u,children:s}):null]})}function he({label:e,icon:t,value:n,valueLabel:r,onValueChange:a,density:o=`default`,children:s}){let c=L(o);return(0,M.jsxs)(h,{value:n,onValueChange:a,children:[(0,M.jsxs)(p,{className:i(`h-auto w-full rounded-xl border-0 bg-transparent font-medium text-gray-600 shadow-none hover:bg-gray-200/60 focus:ring-0`,c.row),children:[(0,M.jsxs)(`div`,{className:i(`flex min-w-0 items-center`,c.gap),children:[(0,M.jsx)(t,{className:i(c.icon,`text-gray-400`)}),(0,M.jsx)(`span`,{className:`text-left`,children:e})]}),(0,M.jsx)(`span`,{className:i(`ml-auto text-gray-500`,c.value),children:r})]}),(0,M.jsx)(m,{children:s})]})}var B=`nextclaw-pwa-install-banner-dismissed`,V=`nextclaw-pwa-install-banner-dismissed-until`;function H(){let e=W();return e?e.getItem(`nextclaw-pwa-install-banner-dismissed`)===`1`?!0:_e(e):!1}function ge(){let e=W();e?.setItem(B,`1`),e?.removeItem(V)}function U(){let e=W();e?.removeItem(B),e?.removeItem(V)}function W(){if(typeof window>`u`)return null;try{return window.localStorage}catch{return null}}function _e(e){let t=e.getItem(V);if(!t)return!1;let n=Number.parseInt(t,10);return e.removeItem(V),!Number.isFinite(n)||n<=Date.now()?!1:(e.setItem(B,`1`),!0)}function G(){return{initialized:!1,installability:`unsupported`,installMethod:`none`,blockedReason:`missing-browser-support`,dismissedInstallPrompt:H(),updateAvailable:!1,registrationFailed:!1}}var K=u(()=>G()),q=`nextclaw-pwa-dev-sw-reset`,J=new class{constructor(){this.started=!1,this.registration=null,this.reloadWhenControllerChanges=!1,this.start=async()=>{if(!(this.started||typeof window>`u`)&&(this.started=!0,!(!(`serviceWorker`in navigator)||!this.isEligibleInstallContext()))){if(this.isDevelopmentServer()){await this.cleanupDevelopmentRegistrations();return}try{let e=await navigator.serviceWorker.register(`/sw.js`);this.registration=e,this.bindRegistration(e),navigator.serviceWorker.addEventListener(`controllerchange`,this.handleControllerChange),await this.syncUpdateAvailability()}catch{K.setState({registrationFailed:!0})}}},this.syncUpdateAvailability=async()=>{if(typeof window>`u`||!(`serviceWorker`in navigator)||typeof navigator.serviceWorker.getRegistration!=`function`){K.setState({updateAvailable:!1});return}let e=this.registration??await navigator.serviceWorker.getRegistration(`/sw.js`)??null;K.setState({updateAvailable:this.shouldSurfaceUpdate(e)})},this.applyUpdate=async()=>{let e=this.registration??await navigator.serviceWorker.getRegistration(`/sw.js`)??null;if(!e){window.location.reload();return}e.waiting||await e.update();let t=e.waiting;if(!t){window.location.reload();return}this.reloadWhenControllerChanges=!0,t.postMessage({type:`SKIP_WAIT`})},this.stop=()=>{!this.started||typeof window>`u`||!(`serviceWorker`in navigator)||(navigator.serviceWorker.removeEventListener(`controllerchange`,this.handleControllerChange),this.started=!1,this.registration=null,this.reloadWhenControllerChanges=!1)},this.bindRegistration=e=>{e.addEventListener(`updatefound`,()=>{let t=e.installing;t&&t.addEventListener(`statechange`,()=>{t.state===`installed`&&this.syncUpdateAvailability()})})},this.handleControllerChange=()=>{this.reloadWhenControllerChanges&&(this.reloadWhenControllerChanges=!1,window.location.reload())},this.isEligibleInstallContext=()=>window.isSecureContext||this.isTrustedLocalhost(window.location.hostname),this.isTrustedLocalhost=e=>e===`localhost`||e===`127.0.0.1`||e===`::1`||e===`[::1]`,this.isDevelopmentServer=()=>!1,this.shouldSurfaceUpdate=e=>!e?.waiting||!navigator.serviceWorker.controller?!1:K.getState().installability===`installed`,this.cleanupDevelopmentRegistrations=async()=>{if(typeof navigator.serviceWorker.getRegistrations!=`function`)return;let e=(await navigator.serviceWorker.getRegistrations()).filter(e=>[e.active?.scriptURL,e.installing?.scriptURL,e.waiting?.scriptURL].filter(e=>!!e).some(e=>e.endsWith(`/sw.js`)));if(e.length===0){this.clearDevResetMarker();return}if(await Promise.all(e.map(async e=>await e.unregister())),await this.clearNextClawCaches(),navigator.serviceWorker.controller&&!this.hasDevResetMarker()){this.setDevResetMarker(),window.location.reload();return}this.clearDevResetMarker()},this.clearNextClawCaches=async()=>{if(typeof window>`u`||!(`caches`in window)||typeof caches.keys!=`function`)return;let e=await caches.keys();await Promise.all(e.filter(e=>e.startsWith(`nextclaw-ui-`)).map(async e=>await caches.delete(e)))},this.hasDevResetMarker=()=>{try{return window.sessionStorage.getItem(q)===`1`}catch{return!1}},this.setDevResetMarker=()=>{try{window.sessionStorage.setItem(q,`1`)}catch{}},this.clearDevResetMarker=()=>{try{window.sessionStorage.removeItem(q)}catch{}}}},Y=new class{constructor(){this.started=!1,this.deferredPrompt=null,this.displayModeMediaQuery=null,this.start=()=>{this.started||typeof window>`u`||(this.started=!0,window.addEventListener(`beforeinstallprompt`,this.handleBeforeInstallPrompt),window.addEventListener(`appinstalled`,this.handleAppInstalled),typeof window.matchMedia==`function`&&(this.displayModeMediaQuery=window.matchMedia(`(display-mode: standalone)`),this.bindDisplayModeListener(this.displayModeMediaQuery,this.handleDisplayModeChanged)),this.refreshState())},this.stop=()=>{!this.started||typeof window>`u`||(window.removeEventListener(`beforeinstallprompt`,this.handleBeforeInstallPrompt),window.removeEventListener(`appinstalled`,this.handleAppInstalled),this.displayModeMediaQuery&&=(this.unbindDisplayModeListener(this.displayModeMediaQuery,this.handleDisplayModeChanged),null),this.deferredPrompt=null,this.started=!1)},this.resetForTests=()=>{this.stop(),K.setState(G())},this.refreshState=()=>{let e=this.resolveInstallability();K.setState(t=>({...t,initialized:!0,installability:e.installability,installMethod:e.installMethod,blockedReason:e.blockedReason,dismissedInstallPrompt:H()})),J.syncUpdateAvailability()},this.dismissInstallPrompt=()=>{ge(),K.setState({dismissedInstallPrompt:!0})},this.promptInstall=async()=>{let e=this.resolveInstallability();if(e.installability!==`available`)return`unavailable`;if(e.installMethod===`manual`||!this.deferredPrompt)return`manual`;this.deferredPrompt.prompt();let n=await this.deferredPrompt.userChoice;return this.deferredPrompt=null,n.outcome===`accepted`?(U(),this.refreshState(),s.success(t(`pwaInstallAccepted`)),`accepted`):(this.dismissInstallPrompt(),this.refreshState(),`dismissed`)},this.handleBeforeInstallPrompt=e=>{e.preventDefault(),this.deferredPrompt=e,this.refreshState()},this.handleAppInstalled=()=>{this.deferredPrompt=null,U(),K.setState({dismissedInstallPrompt:!0}),s.success(t(`pwaInstalledToast`)),this.refreshState()},this.handleDisplayModeChanged=()=>{this.refreshState()},this.resolveInstallability=()=>this.isDevelopmentServer()?{installability:`unsupported`,installMethod:`none`,blockedReason:`dev-server`}:this.hasDesktopHost()?{installability:`suppressed`,installMethod:`none`,blockedReason:`desktop-host`}:this.isStandalone()?{installability:`installed`,installMethod:`none`,blockedReason:null}:this.hasInstallSurfaceSupport()?this.isEligibleInstallContext()?{installability:`available`,installMethod:this.deferredPrompt?`prompt`:`manual`,blockedReason:null}:{installability:`unsupported`,installMethod:`none`,blockedReason:`insecure-context`}:{installability:`unsupported`,installMethod:`none`,blockedReason:`missing-browser-support`},this.hasDesktopHost=()=>typeof window<`u`&&!!window.nextclawDesktop,this.hasInstallSurfaceSupport=()=>typeof window<`u`&&typeof window.matchMedia==`function`&&`serviceWorker`in navigator,this.isEligibleInstallContext=()=>typeof window>`u`?!1:window.isSecureContext||this.isTrustedLocalhost(window.location.hostname),this.isTrustedLocalhost=e=>e===`localhost`||e===`127.0.0.1`||e===`::1`||e===`[::1]`,this.isDevelopmentServer=()=>typeof window<`u`&&!1,this.isStandalone=()=>{if(typeof window>`u`)return!1;let e=window.navigator;return typeof window.matchMedia==`function`&&window.matchMedia(`(display-mode: standalone)`).matches||e.standalone===!0},this.bindDisplayModeListener=(e,t)=>{if(`addEventListener`in e){e.addEventListener(`change`,t);return}e.addListener?.(t)},this.unbindDisplayModeListener=(e,t)=>{if(`removeEventListener`in e){e.removeEventListener(`change`,t);return}e.removeListener?.(t)}}};function ve(){let e=K(e=>e.installability);return(0,M.jsx)(`span`,{className:i(`inline-flex items-center rounded-full border px-3 py-1 text-xs font-medium`,e===`installed`?`bg-emerald-50 text-emerald-700 border-emerald-200`:e===`available`?`bg-amber-50 text-amber-700 border-amber-200`:`bg-gray-100 text-gray-600 border-gray-200`),children:ye(e)})}function ye(e){return t(e===`available`?`pwaInstallStatusAvailable`:e===`installed`?`pwaInstallStatusInstalled`:e===`suppressed`?`pwaInstallStatusDesktopHost`:`pwaInstallStatusUnavailable`)}function be(e,n,r){return t(e===`installed`?`pwaInstallCardInstalled`:e===`suppressed`?`pwaInstallCardSuppressed`:e===`available`&&n===`prompt`?`pwaInstallCardPrompt`:e===`available`?`pwaInstallCardManual`:r===`insecure-context`?`pwaInstallCardInsecureContext`:r===`dev-server`?`pwaInstallCardDevServer`:`pwaInstallCardUnsupported`)}function xe(){let e=K(e=>e.installability),n=K(e=>e.installMethod),r=K(e=>e.blockedReason);return(0,M.jsxs)(te,{children:[(0,M.jsxs)(ee,{className:`flex flex-row items-start justify-between gap-4 space-y-0`,children:[(0,M.jsxs)(`div`,{className:`space-y-2`,children:[(0,M.jsx)(l,{children:t(`pwaInstallTitle`)}),(0,M.jsx)(o,{children:t(`pwaInstallDescription`)})]}),(0,M.jsx)(ve,{})]}),(0,M.jsxs)(c,{className:`space-y-4`,children:[(0,M.jsx)(`div`,{className:`rounded-2xl border border-gray-200 bg-gray-50/90 p-4`,children:(0,M.jsx)(`p`,{className:`text-sm leading-6 text-gray-700`,children:be(e,n,r)})}),e===`available`&&n===`prompt`?(0,M.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,M.jsxs)(a,{type:`button`,className:`gap-2`,onClick:()=>{Y.promptInstall()},children:[(0,M.jsx)(y,{className:`h-4 w-4`}),t(`pwaInstallAction`)]}),(0,M.jsx)(`p`,{className:`text-sm text-gray-500`,children:t(`pwaInstallPromptHint`)})]}):null,e===`available`&&n===`manual`?(0,M.jsxs)(`div`,{className:`flex items-start gap-3 rounded-2xl border border-dashed border-gray-300 bg-white p-4`,children:[(0,M.jsx)(fe,{className:`mt-0.5 h-4 w-4 text-gray-500`}),(0,M.jsx)(`p`,{className:`text-sm leading-6 text-gray-600`,children:t(`pwaInstallManualHint`)})]}):null]})]})}function Se(){let e=K(e=>e.installability),n=K(e=>e.installMethod),r=K(e=>e.dismissedInstallPrompt);return e!==`available`||n!==`prompt`||r?null:(0,M.jsxs)(`div`,{className:`fixed bottom-5 right-5 z-50 w-[min(420px,calc(100vw-2rem))] rounded-[26px] border border-gray-200 bg-white/95 p-5 shadow-2xl backdrop-blur-xl`,children:[(0,M.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,M.jsxs)(`div`,{className:`space-y-1`,children:[(0,M.jsx)(`p`,{className:`text-sm font-semibold text-gray-900`,children:t(`pwaInstallBannerTitle`)}),(0,M.jsx)(`p`,{className:`text-sm leading-6 text-gray-600`,children:t(`pwaInstallBannerDescription`)})]}),(0,M.jsx)(`button`,{type:`button`,"aria-label":t(`pwaInstallDismiss`),className:`rounded-full p-1 text-gray-400 transition hover:bg-gray-100 hover:text-gray-600`,onClick:()=>{Y.dismissInstallPrompt()},children:(0,M.jsx)(g,{className:`h-4 w-4`})})]}),(0,M.jsxs)(`div`,{className:`mt-4 flex items-center gap-3`,children:[(0,M.jsxs)(a,{type:`button`,size:`sm`,className:`gap-2`,onClick:()=>{Y.promptInstall()},children:[(0,M.jsx)(y,{className:`h-4 w-4`}),t(`pwaInstallAction`)]}),(0,M.jsx)(a,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>{Y.dismissInstallPrompt()},children:t(`pwaInstallDismiss`)})]})]})}function Ce(){let e=K(e=>e.updateAvailable),n=K(e=>e.installability);return!e||n!==`installed`?null:(0,M.jsxs)(`div`,{className:`fixed top-5 right-5 z-50 w-[min(420px,calc(100vw-2rem))] rounded-[26px] border border-gray-200 bg-white/95 p-5 shadow-2xl backdrop-blur-xl`,children:[(0,M.jsx)(`div`,{className:`flex items-start justify-between gap-4`,children:(0,M.jsxs)(`div`,{className:`space-y-1`,children:[(0,M.jsx)(`p`,{className:`text-sm font-semibold text-gray-900`,children:t(`pwaUpdateBannerTitle`)}),(0,M.jsx)(`p`,{className:`text-sm leading-6 text-gray-600`,children:t(`pwaUpdateBannerDescription`)})]})}),(0,M.jsx)(`div`,{className:`mt-4`,children:(0,M.jsxs)(a,{type:`button`,size:`sm`,className:`gap-2`,onClick:()=>{J.applyUpdate()},children:[(0,M.jsx)(b,{className:`h-4 w-4`}),t(`pwaUpdateAction`)]})})]})}var X=!1;function we(){X||typeof window>`u`||(X=!0,Y.start(),J.start())}var Te={warm:`#F9F8F5`,cool:`#F8FAFB`},Z=new class{constructor(){this.syncTheme=e=>{if(typeof document>`u`)return;let t=Te[e];this.updateThemeMeta(t),this.updateSurfaceBackgrounds(t),document.documentElement.style.colorScheme=`light`},this.syncCurrentTheme=()=>{if(typeof document>`u`)return;let e=document.documentElement.getAttribute(`data-theme`)===`cool`?`cool`:`warm`;this.syncTheme(e)},this.updateThemeMeta=e=>{let t=document.querySelector(`meta[name="theme-color"]`);t instanceof HTMLMetaElement&&(t.content=e)},this.updateSurfaceBackgrounds=e=>{document.documentElement.style.backgroundColor=e,document.body.style.backgroundColor=e;let t=document.getElementById(`root`);t&&(t.style.backgroundColor=e)}}},Q=e(n(),1),$=(0,Q.createContext)(null);function Ee({children:e}){let[t,n]=(0,Q.useState)(()=>O());(0,Q.useEffect)(()=>{Z.syncTheme(t)},[t]),(0,Q.useEffect)(()=>j(e=>{n(e)}),[]);let r=(0,Q.useCallback)(e=>{A(e),n(k())},[]),i=(0,Q.useMemo)(()=>({theme:t,setTheme:r}),[t,r]);return(0,M.jsx)($.Provider,{value:i,children:e})}function De(){let e=(0,Q.useContext)($);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}export{y as _,xe as a,oe as b,R as c,me as d,pe as f,le as g,ue as h,Se as i,he as l,de as m,De as n,Ce as o,b as p,we as r,z as s,Ee as t,F as u,ce as v,se as y};
@@ -1 +0,0 @@
1
- import{i as e}from"./i18n-CM4y8Mw9.js";import{$ as t,B as n,F as r,Ft as i,G as a,I as o,It as s,J as c,K as l,L as u,N as d,P as f,Pt as p,Q as m,R as h,U as g,V as _,W as v,X as y,Y as b,Z as x,_ as S,et as C,g as w,h as T,m as E,p as D,q as O,v as k,y as A,z as j,zt as M}from"./api-BurjmW4A.js";function ee(){return s({queryKey:[`config`],queryFn:h,staleTime:3e4,refetchOnWindowFocus:!0})}function N(){return s({queryKey:[`app-meta`],queryFn:u,staleTime:1/0})}function P(){return s({queryKey:[`config-meta`],queryFn:j,staleTime:1/0})}function F(){return s({queryKey:[`config-schema`],queryFn:n,staleTime:1/0})}function I(){let t=M();return i({mutationFn:y,onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),p.success(e(`configSaved`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function L(){let n=M();return i({mutationFn:({data:e})=>t(e),onSuccess:()=>{n.invalidateQueries({queryKey:[`config`]}),n.invalidateQueries({queryKey:[`config-meta`]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function R(){let t=M();return i({mutationFn:({provider:e,data:t})=>x(e,t),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),t.invalidateQueries({queryKey:[`config-meta`]}),p.success(e(`configSaved`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function z(){let t=M();return i({mutationFn:({data:e})=>d(e??{}),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),t.invalidateQueries({queryKey:[`config-meta`]}),p.success(e(`configSaved`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function B(){let t=M();return i({mutationFn:({provider:e})=>r(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),t.invalidateQueries({queryKey:[`config-meta`]}),p.success(e(`configSaved`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function V(){return i({mutationFn:({provider:e,data:t})=>c(e,t)})}function H(){return i({mutationFn:({provider:e,data:t})=>O(e,t)})}function U(){return i({mutationFn:({provider:e,data:t})=>v(e,t)})}function W(){return i({mutationFn:({provider:e})=>g(e)})}function G(){let t=M();return i({mutationFn:({channel:e,data:t})=>b(e,t),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),t.invalidateQueries({queryKey:[`config-meta`]}),p.success(e(`configSavedApplying`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function K(){let t=M();return i({mutationFn:({data:e})=>m(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function q(){let t=M();return i({mutationFn:({data:e})=>C(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function J(){return i({mutationFn:({actionId:e,data:t})=>o(e,t),onError:t=>{p.error(e(`error`)+`: `+t.message)}})}function Y(e){return s({queryKey:[`ncp-sessions`,e?.limit??null],queryFn:()=>k(e),staleTime:5e3,retry:!1})}function X(e,t=200){return s({queryKey:[`ncp-session-messages`,e,t],queryFn:()=>w(e,t),enabled:!!e,staleTime:5e3,retry:!1})}function Z(e){return s({queryKey:[`ncp-session-skills`,e.sessionId,e.projectRoot??null],queryFn:()=>S(e.sessionId,{...Object.prototype.hasOwnProperty.call(e,`projectRoot`)?{projectRoot:e.projectRoot??null}:{}}),enabled:!!e.sessionId,staleTime:5e3,retry:!1})}function Q(){let t=M();return i({mutationFn:({sessionId:e})=>T(e),onSuccess:(n,r)=>{D(t,r.sessionId),t.removeQueries({queryKey:[`ncp-session-messages`,r.sessionId]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function $(){let t=M();return i({mutationFn:({sessionId:e,data:t})=>A(e,t),onSuccess:n=>{E(t,n),t.invalidateQueries({queryKey:[`ncp-session-skills`,n.sessionId]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function te(e={all:!0}){return s({queryKey:[`cron`,e],queryFn:()=>_(e),staleTime:1e4})}function ne(){let t=M();return i({mutationFn:({id:e})=>f(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`cron`]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function re(){let t=M();return i({mutationFn:({id:e,enabled:t})=>l(e,{enabled:t}),onSuccess:()=>{t.invalidateQueries({queryKey:[`cron`]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}function ie(){let t=M();return i({mutationFn:({id:e,force:t})=>a(e,{force:t}),onSuccess:()=>{t.invalidateQueries({queryKey:[`cron`]}),p.success(e(`configSavedApplied`))},onError:t=>{p.error(e(`configSaveFailed`)+`: `+t.message)}})}export{R as C,q as E,$ as S,L as T,H as _,z as a,G as b,Q as c,W as d,X as f,ie as g,U as h,F as i,B as l,Y as m,ee as n,te as o,Z as p,P as r,ne as s,N as t,J as u,V as v,K as w,I as x,re as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-PPrXCGK8.js";var t=e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
@@ -1,34 +0,0 @@
1
- import { api } from "./client";
2
- import type { AgentCreateRequest, AgentDeleteResult, AgentProfileView, AgentUpdateRequest } from "./types";
3
-
4
- export async function fetchAgents(): Promise<{ agents: AgentProfileView[] }> {
5
- const response = await api.get<{ agents: AgentProfileView[] }>("/api/agents");
6
- if (!response.ok) {
7
- throw new Error(response.error.message);
8
- }
9
- return response.data;
10
- }
11
-
12
- export async function createAgent(data: AgentCreateRequest): Promise<AgentProfileView> {
13
- const response = await api.post<AgentProfileView>("/api/agents", data);
14
- if (!response.ok) {
15
- throw new Error(response.error.message);
16
- }
17
- return response.data;
18
- }
19
-
20
- export async function updateAgent(agentId: string, data: AgentUpdateRequest): Promise<AgentProfileView> {
21
- const response = await api.put<AgentProfileView>(`/api/agents/${encodeURIComponent(agentId)}`, data);
22
- if (!response.ok) {
23
- throw new Error(response.error.message);
24
- }
25
- return response.data;
26
- }
27
-
28
- export async function deleteAgent(agentId: string): Promise<AgentDeleteResult> {
29
- const response = await api.delete<AgentDeleteResult>(`/api/agents/${encodeURIComponent(agentId)}`);
30
- if (!response.ok) {
31
- throw new Error(response.error.message);
32
- }
33
- return response.data;
34
- }
@@ -1,35 +0,0 @@
1
- import { api } from './client';
2
- import type {
3
- ChannelAuthPollRequest,
4
- ChannelAuthPollResult,
5
- ChannelAuthStartRequest,
6
- ChannelAuthStartResult
7
- } from './channel-auth.types';
8
-
9
- export async function startChannelAuth(
10
- channel: string,
11
- data: ChannelAuthStartRequest = {}
12
- ): Promise<ChannelAuthStartResult> {
13
- const response = await api.post<ChannelAuthStartResult>(
14
- `/api/config/channels/${channel}/auth/start`,
15
- data
16
- );
17
- if (!response.ok) {
18
- throw new Error(response.error.message);
19
- }
20
- return response.data;
21
- }
22
-
23
- export async function pollChannelAuth(
24
- channel: string,
25
- data: ChannelAuthPollRequest
26
- ): Promise<ChannelAuthPollResult> {
27
- const response = await api.post<ChannelAuthPollResult>(
28
- `/api/config/channels/${channel}/auth/poll`,
29
- data
30
- );
31
- if (!response.ok) {
32
- throw new Error(response.error.message);
33
- }
34
- return response.data;
35
- }