agent-tower 0.5.3-beta.5 → 0.5.3-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/app.d.ts.map +1 -1
- package/dist/app.js +13 -0
- package/dist/app.js.map +1 -1
- package/dist/cli.js +26 -3
- package/dist/cli.js.map +1 -1
- package/dist/executors/__tests__/base.executor.test.js +83 -8
- package/dist/executors/__tests__/base.executor.test.js.map +1 -1
- package/dist/executors/__tests__/claude-code.executor.test.d.ts +2 -0
- package/dist/executors/__tests__/claude-code.executor.test.d.ts.map +1 -0
- package/dist/executors/__tests__/claude-code.executor.test.js +72 -0
- package/dist/executors/__tests__/claude-code.executor.test.js.map +1 -0
- package/dist/executors/__tests__/providers-availability.test.d.ts +2 -0
- package/dist/executors/__tests__/providers-availability.test.d.ts.map +1 -0
- package/dist/executors/__tests__/providers-availability.test.js +92 -0
- package/dist/executors/__tests__/providers-availability.test.js.map +1 -0
- package/dist/executors/__tests__/stdin-prompt.executors.test.d.ts +2 -0
- package/dist/executors/__tests__/stdin-prompt.executors.test.d.ts.map +1 -0
- package/dist/executors/__tests__/stdin-prompt.executors.test.js +177 -0
- package/dist/executors/__tests__/stdin-prompt.executors.test.js.map +1 -0
- package/dist/executors/base.executor.d.ts.map +1 -1
- package/dist/executors/base.executor.js +131 -33
- package/dist/executors/base.executor.js.map +1 -1
- package/dist/executors/claude-code.executor.d.ts.map +1 -1
- package/dist/executors/claude-code.executor.js +22 -52
- package/dist/executors/claude-code.executor.js.map +1 -1
- package/dist/executors/codex.executor.js +4 -4
- package/dist/executors/codex.executor.js.map +1 -1
- package/dist/executors/cursor-agent.executor.d.ts.map +1 -1
- package/dist/executors/cursor-agent.executor.js +4 -6
- package/dist/executors/cursor-agent.executor.js.map +1 -1
- package/dist/executors/gemini-cli.executor.d.ts.map +1 -1
- package/dist/executors/gemini-cli.executor.js +9 -8
- package/dist/executors/gemini-cli.executor.js.map +1 -1
- package/dist/executors/image-utils.d.ts.map +1 -1
- package/dist/executors/image-utils.js +4 -22
- package/dist/executors/image-utils.js.map +1 -1
- package/dist/index.js +37 -2
- package/dist/index.js.map +1 -1
- package/dist/pipeline/agent-pipeline.d.ts.map +1 -1
- package/dist/pipeline/agent-pipeline.js +27 -2
- package/dist/pipeline/agent-pipeline.js.map +1 -1
- package/dist/routes/__tests__/filesystem.test.js +5 -2
- package/dist/routes/__tests__/filesystem.test.js.map +1 -1
- package/dist/routes/__tests__/git.test.d.ts +2 -0
- package/dist/routes/__tests__/git.test.d.ts.map +1 -0
- package/dist/routes/__tests__/git.test.js +47 -0
- package/dist/routes/__tests__/git.test.js.map +1 -0
- package/dist/routes/__tests__/workspaces.test.d.ts +2 -0
- package/dist/routes/__tests__/workspaces.test.d.ts.map +1 -0
- package/dist/routes/__tests__/workspaces.test.js +85 -0
- package/dist/routes/__tests__/workspaces.test.js.map +1 -0
- package/dist/routes/filesystem.d.ts.map +1 -1
- package/dist/routes/filesystem.js +4 -3
- package/dist/routes/filesystem.js.map +1 -1
- package/dist/routes/git.d.ts.map +1 -1
- package/dist/routes/git.js +32 -0
- package/dist/routes/git.js.map +1 -1
- package/dist/services/__tests__/conversation.service.test.js +63 -0
- package/dist/services/__tests__/conversation.service.test.js.map +1 -1
- package/dist/services/__tests__/project.service.test.js +56 -0
- package/dist/services/__tests__/project.service.test.js.map +1 -1
- package/dist/services/__tests__/task.service.test.js +49 -0
- package/dist/services/__tests__/task.service.test.js.map +1 -1
- package/dist/services/__tests__/team-reconciler.service.test.js +15 -9
- package/dist/services/__tests__/team-reconciler.service.test.js.map +1 -1
- package/dist/services/__tests__/team-run.service.test.js +27 -3
- package/dist/services/__tests__/team-run.service.test.js.map +1 -1
- package/dist/services/__tests__/workspace.service.test.js +49 -1
- package/dist/services/__tests__/workspace.service.test.js.map +1 -1
- package/dist/services/conversation.service.d.ts.map +1 -1
- package/dist/services/conversation.service.js +17 -1
- package/dist/services/conversation.service.js.map +1 -1
- package/dist/services/project-guards.d.ts +4 -0
- package/dist/services/project-guards.d.ts.map +1 -1
- package/dist/services/project-guards.js +10 -0
- package/dist/services/project-guards.js.map +1 -1
- package/dist/services/project.service.d.ts +6 -1
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +31 -29
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/session-manager.d.ts +9 -8
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +129 -16
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/task.service.d.ts +154 -5
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +54 -9
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-run.service.js +11 -2
- package/dist/services/team-run.service.js.map +1 -1
- package/dist/services/terminal-manager.d.ts.map +1 -1
- package/dist/services/terminal-manager.js +39 -7
- package/dist/services/terminal-manager.js.map +1 -1
- package/dist/services/workspace.service.d.ts +7 -7
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +9 -1
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/utils/error-log.d.ts +20 -0
- package/dist/utils/error-log.d.ts.map +1 -0
- package/dist/utils/error-log.js +176 -0
- package/dist/utils/error-log.js.map +1 -0
- package/dist/utils/error-log.test.d.ts +2 -0
- package/dist/utils/error-log.test.d.ts.map +1 -0
- package/dist/utils/error-log.test.js +233 -0
- package/dist/utils/error-log.test.js.map +1 -0
- package/dist/utils/prisma-cli-env.d.ts +3 -0
- package/dist/utils/prisma-cli-env.d.ts.map +1 -0
- package/dist/utils/prisma-cli-env.js +15 -0
- package/dist/utils/prisma-cli-env.js.map +1 -0
- package/dist/utils/prisma-cli-env.test.d.ts +2 -0
- package/dist/utils/prisma-cli-env.test.d.ts.map +1 -0
- package/dist/utils/prisma-cli-env.test.js +34 -0
- package/dist/utils/prisma-cli-env.test.js.map +1 -0
- package/dist/utils/process-launch.d.ts +4 -0
- package/dist/utils/process-launch.d.ts.map +1 -1
- package/dist/utils/process-launch.js +99 -15
- package/dist/utils/process-launch.js.map +1 -1
- package/dist/utils/process-launch.test.js +120 -3
- package/dist/utils/process-launch.test.js.map +1 -1
- package/dist/web/assets/{AgentDemoPage-DC61uZJ_.js → AgentDemoPage-C3_t3lf0.js} +1 -1
- package/dist/web/assets/{AgentLogo-CGrwilQJ.js → AgentLogo-BiGSdOLM.js} +1 -1
- package/dist/web/assets/ConversationPage-D3BaVRNK.js +3 -0
- package/dist/web/assets/CreateTaskInput-C6ZA8Cnu.js +2 -0
- package/dist/web/assets/{DemoPage-BDUjXkK3.js → DemoPage-BGdrlCk3.js} +1 -1
- package/dist/web/assets/{GeneralSettingsPage-DuYC1Vhv.js → GeneralSettingsPage-DRP9x8ha.js} +1 -1
- package/dist/web/assets/{Icons-BqZeUyTx.js → Icons-U8HyAFg8.js} +1 -1
- package/dist/web/assets/{LoadingPreviewPage-DPA8HxNr.js → LoadingPreviewPage-BR3n6lWz.js} +1 -1
- package/dist/web/assets/{McpSettingsPage-BO_Fd_mA.js → McpSettingsPage-BQ4HNeR-.js} +1 -1
- package/dist/web/assets/{MemberAvatar-BesdHRgJ.js → MemberAvatar-BjHhs0Hs.js} +1 -1
- package/dist/web/assets/{NotificationSettingsPage-F5HPtn9-.js → NotificationSettingsPage-nAYf_v-C.js} +1 -1
- package/dist/web/assets/{ProfileSettingsPage-DweTPF_t.js → ProfileSettingsPage-CvVvZlDS.js} +1 -1
- package/dist/web/assets/{ProjectKanbanPage-G5OQeJvU.css → ProjectKanbanPage-DcpNTP1B.css} +1 -1
- package/dist/web/assets/ProjectKanbanPage-DpWuiq4x.js +89 -0
- package/dist/web/assets/ProjectSettingsPage-B1V5vUQk.js +2 -0
- package/dist/web/assets/{ProviderSettingsPage-Cio0LIzm.js → ProviderSettingsPage-CXq-sGzZ.js} +1 -1
- package/dist/web/assets/{SettingsMasterDetail-BnqVBe7H.js → SettingsMasterDetail-BOKbstXF.js} +1 -1
- package/dist/web/assets/TeamSettingsPage-DFx7ZKTf.js +1 -0
- package/dist/web/assets/{arc-CYddG-Kz.js → arc-D4qG1SmX.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-B3RXX4-J.js → architectureDiagram-3BPJPVTR-C1KQ-nPu.js} +1 -1
- package/dist/web/assets/{arrow-left-CufhOEz9.js → arrow-left-DKU68PPE.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-a7Dr_zcs.js → blockDiagram-GPEHLZMM-CHBz_0R-.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-BLwSao_g.js → c4Diagram-AAUBKEIU-spmGspVf.js} +1 -1
- package/dist/web/assets/channel-BzXNFc3j.js +1 -0
- package/dist/web/assets/check-ugjfD3Li.js +1 -0
- package/dist/web/assets/{chevron-down-BQyZkT4A.js → chevron-down-Bqq-PI_B.js} +1 -1
- package/dist/web/assets/{chevron-right-94xg9kiO.js → chevron-right-K0xCrJxO.js} +1 -1
- package/dist/web/assets/{chevron-up-BZM-aGAU.js → chevron-up-Rnt9gnA4.js} +1 -1
- package/dist/web/assets/{chunk-2J33WTMH-CV8jFvSt.js → chunk-2J33WTMH-BoBYuHA8.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-DXquqZ4n.js → chunk-4BX2VUAB-Bmb_y0KF.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-BowEEH_6.js → chunk-55IACEB6-B_KS5xlb.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-Cbn9G9U_.js → chunk-727SXJPM-DI9KppWM.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-C-0K23VQ.js → chunk-AQP2D5EJ-C3F0DJdJ.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-BJv0I_Lt.js → chunk-FMBD7UC4-C6-Jfc2f.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-DJBjsrJO.js → chunk-ND2GUHAM-Crt5iCMS.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-CBw_GG0t.js → chunk-QZHKN3VN-CSYfO5_E.js} +1 -1
- package/dist/web/assets/{circle-alert-lbce0dXY.js → circle-alert-BA6H1Efg.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-DWVhCasm.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-DWVhCasm.js +1 -0
- package/dist/web/assets/{code-block-OCS4YCEC-CRG-xCnX.js → code-block-OCS4YCEC-BNCfYHwe.js} +1 -1
- package/dist/web/assets/{confirm-dialog-Cnw_rxtM.js → confirm-dialog-xFGalfma.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-DCNqQrFt.js → cose-bilkent-S5V4N54A-CsfM-xa6.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-oecZRFap.js → dagre-BM42HDAG-a0_McFXq.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-BXx6WNMi.js → diagram-2AECGRRQ-Dc-ZrrCl.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-Bu66xpEW.js → diagram-5GNKFQAL-CVTae_wQ.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-ZGMyoO90.js → diagram-KO2AKTUF-DkfB2YqP.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-riQUwPgu.js → diagram-LMA3HP47-k45WlYTa.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-H_PHYJoy.js → diagram-OG6HWLK6-D6oP9231.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-ePGpWuWD.js → erDiagram-TEJ5UH35-DCsStITe.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-BZUDzSVZ.js → flowDiagram-I6XJVG4X-BpnMpo54.js} +1 -1
- package/dist/web/assets/{folder-Ca5RFac7.js → folder-aqzIYw0B.js} +1 -1
- package/dist/web/assets/folder-picker-CFznZBP-.js +1 -0
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-D2UOmWEL.js → ganttDiagram-6RSMTGT7-CzoF4UuV.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-DEzWWRW3.js → gitGraphDiagram-PVQCEYII-AlRFGn3n.js} +1 -1
- package/dist/web/assets/index-BMsh00ht.js +120 -0
- package/dist/web/assets/{index-JK3A62-g.js → index-BvCxcy2E.js} +4 -4
- package/dist/web/assets/index-CMlcurFO.css +1 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-BNClnI_5.js → infoDiagram-5YYISTIA-DYmUMa5y.js} +1 -1
- package/dist/web/assets/{input-7UYarzFy.js → input-BOQDrqKN.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-B1aSs8GW.js → ishikawaDiagram-YF4QCWOH-BbR4k44d.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-DlXxUTcw.js → journeyDiagram-JHISSGLW-B3BgsbGr.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-Ctkuw8kN.js → kanban-definition-UN3LZRKU-CAw6dg5S.js} +1 -1
- package/dist/web/assets/{layers-C89p38EX.js → layers-CHCOcaOD.js} +1 -1
- package/dist/web/assets/{linear--QsFiowO.js → linear-DuhwDM_T.js} +1 -1
- package/dist/web/assets/{loader-circle-DolxjVmY.js → loader-circle-ZTtR7VFf.js} +1 -1
- package/dist/web/assets/{mermaid-NOHMQCX5-CW_FGpKP.js → mermaid-NOHMQCX5-BfcG134x.js} +3 -3
- package/dist/web/assets/{message-square-KV4Azzxs.js → message-square-8nr39Elw.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-Dm6rZMiM.js → mindmap-definition-RKZ34NQL-Dn4_OJVF.js} +1 -1
- package/dist/web/assets/{modal-PZSR91HW.js → modal-Ct5Hq4HV.js} +1 -1
- package/dist/web/assets/{pencil-9lMJOuw2.js → pencil-CHhoqtja.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-DbQPjRBP.js → pieDiagram-4H26LBE5-BazLj2iZ.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-DeRrMc4Y.js → quadrantDiagram-W4KKPZXB-By8b3yLK.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-aajAoXSH.js → requirementDiagram-4Y6WPE33-Y8tQe-HW.js} +1 -1
- package/dist/web/assets/{rotate-ccw-D7tnDKF_.js → rotate-ccw-DacB7Wa2.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-DWsta0ns.js → sankeyDiagram-5OEKKPKP-CsWPn5i_.js} +1 -1
- package/dist/web/assets/select-BAGWw5mB.js +1 -0
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-BGBP9NTB.js → sequenceDiagram-3UESZ5HK-CRYTLL5B.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-Dl0Q7uMb.js → stateDiagram-AJRCARHV-CRAWuvD-.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-DLPzRpsU.js +1 -0
- package/dist/web/assets/{switch-BhqMnTiu.js → switch-DEDPfm5p.js} +1 -1
- package/dist/web/assets/{terminal-BR0PXV2W.js → terminal-D9ZyN65O.js} +1 -1
- package/dist/web/assets/{textarea-eWIZ3eZW.js → textarea-Bwf5qeVw.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-DuDIvs1s.js → timeline-definition-PNZ67QCA-CNyG_LiR.js} +1 -1
- package/dist/web/assets/{trash-2-C7F85sIB.js → trash-2-CAJaQyy-.js} +1 -1
- package/dist/web/assets/{upload-CQTsuurY.js → upload-CvRhSiH5.js} +1 -1
- package/dist/web/assets/{use-profiles-Btexu_oH.js → use-profiles-CXwrOP0r.js} +1 -1
- package/dist/web/assets/{use-providers-BEPU5ALg.js → use-providers-cM1M1P2G.js} +1 -1
- package/dist/web/assets/{useNormalizedLogs-CvCCSYxy.js → useNormalizedLogs-Bpa12fkI.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-BDyKeyr8.js → vennDiagram-CIIHVFJN-Ccs0W2eH.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-DAOA5Zsv.js → wardley-L42UT6IY-DZ98ClK4.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CCmLvkBT.js → wardleyDiagram-YWT4CUSO-CFZaMuWx.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-EsyeKzfj.js → xychartDiagram-2RQKCTM6-DupmVBai.js} +1 -1
- package/dist/web/index.html +2 -2
- package/node_modules/@agent-tower/shared/dist/types.d.ts +4 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/assets/ConversationPage-DvD_lYUj.js +0 -3
- package/dist/web/assets/CreateTaskInput-CstzayW9.js +0 -2
- package/dist/web/assets/ProjectKanbanPage-taUI2xm6.js +0 -89
- package/dist/web/assets/ProjectSettingsPage-BfTQwRb7.js +0 -2
- package/dist/web/assets/TeamSettingsPage-CHoLj7rL.js +0 -1
- package/dist/web/assets/channel-BTbcDemz.js +0 -1
- package/dist/web/assets/check-C5Ba8Rby.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-D4Noh8IG.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-D4Noh8IG.js +0 -1
- package/dist/web/assets/folder-picker-CZIjxGNQ.js +0 -1
- package/dist/web/assets/index-17XUvLGe.css +0 -1
- package/dist/web/assets/index-M-QRACZK.js +0 -120
- package/dist/web/assets/select-CTiftuHJ.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BEhmiwth.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as y,a as _,b as A,c as E,r as i,t as m,j as s,S as T,d as I,e as p,f as M,B as g}from"./index-
|
|
1
|
+
import{u as y,a as _,b as A,c as E,r as i,t as m,j as s,S as T,d as I,e as p,f as M,B as g}from"./index-BMsh00ht.js";import{S as v}from"./select-BAGWw5mB.js";import{T as O}from"./textarea-Bwf5qeVw.js";import{u as k}from"./use-providers-cM1M1P2G.js";import"./chevron-down-Bqq-PI_B.js";import"./check-ugjfD3Li.js";const L=[{value:"zh-CN",label:"简体中文"},{value:"en",label:"English"}],l="__follow_task__";function F(){const{locale:x,setLocale:S,t:e}=y(),{data:r}=_(),{data:f}=k(),{data:o}=A(),a=E(),[h,u]=i.useState(l),[c,d]=i.useState(""),[j,n]=i.useState(!1);i.useEffect(()=>{!r||!o||(u(r.commitMessageProviderId||l),d(r.commitMessagePrompt||o.prompt),n(!1))},[r,o]);const P=[{value:l,label:e("跟随任务")},...(f??[]).filter(t=>t.availability.type!=="NOT_FOUND").map(t=>({value:t.provider.id,label:t.provider.name}))],b=i.useCallback(t=>{u(t);const N=t===l?null:t;a.mutate({commitMessageProviderId:N},{onError:()=>m.error(e("保存失败"))})},[a,e]),C=i.useCallback(()=>{const t=c.trim()||null;a.mutate({commitMessagePrompt:t},{onSuccess:()=>{n(!1),m.success(e("已保存"))},onError:()=>m.error(e("保存失败"))})},[c,a,e]);return s.jsxs(T,{children:[s.jsx(I,{title:e("通用设置"),className:"mb-1"}),s.jsx("div",{className:"divide-y divide-border/60",children:s.jsx(p,{label:e("显示语言"),description:e("界面语言会保存到本地数据库,重启后继续生效。"),align:"center",children:s.jsx(v,{value:x,onChange:t=>S(t),options:L})})}),s.jsx(M,{className:"mt-8 mb-1",children:e("Git Commit Message")}),s.jsxs("div",{className:"divide-y divide-border/60",children:[s.jsx(p,{label:e("Agent 渠道"),description:e('"跟随任务"表示使用当前任务所用的 Agent 渠道。选择具体渠道可使用更经济的模型。'),children:s.jsx(v,{value:h,onChange:b,options:P})}),s.jsx(p,{label:e("提示词模板"),description:e("自定义生成 commit message 的提示词。留空则使用内置默认模板。"),children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(O,{value:c,onChange:t=>{d(t.target.value),n(!0)},rows:5,className:"font-mono resize-y"}),j&&s.jsxs("div",{className:"flex items-center justify-end gap-2",children:[s.jsx(g,{size:"sm",variant:"ghost",onClick:()=>{d(r?.commitMessagePrompt||o?.prompt||""),n(!1)},children:e("取消")}),s.jsx(g,{size:"sm",onClick:C,disabled:a.isPending,children:a.isPending?e("保存中..."):e("保存")})]})]})})]})]})}export{F as GeneralSettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as t,j as o}from"./index-
|
|
1
|
+
import{h as t,j as o}from"./index-BMsh00ht.js";const r=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8",key:"7n84p3"}]],c=t("at-sign",r);const s=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],i=t("globe",s),l=({className:e})=>o.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:e,xmlns:"http://www.w3.org/2000/svg",children:[o.jsx("path",{d:"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z",stroke:"currentColor",strokeWidth:"1.5"}),o.jsx("path",{d:"M8 1a7 7 0 0 0 0 14V1z",fill:"currentColor"})]}),h=({className:e})=>o.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:e,xmlns:"http://www.w3.org/2000/svg",children:[o.jsx("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.4"}),o.jsx("circle",{cx:"8",cy:"8",r:"3",fill:"currentColor"})]}),x=({className:e})=>o.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:e,xmlns:"http://www.w3.org/2000/svg",children:o.jsx("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor",strokeWidth:"1.5"})}),d=({className:e})=>o.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:e,xmlns:"http://www.w3.org/2000/svg",children:o.jsx("path",{d:"M13.5 4.5L6.5 11.5L2.5 7.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),w=({className:e})=>o.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:e,xmlns:"http://www.w3.org/2000/svg",children:[o.jsx("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor",strokeWidth:"1.5"}),o.jsx("path",{d:"M5.5 5.5L10.5 10.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]});export{c as A,i as G,h as I,d as a,x as b,w as c,l as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as f,r as o,L as u,j as e,R as h,X as b}from"./index-
|
|
1
|
+
import{u as f,r as o,L as u,j as e,R as h,X as b}from"./index-BMsh00ht.js";function p(){const{t:s}=f(),[a,c]=o.useState(null),x=o.useRef(null),d=o.useRef(null),i=o.useRef(null),t=a?u.find(r=>r.id===a):null,l=o.useCallback(()=>{c(null)},[]);return o.useEffect(()=>{if(!t){i.current?.focus(),i.current=null;return}d.current?.focus();const r=n=>{if(n.key==="Escape"){n.preventDefault(),l();return}n.key==="Tab"&&(n.preventDefault(),d.current?.focus())};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[t,l]),e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("style",{children:h}),e.jsx("header",{className:"border-b border-border px-6 py-4",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h1",{className:"text-lg font-semibold text-foreground",children:"Loading Animation Preview"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("10 个首屏加载动画候选 · 颜色遵循 Agent Tower 设计规范 · 点击卡片查看全屏效果")})]})}),e.jsxs("main",{className:"max-w-6xl mx-auto px-6 py-8",inert:t?!0:void 0,"aria-hidden":t?!0:void 0,children:[e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:u.map((r,n)=>{const m=r.component;return e.jsxs("button",{onClick:g=>{i.current=g.currentTarget,c(r.id)},className:"group relative flex flex-col bg-card border border-border rounded-lg p-5 text-left transition-shadow hover:shadow-md focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none",children:[e.jsxs("span",{className:"absolute top-3 right-3 text-[11px] font-semibold text-muted-foreground/60 tabular-nums",children:["#",n+1]}),e.jsx("div",{className:"flex items-center justify-center h-28 mb-4",children:e.jsx(m,{})}),e.jsx("h3",{className:"text-sm font-semibold text-foreground mb-1",children:r.name}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:s(r.description)})]},r.id)})}),e.jsxs("div",{className:"mt-10 p-5 border border-border rounded-lg bg-muted/30",children:[e.jsx("h2",{className:"text-sm font-semibold text-foreground mb-2",children:s("设计推荐")}),e.jsxs("ul",{className:"text-xs text-muted-foreground space-y-1.5 leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-foreground",children:s("首选:Charcoal Breathe (#10)")})," — ",s("品牌感最强,Charcoal 色块+Tower 图标呼吸,用户对产品的第一印象即品牌本身。")]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-foreground",children:s("备选A:Tower Pulse (#1)")})," — ",s("品牌图标直接出现,脉冲节奏稳定,不浮夸,适合工作台场景。")]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-foreground",children:s("备选B:Terminal Cursor (#4)")})," — ",s("终端光标闪烁,贴合 Agent/终端协作的核心场景,开发者亲切感强。")]})]})]})]}),t&&e.jsxs("div",{ref:x,className:"fixed inset-0 z-50 flex items-center justify-center bg-background/95 backdrop-blur-sm",onClick:r=>{r.target===r.currentTarget&&l()},role:"dialog","aria-modal":"true","aria-label":s("全屏预览:{name}",{name:t.name}),children:[e.jsx("button",{ref:d,onClick:l,className:"absolute top-4 right-4 p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none","aria-label":s("关闭预览"),children:e.jsx(b,{size:20})}),e.jsxs("div",{className:"flex flex-col items-center gap-6",children:[e.jsx("div",{className:"scale-[2] origin-center",children:e.jsx(t.component,{})}),e.jsxs("div",{className:"text-center mt-4",children:[e.jsx("h3",{className:"text-base font-semibold text-foreground",children:t.name}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1 max-w-sm",children:s(t.description)})]}),e.jsx("span",{className:"text-xs text-muted-foreground/60 mt-2",children:s("按 Esc 或点击关闭按钮退出")})]})]})]})}export{p as LoadingPreviewPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as x,i as m,q as o,m as u,u as p,r as g,t as n,j as e,S as a,B as i}from"./index-
|
|
1
|
+
import{h as x,i as m,q as o,m as u,u as p,r as g,t as n,j as e,S as a,B as i}from"./index-BMsh00ht.js";import{L as f}from"./loader-circle-ZTtR7VFf.js";import{C as h,T as j}from"./terminal-D9ZyN65O.js";import{C as b}from"./check-ugjfD3Li.js";const y=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],N=x("server",y);function C(){return m({queryKey:o.system.mcpConfig,queryFn:()=>u.get("/system/mcp-config")})}function v({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 P(){const{t:s}=p(),{data:t,isLoading:r,isError:l,refetch:d}=C(),c=g.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(f,{className:"h-5 w-5 animate-spin text-neutral-500"})})}):l||!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(i,{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(i,{size:"sm",onClick:c,children:[e.jsx(h,{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(v,{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(j,{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(N,{size:12}),"Entry"]}),e.jsx("div",{className:"break-all font-mono text-[12px] leading-relaxed text-neutral-800",children:t.args[0]??""})]})]})]}),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(b,{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{P as McpSettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,j as n,g as o}from"./index-
|
|
1
|
+
import{r as i,j as n,g as o}from"./index-BMsh00ht.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 +1 @@
|
|
|
1
|
-
import{h as P,i as q,k as E,l as k,q as v,m as h,u as R,r as o,j as e,S as g,T as B,d as L,e as j,U as W,B as z,f as M,Q as A}from"./index-
|
|
1
|
+
import{h as P,i as q,k as E,l as k,q as v,m as h,u as R,r as o,j as e,S as g,T as B,d as L,e as j,U as W,B as z,f as M,Q as A}from"./index-BMsh00ht.js";import{S as Q}from"./select-BAGWw5mB.js";import{I as d}from"./input-BOQDrqKN.js";import{S as K,C as O}from"./switch-DEDPfm5p.js";import{M as _}from"./message-square-8nr39Elw.js";import{L as D}from"./loader-circle-ZTtR7VFf.js";import{C as H}from"./circle-alert-BA6H1Efg.js";import"./chevron-down-Bqq-PI_B.js";import"./check-ugjfD3Li.js";const G=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],J=P("link",G);function V(){return q({queryKey:v.notifications.settings,queryFn:()=>h.get("/notifications/settings")})}function X(){const t=E();return k({mutationFn:i=>h.put("/notifications/settings",i),onSuccess:()=>{t.invalidateQueries({queryKey:v.notifications.settings})}})}function Y(){return k({mutationFn:t=>h.post("/notifications/test",t)})}function le(){const{t}=R(),{data:i,isLoading:T}=V(),l=X(),n=Y(),y=[{value:"none",label:t("关闭")},{value:"feishu",label:t("飞书 Webhook")}],[a,p]=o.useState({webhookUrl:"",baseUrl:"",titleTemplate:"",bodyTemplate:""}),[m,x]=o.useState(!1),[f,r]=o.useState("idle"),u=o.useRef(void 0);if(o.useEffect(()=>{i&&!m&&p({webhookUrl:i.feishuWebhookUrl??"",baseUrl:i.thirdPartyBaseUrl??"",titleTemplate:i.taskInReviewTitleTemplate??"",bodyTemplate:i.taskInReviewBodyTemplate??""})},[i,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 N=i?.osNotificationEnabled??!0,b=i?.thirdPartyChannel??"none",c=(s,I)=>{p(F=>({...F,[s]:I})),x(!0)},S=s=>{l.mutate({osNotificationEnabled:s})},C=s=>{l.mutate({thirdPartyChannel:s})},U=()=>{l.mutate({feishuWebhookUrl:a.webhookUrl.trim()||null,thirdPartyBaseUrl:a.baseUrl.trim()||null,taskInReviewTitleTemplate:a.titleTemplate.trim()||"Agent Tower",taskInReviewBodyTemplate:a.bodyTemplate.trim()||t('✅ "{taskTitle}" 已完成,等待审查')},{onSuccess:()=>x(!1)})},w=()=>{a.webhookUrl.trim()&&n.mutate({channel:"feishu",webhookUrl:a.webhookUrl.trim(),baseUrl:a.baseUrl.trim()||void 0})};return e.jsxs(g,{children:[e.jsx(L,{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(K,{checked:N,onCheckedChange:S,"aria-label":t("桌面通知")})}),e.jsxs("div",{className:"py-5",children:[e.jsx(j,{icon:_,label:t("第三方通知"),description:t("推送到外部渠道(飞书群机器人等)"),align:"center",className:"py-0",children:e.jsx(Q,{value:b,onChange:s=>C(s),options:y})}),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:a.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:!a.webhookUrl.trim()||n.isPending,className:"h-auto shrink-0",children:[n.isPending&&e.jsx(D,{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(O,{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(J,{size:11,"aria-hidden":"true"}),t("跳转地址")]})}),e.jsx(d,{id:"feishu-base-url",value:a.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(M,{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:a.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:a.bodyTemplate,onChange:s=>c("bodyTemplate",s.target.value),placeholder:t('✅ "{taskTitle}" 已完成,等待审查')})]})]})]})]}),m&&e.jsx(A,{saving:l.isPending,onSave:U})]})}export{le as NotificationSettingsPage};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{u as T,r as g,j as e,S,d as J,n as M,o as w,B as E,p,g as P}from"./index-
|
|
1
|
+
import{u as T,r as g,j as e,S,d as J,n as M,o as w,B as E,p,g as P}from"./index-BMsh00ht.js";import{u as U,a as _,b as z,c as B}from"./use-profiles-CXwrOP0r.js";import{M as F}from"./modal-Ct5Hq4HV.js";import{C as G}from"./confirm-dialog-xFGalfma.js";import{I as $}from"./input-BOQDrqKN.js";import{T as R}from"./textarea-Bwf5qeVw.js";import{L as H}from"./layers-CHCOcaOD.js";import{C as q}from"./chevron-down-Bqq-PI_B.js";import{P as K,T as Q}from"./trash-2-CAJaQyy-.js";import{P as W}from"./pencil-CHhoqtja.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 ce(){const{t}=T(),{data:a,isLoading:m}=U(),{data:c}=_(),h=z(),j=B(),[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
2
|
|
|
3
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(F,{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($,{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(G,{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{ce as ProfileSettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}
|
|
1
|
+
.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.terminal-xterm-host{--scrollbar-current-size: var(--scrollbar-thin-size)}.terminal-xterm-host .xterm{width:100%;height:100%;min-width:0;min-height:0}.terminal-xterm-host .xterm-viewport{background-color:transparent;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);scrollbar-width:thin}.terminal-xterm-host .xterm-viewport::-webkit-scrollbar{width:var(--scrollbar-current-size);height:var(--scrollbar-current-size)}.terminal-xterm-host .xterm-viewport::-webkit-scrollbar-track,.terminal-xterm-host .xterm-viewport::-webkit-scrollbar-corner{background:var(--scrollbar-track)}.terminal-xterm-host .xterm-viewport::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--scrollbar-radius)}.terminal-xterm-host .xterm-viewport::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}
|