agent-tower 0.7.2-beta.4 → 0.7.2-beta.7
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.
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.js +12 -8
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.js.map +1 -1
- package/dist/runtime/cli-driver.js +15 -9
- package/dist/runtime/cli-driver.js.map +1 -1
- package/dist/services/__tests__/session-manager.lifecycle.test.js +69 -0
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.team-run.test.js +3 -1
- package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
- package/dist/services/__tests__/terminal-manager.test.js +70 -0
- package/dist/services/__tests__/terminal-manager.test.js.map +1 -1
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +2 -2
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/terminal-manager.d.ts.map +1 -1
- package/dist/services/terminal-manager.js +9 -4
- package/dist/services/terminal-manager.js.map +1 -1
- package/dist/web/assets/AgentDemoPage-CaR_Yk9_.js +1 -0
- package/dist/web/assets/{AgentEnvironmentSettingsPage-DQjnDr-h.js → AgentEnvironmentSettingsPage-SnxiaHvN.js} +1 -1
- package/dist/web/assets/BranchSelect-D-kqavDG.js +1 -0
- package/dist/web/assets/BrandLogo-CC1alVsd.js +1 -0
- package/dist/web/assets/ConversationPage-RWKLxe1j.js +3 -0
- package/dist/web/assets/CreateTaskInput-SHJ1YpRe.js +1 -0
- package/dist/web/assets/{DemoPage-BkkueMuL.js → DemoPage-BHbnnZFF.js} +1 -1
- package/dist/web/assets/DesignSystemPage-ChCrzeKT.js +12 -0
- package/dist/web/assets/EditableTaskTitle-CGVeZUSt.js +70 -0
- package/dist/web/assets/{ExecutionPermissionSelector-BX5Xx8ta.js → ExecutionPermissionSelector-DcC4IBOF.js} +10 -10
- package/dist/web/assets/GeneralSettingsPage-C_tkwpmF.js +1 -0
- package/dist/web/assets/{LoadingPreviewPage-BxjpxLLP.js → LoadingPreviewPage-dE_jyl19.js} +1 -1
- package/dist/web/assets/McpSettingsPage-CIuQ4bvy.js +1 -0
- package/dist/web/assets/MemberAvatar-BG0VDZKf.js +1 -0
- package/dist/web/assets/MobileTaskDetail-DxE6ZDAS.js +5 -0
- package/dist/web/assets/NotificationSettingsPage-B-Ot2OMg.js +1 -0
- package/dist/web/assets/ProfileSettingsPage-Dn1lrjJr.js +3 -0
- package/dist/web/assets/ProjectKanbanPage-jcW8sA7x.js +12 -0
- package/dist/web/assets/ProjectSettingsPage-BFPty2eA.js +2 -0
- package/dist/web/assets/ProviderSettingsPage-DLq-GBxp.js +67 -0
- package/dist/web/assets/SettingsMasterDetail-UfyoKAum.js +1 -0
- package/dist/web/assets/TaskDetail-a1jalILy.js +3 -0
- package/dist/web/assets/TeamSettingsPage-BxGc4W7K.js +1 -0
- package/dist/web/assets/arc-dhk0OSs5.js +1 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-DWO_DRgk.js → architectureDiagram-3BPJPVTR-BCNj6ZWE.js} +1 -1
- package/dist/web/assets/{at-sign-BFf8Sz8T.js → at-sign-C4VhWike.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-CJPYhE52.js → blockDiagram-GPEHLZMM-D1kmB9gz.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-Cx5IvcjB.js → c4Diagram-AAUBKEIU-DbWKTkSe.js} +1 -1
- package/dist/web/assets/channel-K0AG6Tl1.js +1 -0
- package/dist/web/assets/check-DYlb0A_N.js +1 -0
- package/dist/web/assets/{chevron-up-BwJT7iif.js → chevron-up-DOkDFvIc.js} +1 -1
- package/dist/web/assets/{chunk-2J33WTMH-D9cBNYgd.js → chunk-2J33WTMH-B3TA0-LD.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-BY8TNt6E.js → chunk-4BX2VUAB-CvPTiBSV.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-pT-HP-28.js → chunk-55IACEB6-xGe9Fu9Z.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-hy95xDLb.js → chunk-727SXJPM-H8pz3amK.js} +2 -2
- package/dist/web/assets/{chunk-AQP2D5EJ-DlUN-icr.js → chunk-AQP2D5EJ-BmYYNxcL.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-Dg2iMKZR.js → chunk-FMBD7UC4-BmOEsLTE.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-DMzFIsJ-.js → chunk-ND2GUHAM-C5MfA0xc.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-C6CgmKuM.js → chunk-QZHKN3VN-BcrGYZ7V.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-BTJ44hwx.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-BTJ44hwx.js +1 -0
- package/dist/web/assets/code-block-OCS4YCEC-DLPrDBDy.js +2 -0
- package/dist/web/assets/confirm-dialog-BRkrtULz.js +1 -0
- package/dist/web/assets/content-DPCGELMz.js +2 -0
- package/dist/web/assets/{copy-r0aUdsl8.js → copy-CdzVE3kf.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-D-fvmvw-.js → cose-bilkent-S5V4N54A-CLQ-m71G.js} +1 -1
- package/dist/web/assets/cssMode-ChMyv9Nj.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-H0bYI1f3.js → dagre-BM42HDAG-CmDqxOfn.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-DI568fLp.js → diagram-2AECGRRQ-D-fSbEll.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-BLcaBzw2.js → diagram-5GNKFQAL-HPywThAf.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-aL1cvl23.js → diagram-KO2AKTUF-DAzLhllz.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-DbOutAfH.js → diagram-LMA3HP47-DXYB9h8L.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-D_cWftAX.js → diagram-OG6HWLK6-vv4kz4Zo.js} +1 -1
- package/dist/web/assets/dialog-B_vC5R4B.js +5 -0
- package/dist/web/assets/{erDiagram-TEJ5UH35-DRe5V8Dx.js → erDiagram-TEJ5UH35-Cu6aVKAa.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-B5-vg_Nh.js → flowDiagram-I6XJVG4X-BKDe8WSQ.js} +1 -1
- package/dist/web/assets/{freemarker2-CXlYb2yX.js → freemarker2-DI2giuAo.js} +2 -2
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-B3iBFICN.js → ganttDiagram-6RSMTGT7-DMVLzmAE.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CZ9zsKVw.js → gitGraphDiagram-PVQCEYII-vogzYdKn.js} +1 -1
- package/dist/web/assets/{globe-JXfw4MCF.js → globe-Rnn-nKw-.js} +1 -1
- package/dist/web/assets/handlebars-B9tmKQPV.js +1 -0
- package/dist/web/assets/hooks-DK4m7-FN.js +1 -0
- package/dist/web/assets/html-B_E2U0g5.js +1 -0
- package/dist/web/assets/htmlMode-DRHM_Cwq.js +1 -0
- package/dist/web/assets/icon-button-CuSuXgr_.js +1 -0
- package/dist/web/assets/index-B6Lvy5Sr.js +1 -0
- package/dist/web/assets/{index-CWEbo6pZ.js → index-B88xAivn.js} +5 -5
- package/dist/web/assets/index-BCV57B4O.js +41 -0
- package/dist/web/assets/index-CMjLMilU.js +1 -0
- package/dist/web/assets/index-CTG-4w90.js +1 -0
- package/dist/web/assets/index-Cz73HpYH.js +122 -0
- package/dist/web/assets/index-CzvAGoau.css +1 -0
- package/dist/web/assets/index-DENY_U7o.js +1 -0
- package/dist/web/assets/index-ZO2tqdha.js +1 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-DQU_sN8x.js → infoDiagram-5YYISTIA-CEfSHkNq.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-BVGrNzJa.js → ishikawaDiagram-YF4QCWOH-BXKZuWtD.js} +1 -1
- package/dist/web/assets/javascript-ClWqjgn3.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-DU4Md1Tq.js → journeyDiagram-JHISSGLW-wsOUYlu7.js} +1 -1
- package/dist/web/assets/{jsonMode-BMSvHUHa.js → jsonMode-DVAoDfae.js} +2 -2
- package/dist/web/assets/{kanban-definition-UN3LZRKU-DDPgCucq.js → kanban-definition-UN3LZRKU-DNsuvOrU.js} +1 -1
- package/dist/web/assets/kbd-B3m64lRd.js +1 -0
- package/dist/web/assets/{key-round-BHVp7u3Z.js → key-round-DpYSyeDH.js} +1 -1
- package/dist/web/assets/{layers-2tjjhM75.js → layers-CxqMQVmH.js} +1 -1
- package/dist/web/assets/{linear-D8yLBTVY.js → linear-BmmCZdOQ.js} +1 -1
- package/dist/web/assets/{link-CnunXc7X.js → link-DbSpzB1w.js} +1 -1
- package/dist/web/assets/liquid-CZf3xdoq.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-BiYvrSP0.js → lspLanguageFeatures-WhdC7zdf.js} +1 -1
- package/dist/web/assets/mdx-xzVEPP01.js +1 -0
- package/dist/web/assets/menu-0A0v_lRV.js +1 -0
- package/dist/web/assets/menu-styles-DWynpVVz.js +1 -0
- package/dist/web/assets/{mermaid-NOHMQCX5-9-DTTfp6.js → mermaid-NOHMQCX5-DmKVQY9m.js} +61 -62
- package/dist/web/assets/{message-square-QM0c6Dcv.js → message-square-CfNb-MTd.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-CCAuuWFZ.js → mindmap-definition-RKZ34NQL-0RzXjZ9G.js} +1 -1
- package/dist/web/assets/modal-Kpqn-nDO.js +1 -0
- package/dist/web/assets/{monaco-CrBn9oMJ.js → monaco-I1fXAMIt.js} +3 -3
- package/dist/web/assets/{paperclip-CC7nHUQ7.js → paperclip-BBrzKZQC.js} +1 -1
- package/dist/web/assets/{pencil-DIY0Hu5t.js → pencil-pzVKblxj.js} +1 -1
- package/dist/web/assets/people-C6b3eeLq.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-CXy_N5QX.js → pieDiagram-4H26LBE5-Bcvzb8TW.js} +2 -2
- package/dist/web/assets/popover-BYz89aiY.js +1 -0
- package/dist/web/assets/python-DL05HvW4.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-Dt44QsS8.js → quadrantDiagram-W4KKPZXB-DwNhxMxj.js} +1 -1
- package/dist/web/assets/razor-BCZ3_uDf.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-BL8D7Np0.js → requirementDiagram-4Y6WPE33-D2wSGYn2.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-I5nefO3A.js → sankeyDiagram-5OEKKPKP-l3LLF--T.js} +1 -1
- package/dist/web/assets/search-field-B5czD2Pl.js +1 -0
- package/dist/web/assets/select-DGwKE4l0.js +1 -0
- package/dist/web/assets/select-yem-xN9Z.js +1 -0
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-lbPrhX8g.js → sequenceDiagram-3UESZ5HK-BAGsbTS_.js} +1 -1
- package/dist/web/assets/{server-BNBdQGor.js → server-BIPZ9Ka-.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-Bw3qtv2M.js → stateDiagram-AJRCARHV-C0BHmXYX.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Be3UCkeQ.js +1 -0
- package/dist/web/assets/{textarea-CD82lB0Z.js → textarea-Bnfq7adW.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-Cfg_kgoa.js → timeline-definition-PNZ67QCA-Dt-DcRrG.js} +1 -1
- package/dist/web/assets/toggles-DxNDJZsN.js +1 -0
- package/dist/web/assets/tooltip-CHOgkFbE.js +1 -0
- package/dist/web/assets/track-B_K578io.js +1 -0
- package/dist/web/assets/{trash-2-BF_3L-qk.js → trash-2-ALAYDudv.js} +1 -1
- package/dist/web/assets/tsMode-kXxq-Lw7.js +11 -0
- package/dist/web/assets/typescript-E3_QcT_u.js +1 -0
- package/dist/web/assets/{upload-B2AMXrU-.js → upload-D7hKT2VA.js} +1 -1
- package/dist/web/assets/use-attachments-CK7y5KsN.js +2 -0
- package/dist/web/assets/use-profiles-Ncqxdw7S.js +1 -0
- package/dist/web/assets/{use-projects-BYUZwQ-q.js → use-projects-Dwy9AfAG.js} +1 -1
- package/dist/web/assets/{use-providers-DdV9gbj1.js → use-providers-BRyZjuBG.js} +1 -1
- package/dist/web/assets/use-workspaces-BBbahdwU.js +1 -0
- package/dist/web/assets/useNormalizedLogs-CRHRedwp.js +1 -0
- package/dist/web/assets/useTokenUsage-YwiF0xnT.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-CdEP03CK.js → vennDiagram-CIIHVFJN-Cr55FtiY.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-q_Enplrs.js → wardley-L42UT6IY-CtwMk9MJ.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-DlL6fsid.js → wardleyDiagram-YWT4CUSO-BeyHmTu3.js} +1 -1
- package/dist/web/assets/xml-DxKND8qX.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-B2OGqVKA.js → xychartDiagram-2RQKCTM6-9g34Lq8E.js} +1 -1
- package/dist/web/assets/yaml-BqpCqTY6.js +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/AgentDemoPage-Svq9Baa7.js +0 -1
- package/dist/web/assets/AgentLogo-I2etsqym.js +0 -1
- package/dist/web/assets/BranchSelect-Eb5UGWWX.js +0 -1
- package/dist/web/assets/BrandLogo-BjC1hcgv.js +0 -1
- package/dist/web/assets/ConversationPage-jEYUuSPT.js +0 -3
- package/dist/web/assets/CreateTaskInput-B_cRDkVq.js +0 -1
- package/dist/web/assets/DesignSystemPage-oM16R2Ta.js +0 -16
- package/dist/web/assets/GeneralSettingsPage-B0jFlgDl.js +0 -1
- package/dist/web/assets/McpSettingsPage-BErvd619.js +0 -1
- package/dist/web/assets/MemberAvatar-TVtoxQe8.js +0 -1
- package/dist/web/assets/NotificationSettingsPage-BETMBdj1.js +0 -1
- package/dist/web/assets/ProfileSettingsPage-C03ZAft-.js +0 -3
- package/dist/web/assets/ProjectKanbanPage-DsPxwoVf.js +0 -86
- package/dist/web/assets/ProjectSettingsPage-BwNM6VWs.js +0 -2
- package/dist/web/assets/ProviderSettingsPage-CeNQPd74.js +0 -67
- package/dist/web/assets/SettingsMasterDetail-B_SI2h_k.js +0 -1
- package/dist/web/assets/TeamSettingsPage-BfgtMl_n.js +0 -1
- package/dist/web/assets/agent-meta-DOylIs2N.js +0 -1
- package/dist/web/assets/arc-BlZww3MO.js +0 -1
- package/dist/web/assets/channel-D9sA6Wxp.js +0 -1
- package/dist/web/assets/check-Cm7Vstpm.js +0 -1
- package/dist/web/assets/chevron-down-C6Ta4vyM.js +0 -1
- package/dist/web/assets/circle-alert-Dm2Pl-rU.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-2e2YVo9r.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-2e2YVo9r.js +0 -1
- package/dist/web/assets/code-block-OCS4YCEC-DizntuP_.js +0 -2
- package/dist/web/assets/confirm-dialog-DRpyE_qU.js +0 -1
- package/dist/web/assets/cssMode-DVorIr82.js +0 -1
- package/dist/web/assets/handlebars-BL0prPVZ.js +0 -1
- package/dist/web/assets/html-DJWeRkWe.js +0 -1
- package/dist/web/assets/htmlMode-D_fekqg9.js +0 -1
- package/dist/web/assets/index-CWbMMO6g.js +0 -122
- package/dist/web/assets/index-uXglTJ2_.css +0 -1
- package/dist/web/assets/javascript-CDfuzdfe.js +0 -1
- package/dist/web/assets/liquid-DHrNpv6c.js +0 -1
- package/dist/web/assets/mdx-CIEpgUOV.js +0 -1
- package/dist/web/assets/modal-BRoNvfhw.js +0 -1
- package/dist/web/assets/play-CIZVXiwM.js +0 -1
- package/dist/web/assets/python-BIs0pClJ.js +0 -1
- package/dist/web/assets/razor-JCx8NEwU.js +0 -1
- package/dist/web/assets/select-BmjoUfrV.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Xbc4HxDQ.js +0 -1
- package/dist/web/assets/switch-CEUHI4gI.js +0 -1
- package/dist/web/assets/task-kalEmHDc.js +0 -42
- package/dist/web/assets/task-priority-wLXAgVZZ.js +0 -1
- package/dist/web/assets/tsMode-DAHSkTAr.js +0 -11
- package/dist/web/assets/typescript-CptiLWGr.js +0 -1
- package/dist/web/assets/use-profiles-CQ-jIuiI.js +0 -1
- package/dist/web/assets/useNormalizedLogs-DdFsf-Z1.js +0 -1
- package/dist/web/assets/xml-DbPqkgZW.js +0 -1
- package/dist/web/assets/yaml-Deyq6Z5-.js +0 -1
- /package/dist/web/assets/{ProjectKanbanPage-DcpNTP1B.css → EditableTaskTitle-DcpNTP1B.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as te,a as ne,b as le,d as ie,e as re,f as oe,g as ce,r as t,t as m,j as s,S as de,h as ue,i as A,k as G,B as g,I as z}from"./index-CWbMMO6g.js";import{S as U}from"./select-BmjoUfrV.js";import{T as me}from"./textarea-CD82lB0Z.js";import{S as ge}from"./switch-CEUHI4gI.js";import{u as pe}from"./use-providers-DdV9gbj1.js";import"./chevron-down-C6Ta4vyM.js";import"./check-Cm7Vstpm.js";const fe=[{value:"zh-CN",label:"简体中文"},{value:"en",label:"English"}],N="__follow_task__",R=8;function W(P,y){return P instanceof Error?P.message:y}function je(){const{locale:P,setLocale:y,t:e}=te(),{data:p}=ne(),{data:H}=pe(),{data:w}=le(),{data:r}=ie(),u=re(),i=oe(),S=ce(),[K,D]=t.useState(N),[E,k]=t.useState(""),[V,j]=t.useState(!1),[d,_]=t.useState(""),[o,L]=t.useState(""),[C,I]=t.useState(""),[M,f]=t.useState(!1),[q,h]=t.useState(!1),[b,l]=t.useState(null);t.useEffect(()=>{!p||!w||(D(p.commitMessageProviderId||N),k(p.commitMessagePrompt||w.prompt),j(!1))},[p,w]),t.useEffect(()=>{r&&(f(r.enabled),h(!1),l(null),_(""),L(""),I(""))},[r?.enabled]);const J=[{value:N,label:e("跟随任务")},...(H??[]).filter(a=>a.availability.type!=="NOT_FOUND").map(a=>({value:a.provider.id,label:a.provider.name}))],x=r?.enabled??!1,n=!x&&M?"enable":x&&!M?"disable":x&&q?"change":"idle",O=n!=="idle",Q=e(O?n==="disable"?"将关闭":n==="enable"?"将启用":"已启用":x?"已启用":"未启用"),X=t.useCallback(a=>{D(a);const v=a===N?null:a;u.mutate({commitMessageProviderId:v},{onError:()=>m.error(e("保存失败"))})},[u,e]),Y=t.useCallback(()=>{const a=E.trim()||null;u.mutate({commitMessagePrompt:a},{onSuccess:()=>{j(!1),m.success(e("已保存"))},onError:()=>m.error(e("保存失败"))})},[E,u,e]),c=t.useCallback(()=>{_(""),L(""),I("")},[]),Z=t.useCallback(()=>{f(r?.enabled??!1),h(!1),l(null),c()},[r?.enabled,c]),F=t.useCallback(a=>{if((a==="change"||a==="disable")&&!d)return l(e("请输入当前密码")),!1;if(a==="enable"||a==="change"){if(o.length<R)return l(e("密码至少需要 8 个字符")),!1;if(o!==C)return l(e("两次输入不一致")),!1}return l(null),!0},[C,d,o,e]),B=t.useCallback(()=>{if(n==="idle"||!F(n))return;const a=n==="disable"?{enabled:!1,currentPassword:d}:n==="enable"?{enabled:!0,newPassword:o}:{currentPassword:d,newPassword:o};i.mutate(a,{onSuccess:v=>{f(v.enabled),h(!1),l(null),c(),m.success(e(n==="disable"?"已关闭":"已保存"))},onError:v=>{const T=W(v,e("保存失败"));T.toLowerCase().includes("current password")?l(e("当前密码不正确")):T.toLowerCase().includes("at least 8")?l(e("密码至少需要 8 个字符")):l(T)}})},[n,c,d,o,e,i,F]),$=t.useCallback(a=>{!r||i.isPending||(f(a),h(!1),l(null),c())},[r,c,i.isPending]),ee=t.useCallback(()=>{S.mutate(void 0,{onSuccess:()=>m.success(e("已退出登录")),onError:a=>m.error(W(a,e("退出登录失败")))})},[S,e]),se=t.useCallback(a=>{a.preventDefault(),B()},[B]),ae=t.useCallback(()=>{!r||i.isPending||(f(!0),h(!0),l(null),c())},[r,c,i.isPending]);return s.jsxs(de,{children:[s.jsx(ue,{title:e("通用设置"),className:"mb-1"}),s.jsx("div",{className:"divide-y divide-border/60",children:s.jsx(A,{label:e("显示语言"),description:e("界面语言会保存到本地数据库,重启后继续生效。"),align:"center",children:s.jsx(U,{value:P,onChange:a=>y(a),options:fe})})}),s.jsx(G,{className:"mt-8 mb-1",children:e("访问安全")}),s.jsx("div",{className:"divide-y divide-border/60",children:s.jsx(A,{label:e("访问密码"),description:e("开启后,进入 Agent Tower 需要输入密码。"),controlWidth:"fixed",children:s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("span",{className:"text-sm font-medium text-foreground",children:Q}),s.jsx(ge,{checked:M,onCheckedChange:$,disabled:!r||i.isPending,"aria-label":e("访问密码")})]}),x&&n==="idle"&&s.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:justify-end",children:[s.jsx(g,{type:"button",size:"sm",variant:"outline",className:"w-full sm:w-auto",onClick:ae,disabled:i.isPending,children:e("修改密码")}),s.jsx(g,{type:"button",size:"sm",variant:"ghost",className:"w-full sm:w-auto",onClick:ee,disabled:S.isPending,children:S.isPending?e("退出中..."):e("退出登录")})]}),O&&s.jsxs("form",{className:"space-y-2",onSubmit:se,children:[(n==="change"||n==="disable")&&s.jsx(z,{type:"password",autoComplete:"current-password",placeholder:e("当前密码"),value:d,onChange:a=>{_(a.target.value),l(null)},disabled:i.isPending,"aria-invalid":!!(b&&!d)}),(n==="enable"||n==="change")&&s.jsxs(s.Fragment,{children:[s.jsx(z,{type:"password",autoComplete:"new-password",placeholder:e(n==="enable"?"访问密码":"新密码"),value:o,onChange:a=>{L(a.target.value),l(null)},disabled:i.isPending,"aria-invalid":!!(b&&o.length<R)}),s.jsx(z,{type:"password",autoComplete:"new-password",placeholder:e("确认密码"),value:C,onChange:a=>{I(a.target.value),l(null)},disabled:i.isPending,"aria-invalid":!!(b&&o!==C)})]}),(n==="change"||n==="disable")&&s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:e(n==="disable"?"关闭后不再要求访问密码。":"保存后其他已登录页面需要重新输入。")}),b&&s.jsx("p",{className:"text-xs text-destructive",children:b}),s.jsxs("div",{className:"flex flex-col-reverse gap-2 pt-1 sm:flex-row sm:justify-end",children:[s.jsx(g,{type:"button",size:"sm",variant:"ghost",className:"w-full sm:w-auto",onClick:Z,disabled:i.isPending,children:e("取消")}),s.jsx(g,{type:"submit",size:"sm",className:"w-full sm:w-auto",disabled:i.isPending,children:i.isPending?e("保存中..."):e(n==="disable"?"关闭访问密码":"保存")})]})]})]})})}),s.jsx(G,{className:"mt-8 mb-1",children:e("Git Commit Message")}),s.jsxs("div",{className:"divide-y divide-border/60",children:[s.jsx(A,{label:e("Agent 渠道"),description:e('"跟随任务"表示使用当前任务所用的 Agent 渠道。选择具体渠道可使用更经济的模型。'),children:s.jsx(U,{value:K,onChange:X,options:J})}),s.jsx(A,{label:e("提示词模板"),description:e("自定义生成 commit message 的提示词。留空则使用内置默认模板。"),children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(me,{value:E,onChange:a=>{k(a.target.value),j(!0)},rows:5,className:"font-mono resize-y"}),V&&s.jsxs("div",{className:"flex items-center justify-end gap-2",children:[s.jsx(g,{size:"sm",variant:"ghost",onClick:()=>{k(p?.commitMessagePrompt||w?.prompt||""),j(!1)},children:e("取消")}),s.jsx(g,{size:"sm",onClick:Y,disabled:u.isPending,children:u.isPending?e("保存中..."):e("保存")})]})]})})]})]})}export{je as GeneralSettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as c,q as m,p as o,u,r as p,t as n,j as e,S as a,V as g,B as l,Z as f}from"./index-CWbMMO6g.js";import{C as j}from"./copy-r0aUdsl8.js";import{S as b}from"./server-BNBdQGor.js";import{C as h}from"./check-Cm7Vstpm.js";function N(){return c({queryKey:m.system.mcpConfig,queryFn:()=>o.get("/system/mcp-config")})}function C({mode:s,label:t}){const r=s==="desktop-packaged";return e.jsx("span",{className:`inline-flex items-center rounded-md px-2 py-1 text-[11px] font-medium ${r?"bg-emerald-50 text-emerald-700":"bg-amber-50 text-amber-700"}`,children:t})}function w(){const{t:s}=u(),{data:t,isLoading:r,isError:i,refetch:d}=N(),x=p.useCallback(async()=>{if(t?.configJson)try{await navigator.clipboard.writeText(t.configJson),n.success(s("MCP 配置已复制"))}catch{n.error(s("复制 MCP 配置失败"))}},[t?.configJson,s]);return r?e.jsx(a,{children:e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx(g,{className:"h-5 w-5 animate-spin text-neutral-500"})})}):i||!t?e.jsxs(a,{children:[e.jsx("h2",{className:"mb-1 text-base font-semibold text-neutral-900",children:s("MCP 配置")}),e.jsx("div",{className:"mt-5 rounded-lg border border-red-100 bg-red-50 px-4 py-3 text-sm text-red-700",children:s("MCP 配置加载失败")}),e.jsx(l,{className:"mt-4",size:"sm",variant:"outline",onClick:()=>{d()},children:s("重试")})]}):e.jsxs(a,{children:[e.jsxs("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold text-neutral-900",children:s("MCP 配置")}),e.jsx("p",{className:"mt-1 text-[12px] leading-relaxed text-neutral-500",children:s("复制下面的 JSON 到支持 MCP 的客户端配置中。桌面打包版使用 App 内置 runtime,不需要全局安装 agent-tower。")})]}),e.jsxs(l,{size:"sm",onClick:x,children:[e.jsx(j,{size:14}),s("复制配置")]})]}),e.jsxs("div",{className:"space-y-3 border-b border-neutral-100 pb-5",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(C,{mode:t.runtimeMode,label:t.runtimeMode==="desktop-packaged"?s("桌面打包 runtime"):s("工作区 runtime")}),e.jsx("span",{className:"text-[12px] text-neutral-400",children:t.serverName})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"rounded-lg border border-neutral-100 bg-neutral-50/70 p-3",children:[e.jsxs("div",{className:"mb-1 flex items-center gap-1.5 text-[11px] font-medium uppercase text-neutral-400",children:[e.jsx(f,{size:12}),"Command"]}),e.jsx("div",{className:"break-all font-mono text-[12px] leading-relaxed text-neutral-800",children:t.command})]}),e.jsxs("div",{className:"rounded-lg border border-neutral-100 bg-neutral-50/70 p-3",children:[e.jsxs("div",{className:"mb-1 flex items-center gap-1.5 text-[11px] font-medium uppercase text-neutral-400",children:[e.jsx(b,{size:12}),"Entry"]}),e.jsx("div",{className:"break-all font-mono text-[12px] leading-relaxed text-neutral-800",children:t.args.at(-1)??""})]})]})]}),e.jsxs("div",{className:"pt-5",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[e.jsx("label",{className:"text-[12px] font-medium text-neutral-600",children:"mcpServers JSON"}),t.runtimeMode==="desktop-packaged"&&e.jsxs("span",{className:"inline-flex items-center gap-1 text-[11px] text-emerald-600",children:[e.jsx(h,{size:12}),s("无需全局 CLI")]})]}),e.jsx("textarea",{readOnly:!0,value:t.configJson,rows:14,className:"w-full resize-y rounded-lg border border-neutral-200 bg-neutral-950 px-3 py-3 font-mono text-[12px] leading-relaxed text-neutral-100 outline-none"}),e.jsx("p",{className:"mt-2 text-[11px] leading-relaxed text-neutral-400",children:s("当前版本只生成通用 MCP 配置,不会自动修改 Claude、Codex 或其他第三方客户端配置文件。")})]})]})}export{w as McpSettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,j as n,l as o}from"./index-CWbMMO6g.js";function d(r){const t=r.trim();if(!t)return"?";const e=t.split(/\s+/).filter(Boolean);return e.length>=2?`${e[0][0]??""}${e[1][0]??""}`.toUpperCase():Array.from(t).slice(0,2).join("").toUpperCase()}function a(r){const t=r.trim();return/^#([0-9a-f]{3,8})$/i.test(t)||/^rgba?\(/i.test(t)||/^hsla?\(/i.test(t)}function l(r){const t=r.trim();return t.startsWith("/")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:image/")||t.startsWith("blob:")}function h(r,t){const e=r?.trim()??"";return!e||a(e)||l(e)?d(t):e.length<=2?e.toUpperCase():e.slice(0,2).toUpperCase()}function p(r){const t=r?.trim()??"";if(!(!t||!a(t)))return{backgroundColor:t,color:"#ffffff"}}function g({name:r,avatar:t,className:e}){const[u,c]=i.useState(null),s=t?.trim()??"",f=!!s&&l(s)&&u!==s,m=i.useMemo(()=>h(s,r),[r,s]);return f?n.jsx("img",{src:s,alt:r,loading:"lazy",onError:()=>c(s),className:o("h-7 w-7 shrink-0 rounded-full border border-neutral-200 bg-white object-cover",e)}):n.jsx("div",{className:o("flex h-7 w-7 shrink-0 items-center justify-center rounded-full border border-neutral-200 bg-neutral-100 text-[10px] font-semibold text-neutral-600",e),style:p(s),"aria-label":r,children:m})}export{g as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as P,o as E,n as k,q as v,p as h,u as R,r as o,j as e,S as g,Q as B,h as q,i as j,U as W,I as d,B as z,V as L,W as A,k as Q,Y as K}from"./index-CWbMMO6g.js";import{S as M}from"./select-BmjoUfrV.js";import{S as O}from"./switch-CEUHI4gI.js";import{M as D}from"./message-square-QM0c6Dcv.js";import{C as H}from"./circle-alert-Dm2Pl-rU.js";import{L as V}from"./link-CnunXc7X.js";import"./chevron-down-C6Ta4vyM.js";import"./check-Cm7Vstpm.js";function Y(){return P({queryKey:v.notifications.settings,queryFn:()=>h.get("/notifications/settings")})}function G(){const t=E();return k({mutationFn:a=>h.put("/notifications/settings",a),onSuccess:()=>{t.invalidateQueries({queryKey:v.notifications.settings})}})}function J(){return k({mutationFn:t=>h.post("/notifications/test",t)})}function ae(){const{t}=R(),{data:a,isLoading:T}=Y(),l=G(),n=J(),N=[{value:"none",label:t("关闭")},{value:"feishu",label:t("飞书 Webhook")}],[i,x]=o.useState({webhookUrl:"",baseUrl:"",titleTemplate:"",bodyTemplate:""}),[m,p]=o.useState(!1),[f,r]=o.useState("idle"),u=o.useRef(void 0);if(o.useEffect(()=>{a&&!m&&x({webhookUrl:a.feishuWebhookUrl??"",baseUrl:a.thirdPartyBaseUrl??"",titleTemplate:a.taskInReviewTitleTemplate??"",bodyTemplate:a.taskInReviewBodyTemplate??""})},[a,m]),o.useEffect(()=>(n.isSuccess?(r("success"),u.current=setTimeout(()=>r("idle"),3e3)):n.isError&&(r("error"),u.current=setTimeout(()=>r("idle"),5e3)),()=>clearTimeout(u.current)),[n.isSuccess,n.isError]),T)return e.jsx(g,{children:e.jsx(B,{rows:3})});const y=a?.osNotificationEnabled??!0,b=a?.thirdPartyChannel??"none",c=(s,I)=>{x(F=>({...F,[s]:I})),p(!0)},S=s=>{l.mutate({osNotificationEnabled:s})},C=s=>{l.mutate({thirdPartyChannel:s})},U=()=>{l.mutate({feishuWebhookUrl:i.webhookUrl.trim()||null,thirdPartyBaseUrl:i.baseUrl.trim()||null,taskInReviewTitleTemplate:i.titleTemplate.trim()||"Agent Tower",taskInReviewBodyTemplate:i.bodyTemplate.trim()||t('✅ "{taskTitle}" 已完成,等待审查')},{onSuccess:()=>p(!1)})},w=()=>{i.webhookUrl.trim()&&n.mutate({channel:"feishu",webhookUrl:i.webhookUrl.trim(),baseUrl:i.baseUrl.trim()||void 0})};return e.jsxs(g,{children:[e.jsx(q,{title:t("通知设置"),className:"mb-1"}),e.jsxs("div",{className:"divide-y divide-border/60",children:[e.jsx(j,{icon:W,label:t("桌面通知"),description:t("任务完成时弹出系统通知"),align:"center",controlWidth:"auto",children:e.jsx(O,{checked:y,onCheckedChange:S,"aria-label":t("桌面通知")})}),e.jsxs("div",{className:"py-5",children:[e.jsx(j,{icon:D,label:t("第三方通知"),description:t("推送到外部渠道(飞书群机器人等)"),align:"center",className:"py-0",children:e.jsx(M,{value:b,onChange:s=>C(s),options:N})}),b==="feishu"&&e.jsxs("div",{className:"mt-4 space-y-4 sm:pl-11",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"feishu-webhook-url",className:"mb-1.5 block text-xs font-medium text-muted-foreground",children:"Webhook URL"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(d,{id:"feishu-webhook-url",value:i.webhookUrl,onChange:s=>c("webhookUrl",s.target.value),placeholder:"https://open.feishu.cn/open-apis/bot/v2/hook/...",className:"min-w-0 flex-1 font-mono"}),e.jsxs(z,{size:"sm",variant:"outline",onClick:w,disabled:!i.webhookUrl.trim()||n.isPending,className:"h-auto shrink-0",children:[n.isPending&&e.jsx(L,{size:12,className:"mr-1 animate-spin motion-reduce:animate-none"}),t("测试")]})]}),f==="success"&&e.jsxs("div",{role:"status",className:"mt-2 flex items-center gap-1.5 text-xs text-success",children:[e.jsx(A,{size:12,"aria-hidden":"true"}),t("测试消息发送成功")]}),f==="error"&&e.jsxs("div",{role:"alert",className:"mt-2 flex items-center gap-1.5 text-xs text-destructive",children:[e.jsx(H,{size:12,"aria-hidden":"true"}),t("发送失败,请检查 Webhook 地址")]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"feishu-base-url",className:"mb-1.5 block text-xs font-medium text-muted-foreground",children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(V,{size:11,"aria-hidden":"true"}),t("跳转地址")]})}),e.jsx(d,{id:"feishu-base-url",value:i.baseUrl,onChange:s=>c("baseUrl",s.target.value),placeholder:"http://localhost:5173",className:"font-mono"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:t('通知卡片中的"查看任务"按钮跳转地址前缀')})]})]})]}),e.jsxs("div",{className:"py-5",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx(Q,{children:t("通知模板")}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:t("支持变量: {taskTitle}, {taskId}, {projectId}, {projectName}, {status}",{taskTitle:"{taskTitle}",taskId:"{taskId}",projectId:"{projectId}",projectName:"{projectName}",status:"{status}"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"notification-title-template",className:"mb-1.5 block text-xs font-medium text-muted-foreground",children:t("标题")}),e.jsx(d,{id:"notification-title-template",value:i.titleTemplate,onChange:s=>c("titleTemplate",s.target.value),placeholder:"Agent Tower"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"notification-body-template",className:"mb-1.5 block text-xs font-medium text-muted-foreground",children:t("内容")}),e.jsx(d,{id:"notification-body-template",value:i.bodyTemplate,onChange:s=>c("bodyTemplate",s.target.value),placeholder:t('✅ "{taskTitle}" 已完成,等待审查')})]})]})]})]}),m&&e.jsx(K,{saving:l.isPending,onSave:U})]})}export{ae as NotificationSettingsPage};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{u as T,r as g,j as e,S,h as J,v as M,w,I as U,B as E,x as p,l as P}from"./index-CWbMMO6g.js";import{u as _,a as z,b as B,c as F}from"./use-profiles-CQ-jIuiI.js";import{M as G}from"./modal-BRoNvfhw.js";import{C as $}from"./confirm-dialog-DRpyE_qU.js";import{T as R}from"./textarea-CD82lB0Z.js";import{L as H}from"./layers-2tjjhM75.js";import{C as q}from"./chevron-down-C6Ta4vyM.js";import{P as K,T as Q}from"./trash-2-BF_3L-qk.js";import{P as W}from"./pencil-DIY0Hu5t.js";function X(t){const a=Object.entries(t);return a.length===0?"(empty)":a.map(([m,c])=>`${m}: ${JSON.stringify(c)}`).join(", ")}const y={CLAUDE_CODE:"Claude Code",GEMINI_CLI:"Gemini CLI",CURSOR_AGENT:"Cursor Agent"};function Y({agentType:t,variants:a,isBuiltIn:m,onEdit:c,onNew:h,onDelete:j}){const{t:n}=T(),[r,b]=g.useState(!0),u=Object.entries(a);return e.jsxs("div",{className:"overflow-hidden rounded-lg border border-border",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 bg-muted/40 px-4 py-3",children:[e.jsxs("button",{type:"button",onClick:()=>b(i=>!i),"aria-expanded":r,className:"flex items-center gap-3 rounded-md transition-opacity hover:opacity-80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:[e.jsx("h3",{className:"text-[13px] font-semibold text-foreground",children:y[t]??t}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:[u.length," ",n("个变体")]}),e.jsx(q,{size:14,"aria-hidden":"true",className:P("text-muted-foreground transition-transform motion-reduce:transition-none",r&&"rotate-180")})]}),e.jsxs("button",{type:"button",onClick:h,className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] text-muted-foreground transition-colors hover:bg-background hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:[e.jsx(K,{size:12,"aria-hidden":"true"}),n("新增")]})]}),r&&e.jsxs("div",{className:"divide-y divide-border/60",children:[u.map(([i,x])=>{const f=m(i);return e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2.5 transition-colors hover:bg-muted/40",children:[e.jsx("span",{className:P("inline-flex shrink-0 items-center rounded px-2 py-0.5 text-[11px] font-semibold tracking-wide",i==="DEFAULT"?"bg-primary/[0.06] text-primary":"bg-muted text-muted-foreground"),children:i}),e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-xs text-muted-foreground",children:X(x)}),f&&e.jsx("span",{className:"shrink-0 text-[10px] font-medium text-muted-foreground/70",children:n("内置")}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[e.jsx("button",{onClick:()=>c(i,x),className:"flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",title:n("编辑"),"aria-label":n("编辑"),children:e.jsx(W,{size:12})}),!f&&e.jsx("button",{onClick:()=>j(i),className:"flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",title:n("删除"),"aria-label":n("删除"),children:e.jsx(Q,{size:12})})]})]},i)}),u.length===0&&e.jsx("div",{className:"px-4 py-4 text-center text-xs text-muted-foreground",children:n("暂无变体")})]})]})}function Z(){return e.jsxs("div",{role:"status","aria-label":"Loading",children:[e.jsx(p,{className:"h-7 w-36"}),e.jsx(p,{className:"mt-2 h-3.5 w-72 max-w-full"}),e.jsx("div",{className:"mt-5 space-y-3",children:Array.from({length:2}).map((t,a)=>e.jsxs("div",{className:"overflow-hidden rounded-lg border border-border",children:[e.jsxs("div",{className:"flex items-center gap-3 bg-muted/40 px-4 py-3",children:[e.jsx(p,{className:"h-4 w-28"}),e.jsx(p,{className:"h-3 w-14"})]}),e.jsx("div",{className:"divide-y divide-border/60",children:Array.from({length:2}).map((m,c)=>e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2.5",children:[e.jsx(p,{className:"h-5 w-16 rounded"}),e.jsx(p,{className:"h-3.5 flex-1"})]},c))})]},a))})]})}function de(){const{t}=T(),{data:a,isLoading:m}=_(),{data:c}=z(),h=B(),j=F(),[n,r]=g.useState(null),[b,u]=g.useState(""),[i,x]=g.useState(""),[f,v]=g.useState(""),[o,N]=g.useState(null),k=(s,l,d)=>{r({agentType:s,variant:l,config:d,isNew:!1}),x(l),u(JSON.stringify(d,null,2)),v("")},O=s=>{r({agentType:s,variant:"",config:{},isNew:!0}),x(""),u(`{
|
|
2
|
-
|
|
3
|
-
}`),v("")},D=()=>{if(!(!n||!i.trim()))try{const s=JSON.parse(b);v(""),h.mutate({agentType:n.agentType,variant:i.trim().toUpperCase(),config:s},{onSuccess:()=>r(null)})}catch{v(t("JSON 格式错误"))}},L=(s,l)=>{N({agentType:s,variant:l})},A=()=>{o&&j.mutate({agentType:o.agentType,variant:o.variant},{onSettled:()=>N(null)})},I=(s,l)=>!!c?.executors[s]?.[l];if(m)return e.jsx(S,{children:e.jsx(Z,{})});const C=a?.executors??{};return e.jsxs(S,{children:[e.jsx(J,{title:t("Profile 配置"),description:t("管理 Agent 执行器的配置变体。每个变体定义一组运行参数。"),className:"mb-4"}),e.jsx("div",{className:"space-y-3",children:Object.entries(C).map(([s,l])=>e.jsx(Y,{agentType:s,variants:l,isBuiltIn:d=>I(s,d),onEdit:(d,V)=>k(s,d,V),onNew:()=>O(s),onDelete:d=>L(s,d)},s))}),Object.keys(C).length===0&&e.jsx(M,{icon:H,message:t("暂无 Profile 配置")}),e.jsx(G,{isOpen:!!n,onClose:()=>r(null),title:n?.isNew?t("新增 Variant — {agentType}",{agentType:y[n.agentType]??n.agentType}):t("编辑 {variant}",{variant:n?.variant??""}),action:e.jsxs(e.Fragment,{children:[e.jsx(E,{variant:"outline",onClick:()=>r(null),children:t("取消")}),e.jsx(E,{onClick:D,disabled:h.isPending,children:h.isPending?t("保存中..."):t("保存")})]}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(w,{label:t("Variant 名称"),htmlFor:"profile-variant-name",children:e.jsx(U,{id:"profile-variant-name",value:i,onChange:s=>x(s.target.value),disabled:!n?.isNew,placeholder:t("例如: CUSTOM"),className:"font-mono"})}),e.jsxs(w,{label:t("配置 (JSON)"),htmlFor:"profile-variant-json",children:[e.jsx(R,{id:"profile-variant-json",value:b,onChange:s=>{u(s.target.value),v("")},rows:6,className:"resize-none font-mono","aria-invalid":!!f}),f&&e.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:f})]})]})}),e.jsx($,{isOpen:o!==null,onClose:()=>{j.isPending||N(null)},onConfirm:A,title:t("删除 Profile Variant"),description:o?t('确定删除 "{name}"?此操作不可撤销。',{name:`${y[o.agentType]??o.agentType} / ${o.variant}`}):"",confirmText:t("删除"),cancelText:t("取消"),variant:"danger",isLoading:j.isPending})]})}export{de as ProfileSettingsPage};
|