agent-tower 0.1.0
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 +2 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +62 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +131 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/container.d.ts +11 -0
- package/dist/core/container.d.ts.map +1 -0
- package/dist/core/container.js +66 -0
- package/dist/core/container.js.map +1 -0
- package/dist/core/event-bus.d.ts +58 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +29 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +36 -0
- package/dist/errors.js.map +1 -0
- package/dist/executors/base.executor.d.ts +160 -0
- package/dist/executors/base.executor.d.ts.map +1 -0
- package/dist/executors/base.executor.js +122 -0
- package/dist/executors/base.executor.js.map +1 -0
- package/dist/executors/claude-code.executor.d.ts +78 -0
- package/dist/executors/claude-code.executor.d.ts.map +1 -0
- package/dist/executors/claude-code.executor.js +160 -0
- package/dist/executors/claude-code.executor.js.map +1 -0
- package/dist/executors/command-builder.d.ts +64 -0
- package/dist/executors/command-builder.d.ts.map +1 -0
- package/dist/executors/command-builder.js +144 -0
- package/dist/executors/command-builder.js.map +1 -0
- package/dist/executors/cursor-agent.executor.d.ts +57 -0
- package/dist/executors/cursor-agent.executor.d.ts.map +1 -0
- package/dist/executors/cursor-agent.executor.js +109 -0
- package/dist/executors/cursor-agent.executor.js.map +1 -0
- package/dist/executors/default-profiles.json +29 -0
- package/dist/executors/execution-env.d.ts +64 -0
- package/dist/executors/execution-env.d.ts.map +1 -0
- package/dist/executors/execution-env.js +97 -0
- package/dist/executors/execution-env.js.map +1 -0
- package/dist/executors/gemini-cli.executor.d.ts +55 -0
- package/dist/executors/gemini-cli.executor.d.ts.map +1 -0
- package/dist/executors/gemini-cli.executor.js +117 -0
- package/dist/executors/gemini-cli.executor.js.map +1 -0
- package/dist/executors/index.d.ts +49 -0
- package/dist/executors/index.d.ts.map +1 -0
- package/dist/executors/index.js +95 -0
- package/dist/executors/index.js.map +1 -0
- package/dist/executors/profiles.d.ts +61 -0
- package/dist/executors/profiles.d.ts.map +1 -0
- package/dist/executors/profiles.js +192 -0
- package/dist/executors/profiles.js.map +1 -0
- package/dist/git/git-cli.d.ts +59 -0
- package/dist/git/git-cli.d.ts.map +1 -0
- package/dist/git/git-cli.js +156 -0
- package/dist/git/git-cli.js.map +1 -0
- package/dist/git/worktree.manager.d.ts +166 -0
- package/dist/git/worktree.manager.d.ts.map +1 -0
- package/dist/git/worktree.manager.js +481 -0
- package/dist/git/worktree.manager.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/context.d.ts +15 -0
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/context.js +19 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/http-client.d.ts +46 -0
- package/dist/mcp/http-client.d.ts.map +1 -0
- package/dist/mcp/http-client.js +100 -0
- package/dist/mcp/http-client.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +36 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +6 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +32 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/projects.d.ts +7 -0
- package/dist/mcp/tools/projects.d.ts.map +1 -0
- package/dist/mcp/tools/projects.js +12 -0
- package/dist/mcp/tools/projects.js.map +1 -0
- package/dist/mcp/tools/sessions.d.ts +7 -0
- package/dist/mcp/tools/sessions.d.ts.map +1 -0
- package/dist/mcp/tools/sessions.js +22 -0
- package/dist/mcp/tools/sessions.js.map +1 -0
- package/dist/mcp/tools/tasks.d.ts +7 -0
- package/dist/mcp/tools/tasks.d.ts.map +1 -0
- package/dist/mcp/tools/tasks.js +68 -0
- package/dist/mcp/tools/tasks.js.map +1 -0
- package/dist/mcp/tools/workspaces.d.ts +7 -0
- package/dist/mcp/tools/workspaces.d.ts.map +1 -0
- package/dist/mcp/tools/workspaces.js +45 -0
- package/dist/mcp/tools/workspaces.js.map +1 -0
- package/dist/mcp/types.d.ts +109 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +55 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/middleware/tunnel-auth.d.ts +13 -0
- package/dist/middleware/tunnel-auth.d.ts.map +1 -0
- package/dist/middleware/tunnel-auth.js +39 -0
- package/dist/middleware/tunnel-auth.js.map +1 -0
- package/dist/output/__tests__/claude-code-parser-token.test.d.ts +2 -0
- package/dist/output/__tests__/claude-code-parser-token.test.d.ts.map +1 -0
- package/dist/output/__tests__/claude-code-parser-token.test.js +233 -0
- package/dist/output/__tests__/claude-code-parser-token.test.js.map +1 -0
- package/dist/output/__tests__/cursor-agent-parser-token.test.d.ts +2 -0
- package/dist/output/__tests__/cursor-agent-parser-token.test.d.ts.map +1 -0
- package/dist/output/__tests__/cursor-agent-parser-token.test.js +95 -0
- package/dist/output/__tests__/cursor-agent-parser-token.test.js.map +1 -0
- package/dist/output/__tests__/msg-store-token.test.d.ts +2 -0
- package/dist/output/__tests__/msg-store-token.test.d.ts.map +1 -0
- package/dist/output/__tests__/msg-store-token.test.js +38 -0
- package/dist/output/__tests__/msg-store-token.test.js.map +1 -0
- package/dist/output/claude-code-parser.d.ts +96 -0
- package/dist/output/claude-code-parser.d.ts.map +1 -0
- package/dist/output/claude-code-parser.js +498 -0
- package/dist/output/claude-code-parser.js.map +1 -0
- package/dist/output/cursor-agent-parser.d.ts +87 -0
- package/dist/output/cursor-agent-parser.d.ts.map +1 -0
- package/dist/output/cursor-agent-parser.js +476 -0
- package/dist/output/cursor-agent-parser.js.map +1 -0
- package/dist/output/index.d.ts +9 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +13 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/msg-store.d.ts +110 -0
- package/dist/output/msg-store.d.ts.map +1 -0
- package/dist/output/msg-store.js +274 -0
- package/dist/output/msg-store.js.map +1 -0
- package/dist/output/types.d.ts +90 -0
- package/dist/output/types.d.ts.map +1 -0
- package/dist/output/types.js +93 -0
- package/dist/output/types.js.map +1 -0
- package/dist/output/utils/ansi.d.ts +8 -0
- package/dist/output/utils/ansi.d.ts.map +1 -0
- package/dist/output/utils/ansi.js +17 -0
- package/dist/output/utils/ansi.js.map +1 -0
- package/dist/output/utils/patch.d.ts +57 -0
- package/dist/output/utils/patch.d.ts.map +1 -0
- package/dist/output/utils/patch.js +113 -0
- package/dist/output/utils/patch.js.map +1 -0
- package/dist/pipeline/agent-pipeline.d.ts +28 -0
- package/dist/pipeline/agent-pipeline.d.ts.map +1 -0
- package/dist/pipeline/agent-pipeline.js +76 -0
- package/dist/pipeline/agent-pipeline.js.map +1 -0
- package/dist/routes/attachments.d.ts +3 -0
- package/dist/routes/attachments.d.ts.map +1 -0
- package/dist/routes/attachments.js +141 -0
- package/dist/routes/attachments.js.map +1 -0
- package/dist/routes/demo.d.ts +3 -0
- package/dist/routes/demo.d.ts.map +1 -0
- package/dist/routes/demo.js +152 -0
- package/dist/routes/demo.js.map +1 -0
- package/dist/routes/files.d.ts +3 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +313 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/filesystem.d.ts +3 -0
- package/dist/routes/filesystem.d.ts.map +1 -0
- package/dist/routes/filesystem.js +126 -0
- package/dist/routes/filesystem.js.map +1 -0
- package/dist/routes/git.d.ts +3 -0
- package/dist/routes/git.d.ts.map +1 -0
- package/dist/routes/git.js +170 -0
- package/dist/routes/git.js.map +1 -0
- package/dist/routes/index.d.ts +3 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +45 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/notifications.d.ts +10 -0
- package/dist/routes/notifications.d.ts.map +1 -0
- package/dist/routes/notifications.js +54 -0
- package/dist/routes/notifications.js.map +1 -0
- package/dist/routes/profiles.d.ts +12 -0
- package/dist/routes/profiles.d.ts.map +1 -0
- package/dist/routes/profiles.js +76 -0
- package/dist/routes/profiles.js.map +1 -0
- package/dist/routes/projects.d.ts +3 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +94 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/sessions.d.ts +12 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +109 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/system.d.ts +3 -0
- package/dist/routes/system.d.ts.map +1 -0
- package/dist/routes/system.js +42 -0
- package/dist/routes/system.js.map +1 -0
- package/dist/routes/tasks.d.ts +3 -0
- package/dist/routes/tasks.d.ts.map +1 -0
- package/dist/routes/tasks.js +136 -0
- package/dist/routes/tasks.js.map +1 -0
- package/dist/routes/terminals.d.ts +3 -0
- package/dist/routes/terminals.d.ts.map +1 -0
- package/dist/routes/terminals.js +54 -0
- package/dist/routes/terminals.js.map +1 -0
- package/dist/routes/tunnel.d.ts +3 -0
- package/dist/routes/tunnel.d.ts.map +1 -0
- package/dist/routes/tunnel.js +36 -0
- package/dist/routes/tunnel.js.map +1 -0
- package/dist/routes/workspaces.d.ts +3 -0
- package/dist/routes/workspaces.d.ts.map +1 -0
- package/dist/routes/workspaces.js +171 -0
- package/dist/routes/workspaces.js.map +1 -0
- package/dist/services/commit-message.service.d.ts +32 -0
- package/dist/services/commit-message.service.d.ts.map +1 -0
- package/dist/services/commit-message.service.js +202 -0
- package/dist/services/commit-message.service.js.map +1 -0
- package/dist/services/notifications/feishu-channel.d.ts +9 -0
- package/dist/services/notifications/feishu-channel.d.ts.map +1 -0
- package/dist/services/notifications/feishu-channel.js +51 -0
- package/dist/services/notifications/feishu-channel.js.map +1 -0
- package/dist/services/notifications/index.d.ts +3 -0
- package/dist/services/notifications/index.d.ts.map +1 -0
- package/dist/services/notifications/index.js +2 -0
- package/dist/services/notifications/index.js.map +1 -0
- package/dist/services/notifications/notification.service.d.ts +10 -0
- package/dist/services/notifications/notification.service.d.ts.map +1 -0
- package/dist/services/notifications/notification.service.js +85 -0
- package/dist/services/notifications/notification.service.js.map +1 -0
- package/dist/services/notifications/os-channel.d.ts +8 -0
- package/dist/services/notifications/os-channel.d.ts.map +1 -0
- package/dist/services/notifications/os-channel.js +38 -0
- package/dist/services/notifications/os-channel.js.map +1 -0
- package/dist/services/notifications/types.d.ts +11 -0
- package/dist/services/notifications/types.d.ts.map +1 -0
- package/dist/services/notifications/types.js +2 -0
- package/dist/services/notifications/types.js.map +1 -0
- package/dist/services/project.service.d.ts +91 -0
- package/dist/services/project.service.d.ts.map +1 -0
- package/dist/services/project.service.js +138 -0
- package/dist/services/project.service.js.map +1 -0
- package/dist/services/session-manager.d.ts +164 -0
- package/dist/services/session-manager.d.ts.map +1 -0
- package/dist/services/session-manager.js +569 -0
- package/dist/services/session-manager.js.map +1 -0
- package/dist/services/task.service.d.ts +179 -0
- package/dist/services/task.service.d.ts.map +1 -0
- package/dist/services/task.service.js +281 -0
- package/dist/services/task.service.js.map +1 -0
- package/dist/services/terminal-manager.d.ts +64 -0
- package/dist/services/terminal-manager.d.ts.map +1 -0
- package/dist/services/terminal-manager.js +217 -0
- package/dist/services/terminal-manager.js.map +1 -0
- package/dist/services/tunnel.service.d.ts +16 -0
- package/dist/services/tunnel.service.d.ts.map +1 -0
- package/dist/services/tunnel.service.js +77 -0
- package/dist/services/tunnel.service.js.map +1 -0
- package/dist/services/workspace.service.d.ts +219 -0
- package/dist/services/workspace.service.d.ts.map +1 -0
- package/dist/services/workspace.service.js +351 -0
- package/dist/services/workspace.service.js.map +1 -0
- package/dist/socket/events.d.ts +2 -0
- package/dist/socket/events.d.ts.map +1 -0
- package/dist/socket/events.js +3 -0
- package/dist/socket/events.js.map +1 -0
- package/dist/socket/index.d.ts +20 -0
- package/dist/socket/index.d.ts.map +1 -0
- package/dist/socket/index.js +77 -0
- package/dist/socket/index.js.map +1 -0
- package/dist/socket/middleware/auth.d.ts +13 -0
- package/dist/socket/middleware/auth.d.ts.map +1 -0
- package/dist/socket/middleware/auth.js +29 -0
- package/dist/socket/middleware/auth.js.map +1 -0
- package/dist/socket/middleware/error-handler.d.ts +11 -0
- package/dist/socket/middleware/error-handler.d.ts.map +1 -0
- package/dist/socket/middleware/error-handler.js +39 -0
- package/dist/socket/middleware/error-handler.js.map +1 -0
- package/dist/socket/middleware/index.d.ts +3 -0
- package/dist/socket/middleware/index.d.ts.map +1 -0
- package/dist/socket/middleware/index.js +3 -0
- package/dist/socket/middleware/index.js.map +1 -0
- package/dist/socket/rooms.d.ts +30 -0
- package/dist/socket/rooms.d.ts.map +1 -0
- package/dist/socket/rooms.js +39 -0
- package/dist/socket/rooms.js.map +1 -0
- package/dist/socket/socket-gateway.d.ts +21 -0
- package/dist/socket/socket-gateway.d.ts.map +1 -0
- package/dist/socket/socket-gateway.js +173 -0
- package/dist/socket/socket-gateway.js.map +1 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +41 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/web/assets/AgentDemoPage-WdWEQtyU.js +1 -0
- package/dist/web/assets/DemoPage-C4Z_ftHI.js +4 -0
- package/dist/web/assets/NotificationSettingsPage-FrLfgt9y.js +1 -0
- package/dist/web/assets/ProfileSettingsPage-Cs93rTRr.js +3 -0
- package/dist/web/assets/ProjectKanbanPage-BmlRVfzo.js +75 -0
- package/dist/web/assets/ProjectKanbanPage-G5OQeJvU.css +1 -0
- package/dist/web/assets/api-client-CEBkg5lt.js +1 -0
- package/dist/web/assets/circle-alert-BEozlsMd.js +1 -0
- package/dist/web/assets/code-block-OCS4YCEC-CGgYYS4A.js +2 -0
- package/dist/web/assets/folder-picker-BP3x3phB.js +1 -0
- package/dist/web/assets/index-BuAijQvi.js +13 -0
- package/dist/web/assets/index-CxV866Yg.css +1 -0
- package/dist/web/assets/loader-circle-yEIqsdJ1.js +1 -0
- package/dist/web/assets/mermaid-NOHMQCX5-CIqtI2jF.js +123 -0
- package/dist/web/assets/mermaid-NOHMQCX5-lI9o3AWT.css +1 -0
- package/dist/web/assets/modal-BoX2RXaV.js +1 -0
- package/dist/web/assets/query-keys-BD_s_Etj.js +1 -0
- package/dist/web/assets/use-profiles-Rh8rBsAt.js +1 -0
- package/dist/web/index.html +14 -0
- package/dist/web/vite.svg +1 -0
- package/node_modules/@agent-tower/shared/dist/dev-port.d.ts +12 -0
- package/node_modules/@agent-tower/shared/dist/dev-port.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/dev-port.js +31 -0
- package/node_modules/@agent-tower/shared/dist/dev-port.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/index.d.ts +5 -0
- package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/index.js +5 -0
- package/node_modules/@agent-tower/shared/dist/index.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts +72 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.js +144 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +133 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.js +32 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/socket/index.d.ts +2 -0
- package/node_modules/@agent-tower/shared/dist/socket/index.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/socket/index.js +2 -0
- package/node_modules/@agent-tower/shared/dist/socket/index.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts +168 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/types.js +53 -0
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -0
- package/node_modules/@agent-tower/shared/package.json +38 -0
- package/package.json +46 -0
- package/prisma/schema.prisma +130 -0
- package/scripts/postinstall.js +120 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/routes/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgB/C,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,iBA0CxD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { projectRoutes } from './projects.js';
|
|
2
|
+
import { taskRoutes } from './tasks.js';
|
|
3
|
+
import { workspaceRoutes } from './workspaces.js';
|
|
4
|
+
import { sessionRoutes } from './sessions.js';
|
|
5
|
+
import { systemRoutes } from './system.js';
|
|
6
|
+
import { demoRoutes } from './demo.js';
|
|
7
|
+
import { filesystemRoutes } from './filesystem.js';
|
|
8
|
+
import { filesRoutes } from './files.js';
|
|
9
|
+
import { gitRoutes } from './git.js';
|
|
10
|
+
import { profileRoutes } from './profiles.js';
|
|
11
|
+
import { terminalRoutes } from './terminals.js';
|
|
12
|
+
import { tunnelRoutes } from './tunnel.js';
|
|
13
|
+
import { attachmentRoutes } from './attachments.js';
|
|
14
|
+
import { notificationRoutes } from './notifications.js';
|
|
15
|
+
export async function registerRoutes(app) {
|
|
16
|
+
// 系统路由
|
|
17
|
+
await app.register(systemRoutes, { prefix: '/api' });
|
|
18
|
+
// 项目路由
|
|
19
|
+
await app.register(projectRoutes, { prefix: '/api/projects' });
|
|
20
|
+
// 任务路由
|
|
21
|
+
await app.register(taskRoutes, { prefix: '/api' });
|
|
22
|
+
// 工作空间路由
|
|
23
|
+
await app.register(workspaceRoutes, { prefix: '/api' });
|
|
24
|
+
// 会话路由
|
|
25
|
+
await app.register(sessionRoutes, { prefix: '/api' });
|
|
26
|
+
// Demo 路由 (MVP)
|
|
27
|
+
await app.register(demoRoutes, { prefix: '/api' });
|
|
28
|
+
// 文件系统浏览路由
|
|
29
|
+
await app.register(filesystemRoutes, { prefix: '/api/filesystem' });
|
|
30
|
+
// Editor Tab 文件读写路由
|
|
31
|
+
await app.register(filesRoutes, { prefix: '/api/files' });
|
|
32
|
+
// Git 变更查看路由
|
|
33
|
+
await app.register(gitRoutes, { prefix: '/api/git' });
|
|
34
|
+
// Profile 配置路由
|
|
35
|
+
await app.register(profileRoutes, { prefix: '/api' });
|
|
36
|
+
// Standalone terminal 路由
|
|
37
|
+
await app.register(terminalRoutes, { prefix: '/api' });
|
|
38
|
+
// Tunnel 路由
|
|
39
|
+
await app.register(tunnelRoutes, { prefix: '/api' });
|
|
40
|
+
// 附件路由
|
|
41
|
+
await app.register(attachmentRoutes, { prefix: '/api/attachments' });
|
|
42
|
+
// 通知配置路由
|
|
43
|
+
await app.register(notificationRoutes, { prefix: '/api' });
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAoB;IACvD,OAAO;IACP,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAErD,OAAO;IACP,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAE/D,OAAO;IACP,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnD,SAAS;IACT,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAExD,OAAO;IACP,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtD,gBAAgB;IAChB,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnD,WAAW;IACX,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEpE,oBAAoB;IACpB,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE1D,aAAa;IACb,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtD,eAAe;IACf,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtD,yBAAyB;IACzB,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvD,YAAY;IACZ,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAErD,OAAO;IACP,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAErE,SAAS;IACT,MAAM,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通知配置 API
|
|
3
|
+
*
|
|
4
|
+
* GET /api/notifications/settings — 获取通知配置
|
|
5
|
+
* PUT /api/notifications/settings — 更新通知配置
|
|
6
|
+
* POST /api/notifications/test — 测试第三方通知渠道
|
|
7
|
+
*/
|
|
8
|
+
import type { FastifyInstance } from 'fastify';
|
|
9
|
+
export declare function notificationRoutes(app: FastifyInstance): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAoB/C,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,eAAe,iBA8B5D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通知配置 API
|
|
3
|
+
*
|
|
4
|
+
* GET /api/notifications/settings — 获取通知配置
|
|
5
|
+
* PUT /api/notifications/settings — 更新通知配置
|
|
6
|
+
* POST /api/notifications/test — 测试第三方通知渠道
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { prisma } from '../utils/index.js';
|
|
10
|
+
import { getNotificationService } from '../core/container.js';
|
|
11
|
+
const updateSettingsSchema = z.object({
|
|
12
|
+
osNotificationEnabled: z.boolean().optional(),
|
|
13
|
+
thirdPartyChannel: z.enum(['none', 'feishu']).optional(),
|
|
14
|
+
feishuWebhookUrl: z.string().nullable().optional(),
|
|
15
|
+
thirdPartyBaseUrl: z.string().nullable().optional(),
|
|
16
|
+
taskInReviewTitleTemplate: z.string().optional(),
|
|
17
|
+
taskInReviewBodyTemplate: z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
const testChannelSchema = z.object({
|
|
20
|
+
channel: z.enum(['feishu']),
|
|
21
|
+
webhookUrl: z.string().url(),
|
|
22
|
+
baseUrl: z.string().optional(),
|
|
23
|
+
});
|
|
24
|
+
export async function notificationRoutes(app) {
|
|
25
|
+
// 获取通知配置
|
|
26
|
+
app.get('/notifications/settings', async () => {
|
|
27
|
+
const service = getNotificationService();
|
|
28
|
+
return service.getSettings();
|
|
29
|
+
});
|
|
30
|
+
// 更新通知配置
|
|
31
|
+
app.put('/notifications/settings', async (request) => {
|
|
32
|
+
const data = updateSettingsSchema.parse(request.body);
|
|
33
|
+
const settings = await prisma.notificationSettings.upsert({
|
|
34
|
+
where: { id: 'singleton' },
|
|
35
|
+
create: { id: 'singleton', ...data },
|
|
36
|
+
update: data,
|
|
37
|
+
});
|
|
38
|
+
return settings;
|
|
39
|
+
});
|
|
40
|
+
// 测试第三方通知
|
|
41
|
+
app.post('/notifications/test', async (request, reply) => {
|
|
42
|
+
const { channel, webhookUrl, baseUrl } = testChannelSchema.parse(request.body);
|
|
43
|
+
try {
|
|
44
|
+
const service = getNotificationService();
|
|
45
|
+
await service.testChannel(channel, webhookUrl, baseUrl);
|
|
46
|
+
return { success: true };
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
reply.code(400);
|
|
50
|
+
return { error: e instanceof Error ? e.message : 'Test failed' };
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7C,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChD,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAoB;IAC3D,SAAS;IACT,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS;IACT,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC;YACxD,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;YAC1B,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE;YACpC,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,UAAU;IACV,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;YACzC,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Profile CRUD API
|
|
3
|
+
*
|
|
4
|
+
* GET /api/profiles — 获取完整 profiles
|
|
5
|
+
* GET /api/profiles/:agentType — 获取某 agent 的所有 variant
|
|
6
|
+
* PUT /api/profiles/:agentType/:variant — 创建/更新 variant 配置
|
|
7
|
+
* DELETE /api/profiles/:agentType/:variant — 删除用户自定义 variant
|
|
8
|
+
* POST /api/profiles/reload — 重新加载配置
|
|
9
|
+
*/
|
|
10
|
+
import type { FastifyInstance } from 'fastify';
|
|
11
|
+
export declare function profileRoutes(app: FastifyInstance): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/routes/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAc/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,iBAsFvD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Profile CRUD API
|
|
3
|
+
*
|
|
4
|
+
* GET /api/profiles — 获取完整 profiles
|
|
5
|
+
* GET /api/profiles/:agentType — 获取某 agent 的所有 variant
|
|
6
|
+
* PUT /api/profiles/:agentType/:variant — 创建/更新 variant 配置
|
|
7
|
+
* DELETE /api/profiles/:agentType/:variant — 删除用户自定义 variant
|
|
8
|
+
* POST /api/profiles/reload — 重新加载配置
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { getProfiles, reloadProfiles, getVariantConfig, getVariantNames, setVariantConfig, deleteVariantConfig, getDefaultProfiles, } from '../executors/index.js';
|
|
12
|
+
const variantConfigSchema = z.record(z.unknown());
|
|
13
|
+
export async function profileRoutes(app) {
|
|
14
|
+
// 获取完整 profiles(合并后的)
|
|
15
|
+
app.get('/profiles', async () => {
|
|
16
|
+
return getProfiles();
|
|
17
|
+
});
|
|
18
|
+
// 获取默认 profiles(不含用户覆盖)
|
|
19
|
+
app.get('/profiles/defaults', async () => {
|
|
20
|
+
return getDefaultProfiles();
|
|
21
|
+
});
|
|
22
|
+
// 重新加载配置
|
|
23
|
+
app.post('/profiles/reload', async () => {
|
|
24
|
+
const profiles = reloadProfiles();
|
|
25
|
+
return { success: true, profiles };
|
|
26
|
+
});
|
|
27
|
+
// 获取某个 agent 的所有 variant
|
|
28
|
+
app.get('/profiles/:agentType', async (request, reply) => {
|
|
29
|
+
const { agentType } = request.params;
|
|
30
|
+
const variants = getVariantNames(agentType);
|
|
31
|
+
if (variants.length === 0) {
|
|
32
|
+
reply.code(404);
|
|
33
|
+
return { error: `Agent type '${agentType}' not found` };
|
|
34
|
+
}
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const v of variants) {
|
|
37
|
+
result[v] = getVariantConfig(agentType, v);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
});
|
|
41
|
+
// 获取某个 variant 的配置
|
|
42
|
+
app.get('/profiles/:agentType/:variant', async (request, reply) => {
|
|
43
|
+
const { agentType, variant } = request.params;
|
|
44
|
+
const config = getVariantConfig(agentType, variant);
|
|
45
|
+
if (!config) {
|
|
46
|
+
reply.code(404);
|
|
47
|
+
return { error: `Variant '${variant}' not found for '${agentType}'` };
|
|
48
|
+
}
|
|
49
|
+
return config;
|
|
50
|
+
});
|
|
51
|
+
// 创建/更新 variant 配置
|
|
52
|
+
app.put('/profiles/:agentType/:variant', async (request, reply) => {
|
|
53
|
+
const { agentType, variant } = request.params;
|
|
54
|
+
const config = variantConfigSchema.parse(request.body);
|
|
55
|
+
setVariantConfig(agentType, variant, config);
|
|
56
|
+
reply.code(200);
|
|
57
|
+
return { success: true };
|
|
58
|
+
});
|
|
59
|
+
// 删除 variant 配置
|
|
60
|
+
app.delete('/profiles/:agentType/:variant', async (request, reply) => {
|
|
61
|
+
const { agentType, variant } = request.params;
|
|
62
|
+
try {
|
|
63
|
+
const deleted = deleteVariantConfig(agentType, variant);
|
|
64
|
+
if (!deleted) {
|
|
65
|
+
reply.code(404);
|
|
66
|
+
return { error: `Variant '${variant}' not found for '${agentType}'` };
|
|
67
|
+
}
|
|
68
|
+
return { success: true };
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
reply.code(400);
|
|
72
|
+
return { error: e instanceof Error ? e.message : 'Failed to delete variant' };
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/routes/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA8C/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,iBAsDvD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { z, ZodError } from 'zod';
|
|
2
|
+
import { ProjectService } from '../services/project.service.js';
|
|
3
|
+
import { ServiceError } from '../errors.js';
|
|
4
|
+
const createProjectSchema = z.object({
|
|
5
|
+
name: z.string().min(1, 'name is required'),
|
|
6
|
+
description: z.string().optional(),
|
|
7
|
+
repoPath: z.string().min(1, 'repoPath is required'),
|
|
8
|
+
mainBranch: z.string().default('main'),
|
|
9
|
+
});
|
|
10
|
+
const updateProjectSchema = z.object({
|
|
11
|
+
name: z.string().min(1, 'name cannot be empty').optional(),
|
|
12
|
+
description: z.string().optional(),
|
|
13
|
+
mainBranch: z.string().optional(),
|
|
14
|
+
});
|
|
15
|
+
const paginationSchema = z.object({
|
|
16
|
+
page: z.coerce.number().int().min(1).default(1),
|
|
17
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* 统一错误处理:将 ServiceError / ZodError 转为结构化响应
|
|
21
|
+
*/
|
|
22
|
+
function handleError(error, reply) {
|
|
23
|
+
if (error instanceof ZodError) {
|
|
24
|
+
const fieldErrors = error.errors.map((e) => ({
|
|
25
|
+
field: e.path.join('.'),
|
|
26
|
+
message: e.message,
|
|
27
|
+
}));
|
|
28
|
+
reply.code(400);
|
|
29
|
+
return { error: 'Validation failed', code: 'VALIDATION_ERROR', details: fieldErrors };
|
|
30
|
+
}
|
|
31
|
+
if (error instanceof ServiceError) {
|
|
32
|
+
reply.code(error.statusCode);
|
|
33
|
+
return { error: error.message, code: error.code };
|
|
34
|
+
}
|
|
35
|
+
// 未知错误
|
|
36
|
+
reply.code(500);
|
|
37
|
+
return { error: 'Internal server error', code: 'INTERNAL_ERROR' };
|
|
38
|
+
}
|
|
39
|
+
export async function projectRoutes(app) {
|
|
40
|
+
const projectService = new ProjectService();
|
|
41
|
+
// 获取项目列表(支持分页)
|
|
42
|
+
app.get('/', async (request, reply) => {
|
|
43
|
+
try {
|
|
44
|
+
const query = paginationSchema.parse(request.query);
|
|
45
|
+
return await projectService.findAll(query);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return handleError(error, reply);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// 创建项目
|
|
52
|
+
app.post('/', async (request, reply) => {
|
|
53
|
+
try {
|
|
54
|
+
const body = createProjectSchema.parse(request.body);
|
|
55
|
+
const project = await projectService.create(body);
|
|
56
|
+
reply.code(201);
|
|
57
|
+
return project;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return handleError(error, reply);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// 获取项目详情(含任务统计)
|
|
64
|
+
app.get('/:id', async (request, reply) => {
|
|
65
|
+
try {
|
|
66
|
+
return await projectService.findById(request.params.id);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return handleError(error, reply);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
// 更新项目
|
|
73
|
+
app.put('/:id', async (request, reply) => {
|
|
74
|
+
try {
|
|
75
|
+
const body = updateProjectSchema.parse(request.body);
|
|
76
|
+
return await projectService.update(request.params.id, body);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return handleError(error, reply);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// 删除项目
|
|
83
|
+
app.delete('/:id', async (request, reply) => {
|
|
84
|
+
try {
|
|
85
|
+
await projectService.delete(request.params.id);
|
|
86
|
+
reply.code(204);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return handleError(error, reply);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FastifyInstance } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* Parse tokenUsage JSON string on a session object (or nested sessions).
|
|
4
|
+
* Mutates in-place for convenience; returns the same reference.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseSessionTokenUsage<T extends {
|
|
7
|
+
tokenUsage?: string | null;
|
|
8
|
+
}>(session: T): T & {
|
|
9
|
+
tokenUsage?: Record<string, unknown> | null;
|
|
10
|
+
};
|
|
11
|
+
export declare function sessionRoutes(app: FastifyInstance): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,CAShJ;AAYD,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,iBAiHvD"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getSessionManager } from '../core/container.js';
|
|
3
|
+
import { AgentType } from '../types/index.js';
|
|
4
|
+
import { sessionMsgStoreManager } from '../output/index.js';
|
|
5
|
+
import { prisma } from '../utils/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Parse tokenUsage JSON string on a session object (or nested sessions).
|
|
8
|
+
* Mutates in-place for convenience; returns the same reference.
|
|
9
|
+
*/
|
|
10
|
+
export function parseSessionTokenUsage(session) {
|
|
11
|
+
if (typeof session.tokenUsage === 'string') {
|
|
12
|
+
try {
|
|
13
|
+
session.tokenUsage = JSON.parse(session.tokenUsage);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
session.tokenUsage = null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return session;
|
|
20
|
+
}
|
|
21
|
+
const createSessionSchema = z.object({
|
|
22
|
+
agentType: z.nativeEnum(AgentType),
|
|
23
|
+
prompt: z.string().min(1),
|
|
24
|
+
variant: z.string().optional(),
|
|
25
|
+
});
|
|
26
|
+
const sendMessageSchema = z.object({
|
|
27
|
+
message: z.string().min(1),
|
|
28
|
+
});
|
|
29
|
+
export async function sessionRoutes(app) {
|
|
30
|
+
const sessionService = getSessionManager();
|
|
31
|
+
// 创建会话
|
|
32
|
+
app.post('/workspaces/:workspaceId/sessions', async (request, reply) => {
|
|
33
|
+
const body = createSessionSchema.parse(request.body);
|
|
34
|
+
const session = await sessionService.create(request.params.workspaceId, body.agentType, body.prompt, body.variant);
|
|
35
|
+
reply.code(201);
|
|
36
|
+
return session;
|
|
37
|
+
});
|
|
38
|
+
// 获取会话详情
|
|
39
|
+
app.get('/sessions/:id', async (request, reply) => {
|
|
40
|
+
const session = await sessionService.findById(request.params.id);
|
|
41
|
+
if (!session) {
|
|
42
|
+
reply.code(404);
|
|
43
|
+
return { error: 'Session not found' };
|
|
44
|
+
}
|
|
45
|
+
return parseSessionTokenUsage(session);
|
|
46
|
+
});
|
|
47
|
+
// 启动会话
|
|
48
|
+
app.post('/sessions/:id/start', async (request, reply) => {
|
|
49
|
+
const result = await sessionService.start(request.params.id);
|
|
50
|
+
if (!result) {
|
|
51
|
+
reply.code(404);
|
|
52
|
+
return { error: 'Session not found' };
|
|
53
|
+
}
|
|
54
|
+
return { success: true };
|
|
55
|
+
});
|
|
56
|
+
// 停止会话
|
|
57
|
+
app.post('/sessions/:id/stop', async (request, reply) => {
|
|
58
|
+
const result = await sessionService.stop(request.params.id);
|
|
59
|
+
if (!result) {
|
|
60
|
+
reply.code(404);
|
|
61
|
+
return { error: 'Session not found' };
|
|
62
|
+
}
|
|
63
|
+
return { success: true };
|
|
64
|
+
});
|
|
65
|
+
// 发送消息(统一入口 — 无论 session 是 RUNNING 还是 COMPLETED/CANCELLED)
|
|
66
|
+
app.post('/sessions/:id/message', async (request, reply) => {
|
|
67
|
+
const body = sendMessageSchema.parse(request.body);
|
|
68
|
+
try {
|
|
69
|
+
const result = await sessionService.sendMessage(request.params.id, body.message);
|
|
70
|
+
if (!result) {
|
|
71
|
+
reply.code(404);
|
|
72
|
+
return { error: 'Session not found' };
|
|
73
|
+
}
|
|
74
|
+
return { success: true };
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error(`[sessions] sendMessage failed for session ${request.params.id}:`, error);
|
|
78
|
+
reply.code(500);
|
|
79
|
+
return { error: error instanceof Error ? error.message : 'Failed to send message' };
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// 获取会话日志快照
|
|
83
|
+
app.get('/sessions/:id/logs', async (request, reply) => {
|
|
84
|
+
const { id } = request.params;
|
|
85
|
+
// 检查 session 是否存在
|
|
86
|
+
const session = await prisma.session.findUnique({ where: { id } });
|
|
87
|
+
if (!session) {
|
|
88
|
+
reply.code(404);
|
|
89
|
+
return { error: 'Session not found' };
|
|
90
|
+
}
|
|
91
|
+
// 优先从内存 MsgStore 读取(运行中或刚结束的 session)
|
|
92
|
+
const msgStore = sessionMsgStoreManager.get(id);
|
|
93
|
+
if (msgStore) {
|
|
94
|
+
return msgStore.getSnapshot();
|
|
95
|
+
}
|
|
96
|
+
// 从数据库读取持久化的日志快照
|
|
97
|
+
if (session.logSnapshot) {
|
|
98
|
+
try {
|
|
99
|
+
return JSON.parse(session.logSnapshot);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return { entries: [] };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// MsgStore 不存在且无持久化数据,返回空快照
|
|
106
|
+
return { entries: [] };
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/routes/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,iBA2CtD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AgentType } from '../types/index.js';
|
|
2
|
+
import { prisma } from '../utils/index.js';
|
|
3
|
+
export async function systemRoutes(app) {
|
|
4
|
+
// 健康检查
|
|
5
|
+
app.get('/health', async () => {
|
|
6
|
+
return { status: 'ok', timestamp: new Date().toISOString() };
|
|
7
|
+
});
|
|
8
|
+
// 获取可用的 AI 代理列表
|
|
9
|
+
app.get('/agents', async () => {
|
|
10
|
+
return {
|
|
11
|
+
agents: [
|
|
12
|
+
{ type: AgentType.CLAUDE_CODE, name: 'Claude Code', available: false },
|
|
13
|
+
{ type: AgentType.GEMINI_CLI, name: 'Gemini CLI', available: false },
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
// MCP 上下文检测:根据 cwd 路径查找匹配的活跃工作空间
|
|
18
|
+
app.get('/system/workspace-context', async (request, reply) => {
|
|
19
|
+
const { path: cwdPath } = request.query;
|
|
20
|
+
if (!cwdPath) {
|
|
21
|
+
reply.code(400);
|
|
22
|
+
return { error: 'path query parameter is required' };
|
|
23
|
+
}
|
|
24
|
+
const workspace = await prisma.workspace.findFirst({
|
|
25
|
+
where: { worktreePath: cwdPath, status: 'ACTIVE' },
|
|
26
|
+
include: { task: { include: { project: true } } },
|
|
27
|
+
});
|
|
28
|
+
if (!workspace) {
|
|
29
|
+
reply.code(404);
|
|
30
|
+
return { error: 'No active workspace found for this path' };
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
projectId: workspace.task.project.id,
|
|
34
|
+
projectName: workspace.task.project.name,
|
|
35
|
+
taskId: workspace.task.id,
|
|
36
|
+
taskTitle: workspace.task.title,
|
|
37
|
+
workspaceId: workspace.id,
|
|
38
|
+
workspaceBranch: workspace.branchName,
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/routes/system.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAoB;IACrD,OAAO;IACP,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,gBAAgB;IAChB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC5B,OAAO;YACL,MAAM,EAAE;gBACN,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE;gBACtE,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE;aACrE;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,GAAG,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAA0B,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YACjD,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;YAClD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;SAClD,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACpC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;YACxC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;YACzB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;YAC/B,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,eAAe,EAAE,SAAS,CAAC,UAAU;SACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/routes/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA6D/C,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,iBAyGpD"}
|