@nextclaw/ui 0.19.1 → 0.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/assets/{api-Cyxp93Fn.js → api-BH6Oslx4.js} +3 -3
  3. package/dist/assets/{appearance-settings-page-NlQIHbXh.js → appearance-settings-page-zhgfcGgW.js} +1 -1
  4. package/dist/assets/{book-open-Cl5CzL0g.js → book-open-DGTS6oEO.js} +1 -1
  5. package/dist/assets/{channels-list-page-DhXfsjxF.js → channels-list-page-3D5lhZoT.js} +2 -2
  6. package/dist/assets/chat-page-BXu3hnOK.js +1 -0
  7. package/dist/assets/{config-split-page-C-YVl2mf.js → config-split-page-B55XD_ZY.js} +1 -1
  8. package/dist/assets/{confirm-dialog-Bz3ieDQ5.js → confirm-dialog-BCCreI_f.js} +1 -1
  9. package/dist/assets/{desktop-update-config-CpsXBUJK.js → desktop-update-config-Blol-Umu.js} +1 -1
  10. package/dist/assets/{dist-CDPl8mm7.js → dist-BYSUQaO2.js} +1 -1
  11. package/dist/assets/{dist-HFDWY6-K.js → dist-IRWcJpfm.js} +1 -1
  12. package/dist/assets/doc-browser-BExPq1Hk.js +1 -0
  13. package/dist/assets/{doc-browser-D6H_nPzO.js → doc-browser-D8rNrWHk.js} +1 -1
  14. package/dist/assets/{doc-browser-context-BKwz_j44.js → doc-browser-context-DjTbIbQc.js} +1 -1
  15. package/dist/assets/{form-actions-BUZOCfPR.js → form-actions-C8hazgNP.js} +1 -1
  16. package/dist/assets/{index-DcqrfCMy.css → index-Btj8yN4T.css} +1 -1
  17. package/dist/assets/index-CHcGqqBe.js +109 -0
  18. package/dist/assets/loader-circle-C75DUmmm.js +1 -0
  19. package/dist/assets/mcp-marketplace-page-CIMRYgOY.js +9 -0
  20. package/dist/assets/mcp-marketplace-page-D2NlhG1k.js +1 -0
  21. package/dist/assets/model-config-page-ChR-ENjp.js +1 -0
  22. package/dist/assets/{navigation-link-CDMYpkVv.js → navigation-link-kGAcL2N2.js} +1 -1
  23. package/dist/assets/plus-TzSIMKWW.js +1 -0
  24. package/dist/assets/privacy-settings-page-v9LTFvJe.js +1 -0
  25. package/dist/assets/{provider-scoped-model-input-CD93ZOgZ.js → provider-scoped-model-input-DiSpKSk0.js} +1 -1
  26. package/dist/assets/providers-config-page-BvXa03cp.js +1 -0
  27. package/dist/assets/{react-B7Paq2b3.js → react-Dwvp5yeX.js} +1 -1
  28. package/dist/assets/{refresh-cw-XrnNVwuQ.js → refresh-cw-C_oj_h_s.js} +1 -1
  29. package/dist/assets/remote-BgYduCQR.js +1 -0
  30. package/dist/assets/rotate-cw-BT8HxlcB.js +1 -0
  31. package/dist/assets/{runtime-config-page-BxJlm6qT.js → runtime-config-page-BuYof2Ty.js} +1 -1
  32. package/dist/assets/{save-_nSNAYQu.js → save-BZE6H02N.js} +1 -1
  33. package/dist/assets/{search-0OTHFRMx.js → search-C7Tj40kC.js} +1 -1
  34. package/dist/assets/{search-config-page-2VAarRcG.js → search-config-page-CQTJOsOf.js} +1 -1
  35. package/dist/assets/{secrets-config-page-KoFrETds.js → secrets-config-page-B__VLAEQ.js} +2 -2
  36. package/dist/assets/security-config-CtJqaPVL.js +1 -0
  37. package/dist/assets/{select-BZHvnwQB.js → select-fZ5tifar.js} +1 -1
  38. package/dist/assets/{settings-2-CM_PvDNk.js → settings-2-BHGgNlOH.js} +1 -1
  39. package/dist/assets/skeleton-CJLc1CWn.js +1 -0
  40. package/dist/assets/{tag-chip-Ce53PMTL.js → tag-chip-CwYZcRoe.js} +1 -1
  41. package/dist/assets/x-BMl7cucN.js +1 -0
  42. package/dist/index.html +20 -20
  43. package/package.json +3 -3
  44. package/src/app/configs/app-navigation.config.ts +6 -0
  45. package/src/app/index.tsx +8 -0
  46. package/src/features/settings/pages/__tests__/privacy-settings-page.test.tsx +33 -0
  47. package/src/features/settings/pages/privacy-settings-page.tsx +83 -0
  48. package/src/shared/hooks/use-config.ts +21 -1
  49. package/src/shared/lib/api/types.ts +13 -0
  50. package/src/shared/lib/api/utils/config.utils.ts +8 -0
  51. package/src/shared/lib/i18n/locales/en-US/core.json +19 -0
  52. package/src/shared/lib/i18n/locales/zh-CN/core.json +19 -0
  53. package/dist/assets/chat-page-C4DHLN6T.js +0 -1
  54. package/dist/assets/doc-browser-CWhs0JQN.js +0 -1
  55. package/dist/assets/index-Bfr0I0Ga.js +0 -109
  56. package/dist/assets/loader-circle-s65a4ZzL.js +0 -1
  57. package/dist/assets/mcp-marketplace-page-BJvzGt7h.js +0 -9
  58. package/dist/assets/mcp-marketplace-page-EpFHeJzw.js +0 -1
  59. package/dist/assets/model-config-page-BRScCkS-.js +0 -1
  60. package/dist/assets/plus-XDIkqpkt.js +0 -1
  61. package/dist/assets/providers-config-page-CFdgth2A.js +0 -1
  62. package/dist/assets/remote-DDN70hyU.js +0 -1
  63. package/dist/assets/rotate-cw-BhIWpLaU.js +0 -1
  64. package/dist/assets/security-config-BgIIrg1s.js +0 -1
  65. package/dist/assets/skeleton-Bv4MMbH7.js +0 -1
  66. package/dist/assets/x-CCjWN5ys.js +0 -1
@@ -24,6 +24,7 @@
24
24
  "sidebarCollapse": "Collapse sidebar",
25
25
  "sidebarExpand": "Expand sidebar",
26
26
  "security": "Sign-in Management",
27
+ "privacy": "Privacy & Analytics",
27
28
  "backToMain": "Back to Main",
28
29
  "enabled": "Enabled",
29
30
  "disabled": "Disabled",
@@ -273,6 +274,24 @@
273
274
  "authPasswordUpdating": "Updating...",
274
275
  "authLogoutAction": "Sign Out This Tab",
275
276
  "authSessionMemoryNotice": "Sessions are stored only in server memory for now. You will need to sign in again after the NextClaw UI process restarts.",
277
+ "privacyPageTitle": "Privacy & Analytics",
278
+ "privacyPageDescription": "Choose whether to share minimal product activity and keep team or test installations separate.",
279
+ "productAnalyticsSectionTitle": "Product activity analytics",
280
+ "productAnalyticsSectionDescription": "Disabled by default. Changes apply immediately without restarting NextClaw.",
281
+ "productAnalyticsEnabledTitle": "Share product activity",
282
+ "productAnalyticsEnabledDescription": "When enabled, share only whether an Agent request was submitted and whether it succeeded.",
283
+ "productAnalyticsAudienceTitle": "Analytics audience",
284
+ "productAnalyticsAudienceDescription": "Team members and testers should choose the matching category so they stay out of external-user metrics.",
285
+ "productAnalyticsAudienceExternal": "External user",
286
+ "productAnalyticsAudienceInternal": "Team / personal",
287
+ "productAnalyticsAudienceQa": "QA testing",
288
+ "productAnalyticsDataTitle": "Data scope",
289
+ "productAnalyticsCollectedTitle": "What is shared",
290
+ "productAnalyticsCollectedDescription": "Event type, time, random installation identifier, environment, release channel, operating-system category, and product version. Signed-in installations are linked to the platform account.",
291
+ "productAnalyticsExcludedTitle": "What is never shared",
292
+ "productAnalyticsExcludedDescription": "Messages, prompts, replies, tool arguments, session or project identifiers, file paths, URLs, device fingerprints, and diagnostic logs are never shared.",
293
+ "productAnalyticsAnonymousTitle": "How signed-out use is counted",
294
+ "productAnalyticsAnonymousDescription": "NextClaw creates a random installation identifier only after you enable sharing. It represents one installation, not an exact person, and does not use hardware identifiers.",
276
295
  "dmScope": "DM Scope",
277
296
  "dmScopeHelp": "Control how direct-message sessions are isolated.",
278
297
  "defaultContextTokens": "Default Context Tokens",
@@ -24,6 +24,7 @@
24
24
  "sidebarCollapse": "收起侧边栏",
25
25
  "sidebarExpand": "展开侧边栏",
26
26
  "security": "登录管理",
27
+ "privacy": "隐私与统计",
27
28
  "backToMain": "返回主界面",
28
29
  "enabled": "启用",
29
30
  "disabled": "禁用",
@@ -273,6 +274,24 @@
273
274
  "authPasswordUpdating": "更新中...",
274
275
  "authLogoutAction": "退出当前标签页",
275
276
  "authSessionMemoryNotice": "当前版本的会话只保存在服务端内存里。NextClaw UI 进程重启后,需要重新登录。",
277
+ "privacyPageTitle": "隐私与统计",
278
+ "privacyPageDescription": "选择是否分享最小化的产品活跃数据,并把团队自用与测试设备分开。",
279
+ "productAnalyticsSectionTitle": "产品活跃统计",
280
+ "productAnalyticsSectionDescription": "默认关闭。修改后立即生效,不需要重启 NextClaw。",
281
+ "productAnalyticsEnabledTitle": "分享产品活跃数据",
282
+ "productAnalyticsEnabledDescription": "开启后,只分享是否提交过 Agent 请求以及请求是否成功。",
283
+ "productAnalyticsAudienceTitle": "统计人群",
284
+ "productAnalyticsAudienceDescription": "团队成员和测试人员请选择对应分类,避免进入外部用户指标。",
285
+ "productAnalyticsAudienceExternal": "外部用户",
286
+ "productAnalyticsAudienceInternal": "团队 / 自用",
287
+ "productAnalyticsAudienceQa": "QA 测试",
288
+ "productAnalyticsDataTitle": "数据范围",
289
+ "productAnalyticsCollectedTitle": "会分享什么",
290
+ "productAnalyticsCollectedDescription": "事件类型、时间、随机安装标识、运行环境、发布通道、系统类别和产品版本。登录后,安装会与平台账号归并。",
291
+ "productAnalyticsExcludedTitle": "不会分享什么",
292
+ "productAnalyticsExcludedDescription": "不会分享消息、提示词、回复、工具参数、会话与项目标识、文件路径、URL、设备指纹或诊断日志。",
293
+ "productAnalyticsAnonymousTitle": "未登录时如何统计",
294
+ "productAnalyticsAnonymousDescription": "NextClaw 使用启用后生成的随机安装标识。它只代表一个安装,不等于精确人数,也不会读取硬件标识。",
276
295
  "dmScope": "私聊范围",
277
296
  "dmScopeHelp": "控制私聊会话如何隔离。",
278
297
  "defaultContextTokens": "默认上下文额度",
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{B as t,F as n,H as r,L as i,a}from"./react-B7Paq2b3.js";import{d as o,f as s,u as c}from"./navigation-link-CDMYpkVv.js";import{Ot as l,en as u,in as d,ln as f,rn as p,tn as m}from"./api-Cyxp93Fn.js";import{g as h,h as g}from"./mcp-marketplace-page-BJvzGt7h.js";import{c as _}from"./dist-HFDWY6-K.js";import{C as v,a as y,i as b,n as x,r as S,t as ee}from"./select-BZHvnwQB.js";import{a as C,c as w,i as T,n as E,o as D,r as O,s as k}from"./confirm-dialog-Bz3ieDQ5.js";import{t as te}from"./provider-scoped-model-input-CD93ZOgZ.js";import{t as A}from"./plus-XDIkqpkt.js";import{t as ne}from"./settings-2-CM_PvDNk.js";import{t as re}from"./tag-chip-Ce53PMTL.js";import{$ as ie,D as j,Gt as ae,It as oe,J as se,Jt as ce,O as M,R as le,Rt as ue,Ut as de,Vt as N,Xt as fe,Zt as P,_ as F,_t as pe,a as me,bt as I,ct as he,dt as ge,et as _e,ft as ve,g as ye,gt as be,h as xe,i as Se,lt as L,m as Ce,mt as we,nt as R,o as Te,ot as Ee,pt as z,q as De,qt as Oe,r as B,rt as ke,s as Ae,st as V,t as H,tt as je,u as Me,ut as Ne,yt as U}from"./index-Bfr0I0Ga.js";var Pe=_(`Gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),W=e(r(),1),G=t(),K=new Intl.NumberFormat;function Fe({agent:e,defaults:t,runtimeOptions:n,defaultRuntime:r,defaultRuntimeLabel:i,onOpenChange:o,onEdit:s}){if(!e)return null;let c=q(e.model,t?.model),l=Ie({agent:e,defaults:t,runtimeOptions:n,defaultRuntime:r,defaultRuntimeLabel:i}),u=J(e.contextTokens,t?.contextTokens??2e5),f=J(e.reservedContextTokens,t?.reservedContextTokens),p=J(e.maxToolIterations,t?.maxToolIterations??1e3),m=q(e.thinkingDefault,t?.thinkingDefault??`off`),h=Re(e.runtimeConfig??e.engineConfig,t?.engineConfig),g=Re(e.models,t?.models);return(0,G.jsx)(E,{open:e!==null,onOpenChange:o,children:(0,G.jsxs)(O,{className:`flex max-h-[calc(100vh-2rem)] flex-col overflow-hidden border-none bg-popover p-0 sm:max-h-[720px] sm:max-w-2xl`,children:[(0,G.jsx)(`div`,{className:`shrink-0 px-5 pb-3 pt-5`,children:(0,G.jsx)(D,{className:`text-left`,children:(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(R,{agentId:e.id,displayName:e.displayName,avatarUrl:e.avatarUrl,className:`h-10 w-10 shrink-0`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(k,{className:`truncate text-base`,children:e.displayName?.trim()||e.id}),(0,G.jsxs)(T,{className:`truncate text-xs`,children:[`@`,e.id]})]})]})})}),(0,G.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-y-auto overscroll-contain px-5 py-3`,children:[(0,G.jsxs)(Y,{icon:P,title:a(`agentsDetailsIdentitySection`),children:[(0,G.jsx)(X,{label:a(`agentsDetailsFieldDisplayName`),value:e.displayName?.trim()||e.id}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldId`),value:e.id,mono:!0}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldDescription`),value:e.description?.trim()||a(`agentsDetailsEmptyValue`),wide:!0}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldWorkspace`),value:e.workspace??a(`agentsDetailsUnsetValue`),mono:!0,wide:!0})]}),(0,G.jsxs)(Y,{icon:w,title:a(`agentsDetailsRuntimeSection`),children:[(0,G.jsx)(X,{label:a(`agentsDetailsFieldModel`),value:c.value,source:c.source}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldRuntime`),value:l.value,source:l.source}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldRuntimeConfig`),value:h.value,source:h.source,mono:!0,prewrap:!0})]}),(0,G.jsxs)(Y,{icon:Pe,title:a(`agentsDetailsContextSection`),children:[(0,G.jsx)(X,{label:a(`agentsDetailsFieldContextTokens`),value:u.value,source:u.source}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldReservedContextTokens`),value:f.value,source:f.source}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldMaxToolIterations`),value:p.value,source:p.source})]}),(0,G.jsxs)(Y,{icon:fe,title:a(`agentsDetailsBehaviorSection`),children:[(0,G.jsx)(X,{label:a(`agentsDetailsFieldThinkingDefault`),value:m.value,source:m.source}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldModelOverrides`),value:g.value,source:g.source,mono:!0,prewrap:!0}),(0,G.jsx)(X,{label:a(`agentsDetailsFieldAvatar`),value:e.avatar??a(`agentsDetailsUnsetValue`),mono:!0})]})]}),(0,G.jsxs)(C,{className:`shrink-0 px-5 pb-4 pt-2`,children:[(0,G.jsx)(d,{type:`button`,variant:`ghost`,onClick:()=>o(!1),children:a(`cancel`)}),(0,G.jsxs)(d,{type:`button`,variant:`primary`,className:`px-4`,onClick:()=>s(e),children:[(0,G.jsx)(N,{className:`mr-2 h-4 w-4`}),a(`agentsDetailsEditAction`)]})]})]})})}function q(e,t){let n=e?.trim();return n?{value:n,source:`override`}:{value:t?.trim()||a(`agentsDetailsUnsetValue`),source:`default`}}function J(e,t){return typeof e==`number`?{value:K.format(e),source:`override`}:{value:typeof t==`number`?K.format(t):a(`agentsDetailsUnsetValue`),source:`default`}}function Ie(e){let{agent:t,defaults:n,runtimeOptions:r,defaultRuntime:i,defaultRuntimeLabel:a}=e,o=t.runtime?.trim()||t.engine?.trim();if(o)return{value:Le(o,r,a),source:`override`};let s=n?.engine?.trim()||i;return{value:s?Le(s,r,a):a,source:`default`}}function Le(e,t,n){let r=V(e);return r?t.find(e=>e.value===r)?.label??L(r):n}function Re(e,t){return ze(e)?{value:JSON.stringify(e,null,2),source:`override`}:{value:ze(t)?JSON.stringify(t,null,2):a(`agentsDetailsUnsetValue`),source:`default`}}function ze(e){return!!(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0)}function Y(e){let{icon:t,title:n,children:r}=e;return(0,G.jsxs)(`section`,{className:`space-y-2 border-t border-border/60 pt-3 first:border-t-0 first:pt-0`,children:[(0,G.jsxs)(`h3`,{className:`flex items-center gap-1.5 text-xs font-semibold leading-5 text-foreground`,children:[(0,G.jsx)(t,{className:`h-3.5 w-3.5 text-muted-foreground`}),n]}),(0,G.jsx)(`dl`,{className:`grid min-w-0 gap-x-6 gap-y-2.5 pl-5 sm:grid-cols-2`,children:r})]})}function X(e){let{label:t,value:n,source:r,mono:a=!1,prewrap:o=!1,wide:s=!1}=e,c=o&&n.trim().startsWith(`{`),l=a&&(!o||c);return(0,G.jsxs)(`div`,{className:i(`grid min-w-0 grid-cols-[10rem_minmax(0,1fr)] items-baseline gap-x-2`,(s||c)&&`sm:col-span-2`),children:[(0,G.jsx)(`dt`,{className:`flex min-w-0 items-baseline leading-5`,children:(0,G.jsx)(`span`,{className:`whitespace-nowrap text-xs font-medium text-muted-foreground`,children:t})}),(0,G.jsxs)(`dd`,{className:i(`min-w-0 break-words text-xs leading-5 text-foreground`,c?`max-h-28 overflow-auto whitespace-pre-wrap rounded bg-muted/50 px-2 py-1.5 text-left`:``),children:[(0,G.jsx)(`span`,{className:l?`font-mono`:void 0,children:n}),r?(0,G.jsx)(Be,{source:r}):null]})]})}function Be({source:e}){return(0,G.jsxs)(`span`,{className:i(`ml-1 whitespace-nowrap text-xs font-normal leading-5`,e===`override`?`text-blue-500`:`text-muted-foreground`),children:[`(`,a(e===`override`?`agentsDetailsAgentOverride`:`agentsDetailsInheritedDefault`),`)`]})}function Ve({form:e,disabled:t=!1,onChange:n}){return(0,G.jsxs)(`details`,{className:`group rounded-2xl border border-border bg-card`,children:[(0,G.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 px-4 py-3 text-sm font-semibold text-foreground [&::-webkit-details-marker]:hidden`,children:[(0,G.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(ne,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,G.jsx)(`span`,{className:`truncate`,children:a(`agentsAdvancedConfigToggle`)})]}),(0,G.jsx)(v,{className:`h-4 w-4 shrink-0 text-muted-foreground transition-transform group-open:rotate-180`})]}),(0,G.jsxs)(`div`,{className:`space-y-4 border-t border-border/60 px-4 py-4`,children:[(0,G.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:a(`agentsAdvancedConfigDescription`)}),(0,G.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:(0,G.jsx)(He,{label:a(`agentsAdvancedContextTokensLabel`),value:e.contextTokens,min:1e3,step:1e3,disabled:t,onChange:e=>n({contextTokens:e})})})]})]})}function He(e){let{label:t,value:n,min:r,step:i,disabled:o,onChange:s}=e;return(0,G.jsxs)(`label`,{className:`space-y-2 text-sm font-medium text-foreground`,children:[(0,G.jsx)(`span`,{children:t}),(0,G.jsx)(p,{type:`number`,min:r,step:i,value:n,disabled:o,placeholder:a(`agentsAdvancedInheritPlaceholder`),"aria-label":t,onChange:e=>s(e.target.value)})]})}function Ue(e){return{displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:We(e.contextTokens)}}function We(e){return typeof e==`number`?String(e):``}var Z=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`textarea`,{className:i(`flex min-h-28 w-full rounded-xl border border-border/75 bg-card px-3.5 py-2.5 text-sm text-foreground placeholder:text-muted-foreground/55 placeholder:font-normal transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50`,e),ref:n,...t}));Z.displayName=`Textarea`;function Ge(e){let{runtimeOptions:t,currentRuntime:n}=e,r=n.trim();if(!r)return t;let i=V(r);return t.some(e=>e.value===i)?t:[...t,{value:i,label:L(i),icon:null,ready:!1,reason:`unavailable`,reasonMessage:null,supportedModels:void 0,recommendedModel:null,cta:null}].sort((e,t)=>e.value===`native`?-1:t.value===`native`?1:e.value.localeCompare(t.value))}function Ke({value:e,disabled:t=!1,runtimeOptions:n,defaultRuntime:r,onChange:i}){let o=e.trim()?V(e):``,s=Ge({runtimeOptions:n,currentRuntime:e}),c=s.find(e=>e.value===o)??null,l=c?.reasonMessage?.trim()||(c?.ready===!1?a(`agentsRuntimeUnavailableHelp`):``);return(0,G.jsxs)(`div`,{className:`space-y-2`,children:[(0,G.jsxs)(ee,{value:o||r,onValueChange:e=>i(e===r?``:e),disabled:t,children:[(0,G.jsx)(b,{"aria-label":a(`agentsCardRuntimeLabel`),className:`rounded-xl`,children:(0,G.jsx)(y,{placeholder:a(`agentsRuntimeSelectPlaceholder`)})}),(0,G.jsx)(x,{className:`rounded-xl`,children:s.map(e=>(0,G.jsx)(S,{value:e.value,disabled:e.ready===!1&&e.value!==o,className:`rounded-lg`,children:e.label},e.value))})]}),l?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:l}):null]})}function qe({agent:e,pending:t,providerCatalog:n,runtimeOptions:r,defaultRuntime:i,onOpenChange:a,onSubmit:o}){return(0,G.jsx)(E,{open:e!==null,onOpenChange:a,children:e?(0,G.jsx)(Je,{agent:e,pending:t,providerCatalog:n,runtimeOptions:r,defaultRuntime:i,onOpenChange:a,onSubmit:o},e.id):null})}function Je(e){let{agent:t,pending:n,providerCatalog:r,runtimeOptions:i,defaultRuntime:o,onOpenChange:s,onSubmit:c}=e,[l,u]=(0,W.useState)(Ue(t));return(0,G.jsxs)(O,{className:`flex max-h-[calc(100vh-2rem)] flex-col overflow-hidden border-none bg-popover p-0 sm:max-h-[760px] sm:max-w-xl`,children:[(0,G.jsx)(`div`,{className:`shrink-0 border-b border-border px-6 py-6`,children:(0,G.jsxs)(D,{className:`text-left`,children:[(0,G.jsx)(k,{children:a(`agentsEditDialogTitle`)}),(0,G.jsx)(T,{children:a(`agentsEditDialogDescription`)})]})}),(0,G.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto overscroll-contain px-6 py-6`,children:(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(h,{tone:`warning`,title:a(`agentsEditHomeReadonly`),description:a(`agentsEditHomeReadonlyHint`),children:(0,G.jsx)(`div`,{className:`break-all text-sm text-amber-950`,children:t.workspace??`-`})}),(0,G.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,G.jsx)(p,{value:l.displayName,onChange:e=>u(t=>({...t,displayName:e.target.value})),placeholder:a(`agentsFormNamePlaceholder`)}),(0,G.jsx)(Z,{value:l.description,onChange:e=>u(t=>({...t,description:e.target.value})),placeholder:a(`agentsFormDescriptionPlaceholder`),rows:4,className:`md:col-span-2`}),(0,G.jsx)(p,{value:l.avatar,onChange:e=>u(t=>({...t,avatar:e.target.value})),placeholder:a(`agentsFormAvatarPlaceholder`)}),(0,G.jsx)(te,{value:l.model,onChange:e=>u(t=>({...t,model:e})),providerCatalog:r,disabled:n,className:`md:col-span-2`}),(0,G.jsx)(Ke,{value:l.runtime,onChange:e=>u(t=>({...t,runtime:e})),runtimeOptions:i,defaultRuntime:o,disabled:n})]}),(0,G.jsx)(Ve,{form:l,disabled:n,onChange:e=>u(t=>({...t,...e}))})]})}),(0,G.jsxs)(C,{className:`shrink-0 border-t border-border px-6 py-5`,children:[(0,G.jsx)(d,{type:`button`,variant:`ghost`,onClick:()=>s(!1),disabled:n,children:a(`cancel`)}),(0,G.jsxs)(d,{type:`button`,variant:`primary`,className:`rounded-2xl px-5`,onClick:()=>c(t.id,l),disabled:n,children:[(0,G.jsx)(N,{className:`mr-2 h-4 w-4`}),a(`agentsEditSaveAction`)]})]})]})}var Ye=`请直接创建一个默认示例 Agent,不要问我问题。创建完成后,简单告诉我它能做什么。`;function Xe(e){let t=e.trim();if(!t)return null;let n=Number(t);if(!Number.isFinite(n))throw Error(a(`agentsAdvancedInvalidNumberError`));return Math.trunc(n)}function Ze(e){return{displayName:e.displayName,description:e.description,avatar:e.avatar,model:e.model,...e.runtime.trim()?{runtime:e.runtime.trim()}:{runtime:``},contextTokens:Xe(e.contextTokens)}}function Q(e){let{icon:t,label:n,disabled:r=!1,destructive:a=!1,onClick:o}=e;return(0,G.jsxs)(`button`,{type:`button`,className:i(`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-50`,a?`text-destructive hover:bg-destructive/10`:`text-foreground hover:bg-muted`),onClick:o,disabled:r,children:[(0,G.jsx)(t,{className:`h-4 w-4 shrink-0`}),(0,G.jsx)(`span`,{children:n})]})}function Qe(e){let{agent:t,runtimeOptions:n,defaultRuntimeLabel:r,updatePending:i,deletePending:o,onStartChat:s,onView:c,onEdit:l,onDelete:u}=e,f=t.runtime?.trim()||t.engine?.trim()||``,p=f?n.find(e=>e.value===V(f))?.label??L(f):r;return(0,G.jsx)(U,{className:`group overflow-hidden border border-border bg-card shadow-none transition-colors duration-200 hover:border-border/80`,children:(0,G.jsxs)(I,{className:`relative flex h-full flex-col gap-3 px-3.5 py-3.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-start gap-2.5 pr-16`,children:[(0,G.jsx)(R,{agentId:t.id,displayName:t.displayName,avatarUrl:t.avatarUrl,className:`h-9 w-9 shrink-0`}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:t.displayName?.trim()||t.id}),t.builtIn?(0,G.jsxs)(re,{tone:`warning`,className:`h-5 gap-1 border-amber-200 bg-amber-50 px-1.5 text-[10px] text-amber-700`,children:[(0,G.jsx)(ue,{className:`h-3 w-3`}),a(`agentsCardBuiltInTag`)]}):null]}),(0,G.jsxs)(`div`,{className:`truncate text-xs text-muted-foreground`,children:[`@`,t.id]})]})]}),(0,G.jsxs)(`div`,{className:`absolute right-2.5 top-2.5 flex items-center gap-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100`,children:[(0,G.jsx)(d,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 rounded-lg text-muted-foreground hover:text-foreground`,"aria-label":a(`agentsCardStartChat`),title:a(`agentsCardStartChat`),onClick:s,children:(0,G.jsx)(de,{className:`h-4 w-4`})}),(0,G.jsxs)(we,{children:[(0,G.jsx)(pe,{asChild:!0,children:(0,G.jsx)(d,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 rounded-lg text-muted-foreground hover:text-foreground`,"aria-label":a(`chatSessionMoreActions`),title:a(`chatSessionMoreActions`),children:(0,G.jsx)(ce,{className:`h-4 w-4`})})}),(0,G.jsxs)(be,{align:`end`,className:`w-44 p-1.5`,children:[(0,G.jsx)(Q,{icon:Oe,label:a(`agentsViewDetailsAction`),onClick:c}),(0,G.jsx)(Q,{icon:N,label:a(`agentsEditAction`),onClick:l,disabled:i}),t.builtIn?null:(0,G.jsx)(Q,{icon:oe,label:a(`agentsRemoveAction`),onClick:u,disabled:o,destructive:!0})]})]})]}),(0,G.jsx)(`p`,{className:`line-clamp-2 min-h-10 text-sm leading-5 text-muted-foreground`,children:t.description?.trim()||(t.builtIn?a(`agentsCardBuiltInSummary`):a(`agentsCardCustomSummary`))}),(0,G.jsxs)(`div`,{className:`mt-auto grid gap-2 border-t border-border/60 pt-2 text-xs text-muted-foreground`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(w,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground/60`}),(0,G.jsx)(`span`,{className:`truncate`,children:p})]}),(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(ae,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground/60`}),(0,G.jsx)(`span`,{className:`truncate`,children:t.workspace??`-`})]})]})]})})}function $e(){let e=z(),t=ie(),n=F(),r=M(),i=j(),o=B(),s=je(),c=_e(),[l,p]=(0,W.useState)(null),[h,g]=(0,W.useState)(null),_=(0,W.useMemo)(()=>t.data?.agents??[],[t.data?.agents]),v=(0,W.useMemo)(()=>[..._].sort((e,t)=>Number(!!t.builtIn)-Number(!!e.builtIn)||e.id.localeCompare(t.id)),[_]),y=(0,W.useMemo)(()=>le({config:n.data,providersView:r.data,templatesView:i.data,onlyConfigured:!0}),[n.data,r.data,i.data]),b=(0,W.useMemo)(()=>Ee(o.data?.options??[]),[o.data?.options]),x=(0,W.useMemo)(()=>V(o.data?.defaultType??`native`),[o.data?.defaultType]),S=(0,W.useMemo)(()=>b.find(e=>e.value===x)?.label??L(x),[x,b]),ee=n.data?.agents.defaults,C=e=>{p(e)},w=e=>{g(e)},T=async(e,t)=>{let n;try{n=Ze(t)}catch(e){f.error(e instanceof Error?e.message:a(`agentsAdvancedParseFailed`));return}await s.mutateAsync({agentId:e,data:n}),g(null)},E=t=>{e.chatSessionListManager.startAgentDraftChat(t.id,he(t,x))},D=()=>{e.chatSessionListManager.startAgentDraftChat(`main`,x,Ye)};return(0,G.jsxs)(m,{className:`space-y-6`,children:[(0,G.jsx)(u,{headingLevel:1,title:a(`agentsHeroEyebrow`),description:a(`agentsHeroDescription`),actions:(0,G.jsxs)(d,{type:`button`,variant:`primary`,className:`h-9 shrink-0 rounded-xl px-4 text-sm font-semibold`,onClick:D,children:[(0,G.jsx)(A,{className:`mr-2 h-4 w-4`}),a(`agentsCreateButton`)]})}),(0,G.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-3`,children:t.isLoading?(0,G.jsx)(U,{className:`md:col-span-2 xl:col-span-3 border-dashed border-border bg-card/70`,children:(0,G.jsx)(I,{className:`py-14 text-center text-sm text-muted-foreground`,children:a(`agentsLoading`)})}):v.length===0?(0,G.jsx)(U,{className:`md:col-span-2 xl:col-span-3 overflow-hidden border-dashed border-border bg-gradient-subtle`,children:(0,G.jsxs)(I,{className:`flex min-h-[240px] flex-col items-center justify-center px-6 py-14 text-center`,children:[(0,G.jsx)(`div`,{className:`mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-card/80 shadow-[0_18px_44px_rgba(0,0,0,0.08)]`,children:(0,G.jsx)(P,{className:`h-8 w-8 text-warning`})}),(0,G.jsx)(`div`,{className:`text-lg font-semibold text-foreground`,children:a(`agentsEmpty`)}),(0,G.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-muted-foreground`,children:a(`agentsEmptyDescription`)}),(0,G.jsxs)(d,{type:`button`,variant:`primary`,className:`mt-5 rounded-2xl px-5`,onClick:D,children:[(0,G.jsx)(A,{className:`mr-2 h-4 w-4`}),a(`agentsCreateButton`)]})]})}):v.map(e=>(0,G.jsx)(Qe,{agent:e,runtimeOptions:b,defaultRuntimeLabel:S,updatePending:s.isPending,deletePending:c.isPending,onStartChat:()=>E(e),onView:()=>C(e),onEdit:()=>w(e),onDelete:()=>c.mutate({agentId:e.id})},e.id))}),(0,G.jsx)(Fe,{agent:l,defaults:ee,runtimeOptions:b,defaultRuntime:x,defaultRuntimeLabel:S,onOpenChange:e=>{e||p(null)},onEdit:e=>{p(null),g(e)}}),(0,G.jsx)(qe,{agent:h,pending:s.isPending,providerCatalog:y,runtimeOptions:b,defaultRuntime:x,onOpenChange:e=>{!e&&!s.isPending&&g(null)},onSubmit:T})]})}var $=`max-w-[min(1180px,100%)]`;function et(e){let{routeSessionKey:t,syncRouteSessionSelection:n}=e;(0,W.useLayoutEffect)(()=>{n(t)},[t,n])}function tt({view:e,confirmDialog:t}){let{isMobile:n}=ye();return(0,G.jsxs)(`div`,{className:`h-full flex`,children:[n?null:(0,G.jsx)(Te,{}),e===`chat`?n?(0,G.jsx)(Ae,{}):(0,G.jsx)(Ce,{}):(0,G.jsx)(`section`,{className:`flex-1 min-h-0 overflow-hidden bg-background`,children:e===`inbox`?(0,G.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full flex-col py-4 sm:px-6 sm:py-5 ${$}`,children:(0,G.jsx)(Me,{})}):e===`panel-app`?(0,G.jsx)(De,{}):e===`cron`?(0,G.jsx)(`div`,{className:`h-full overflow-auto custom-scrollbar`,children:(0,G.jsx)(`div`,{className:`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${$}`,children:(0,G.jsx)(xe,{})})}):e===`agents`?(0,G.jsx)(`div`,{className:`h-full overflow-auto custom-scrollbar`,children:(0,G.jsx)(`div`,{className:`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${$}`,children:(0,G.jsx)($e,{})})}):(0,G.jsx)(`div`,{className:`h-full overflow-hidden`,children:(0,G.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full flex-col px-4 py-4 sm:px-6 sm:py-5 ${$}`,children:(0,G.jsx)(se,{forcedType:`skills`})})})}),t]})}function nt(e){let t=z(),n=F(),r=M(),i=j(),a=ge({limit:200}),o=B(),s=e.sessionKey?.trim()||`draft-session`,c=Ne({sessionId:s});(0,W.useEffect)(()=>{t.chatQueryManager.syncSnapshot({configQuery:n,providersQuery:r,providerTemplatesQuery:i,sessionsQuery:a,sessionTypesQuery:o,sessionSkillsSessionId:s,sessionSkillsQuery:c})},[n,t.chatQueryManager,r,s,c,a,o,i])}function rt(){let e=z();(0,W.useEffect)(()=>l.eventBus.on(n.uiShowContent,t=>{e.chatThreadManager.handleUiShowContentEvent(t)}),[e])}function it(){let{sessionId:e}=s(),t=(0,W.useMemo)(()=>me(e),[e]);return{routeSessionKey:t,sessionKey:t??void 0}}function at(){let e=z(),{confirm:t,ConfirmDialog:n}=g(),r=c(),i=o();return(0,W.useEffect)(()=>{e.chatUiManager.syncState({pathname:r.pathname}),e.chatUiManager.bindActions({navigate:i,confirm:t})},[t,r.pathname,i,e]),(0,G.jsx)(n,{})}function ot({view:e}){let t=H();return(0,G.jsx)(ve,{presenter:(0,W.useMemo)(()=>new Se(t),[t]),children:(0,G.jsx)(st,{view:e})})}function st({view:e}){let t=H(),n=z(),r=at(),{routeSessionKey:i,sessionKey:a}=it(),o=ke(e=>{let{snapshot:t}=e;return t.workspacePanelParentKey!==(a??null)||t.activeWorkspacePanelKind!==`child-session`?null:t.activeChildSessionKey?.trim()||null});return(0,W.useEffect)(()=>(t.chatCompletionNotificationManager.syncVisibleSessions([a,o]),()=>{t.chatCompletionNotificationManager.syncVisibleSessions([])}),[t.chatCompletionNotificationManager,a,o]),nt({sessionKey:a??null}),et({routeSessionKey:i,syncRouteSessionSelection:n.chatSessionListManager.syncRouteSessionSelection}),rt(),(0,G.jsx)(tt,{view:e,confirmDialog:r})}function ct({view:e}){return(0,G.jsx)(ot,{view:e})}export{ct as ChatPage};
@@ -1 +0,0 @@
1
- import{t as e}from"./doc-browser-D6H_nPzO.js";export{e as DocBrowser};