agent-tower 0.3.13 → 0.3.15
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/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +31 -1
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +53 -0
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/tasks.d.ts.map +1 -1
- package/dist/routes/tasks.js +9 -0
- package/dist/routes/tasks.js.map +1 -1
- package/dist/services/project-guards.d.ts +9 -0
- package/dist/services/project-guards.d.ts.map +1 -0
- package/dist/services/project-guards.js +15 -0
- package/dist/services/project-guards.js.map +1 -0
- package/dist/services/project.service.d.ts +42 -3
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +159 -20
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/session-manager.d.ts +10 -10
- package/dist/services/task.service.d.ts +36 -2
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +67 -5
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/workspace.service.d.ts +20 -11
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +8 -1
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/web/assets/AgentDemoPage-HesErDgP.js +1 -0
- package/dist/web/assets/{DemoPage-CJ38nIO8.js → DemoPage-_JvTlAiA.js} +1 -1
- package/dist/web/assets/{GeneralSettingsPage-B7VYEpgr.js → GeneralSettingsPage-CJ9zjMoZ.js} +1 -1
- package/dist/web/assets/{NotificationSettingsPage-CHD4DBUP.js → NotificationSettingsPage-DulSelTy.js} +1 -1
- package/dist/web/assets/{ProfileSettingsPage-qmtWRC95.js → ProfileSettingsPage-D6bXZqqi.js} +2 -2
- package/dist/web/assets/ProjectKanbanPage-CMIFryFy.js +87 -0
- package/dist/web/assets/ProjectSettingsPage-w-ch_TzQ.js +2 -0
- package/dist/web/assets/{ProviderSettingsPage-BHH0jqW4.js → ProviderSettingsPage-fdnDecHo.js} +3 -3
- package/dist/web/assets/{button-CljdSOa6.js → button-DWEfhrOb.js} +1 -1
- package/dist/web/assets/{chevron-down-BYofhuN2.js → chevron-down-r1WqxE7T.js} +1 -1
- package/dist/web/assets/chevron-right-BoX1HZb8.js +1 -0
- package/dist/web/assets/{circle-alert-mZUTomft.js → circle-alert-Dsf4sjes.js} +1 -1
- package/dist/web/assets/{circle-check-CE93UcTb.js → circle-check-ClwRPrUg.js} +1 -1
- package/dist/web/assets/code-block-OCS4YCEC-DgzIFFQa.js +2 -0
- package/dist/web/assets/{confirm-dialog-nNRI_61i.js → confirm-dialog-CHgJE4TL.js} +1 -1
- package/dist/web/assets/folder-picker-CWyzaOjA.js +1 -0
- package/dist/web/assets/index-CnQr7qh9.css +1 -0
- package/dist/web/assets/index-Dz23RytL.js +13 -0
- package/dist/web/assets/{loader-circle-C9xqhRQy.js → loader-circle-6llnjfOV.js} +1 -1
- package/dist/web/assets/{mermaid-NOHMQCX5-DCP6uuN7.js → mermaid-NOHMQCX5-DFcKyU--.js} +44 -44
- package/dist/web/assets/modal-BlrEFlKt.js +1 -0
- package/dist/web/assets/{pencil-Ch8xuc6u.js → pencil-BYLehKfm.js} +1 -1
- package/dist/web/assets/rotate-ccw-Ca8el0Vt.js +1 -0
- package/dist/web/assets/{select-BzwBaSER.js → select-BSrh_Wca.js} +1 -1
- package/dist/web/assets/{use-profiles-B5A7JdZj.js → use-profiles-D0vf97yX.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/prisma/migrations/20260403000000_add_project_archival/migration.sql +10 -0
- package/prisma/schema.prisma +6 -0
- package/dist/web/assets/AgentDemoPage-CTlnJyU5.js +0 -1
- package/dist/web/assets/ProjectKanbanPage-BlLvUJHU.js +0 -85
- package/dist/web/assets/ProjectSettingsPage-jenb_WWg.js +0 -2
- package/dist/web/assets/code-block-OCS4YCEC-BFgaKpDI.js +0 -2
- package/dist/web/assets/folder-picker-DBgAK0Ax.js +0 -1
- package/dist/web/assets/index-8kxJ66vL.js +0 -13
- package/dist/web/assets/index-HqeZJR3B.css +0 -1
- package/dist/web/assets/modal-BoAiDPtT.js +0 -1
- package/dist/web/assets/use-projects-CEI8i-dO.js +0 -1
- package/dist/web/assets/x-nkgvEsnZ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as I,a as E,b as P,c as g,q as k,d as x,u as q,r,j as e}from"./index-
|
|
1
|
+
import{e as I,a as E,b as P,c as g,q as k,d as x,u as q,r,j as e}from"./index-Dz23RytL.js";import{B as j}from"./button-DWEfhrOb.js";import{S as R}from"./select-BSrh_Wca.js";import{L as z}from"./loader-circle-6llnjfOV.js";import{C as B}from"./circle-check-ClwRPrUg.js";import{C as L}from"./circle-alert-Dsf4sjes.js";import"./utils-CkSf8FUe.js";import"./chevron-down-r1WqxE7T.js";const F=[["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"}]],A=I("link",F);function K(){return E({queryKey:k.notifications.settings,queryFn:()=>x.get("/notifications/settings")})}function M(){const t=P();return g({mutationFn:a=>x.put("/notifications/settings",a),onSuccess:()=>{t.invalidateQueries({queryKey:k.notifications.settings})}})}function Q(){return g({mutationFn:t=>x.post("/notifications/test",t)})}function V(){const{t}=q(),{data:a,isLoading:y}=K(),i=M(),l=Q(),N=[{value:"none",label:t("无")},{value:"feishu",label:t("飞书")}],[n,p]=r.useState({webhookUrl:"",baseUrl:"",titleTemplate:"",bodyTemplate:""}),[u,h]=r.useState(!1),[f,o]=r.useState("idle"),d=r.useRef(void 0);if(r.useEffect(()=>{a&&!u&&p({webhookUrl:a.feishuWebhookUrl??"",baseUrl:a.thirdPartyBaseUrl??"",titleTemplate:a.taskInReviewTitleTemplate??"",bodyTemplate:a.taskInReviewBodyTemplate??""})},[a,u]),r.useEffect(()=>(l.isSuccess?(o("success"),d.current=setTimeout(()=>o("idle"),3e3)):l.isError&&(o("error"),d.current=setTimeout(()=>o("idle"),5e3)),()=>clearTimeout(d.current)),[l.isSuccess,l.isError]),y)return e.jsx("div",{className:"p-6 text-sm text-neutral-400",children:t("加载中...")});const m=a?.osNotificationEnabled??!0,b=a?.thirdPartyChannel??"none",c=(s,U)=>{p(S=>({...S,[s]:U})),h(!0)},v=()=>{i.mutate({osNotificationEnabled:!m})},T=s=>{i.mutate({thirdPartyChannel:s})},w=()=>{i.mutate({feishuWebhookUrl:n.webhookUrl.trim()||null,thirdPartyBaseUrl:n.baseUrl.trim()||null,taskInReviewTitleTemplate:n.titleTemplate.trim()||"Agent Tower",taskInReviewBodyTemplate:n.bodyTemplate.trim()||t('✅ "{taskTitle}" 已完成,等待审查')},{onSuccess:()=>h(!1)})},C=()=>{n.webhookUrl.trim()&&l.mutate({channel:"feishu",webhookUrl:n.webhookUrl.trim(),baseUrl:n.baseUrl.trim()||void 0})};return e.jsxs("div",{className:"px-10 py-6 mx-auto w-full max-w-3xl space-y-8",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:t("系统通知")}),e.jsx("p",{className:"text-[12px] text-neutral-400 mb-3",children:t("任务完成时弹出桌面通知")}),e.jsx("button",{onClick:v,className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${m?"bg-neutral-900":"bg-neutral-200"}`,children:e.jsx("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${m?"translate-x-[18px]":"translate-x-[3px]"}`})})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:t("第三方通知")}),e.jsx("p",{className:"text-[12px] text-neutral-400 mb-3",children:t("选择一个第三方渠道接收通知")}),e.jsx(R,{value:b,onChange:s=>T(s),options:N}),b==="feishu"&&e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsxs("div",{className:"p-4 border border-neutral-100 rounded-lg space-y-3",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-1 text-[13px] font-medium text-neutral-700 mb-1",children:[e.jsx(A,{size:12}),"Webhook URL"]}),e.jsx("input",{type:"text",value:n.webhookUrl,onChange:s=>c("webhookUrl",s.target.value),placeholder:"https://open.feishu.cn/open-apis/bot/v2/hook/...",className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm font-mono focus:outline-none focus:ring-1 focus:ring-neutral-300"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(j,{size:"sm",variant:"outline",onClick:C,disabled:!n.webhookUrl.trim()||l.isPending,children:[l.isPending&&e.jsx(z,{size:12,className:"animate-spin mr-1"}),t("测试发送")]}),f==="success"&&e.jsxs("span",{className:"flex items-center gap-1 text-xs text-green-600",children:[e.jsx(B,{size:12}),t("发送成功")]}),f==="error"&&e.jsxs("span",{className:"flex items-center gap-1 text-xs text-red-500",children:[e.jsx(L,{size:12}),t("发送失败")]})]})]}),e.jsx("div",{className:"p-4 border border-neutral-100 rounded-lg space-y-3",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-[13px] font-medium text-neutral-700 mb-1",children:t("跳转地址(用于生成任务链接)")}),e.jsx("input",{type:"text",value:n.baseUrl,onChange:s=>c("baseUrl",s.target.value),placeholder:"http://localhost:5173",className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm font-mono focus:outline-none focus:ring-1 focus:ring-neutral-300"}),e.jsx("p",{className:"text-[11px] text-neutral-400 mt-1",children:t('通知卡片中的"查看任务"按钮将跳转到 {path}',{path:"{baseUrl}/projects/{projectId}/tasks/{taskId}"})})]})})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:t("通知模板")}),e.jsx("p",{className:"text-[12px] text-neutral-400 mb-3",children:t("支持变量: {taskTitle}, {taskId}, {projectId}, {projectName}, {status}",{taskTitle:"{taskTitle}",taskId:"{taskId}",projectId:"{projectId}",projectName:"{projectName}",status:"{status}"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[13px] font-medium text-neutral-700 mb-1",children:t("标题模板")}),e.jsx("input",{type:"text",value:n.titleTemplate,onChange:s=>c("titleTemplate",s.target.value),placeholder:"Agent Tower",className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm focus:outline-none focus:ring-1 focus:ring-neutral-300"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[13px] font-medium text-neutral-700 mb-1",children:t("内容模板")}),e.jsx("textarea",{value:n.bodyTemplate,onChange:s=>c("bodyTemplate",s.target.value),placeholder:t('✅ "{taskTitle}" 已完成,等待审查'),rows:2,className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm focus:outline-none focus:ring-1 focus:ring-neutral-300 resize-none"})]})]})]}),u&&e.jsx("div",{className:"sticky bottom-6 flex justify-end",children:e.jsx(j,{size:"sm",onClick:w,disabled:i.isPending,children:i.isPending?t("保存中..."):t("保存所有更改")})})]})}export{V as NotificationSettingsPage};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{u as V,r as o,j as e}from"./index-
|
|
1
|
+
import{u as V,r as o,j as e}from"./index-Dz23RytL.js";import{u as I,a as L,b as A,c as D}from"./use-profiles-D0vf97yX.js";import{B as N}from"./button-DWEfhrOb.js";import{P as M,T,M as U}from"./modal-BlrEFlKt.js";import{P as z}from"./pencil-BYLehKfm.js";import"./utils-CkSf8FUe.js";function B(s){return Object.entries(s).map(([c,u])=>`${c}: ${JSON.stringify(u)}`).join(", ")}const g={CLAUDE_CODE:"Claude Code",GEMINI_CLI:"Gemini CLI",CURSOR_AGENT:"Cursor Agent"};function H(){const{t:s}=V(),{data:c,isLoading:u}=I(),{data:v}=L(),d=A(),C=D(),[a,l]=o.useState(null),[f,x]=o.useState(""),[m,p]=o.useState(""),[h,i]=o.useState(""),S=(t,n,r)=>{l({agentType:t,variant:n,config:r,isNew:!1}),p(n),x(JSON.stringify(r,null,2)),i("")},y=t=>{l({agentType:t,variant:"",config:{},isNew:!0}),p(""),x(`{
|
|
2
2
|
|
|
3
|
-
}`),i("")},E=()=>{if(!(!a||!m.trim()))try{const t=JSON.parse(f);i(""),d.mutate({agentType:a.agentType,variant:m.trim().toUpperCase(),config:t},{onSuccess:()=>l(null)})}catch{i(s("JSON 格式错误"))}},w=(t,n)=>{confirm(s("确定删除 {agentType} / {variant}?",{agentType:t,variant:n}))&&C.mutate({agentType:t,variant:n})},O=(t,n)=>!!v?.executors[t]?.[n];if(u)return e.jsx("div",{className:"p-6 text-sm text-neutral-400",children:s("加载中...")});const P=c?.executors??{};return e.jsxs("div",{className:"px-10 py-6 mx-auto w-full max-w-3xl",children:[Object.entries(P).map(([t,n])=>e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900",children:g[t]??t}),e.jsxs("button",{onClick:()=>y(t),className:"flex items-center gap-1 text-xs text-neutral-400 hover:text-neutral-900 transition-colors",children:[e.jsx(
|
|
3
|
+
}`),i("")},E=()=>{if(!(!a||!m.trim()))try{const t=JSON.parse(f);i(""),d.mutate({agentType:a.agentType,variant:m.trim().toUpperCase(),config:t},{onSuccess:()=>l(null)})}catch{i(s("JSON 格式错误"))}},w=(t,n)=>{confirm(s("确定删除 {agentType} / {variant}?",{agentType:t,variant:n}))&&C.mutate({agentType:t,variant:n})},O=(t,n)=>!!v?.executors[t]?.[n];if(u)return e.jsx("div",{className:"p-6 text-sm text-neutral-400",children:s("加载中...")});const P=c?.executors??{};return e.jsxs("div",{className:"px-10 py-6 mx-auto w-full max-w-3xl",children:[Object.entries(P).map(([t,n])=>e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900",children:g[t]??t}),e.jsxs("button",{onClick:()=>y(t),className:"flex items-center gap-1 text-xs text-neutral-400 hover:text-neutral-900 transition-colors",children:[e.jsx(M,{size:12}),e.jsx("span",{children:s("新增")})]})]}),e.jsx("div",{className:"border border-neutral-100 rounded-lg overflow-hidden",children:Object.entries(n).map(([r,b],k,J)=>{const j=O(t,r);return e.jsxs("div",{className:`flex items-center gap-3 px-4 py-2.5 hover:bg-neutral-50 transition-colors group ${k<J.length-1?"border-b border-neutral-100":""}`,children:[e.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded text-[11px] font-semibold tracking-wide ${r==="DEFAULT"?"bg-blue-50 text-blue-600":"bg-neutral-50 text-neutral-600"}`,children:r}),e.jsx("span",{className:"flex-1 text-[12px] text-neutral-400 font-mono truncate",children:B(b)}),j&&e.jsx("span",{className:"text-[11px] text-neutral-300 font-medium",children:s("内置")}),e.jsxs("div",{className:"flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{onClick:()=>S(t,r,b),className:"p-1 text-neutral-300 hover:text-neutral-700 rounded transition-colors",children:e.jsx(z,{size:13})}),!j&&e.jsx("button",{onClick:()=>w(t,r),className:"p-1 text-neutral-300 hover:text-red-500 rounded transition-colors",children:e.jsx(T,{size:13})})]})]},r)})})]},t)),e.jsx(U,{isOpen:!!a,onClose:()=>l(null),title:a?.isNew?s("新增 Variant — {agentType}",{agentType:g[a.agentType]??a.agentType}):s("编辑 {variant}",{variant:a?.variant??""}),action:e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",onClick:()=>l(null),children:s("取消")}),e.jsx(N,{onClick:E,disabled:d.isPending,children:d.isPending?s("保存中..."):s("保存")})]}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[13px] font-medium text-neutral-700 mb-1",children:s("Variant 名称")}),e.jsx("input",{type:"text",value:m,onChange:t=>p(t.target.value),disabled:!a?.isNew,placeholder:s("例如: CUSTOM"),className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm focus:outline-none focus:ring-1 focus:ring-neutral-300 disabled:bg-neutral-50 disabled:text-neutral-500 font-mono"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[13px] font-medium text-neutral-700 mb-1",children:s("配置 (JSON)")}),e.jsx("textarea",{value:f,onChange:t=>{x(t.target.value),i("")},rows:6,className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm font-mono focus:outline-none focus:ring-1 focus:ring-neutral-300 resize-none"}),h&&e.jsx("p",{className:"mt-1 text-xs text-red-500",children:h})]})]})})]})}export{H as ProfileSettingsPage};
|