agent-tower 0.7.1 → 0.7.2-beta.4
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/executors/base.executor.d.ts.map +1 -1
- package/dist/executors/base.executor.js +6 -3
- package/dist/executors/base.executor.js.map +1 -1
- package/dist/routes/__tests__/workspaces.test.js +244 -0
- package/dist/routes/__tests__/workspaces.test.js.map +1 -1
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/routes/workspaces.js +11 -0
- package/dist/routes/workspaces.js.map +1 -1
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.js +37 -0
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.js.map +1 -1
- package/dist/runtime/__tests__/runtime-coordinator.test.js +13 -0
- package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -1
- package/dist/runtime/cli-driver.js +17 -3
- package/dist/runtime/cli-driver.js.map +1 -1
- package/dist/runtime/contracts.d.ts +9 -2
- package/dist/runtime/contracts.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.d.ts +2 -0
- package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.js +10 -0
- package/dist/runtime/runtime-coordinator.js.map +1 -1
- package/dist/services/__tests__/session-manager.lifecycle.test.js +67 -0
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.team-run.test.js +41 -46
- package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
- package/dist/services/__tests__/team-reconciler.service.test.js +30 -0
- package/dist/services/__tests__/team-reconciler.service.test.js.map +1 -1
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +30 -4
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/session-manager.d.ts +1 -0
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +38 -3
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/session-runtime-cleanup-gate.d.ts +1 -0
- package/dist/services/session-runtime-cleanup-gate.d.ts.map +1 -1
- package/dist/services/session-runtime-cleanup-gate.js +5 -3
- package/dist/services/session-runtime-cleanup-gate.js.map +1 -1
- package/dist/services/team-reconciler.service.d.ts +1 -0
- package/dist/services/team-reconciler.service.d.ts.map +1 -1
- package/dist/services/team-reconciler.service.js +1 -0
- package/dist/services/team-reconciler.service.js.map +1 -1
- package/dist/services/workspace.service.d.ts +7 -1
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +111 -9
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/utils/__tests__/spawned-process-identity.test.d.ts +2 -0
- package/dist/utils/__tests__/spawned-process-identity.test.d.ts.map +1 -0
- package/dist/utils/__tests__/spawned-process-identity.test.js +31 -0
- package/dist/utils/__tests__/spawned-process-identity.test.js.map +1 -0
- package/dist/utils/spawned-process-identity.d.ts +1 -1
- package/dist/utils/spawned-process-identity.d.ts.map +1 -1
- package/dist/utils/spawned-process-identity.js +11 -3
- package/dist/utils/spawned-process-identity.js.map +1 -1
- package/dist/web/assets/AgentDemoPage-Svq9Baa7.js +1 -0
- package/dist/web/assets/{AgentEnvironmentSettingsPage-b0XzUzna.js → AgentEnvironmentSettingsPage-DQjnDr-h.js} +1 -1
- package/dist/web/assets/AgentLogo-I2etsqym.js +1 -0
- package/dist/web/assets/BranchSelect-Eb5UGWWX.js +1 -0
- package/dist/web/assets/BrandLogo-BjC1hcgv.js +1 -0
- package/dist/web/assets/{ConversationPage-DQRA8WuD.js → ConversationPage-jEYUuSPT.js} +2 -2
- package/dist/web/assets/CreateTaskInput-B_cRDkVq.js +1 -0
- package/dist/web/assets/{DemoPage-DaDC_MIJ.js → DemoPage-BkkueMuL.js} +1 -1
- package/dist/web/assets/DesignSystemPage-oM16R2Ta.js +16 -0
- package/dist/web/assets/{ExecutionPermissionSelector-DglILGVC.js → ExecutionPermissionSelector-BX5Xx8ta.js} +1 -1
- package/dist/web/assets/{GeneralSettingsPage-BKRf-usO.js → GeneralSettingsPage-B0jFlgDl.js} +1 -1
- package/dist/web/assets/{LoadingPreviewPage-BHAQCQDA.js → LoadingPreviewPage-BxjpxLLP.js} +1 -1
- package/dist/web/assets/McpSettingsPage-BErvd619.js +1 -0
- package/dist/web/assets/{MemberAvatar-DUXHTIXf.js → MemberAvatar-TVtoxQe8.js} +1 -1
- package/dist/web/assets/NotificationSettingsPage-BETMBdj1.js +1 -0
- package/dist/web/assets/{ProfileSettingsPage-DwziCseV.js → ProfileSettingsPage-C03ZAft-.js} +1 -1
- package/dist/web/assets/ProjectKanbanPage-DsPxwoVf.js +86 -0
- package/dist/web/assets/ProjectSettingsPage-BwNM6VWs.js +2 -0
- package/dist/web/assets/{ProviderSettingsPage-CC3zkdf6.js → ProviderSettingsPage-CeNQPd74.js} +3 -3
- package/dist/web/assets/{SettingsMasterDetail-D5lNH2f6.js → SettingsMasterDetail-B_SI2h_k.js} +1 -1
- package/dist/web/assets/TeamSettingsPage-BfgtMl_n.js +1 -0
- package/dist/web/assets/agent-meta-DOylIs2N.js +1 -0
- package/dist/web/assets/arc-BlZww3MO.js +1 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-C_p9_AH2.js → architectureDiagram-3BPJPVTR-DWO_DRgk.js} +1 -1
- package/dist/web/assets/at-sign-BFf8Sz8T.js +1 -0
- package/dist/web/assets/{blockDiagram-GPEHLZMM-CKsR1Tax.js → blockDiagram-GPEHLZMM-CJPYhE52.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-BBUKt2FW.js → c4Diagram-AAUBKEIU-Cx5IvcjB.js} +1 -1
- package/dist/web/assets/channel-D9sA6Wxp.js +1 -0
- package/dist/web/assets/check-Cm7Vstpm.js +1 -0
- package/dist/web/assets/chevron-down-C6Ta4vyM.js +1 -0
- package/dist/web/assets/chevron-up-BwJT7iif.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-BcGNhDoU.js → chunk-2J33WTMH-D9cBNYgd.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-9dL7TVjW.js → chunk-4BX2VUAB-BY8TNt6E.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-CzJzh0tH.js → chunk-55IACEB6-pT-HP-28.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-Bp5EOgoG.js → chunk-727SXJPM-hy95xDLb.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-BaLnh9ac.js → chunk-AQP2D5EJ-DlUN-icr.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-BcbzC8r4.js → chunk-FMBD7UC4-Dg2iMKZR.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-DkT5Stbd.js → chunk-ND2GUHAM-DMzFIsJ-.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-DszScpAV.js → chunk-QZHKN3VN-C6CgmKuM.js} +1 -1
- package/dist/web/assets/{circle-alert-ChWS5BPS.js → circle-alert-Dm2Pl-rU.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-2e2YVo9r.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-2e2YVo9r.js +1 -0
- package/dist/web/assets/code-block-OCS4YCEC-DizntuP_.js +2 -0
- package/dist/web/assets/{confirm-dialog-0vHzUzvI.js → confirm-dialog-DRpyE_qU.js} +1 -1
- package/dist/web/assets/copy-r0aUdsl8.js +1 -0
- package/dist/web/assets/{cose-bilkent-S5V4N54A-DueZsNr5.js → cose-bilkent-S5V4N54A-D-fvmvw-.js} +1 -1
- package/dist/web/assets/cssMode-DVorIr82.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-BkQGrA8s.js → dagre-BM42HDAG-H0bYI1f3.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-D4qtEjjj.js → diagram-2AECGRRQ-DI568fLp.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-ZuFk-7GO.js → diagram-5GNKFQAL-BLcaBzw2.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-kwBr5lw0.js → diagram-KO2AKTUF-aL1cvl23.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-m88-mNyr.js → diagram-LMA3HP47-DbOutAfH.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-B9gV1dxA.js → diagram-OG6HWLK6-D_cWftAX.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-De_DsoOX.js → erDiagram-TEJ5UH35-DRe5V8Dx.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-9VwLS0b3.js → flowDiagram-I6XJVG4X-B5-vg_Nh.js} +1 -1
- package/dist/web/assets/{freemarker2-CLp1Yffb.js → freemarker2-CXlYb2yX.js} +3 -3
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DoOyYr5i.js → ganttDiagram-6RSMTGT7-B3iBFICN.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CMGuTxMz.js → gitGraphDiagram-PVQCEYII-CZ9zsKVw.js} +1 -1
- package/dist/web/assets/globe-JXfw4MCF.js +1 -0
- package/dist/web/assets/handlebars-BL0prPVZ.js +1 -0
- package/dist/web/assets/html-DJWeRkWe.js +1 -0
- package/dist/web/assets/htmlMode-D_fekqg9.js +1 -0
- package/dist/web/assets/{index-DI7lHrAR.js → index-CWEbo6pZ.js} +5 -5
- package/dist/web/assets/index-CWbMMO6g.js +122 -0
- package/dist/web/assets/index-uXglTJ2_.css +1 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-gUCDmQX7.js → infoDiagram-5YYISTIA-DQU_sN8x.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-CmfFhhIz.js → ishikawaDiagram-YF4QCWOH-BVGrNzJa.js} +1 -1
- package/dist/web/assets/javascript-CDfuzdfe.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-BvV5GoR_.js → journeyDiagram-JHISSGLW-DU4Md1Tq.js} +1 -1
- package/dist/web/assets/{jsonMode-BbjYNQ7Q.js → jsonMode-BMSvHUHa.js} +4 -4
- package/dist/web/assets/{kanban-definition-UN3LZRKU-BpTm0MC-.js → kanban-definition-UN3LZRKU-DDPgCucq.js} +1 -1
- package/dist/web/assets/key-round-BHVp7u3Z.js +1 -0
- package/dist/web/assets/{layers-DslPQJ3T.js → layers-2tjjhM75.js} +1 -1
- package/dist/web/assets/{linear-BJ_g8wqu.js → linear-D8yLBTVY.js} +1 -1
- package/dist/web/assets/link-CnunXc7X.js +1 -0
- package/dist/web/assets/liquid-DHrNpv6c.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-PSX0tqnR.js → lspLanguageFeatures-BiYvrSP0.js} +1 -1
- package/dist/web/assets/mdx-CIEpgUOV.js +1 -0
- package/dist/web/assets/mermaid-NOHMQCX5-9-DTTfp6.js +124 -0
- package/dist/web/assets/{message-square-C-22K3oa.js → message-square-QM0c6Dcv.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-DS5GLydx.js → mindmap-definition-RKZ34NQL-CCAuuWFZ.js} +1 -1
- package/dist/web/assets/{modal-CFVLBZ5p.js → modal-BRoNvfhw.js} +1 -1
- package/dist/web/assets/{monaco-CkaUvvB4.js → monaco-CrBn9oMJ.js} +3 -3
- package/dist/web/assets/paperclip-CC7nHUQ7.js +1 -0
- package/dist/web/assets/pencil-DIY0Hu5t.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-C1PJJGsh.js → pieDiagram-4H26LBE5-CXy_N5QX.js} +2 -2
- package/dist/web/assets/play-CIZVXiwM.js +1 -0
- package/dist/web/assets/python-BIs0pClJ.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-CzDfs-TQ.js → quadrantDiagram-W4KKPZXB-Dt44QsS8.js} +1 -1
- package/dist/web/assets/razor-JCx8NEwU.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-qHbU7oZa.js → requirementDiagram-4Y6WPE33-BL8D7Np0.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-BfRgrEeN.js → sankeyDiagram-5OEKKPKP-I5nefO3A.js} +1 -1
- package/dist/web/assets/{select-CL78HCY0.js → select-BmjoUfrV.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-CGTNzKk3.js → sequenceDiagram-3UESZ5HK-lbPrhX8g.js} +1 -1
- package/dist/web/assets/server-BNBdQGor.js +1 -0
- package/dist/web/assets/stateDiagram-AJRCARHV-Bw3qtv2M.js +1 -0
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Xbc4HxDQ.js +1 -0
- package/dist/web/assets/{switch-DmQ0Brgd.js → switch-CEUHI4gI.js} +1 -1
- package/dist/web/assets/task-kalEmHDc.js +42 -0
- package/dist/web/assets/task-priority-wLXAgVZZ.js +1 -0
- package/dist/web/assets/{textarea-DOte4pMQ.js → textarea-CD82lB0Z.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-BBhCKsly.js → timeline-definition-PNZ67QCA-Cfg_kgoa.js} +1 -1
- package/dist/web/assets/{trash-2-BSAHXKfW.js → trash-2-BF_3L-qk.js} +1 -1
- package/dist/web/assets/{tsMode-B6rHoWny.js → tsMode-DAHSkTAr.js} +2 -2
- package/dist/web/assets/typescript-CptiLWGr.js +1 -0
- package/dist/web/assets/{upload-e87qV_RH.js → upload-B2AMXrU-.js} +1 -1
- package/dist/web/assets/{use-profiles-Cv2zBJOC.js → use-profiles-CQ-jIuiI.js} +1 -1
- package/dist/web/assets/use-projects-BYUZwQ-q.js +1 -0
- package/dist/web/assets/{use-providers-CnpIgITQ.js → use-providers-DdV9gbj1.js} +1 -1
- package/dist/web/assets/useNormalizedLogs-DdFsf-Z1.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-DrDrt_Jg.js → vennDiagram-CIIHVFJN-CdEP03CK.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-CMYQm14y.js → wardley-L42UT6IY-q_Enplrs.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-COLA9A80.js → wardleyDiagram-YWT4CUSO-DlL6fsid.js} +1 -1
- package/dist/web/assets/xml-DbPqkgZW.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-BDegkKoT.js → xychartDiagram-2RQKCTM6-B2OGqVKA.js} +1 -1
- package/dist/web/assets/yaml-Deyq6Z5-.js +1 -0
- package/dist/web/index.html +2 -2
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +2 -2
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts +19 -2
- 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/AgentDemoPage-Gr8q6VxC.js +0 -1
- package/dist/web/assets/AgentLogo-q8Chady2.js +0 -1
- package/dist/web/assets/CreateTaskInput-Dr6Lvllw.js +0 -1
- package/dist/web/assets/Icons-7lThaqQv.js +0 -1
- package/dist/web/assets/McpSettingsPage-CVOEPwCv.js +0 -1
- package/dist/web/assets/NotificationSettingsPage-DBe1YCNN.js +0 -1
- package/dist/web/assets/ProjectKanbanPage-Dcz8KXWU.js +0 -86
- package/dist/web/assets/ProjectSettingsPage-hzSrj79M.js +0 -2
- package/dist/web/assets/TeamSettingsPage-Cdbvh2ne.js +0 -1
- package/dist/web/assets/arc-d2D24uRQ.js +0 -1
- package/dist/web/assets/channel-D0hF47LU.js +0 -1
- package/dist/web/assets/check-BqhuHtHP.js +0 -1
- package/dist/web/assets/chevron-down-Bw_76CB_.js +0 -1
- package/dist/web/assets/chevron-right-DbcFf_Dw.js +0 -1
- package/dist/web/assets/chevron-up-x1n3MhC-.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-ulXJsBKw.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-ulXJsBKw.js +0 -1
- package/dist/web/assets/code-block-OCS4YCEC-G8tEtSdL.js +0 -2
- package/dist/web/assets/cssMode-Dqx3XDOC.js +0 -1
- package/dist/web/assets/folder-picker-B0khMt7A.js +0 -1
- package/dist/web/assets/handlebars-CmLfR6Uy.js +0 -1
- package/dist/web/assets/html-D34UDOLc.js +0 -1
- package/dist/web/assets/htmlMode-qjrvkZFJ.js +0 -1
- package/dist/web/assets/index-DrzmyANC.js +0 -122
- package/dist/web/assets/index-MMCbS8_L.css +0 -1
- package/dist/web/assets/javascript-D5tp0LcO.js +0 -1
- package/dist/web/assets/liquid-DBu3_6XS.js +0 -1
- package/dist/web/assets/mdx-Bb4nrA8s.js +0 -1
- package/dist/web/assets/mermaid-NOHMQCX5-B44shuzc.js +0 -124
- package/dist/web/assets/pencil-DB3VPszm.js +0 -1
- package/dist/web/assets/python-BfodDYt4.js +0 -1
- package/dist/web/assets/razor-DdED1MBH.js +0 -1
- package/dist/web/assets/server-Cd7APx6v.js +0 -1
- package/dist/web/assets/stateDiagram-AJRCARHV-BY1LJ4b7.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BV_JKRZC.js +0 -1
- package/dist/web/assets/typescript-C2A3q8UY.js +0 -1
- package/dist/web/assets/use-projects-C8WDJXdj.js +0 -1
- package/dist/web/assets/useNormalizedLogs-AbIXa8s-.js +0 -1
- package/dist/web/assets/xml-D4xDxfjR.js +0 -1
- package/dist/web/assets/yaml-yJExA7tq.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{d as B,A as M,i as k}from"./agent-meta-DOylIs2N.js";import{u as z,r as S,j as p,l as T}from"./index-CWbMMO6g.js";import{C as Z}from"./chevron-down-C6Ta4vyM.js";import{C as Y}from"./check-Cm7Vstpm.js";function G(e,n){let i=e.slice(0,n).split(/\r\n|\n|\r/g);return[i.length,i.pop().length+1]}function J(e,n,i){let t=e.split(/\r\n|\n|\r/g),r="",o=(Math.log10(n+1)|0)+1;for(let s=n-1;s<=n+1;s++){let l=t[s-1];l&&(r+=s.toString().padEnd(o," "),r+=": ",r+=l,r+=`
|
|
2
2
|
`,s===n&&(r+=" ".repeat(o+i+2),r+=`^
|
|
3
3
|
`))}return r}class m extends Error{line;column;codeblock;constructor(n,i){const[t,r]=G(i.toml,i.ptr),o=J(i.toml,t,r);super(`Invalid TOML document: ${n}
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as te,a as ne,b as le,
|
|
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 +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-CWbMMO6g.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};
|
|
@@ -0,0 +1 @@
|
|
|
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 +1 @@
|
|
|
1
|
-
import{r as i,j as n,l as o}from"./index-
|
|
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};
|
|
@@ -0,0 +1 @@
|
|
|
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 +1,3 @@
|
|
|
1
|
-
import{u as T,r as g,j as e,S,
|
|
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
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(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};
|