agent-tower 0.3.19 → 0.4.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.
Files changed (51) hide show
  1. package/dist/routes/app-settings.d.ts.map +1 -1
  2. package/dist/routes/app-settings.js +20 -5
  3. package/dist/routes/app-settings.js.map +1 -1
  4. package/dist/routes/tasks.js +1 -1
  5. package/dist/routes/tasks.js.map +1 -1
  6. package/dist/services/commit-message.service.d.ts +5 -0
  7. package/dist/services/commit-message.service.d.ts.map +1 -1
  8. package/dist/services/commit-message.service.js +52 -15
  9. package/dist/services/commit-message.service.js.map +1 -1
  10. package/dist/services/task.service.d.ts.map +1 -1
  11. package/dist/services/task.service.js +18 -2
  12. package/dist/services/task.service.js.map +1 -1
  13. package/dist/web/assets/{AgentDemoPage-2AqgX6Cf.js → AgentDemoPage-BWRAHFkt.js} +1 -1
  14. package/dist/web/assets/{DemoPage-DyFtRa8x.js → DemoPage-BZ5M1SAB.js} +1 -1
  15. package/dist/web/assets/GeneralSettingsPage-BaOOwCVS.js +1 -0
  16. package/dist/web/assets/{NotificationSettingsPage-B0m5t4qH.js → NotificationSettingsPage-BN6EqfjU.js} +1 -1
  17. package/dist/web/assets/{ProfileSettingsPage-CwRQ5Wr1.js → ProfileSettingsPage-CIP6uixV.js} +1 -1
  18. package/dist/web/assets/{ProjectKanbanPage-DwSI2gad.js → ProjectKanbanPage-CFUQT6JK.js} +14 -14
  19. package/dist/web/assets/{ProjectSettingsPage-BxGCUc3h.js → ProjectSettingsPage-CfNoBWSi.js} +1 -1
  20. package/dist/web/assets/{ProviderSettingsPage-BF3I_Oba.js → ProviderSettingsPage-DwDw9zUR.js} +2 -2
  21. package/dist/web/assets/{button-Dh8FHptl.js → button-D_HFYACB.js} +1 -1
  22. package/dist/web/assets/{chevron-down-B-UCtkpw.js → chevron-down-9WClAEn8.js} +1 -1
  23. package/dist/web/assets/chevron-right-BtN8Zto2.js +1 -0
  24. package/dist/web/assets/circle-alert-HHdlJNqe.js +1 -0
  25. package/dist/web/assets/{circle-check-MgjzSuSN.js → circle-check-cTH6ieYz.js} +1 -1
  26. package/dist/web/assets/{code-block-OCS4YCEC-DVFIuiT3.js → code-block-OCS4YCEC-CZZdDA2x.js} +1 -1
  27. package/dist/web/assets/confirm-dialog-CDJoysvO.js +1 -0
  28. package/dist/web/assets/{folder-picker-CzSKXweo.js → folder-picker-N8GypL3a.js} +1 -1
  29. package/dist/web/assets/{index-CFjAe6OM.js → index-D7K8KUJH.js} +6 -6
  30. package/dist/web/assets/index-vg6PeELc.css +1 -0
  31. package/dist/web/assets/loader-circle-lo-fmqx0.js +1 -0
  32. package/dist/web/assets/{mermaid-NOHMQCX5-BeW1Fb1_.js → mermaid-NOHMQCX5-CvKYIlPK.js} +3 -3
  33. package/dist/web/assets/{modal-hQOddjel.js → modal-CUBMvXmY.js} +1 -1
  34. package/dist/web/assets/{pencil-Ca4AsZLH.js → pencil-DYpEk25M.js} +1 -1
  35. package/dist/web/assets/rotate-ccw-CzrmYvZT.js +1 -0
  36. package/dist/web/assets/{select-DN0KH4Bi.js → select-DfuMoG1o.js} +1 -1
  37. package/dist/web/assets/use-profiles-Dne_0dqT.js +1 -0
  38. package/dist/web/assets/use-providers-BU-lcRuU.js +1 -0
  39. package/dist/web/index.html +2 -2
  40. package/node_modules/@agent-tower/shared/dist/types.d.ts +2 -0
  41. package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/prisma/schema.prisma +2 -0
  44. package/dist/web/assets/GeneralSettingsPage-B6uXd3Wp.js +0 -1
  45. package/dist/web/assets/chevron-right-CIJ95cIu.js +0 -1
  46. package/dist/web/assets/circle-alert-DwzV6nbB.js +0 -1
  47. package/dist/web/assets/confirm-dialog-B4CDGom7.js +0 -1
  48. package/dist/web/assets/index-CnQr7qh9.css +0 -1
  49. package/dist/web/assets/loader-circle-BiT33tiH.js +0 -1
  50. package/dist/web/assets/rotate-ccw-Dx6ZIa1R.js +0 -1
  51. package/dist/web/assets/use-profiles-CUlWd_po.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"app-settings.d.ts","sourceRoot":"","sources":["../../src/routes/app-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkB/C,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,iBA8B3D"}
1
+ {"version":3,"file":"app-settings.d.ts","sourceRoot":"","sources":["../../src/routes/app-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB/C,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,iBA0C3D"}
@@ -1,13 +1,18 @@
1
1
  import { z } from 'zod';
2
2
  import { prisma } from '../utils/index.js';
3
+ import { DEFAULT_COMMIT_MESSAGE_PROMPT } from '../services/commit-message.service.js';
3
4
  const localeSchema = z.enum(['zh-CN', 'en']);
4
5
  const updateAppSettingsSchema = z.object({
5
6
  locale: localeSchema.optional(),
7
+ commitMessageProviderId: z.string().nullable().optional(),
8
+ commitMessagePrompt: z.string().nullable().optional(),
6
9
  });
7
10
  function getDefaultAppSettings() {
8
11
  return {
9
12
  id: 'singleton',
10
13
  locale: null,
14
+ commitMessageProviderId: null,
15
+ commitMessagePrompt: null,
11
16
  };
12
17
  }
13
18
  export async function appSettingsRoutes(app) {
@@ -22,18 +27,28 @@ export async function appSettingsRoutes(app) {
22
27
  });
23
28
  app.put('/app-settings', async (request) => {
24
29
  const data = updateAppSettingsSchema.parse(request.body);
25
- const locale = (data.locale ?? null);
30
+ const updateData = {};
31
+ if (data.locale !== undefined) {
32
+ updateData.locale = (data.locale ?? null);
33
+ }
34
+ if (data.commitMessageProviderId !== undefined) {
35
+ updateData.commitMessageProviderId = data.commitMessageProviderId;
36
+ }
37
+ if (data.commitMessagePrompt !== undefined) {
38
+ updateData.commitMessagePrompt = data.commitMessagePrompt;
39
+ }
26
40
  const settings = await prisma.appSettings.upsert({
27
41
  where: { id: 'singleton' },
28
42
  create: {
29
43
  id: 'singleton',
30
- locale,
31
- },
32
- update: {
33
- locale,
44
+ ...updateData,
34
45
  },
46
+ update: updateData,
35
47
  });
36
48
  return settings;
37
49
  });
50
+ app.get('/app-settings/commit-message-defaults', async () => {
51
+ return { prompt: DEFAULT_COMMIT_MESSAGE_PROMPT };
52
+ });
38
53
  }
39
54
  //# sourceMappingURL=app-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-settings.js","sourceRoot":"","sources":["../../src/routes/app-settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAE7C,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,SAAS,qBAAqB;IAC5B,OAAO;QACL,EAAE,EAAE,WAAW;QACf,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAoB;IAC1D,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;SAC3B,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAuB,CAAC;QACjC,CAAC;QAED,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAqB,CAAC;QAEzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;YAC1B,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW;gBACf,MAAM;aACP;YACD,MAAM,EAAE;gBACN,MAAM;aACP;SACF,CAAC,CAAC;QAEH,OAAO,QAAuB,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"app-settings.js","sourceRoot":"","sources":["../../src/routes/app-settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAE7C,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAEH,SAAS,qBAAqB;IAC5B,OAAO;QACL,EAAE,EAAE,WAAW;QACf,MAAM,EAAE,IAAI;QACZ,uBAAuB,EAAE,IAAI;QAC7B,mBAAmB,EAAE,IAAI;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAoB;IAC1D,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;SAC3B,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAuB,CAAC;QACjC,CAAC;QAED,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAqB,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC/C,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC3C,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC5D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;YAC1B,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW;gBACf,GAAG,UAAU;aACd;YACD,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,OAAO,QAAuB,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -27,7 +27,7 @@ const updatePositionSchema = z.object({
27
27
  const taskListQuerySchema = z.object({
28
28
  status: z.nativeEnum(TaskStatus).optional(),
29
29
  page: z.coerce.number().int().min(1).default(1),
30
- limit: z.coerce.number().int().min(1).max(100).default(50),
30
+ limit: z.coerce.number().int().min(1).max(1000).default(200),
31
31
  });
32
32
  /**
33
33
  * 统一错误处理:将 ServiceError / ZodError 转为结构化响应
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/routes/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/routes/tasks.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,17 @@
5
5
  * 利用当前 workspace 使用的 agent 来分析 diff 并生成简洁的 commit message。
6
6
  * 生成结果缓存到 workspace.commitMessage 字段。
7
7
  */
8
+ export declare const DEFAULT_COMMIT_MESSAGE_PROMPT: string;
8
9
  export declare class CommitMessageService {
9
10
  private eventBus;
10
11
  /**
11
12
  * 为指定 workspace 触发 commit message 生成。
12
13
  * 创建一个 purpose=COMMIT_MSG 的隐藏 session 并启动。
13
14
  */
15
+ /**
16
+ * 读取全局 commit message 配置(provider + prompt)
17
+ */
18
+ private getGlobalSettings;
14
19
  triggerGeneration(workspaceId: string): Promise<void>;
15
20
  /**
16
21
  * COMMIT_MSG session 完成后,从输出中提取 commit message 并缓存。
@@ -1 +1 @@
1
- {"version":3,"file":"commit-message.service.d.ts","sourceRoot":"","sources":["../../src/services/commit-message.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IAEjC;;;OAGG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsE3D;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;YACW,WAAW;CA4E1B"}
1
+ {"version":3,"file":"commit-message.service.d.ts","sourceRoot":"","sources":["../../src/services/commit-message.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,eAAO,MAAM,6BAA6B,QAQ9B,CAAC;AAIb,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IAEjC;;;OAGG;IACH;;OAEG;YACW,iBAAiB;IAUzB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF3D;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;YACW,WAAW;CAwE1B"}
@@ -9,15 +9,38 @@ import { prisma } from '../utils/index.js';
9
9
  import { SessionStatus, SessionPurpose, WorkspaceStatus } from '../types/index.js';
10
10
  import { execGit } from '../git/git-cli.js';
11
11
  import { getEventBus, getSessionManager } from '../core/container.js';
12
+ import { getProviderById } from '../executors/providers.js';
12
13
  import { sessionMsgStoreManager } from '../output/index.js';
13
14
  /** diff 最大字符数,超出则截断并附加 stat 摘要 */
14
15
  const MAX_DIFF_CHARS = 8000;
16
+ export const DEFAULT_COMMIT_MESSAGE_PROMPT = [
17
+ 'You are a Git commit message generator. Generate a concise commit message based on the following information.',
18
+ '',
19
+ 'Requirements:',
20
+ '- Use conventional commits format (feat/fix/refactor/docs/chore/style/test/perf/ci/build)',
21
+ '- First line must not exceed 72 characters',
22
+ '- If necessary, add a blank line followed by a detailed description',
23
+ '- Output ONLY the commit message itself, no explanations, no markdown formatting, no code blocks',
24
+ ].join('\n');
25
+ const DEFAULT_SYSTEM_PROMPT = DEFAULT_COMMIT_MESSAGE_PROMPT;
15
26
  export class CommitMessageService {
16
27
  eventBus = getEventBus();
17
28
  /**
18
29
  * 为指定 workspace 触发 commit message 生成。
19
30
  * 创建一个 purpose=COMMIT_MSG 的隐藏 session 并启动。
20
31
  */
32
+ /**
33
+ * 读取全局 commit message 配置(provider + prompt)
34
+ */
35
+ async getGlobalSettings() {
36
+ const settings = await prisma.appSettings.findUnique({
37
+ where: { id: 'singleton' },
38
+ });
39
+ return {
40
+ providerId: settings?.commitMessageProviderId ?? null,
41
+ prompt: settings?.commitMessagePrompt ?? null,
42
+ };
43
+ }
21
44
  async triggerGeneration(workspaceId) {
22
45
  const workspace = await prisma.workspace.findUnique({
23
46
  where: { id: workspaceId },
@@ -34,13 +57,32 @@ export class CommitMessageService {
34
57
  return;
35
58
  if (!workspace.worktreePath)
36
59
  return;
37
- // 继承最近一个正常 session 的执行上下文,确保与当前任务使用同一 provider
38
60
  const lastSession = workspace.sessions[0];
39
61
  if (!lastSession)
40
62
  return;
41
- const agentType = lastSession.agentType;
42
- const variant = lastSession.variant ?? 'DEFAULT';
43
- const providerId = lastSession.providerId ?? undefined;
63
+ // 优先使用全局配置的 provider,fallback 到当前 task 的 provider
64
+ const globalSettings = await this.getGlobalSettings();
65
+ let agentType;
66
+ let variant;
67
+ let providerId;
68
+ if (globalSettings.providerId) {
69
+ const provider = getProviderById(globalSettings.providerId);
70
+ if (provider) {
71
+ agentType = provider.agentType;
72
+ variant = 'DEFAULT';
73
+ providerId = provider.id;
74
+ }
75
+ else {
76
+ agentType = lastSession.agentType;
77
+ variant = lastSession.variant ?? 'DEFAULT';
78
+ providerId = lastSession.providerId ?? undefined;
79
+ }
80
+ }
81
+ else {
82
+ agentType = lastSession.agentType;
83
+ variant = lastSession.variant ?? 'DEFAULT';
84
+ providerId = lastSession.providerId ?? undefined;
85
+ }
44
86
  // 检查是否已有正在运行的 COMMIT_MSG session
45
87
  const existing = await prisma.session.findFirst({
46
88
  where: {
@@ -61,8 +103,8 @@ export class CommitMessageService {
61
103
  taskId: workspace.taskId,
62
104
  commitMessage: null,
63
105
  });
64
- // 构造 prompt
65
- const prompt = await this.buildPrompt(workspace);
106
+ // 构造 prompt:优先使用全局自定义 prompt 模板
107
+ const prompt = await this.buildPrompt(workspace, globalSettings.prompt);
66
108
  if (!prompt)
67
109
  return;
68
110
  // 创建隐藏 session 并启动
@@ -156,7 +198,7 @@ export class CommitMessageService {
156
198
  /**
157
199
  * 构造生成 commit message 的 prompt。
158
200
  */
159
- async buildPrompt(workspace) {
201
+ async buildPrompt(workspace, customPromptTemplate) {
160
202
  const { worktreePath, branchName, baseBranch, task } = workspace;
161
203
  const { repoPath, mainBranch } = task.project;
162
204
  const targetBranch = baseBranch || mainBranch;
@@ -184,15 +226,10 @@ export class CommitMessageService {
184
226
  'diff', '--stat', `${targetBranch}...${branchName}`,
185
227
  ]).catch(() => '');
186
228
  }
187
- // 构造 prompt
229
+ // 使用自定义 prompt 模板或内置默认模板
230
+ const systemPrompt = customPromptTemplate?.trim() || DEFAULT_SYSTEM_PROMPT;
188
231
  const parts = [
189
- 'You are a Git commit message generator. Generate a concise commit message based on the following information.',
190
- '',
191
- 'Requirements:',
192
- '- Use conventional commits format (feat/fix/refactor/docs/chore/style/test/perf/ci/build)',
193
- '- First line must not exceed 72 characters',
194
- '- If necessary, add a blank line followed by a detailed description',
195
- '- Output ONLY the commit message itself, no explanations, no markdown formatting, no code blocks',
232
+ systemPrompt,
196
233
  '',
197
234
  `Task: ${task.title}`,
198
235
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"commit-message.service.js","sourceRoot":"","sources":["../../src/services/commit-message.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAa,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,kCAAkC;AAClC,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,OAAO,oBAAoB;IACvB,QAAQ,GAAG,WAAW,EAAE,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;YAClD,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;YAC1B,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBACpC,QAAQ,EAAE;oBACR,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE;oBACvC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;oBAC9B,IAAI,EAAE,CAAC;iBACR;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;YAAE,OAAO;QACtE,IAAI,CAAC,SAAS,CAAC,YAAY;YAAE,OAAO;QAEpC,+CAA+C;QAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,MAAM,SAAS,GAAG,WAAW,CAAC,SAAsB,CAAC;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,SAAS,CAAC;QACjD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,SAAS,CAAC;QAEvD,iCAAiC;QACjC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAC9C,KAAK,EAAE;gBACL,WAAW;gBACX,OAAO,EAAE,cAAc,CAAC,UAAU;gBAClC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE;aAC/D;SACF,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO;QAErB,gCAAgC;QAChC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;YAC1B,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kCAAkC,EAAE;YACrD,WAAW;YACX,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,YAAY;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,mBAAmB;QACnB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEjG,yBAAyB;QACzB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;YACzB,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,UAAU,EAAE;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,qDAAqD,OAAO,CAAC,EAAE,kBAAkB,WAAW,EAAE,CAAC,CAAC;QAC9G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,2EAA2E,WAAW,GAAG,EACzF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YACxB,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,cAAc,CAAC,UAAU;YAAE,OAAO;QAEtE,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,mEAAmE,SAAS,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE;YAClC,IAAI,EAAE,EAAE,aAAa,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kCAAkC,EAAE;YACrD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;YAChC,aAAa;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,8DAA8D,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACnG,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,SAAiB,EAAE,WAA0B;QACxE,oBAAoB;QACpB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,iCAAiC;QACjC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA2B,CAAC;gBACnE,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,QAAgC;QAC1D,8BAA8B;QAC9B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,SAAS,KAAK,mBAAmB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC7D,0BAA0B;gBAC1B,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9B,uBAAuB;oBACvB,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;wBAC1C,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,IAAI,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,SASzB;QACC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QACjE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,MAAM,YAAY,GAAG,UAAU,IAAI,UAAU,CAAC;QAE9C,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;gBACxC,KAAK,EAAE,GAAG,YAAY,KAAK,UAAU,EAAE,EAAE,WAAW,EAAE,eAAe;aACtE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEnB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC,CAAC,YAAY;YAEhD,UAAU;YACV,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;gBACjC,MAAM,EAAE,GAAG,YAAY,MAAM,UAAU,EAAE;aAC1C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEnB,YAAY;YACZ,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBACjC,aAAa,GAAG,IAAI,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YACvC,CAAC;YAED,yBAAyB;YACzB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,aAAa,EAAE,CAAC;gBAClB,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;oBACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,MAAM,UAAU,EAAE;iBACpD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;YAED,YAAY;YACZ,MAAM,KAAK,GAAa;gBACtB,+GAA+G;gBAC/G,EAAE;gBACF,eAAe;gBACf,2FAA2F;gBAC3F,4CAA4C;gBAC5C,qEAAqE;gBACrE,kGAAkG;gBAClG,EAAE;gBACF,SAAS,IAAI,CAAC,KAAK,EAAE;aACtB,CAAC;YAEF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAEpD,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sCAAsC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,8DAA8D,EAC9D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"commit-message.service.js","sourceRoot":"","sources":["../../src/services/commit-message.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task.service.d.ts","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkD,MAAM,mBAAmB,CAAC;AAM/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc;IAGjD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCrE;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAazB;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;IA2BtD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;IAgB/C;;;OAGG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;;;;;;;;;;;IA2CjD;;;OAGG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;;;;;;;;;;;IAgCtE;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM;IAsDvB;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;;;;;IAgD3C;;;;;;;OAOG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;IA+CtB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAGzE"}
1
+ {"version":3,"file":"task.service.d.ts","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkD,MAAM,mBAAmB,CAAC;AAM/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc;IAGjD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuDrE;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAazB;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;IA2BtD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;IAgB/C;;;OAGG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;;;;;;;;;;;IA2CjD;;;OAGG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;;;;;;;;;;;IAgCtE;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM;IAsDvB;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;;;;;IAgD3C;;;;;;;OAOG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;IA+CtB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAGzE"}
@@ -33,22 +33,38 @@ export class TaskService {
33
33
  throw new NotFoundError('Project', projectId);
34
34
  }
35
35
  const page = Math.max(1, params.page || 1);
36
- const limit = Math.min(100, Math.max(1, params.limit || 50));
36
+ const limit = Math.min(1000, Math.max(1, params.limit || 200));
37
37
  const skip = (page - 1) * limit;
38
38
  const where = { projectId };
39
39
  if (params.status) {
40
40
  where.status = params.status;
41
41
  }
42
+ // Active tasks first (IN_PROGRESS → IN_REVIEW → TODO), then completed (DONE → CANCELLED).
43
+ // Raw SQL CASE needed because Prisma orderBy doesn't support custom sort functions.
44
+ const statusOrder = {
45
+ [TaskStatus.IN_PROGRESS]: 0,
46
+ [TaskStatus.IN_REVIEW]: 1,
47
+ [TaskStatus.TODO]: 2,
48
+ [TaskStatus.DONE]: 3,
49
+ [TaskStatus.CANCELLED]: 4,
50
+ };
42
51
  const [data, total] = await Promise.all([
43
52
  prisma.task.findMany({
44
53
  where,
45
54
  include: { workspaces: true, project: true },
46
- orderBy: [{ status: 'asc' }, { position: 'asc' }],
55
+ orderBy: [{ updatedAt: 'desc' }],
47
56
  skip,
48
57
  take: limit,
49
58
  }),
50
59
  prisma.task.count({ where }),
51
60
  ]);
61
+ data.sort((a, b) => {
62
+ const sa = statusOrder[a.status] ?? 99;
63
+ const sb = statusOrder[b.status] ?? 99;
64
+ if (sa !== sb)
65
+ return sa - sb;
66
+ return (a.position ?? 0) - (b.position ?? 0);
67
+ });
52
68
  return {
53
69
  data,
54
70
  total,
@@ -1 +1 @@
1
- {"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{e as j,u as Q,r as n,d as b,j as e,L as X}from"./index-CFjAe6OM.js";import{u as Y,a as Z,b as _,c as ee,d as te,S as se,e as ne,T as re,P as ae,G as le,f as ie}from"./mermaid-NOHMQCX5-BeW1Fb1_.js";import{B as w}from"./button-Dh8FHptl.js";import{d as oe}from"./use-profiles-CUlWd_po.js";import{C as ce}from"./chevron-down-B-UCtkpw.js";import"./log-adapter-50wgehrc.js";import"./chevron-right-CIJ95cIu.js";import"./utils-CkSf8FUe.js";const de=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8",key:"7n84p3"}]],xe=j("at-sign",de);const me=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],ue=j("chevron-up",me);const pe=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],he=j("hash",pe);const ge=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],fe=j("send",ge),be=!0;function De(){const{t:s}=Q(),[S,H]=n.useState([]),[i,k]=n.useState(""),[x,A]=n.useState("DEFAULT"),[o,D]=n.useState(""),[a,E]=n.useState(null),[l,c]=n.useState("idle"),[g,$]=n.useState(!1),[m,v]=n.useState(""),C=n.useRef(null),I=n.useRef(null),u=n.useRef(null),{data:p}=oe(i),U=p?Object.keys(p):["DEFAULT"],F=t=>{k(t),A("DEFAULT")},M=n.useCallback(t=>{c(t===0?"stopped":"error")},[]),V=n.useCallback(t=>{console.error("Agent error:",t),c("error")},[]),{isConnected:h,isAttached:f,logs:N,entries:B,agentSessionId:z,attach:P,clearLogs:R}=Y({sessionId:a||"",onExit:M,onError:V}),{todos:T}=Z(B);n.useEffect(()=>{b.get("/demo/agents").then(t=>{H(t.agents);const r=t.agents.find(y=>y.available);r&&k(r.type)})},[]),n.useEffect(()=>{C.current?.scrollToBottom("smooth")},[N]),n.useEffect(()=>{console.log(`[AgentDemoPage:useEffect] t=${Date.now()} sessionId=${a} isConnected=${h} isAttached=${f}`),a&&h&&!f&&(console.log(`[AgentDemoPage:useEffect] t=${Date.now()} calling attach()`),P())},[a,h,f,P]);const G=t=>{if(v(t.target.value),u.current){u.current.style.height="auto";const y=Math.min(u.current.scrollHeight,210);u.current.style.height=`${y}px`}},O=async()=>{if(!i||!o.trim())return;const t=Date.now();console.log(`[AgentDemoPage:handleStart] t=${t} starting...`),c("starting"),R();try{const r=await b.post("/demo/start",{agentType:i,prompt:o.trim(),variant:x});be&&console.log(`[AgentDemoPage:handleStart] t=${Date.now()} apiTime=${Date.now()-t}ms sessionId=${r.sessionId}`),E(r.sessionId),c("running")}catch(r){console.error("Start failed:",r),c("error")}},L=async()=>{if(!a||!m.trim())return;const t=m.trim();v("");try{await b.post(`/demo/${a}/message`,{message:t})}catch(r){console.error("Send failed:",r)}},K=async()=>{if(a)try{await b.post(`/demo/${a}/stop`),c("stopped")}catch(t){console.error("Stop failed:",t)}},q=()=>{E(null),c("idle"),D(""),v(""),R()},J=l==="running",d=a!==null,W=S.find(t=>t.type===i);return e.jsxs("div",{className:"flex flex-col h-full bg-white",children:[e.jsxs("div",{className:"px-8 py-5 border-b border-neutral-100 bg-white transition-all duration-300",children:[e.jsxs("div",{className:"flex items-center flex-wrap gap-3",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"text-base font-medium text-blue-600",children:"Agent Demo"}),e.jsx("span",{className:"text-neutral-300 text-sm",children:"/"}),e.jsx("span",{className:"text-xl font-bold text-neutral-900 tracking-tight",children:d?o.slice(0,50)+(o.length>50?"...":""):s("新会话")})]}),e.jsxs("div",{className:"flex items-center",children:[l==="running"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-blue-50 text-blue-700 rounded-full text-xs font-medium border border-blue-100",children:[e.jsx(_,{className:"w-3.5 h-3.5 animate-pulse"}),e.jsx("span",{children:"Running"})]}),l==="stopped"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-emerald-50 text-emerald-700 rounded-full text-xs font-medium border border-emerald-100",children:[e.jsx(ee,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"Done"})]}),l==="idle"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-neutral-100 text-neutral-600 rounded-full text-xs font-medium border border-neutral-200",children:[e.jsx(te,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"Idle"})]}),l==="starting"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-amber-50 text-amber-700 rounded-full text-xs font-medium border border-amber-100",children:[e.jsx(_,{className:"w-3.5 h-3.5 animate-spin"}),e.jsx("span",{children:"Starting..."})]}),l==="error"&&e.jsx("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-red-50 text-red-700 rounded-full text-xs font-medium border border-red-100",children:e.jsx("span",{children:"Error"})})]})]}),d&&e.jsxs("div",{className:"mt-1.5 flex items-start gap-2 group max-w-4xl",children:[e.jsx("div",{className:`text-sm text-neutral-600 leading-relaxed cursor-pointer transition-all ${g?"":"truncate"}`,onClick:()=>$(!g),children:o}),e.jsx("button",{onClick:()=>$(!g),className:"mt-0.5 text-neutral-400 opacity-0 group-hover:opacity-100 hover:text-neutral-600 transition-opacity",children:g?e.jsx(ue,{size:14}):e.jsx(ce,{size:14})})]}),e.jsxs("div",{className:"flex items-center gap-6 mt-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:"Agent"}),e.jsx("div",{className:"flex items-center gap-1.5 text-neutral-900 font-medium bg-neutral-50 px-2 py-1 rounded border border-neutral-100",children:W?.name||i||s("未选择")})]}),x!=="DEFAULT"&&e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:"Variant"}),e.jsx("div",{className:"flex items-center gap-1.5 text-neutral-700 font-medium bg-blue-50 px-2 py-1 rounded border border-blue-100",children:x})]}),z&&e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:"Session"}),e.jsxs("div",{className:"flex items-center gap-1.5 text-neutral-700 font-mono bg-neutral-50 px-2 py-1 rounded border border-neutral-100",children:[z.slice(0,8),"..."]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:s("连接")}),e.jsx("div",{className:`flex items-center gap-1.5 font-medium px-2 py-1 rounded border ${h?"text-emerald-700 bg-emerald-50 border-emerald-100":"text-neutral-500 bg-neutral-50 border-neutral-100"}`,children:s(h?f?"已连接":"连接中...":"未连接")})]}),d&&e.jsx(w,{variant:"outline",size:"sm",onClick:q,className:"ml-auto",children:s("新会话")}),e.jsxs(X,{to:"/settings/profiles",className:`flex items-center gap-1.5 text-xs text-neutral-500 hover:text-neutral-900 transition-colors ${d?"":"ml-auto"}`,children:[e.jsx(se,{size:14}),e.jsx("span",{children:s("Profiles 设置")})]})]})]}),e.jsx("div",{ref:I,className:"flex-1 overflow-y-auto px-8 py-6",children:d?e.jsx("div",{className:"min-h-[200px]",children:N.length===0?e.jsx("div",{className:"text-neutral-400 text-center py-8",children:s("等待 Agent 响应...")}):e.jsx(ne,{ref:C,logs:N,scrollElementRef:I})}):e.jsxs("div",{className:"max-w-2xl mx-auto space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-neutral-900",children:s("选择 Agent")}),e.jsx("div",{className:"flex gap-2 flex-wrap",children:S.map(t=>e.jsxs(w,{variant:i===t.type?"default":"outline",disabled:!t.available,onClick:()=>F(t.type),children:[t.name,t.available&&t.version&&` (${t.version})`,!t.available&&s(" (不可用)")]},t.type))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-neutral-900",children:s("配置变体 (Profile Variant)")}),e.jsx("div",{className:"flex gap-2 flex-wrap",children:U.map(t=>e.jsx("button",{onClick:()=>A(t),className:`px-3 py-1.5 rounded-full text-sm font-medium border transition-colors ${x===t?"bg-neutral-900 text-white border-neutral-900":"bg-white text-neutral-600 border-neutral-200 hover:border-neutral-400"}`,children:t},t))}),p&&p[x]&&e.jsx("p",{className:"mt-2 text-xs text-neutral-500 font-mono",children:Object.entries(p[x]).map(([t,r])=>`${t}: ${JSON.stringify(r)}`).join(", ")})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-neutral-900",children:s("输入任务")}),e.jsxs("div",{className:"relative border border-neutral-200 rounded-xl shadow-sm bg-white focus-within:ring-1 focus-within:ring-neutral-300 focus-within:border-neutral-300 transition-all duration-200",children:[e.jsx("textarea",{value:o,onChange:t=>D(t.target.value),rows:4,placeholder:s("描述你想让 Agent 完成的任务..."),className:"w-full px-4 py-3 bg-transparent border-none focus:outline-none focus:ring-0 resize-none text-neutral-900 placeholder-neutral-400 leading-relaxed text-sm"}),e.jsx("div",{className:"flex items-center justify-end px-3 pb-3 pt-1",children:e.jsx(w,{onClick:O,disabled:l==="starting"||!i||!o.trim(),children:s(l==="starting"?"启动中...":"开始")})})]})]})]})}),d&&T.length>0&&e.jsx("div",{className:"px-8 py-2 bg-white border-t border-neutral-100",children:e.jsx(re,{todos:T})}),d&&e.jsx("div",{className:"px-8 py-6 border-t border-neutral-100 bg-white",children:e.jsxs("div",{className:"relative border border-neutral-200 rounded-xl shadow-sm bg-white focus-within:ring-1 focus-within:ring-neutral-300 focus-within:border-neutral-300 transition-all duration-200",children:[e.jsx("textarea",{ref:u,value:m,onChange:G,rows:3,placeholder:s("发送消息给 Agent..."),className:"w-full px-4 py-3 bg-transparent border-none focus:outline-none focus:ring-0 resize-none text-neutral-900 placeholder-neutral-400 leading-relaxed text-sm scrollbar-thin scrollbar-thumb-neutral-200 scrollbar-track-transparent",style:{minHeight:"80px",maxHeight:"210px"},onKeyDown:t=>{t.key==="Enter"&&!t.shiftKey&&!t.repeat&&!t.nativeEvent.isComposing&&t.nativeEvent.keyCode!==229&&(t.preventDefault(),L())}}),e.jsxs("div",{className:"flex items-center justify-between px-3 pb-3 pt-1 border-t border-transparent",children:[e.jsxs("div",{className:"flex items-center gap-1 text-neutral-400",children:[e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Attach File",children:e.jsx(ae,{size:18})}),e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Mention",children:e.jsx(xe,{size:18})}),e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Reference Issue",children:e.jsx(he,{size:18})}),e.jsx("div",{className:"w-px h-4 bg-neutral-200 mx-1"}),e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Search Web",children:e.jsx(le,{size:18})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[J&&e.jsxs("button",{onClick:K,className:"flex items-center gap-2 px-3 py-2 text-xs font-semibold text-red-600 bg-red-50 hover:bg-red-100 rounded-lg transition-colors",children:[e.jsx(ie,{size:12,fill:"currentColor"}),e.jsx("span",{children:s("停止")})]}),e.jsxs("button",{onClick:L,disabled:!m.trim(),className:`flex items-center gap-2 px-3 py-2 text-xs font-semibold rounded-lg transition-all ${m.trim()?"bg-neutral-900 text-white hover:bg-black shadow-sm":"bg-neutral-100 text-neutral-400 cursor-not-allowed"}`,children:[e.jsx("span",{children:s("发送")}),e.jsx(fe,{size:14})]})]})]})]})})]})}export{De as AgentDemoPage};
1
+ import{h as j,u as Q,r as n,g as b,j as e,L as X}from"./index-D7K8KUJH.js";import{u as Y,a as Z,b as _,c as ee,d as te,S as se,e as ne,T as re,P as ae,G as le,f as ie}from"./mermaid-NOHMQCX5-CvKYIlPK.js";import{B as w}from"./button-D_HFYACB.js";import{d as oe}from"./use-profiles-Dne_0dqT.js";import{C as ce}from"./chevron-down-9WClAEn8.js";import"./log-adapter-50wgehrc.js";import"./chevron-right-BtN8Zto2.js";import"./utils-CkSf8FUe.js";const de=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8",key:"7n84p3"}]],xe=j("at-sign",de);const me=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],ue=j("chevron-up",me);const pe=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],he=j("hash",pe);const ge=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],fe=j("send",ge),be=!0;function De(){const{t:s}=Q(),[S,H]=n.useState([]),[i,k]=n.useState(""),[x,A]=n.useState("DEFAULT"),[o,D]=n.useState(""),[a,E]=n.useState(null),[l,c]=n.useState("idle"),[g,$]=n.useState(!1),[m,v]=n.useState(""),C=n.useRef(null),I=n.useRef(null),u=n.useRef(null),{data:p}=oe(i),U=p?Object.keys(p):["DEFAULT"],F=t=>{k(t),A("DEFAULT")},M=n.useCallback(t=>{c(t===0?"stopped":"error")},[]),V=n.useCallback(t=>{console.error("Agent error:",t),c("error")},[]),{isConnected:h,isAttached:f,logs:N,entries:B,agentSessionId:z,attach:P,clearLogs:R}=Y({sessionId:a||"",onExit:M,onError:V}),{todos:T}=Z(B);n.useEffect(()=>{b.get("/demo/agents").then(t=>{H(t.agents);const r=t.agents.find(y=>y.available);r&&k(r.type)})},[]),n.useEffect(()=>{C.current?.scrollToBottom("smooth")},[N]),n.useEffect(()=>{console.log(`[AgentDemoPage:useEffect] t=${Date.now()} sessionId=${a} isConnected=${h} isAttached=${f}`),a&&h&&!f&&(console.log(`[AgentDemoPage:useEffect] t=${Date.now()} calling attach()`),P())},[a,h,f,P]);const G=t=>{if(v(t.target.value),u.current){u.current.style.height="auto";const y=Math.min(u.current.scrollHeight,210);u.current.style.height=`${y}px`}},O=async()=>{if(!i||!o.trim())return;const t=Date.now();console.log(`[AgentDemoPage:handleStart] t=${t} starting...`),c("starting"),R();try{const r=await b.post("/demo/start",{agentType:i,prompt:o.trim(),variant:x});be&&console.log(`[AgentDemoPage:handleStart] t=${Date.now()} apiTime=${Date.now()-t}ms sessionId=${r.sessionId}`),E(r.sessionId),c("running")}catch(r){console.error("Start failed:",r),c("error")}},L=async()=>{if(!a||!m.trim())return;const t=m.trim();v("");try{await b.post(`/demo/${a}/message`,{message:t})}catch(r){console.error("Send failed:",r)}},K=async()=>{if(a)try{await b.post(`/demo/${a}/stop`),c("stopped")}catch(t){console.error("Stop failed:",t)}},q=()=>{E(null),c("idle"),D(""),v(""),R()},J=l==="running",d=a!==null,W=S.find(t=>t.type===i);return e.jsxs("div",{className:"flex flex-col h-full bg-white",children:[e.jsxs("div",{className:"px-8 py-5 border-b border-neutral-100 bg-white transition-all duration-300",children:[e.jsxs("div",{className:"flex items-center flex-wrap gap-3",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"text-base font-medium text-blue-600",children:"Agent Demo"}),e.jsx("span",{className:"text-neutral-300 text-sm",children:"/"}),e.jsx("span",{className:"text-xl font-bold text-neutral-900 tracking-tight",children:d?o.slice(0,50)+(o.length>50?"...":""):s("新会话")})]}),e.jsxs("div",{className:"flex items-center",children:[l==="running"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-blue-50 text-blue-700 rounded-full text-xs font-medium border border-blue-100",children:[e.jsx(_,{className:"w-3.5 h-3.5 animate-pulse"}),e.jsx("span",{children:"Running"})]}),l==="stopped"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-emerald-50 text-emerald-700 rounded-full text-xs font-medium border border-emerald-100",children:[e.jsx(ee,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"Done"})]}),l==="idle"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-neutral-100 text-neutral-600 rounded-full text-xs font-medium border border-neutral-200",children:[e.jsx(te,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"Idle"})]}),l==="starting"&&e.jsxs("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-amber-50 text-amber-700 rounded-full text-xs font-medium border border-amber-100",children:[e.jsx(_,{className:"w-3.5 h-3.5 animate-spin"}),e.jsx("span",{children:"Starting..."})]}),l==="error"&&e.jsx("div",{className:"flex items-center gap-1.5 px-2.5 py-0.5 bg-red-50 text-red-700 rounded-full text-xs font-medium border border-red-100",children:e.jsx("span",{children:"Error"})})]})]}),d&&e.jsxs("div",{className:"mt-1.5 flex items-start gap-2 group max-w-4xl",children:[e.jsx("div",{className:`text-sm text-neutral-600 leading-relaxed cursor-pointer transition-all ${g?"":"truncate"}`,onClick:()=>$(!g),children:o}),e.jsx("button",{onClick:()=>$(!g),className:"mt-0.5 text-neutral-400 opacity-0 group-hover:opacity-100 hover:text-neutral-600 transition-opacity",children:g?e.jsx(ue,{size:14}):e.jsx(ce,{size:14})})]}),e.jsxs("div",{className:"flex items-center gap-6 mt-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:"Agent"}),e.jsx("div",{className:"flex items-center gap-1.5 text-neutral-900 font-medium bg-neutral-50 px-2 py-1 rounded border border-neutral-100",children:W?.name||i||s("未选择")})]}),x!=="DEFAULT"&&e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:"Variant"}),e.jsx("div",{className:"flex items-center gap-1.5 text-neutral-700 font-medium bg-blue-50 px-2 py-1 rounded border border-blue-100",children:x})]}),z&&e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:"Session"}),e.jsxs("div",{className:"flex items-center gap-1.5 text-neutral-700 font-mono bg-neutral-50 px-2 py-1 rounded border border-neutral-100",children:[z.slice(0,8),"..."]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-neutral-400 font-medium",children:s("连接")}),e.jsx("div",{className:`flex items-center gap-1.5 font-medium px-2 py-1 rounded border ${h?"text-emerald-700 bg-emerald-50 border-emerald-100":"text-neutral-500 bg-neutral-50 border-neutral-100"}`,children:s(h?f?"已连接":"连接中...":"未连接")})]}),d&&e.jsx(w,{variant:"outline",size:"sm",onClick:q,className:"ml-auto",children:s("新会话")}),e.jsxs(X,{to:"/settings/profiles",className:`flex items-center gap-1.5 text-xs text-neutral-500 hover:text-neutral-900 transition-colors ${d?"":"ml-auto"}`,children:[e.jsx(se,{size:14}),e.jsx("span",{children:s("Profiles 设置")})]})]})]}),e.jsx("div",{ref:I,className:"flex-1 overflow-y-auto px-8 py-6",children:d?e.jsx("div",{className:"min-h-[200px]",children:N.length===0?e.jsx("div",{className:"text-neutral-400 text-center py-8",children:s("等待 Agent 响应...")}):e.jsx(ne,{ref:C,logs:N,scrollElementRef:I})}):e.jsxs("div",{className:"max-w-2xl mx-auto space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-neutral-900",children:s("选择 Agent")}),e.jsx("div",{className:"flex gap-2 flex-wrap",children:S.map(t=>e.jsxs(w,{variant:i===t.type?"default":"outline",disabled:!t.available,onClick:()=>F(t.type),children:[t.name,t.available&&t.version&&` (${t.version})`,!t.available&&s(" (不可用)")]},t.type))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-neutral-900",children:s("配置变体 (Profile Variant)")}),e.jsx("div",{className:"flex gap-2 flex-wrap",children:U.map(t=>e.jsx("button",{onClick:()=>A(t),className:`px-3 py-1.5 rounded-full text-sm font-medium border transition-colors ${x===t?"bg-neutral-900 text-white border-neutral-900":"bg-white text-neutral-600 border-neutral-200 hover:border-neutral-400"}`,children:t},t))}),p&&p[x]&&e.jsx("p",{className:"mt-2 text-xs text-neutral-500 font-mono",children:Object.entries(p[x]).map(([t,r])=>`${t}: ${JSON.stringify(r)}`).join(", ")})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 text-neutral-900",children:s("输入任务")}),e.jsxs("div",{className:"relative border border-neutral-200 rounded-xl shadow-sm bg-white focus-within:ring-1 focus-within:ring-neutral-300 focus-within:border-neutral-300 transition-all duration-200",children:[e.jsx("textarea",{value:o,onChange:t=>D(t.target.value),rows:4,placeholder:s("描述你想让 Agent 完成的任务..."),className:"w-full px-4 py-3 bg-transparent border-none focus:outline-none focus:ring-0 resize-none text-neutral-900 placeholder-neutral-400 leading-relaxed text-sm"}),e.jsx("div",{className:"flex items-center justify-end px-3 pb-3 pt-1",children:e.jsx(w,{onClick:O,disabled:l==="starting"||!i||!o.trim(),children:s(l==="starting"?"启动中...":"开始")})})]})]})]})}),d&&T.length>0&&e.jsx("div",{className:"px-8 py-2 bg-white border-t border-neutral-100",children:e.jsx(re,{todos:T})}),d&&e.jsx("div",{className:"px-8 py-6 border-t border-neutral-100 bg-white",children:e.jsxs("div",{className:"relative border border-neutral-200 rounded-xl shadow-sm bg-white focus-within:ring-1 focus-within:ring-neutral-300 focus-within:border-neutral-300 transition-all duration-200",children:[e.jsx("textarea",{ref:u,value:m,onChange:G,rows:3,placeholder:s("发送消息给 Agent..."),className:"w-full px-4 py-3 bg-transparent border-none focus:outline-none focus:ring-0 resize-none text-neutral-900 placeholder-neutral-400 leading-relaxed text-sm scrollbar-thin scrollbar-thumb-neutral-200 scrollbar-track-transparent",style:{minHeight:"80px",maxHeight:"210px"},onKeyDown:t=>{t.key==="Enter"&&!t.shiftKey&&!t.repeat&&!t.nativeEvent.isComposing&&t.nativeEvent.keyCode!==229&&(t.preventDefault(),L())}}),e.jsxs("div",{className:"flex items-center justify-between px-3 pb-3 pt-1 border-t border-transparent",children:[e.jsxs("div",{className:"flex items-center gap-1 text-neutral-400",children:[e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Attach File",children:e.jsx(ae,{size:18})}),e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Mention",children:e.jsx(xe,{size:18})}),e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Reference Issue",children:e.jsx(he,{size:18})}),e.jsx("div",{className:"w-px h-4 bg-neutral-200 mx-1"}),e.jsx("button",{className:"p-2 hover:bg-neutral-100 hover:text-neutral-600 rounded-lg transition-colors",title:"Search Web",children:e.jsx(le,{size:18})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[J&&e.jsxs("button",{onClick:K,className:"flex items-center gap-2 px-3 py-2 text-xs font-semibold text-red-600 bg-red-50 hover:bg-red-100 rounded-lg transition-colors",children:[e.jsx(ie,{size:12,fill:"currentColor"}),e.jsx("span",{children:s("停止")})]}),e.jsxs("button",{onClick:L,disabled:!m.trim(),className:`flex items-center gap-2 px-3 py-2 text-xs font-semibold rounded-lg transition-all ${m.trim()?"bg-neutral-900 text-white hover:bg-black shadow-sm":"bg-neutral-100 text-neutral-400 cursor-not-allowed"}`,children:[e.jsx("span",{children:s("发送")}),e.jsx(fe,{size:14})]})]})]})]})})]})}export{De as AgentDemoPage};
@@ -1,4 +1,4 @@
1
- import{r as o,s as v,S as m,C as k,j as s,u as T,d as R}from"./index-CFjAe6OM.js";import{B}from"./button-Dh8FHptl.js";import{c as $}from"./utils-CkSf8FUe.js";function M(n){const{sessionId:c,onOutput:j,onExit:p,onError:N}=n,[S,g]=o.useState(()=>v.isConnected()),[l,u]=o.useState(!1),f=o.useRef({onOutput:j,onExit:p,onError:N});f.current={onOutput:j,onExit:p,onError:N},o.useEffect(()=>{const t=v.getSocket();g(t.connected);const i=()=>g(!0),h=()=>{g(!1),u(!1)},D=r=>{r.sessionId===c&&f.current.onOutput?.(r.data)},O=r=>{r.sessionId===c&&(u(!1),f.current.onExit?.(r.exitCode))},I=r=>{r.sessionId===c&&f.current.onError?.(r.message)},b=r=>{r.sessionId===c&&u(!0)},C=r=>{r.sessionId===c&&u(!1)};return t.on("connect",i),t.on("disconnect",h),t.on(m.SESSION_STDOUT,D),t.on(m.SESSION_EXIT,O),t.on(m.SESSION_ERROR,I),t.on(m.SESSION_SUBSCRIBED,b),t.on(m.SESSION_UNSUBSCRIBED,C),g(t.connected),()=>{t.off("connect",i),t.off("disconnect",h),t.off(m.SESSION_STDOUT,D),t.off(m.SESSION_EXIT,O),t.off(m.SESSION_ERROR,I),t.off(m.SESSION_SUBSCRIBED,b),t.off(m.SESSION_UNSUBSCRIBED,C),t.emit(k.UNSUBSCRIBE,{topic:"session",id:c})}},[c]);const d=o.useCallback(()=>new Promise(t=>{const i=v.getSocket();if(!i.connected){t(!1);return}i.emit(k.SUBSCRIBE,{topic:"session",id:c},h=>{t(h.success)})}),[c]),y=o.useCallback(()=>{v.getSocket().emit(k.UNSUBSCRIBE,{topic:"session",id:c})},[c]),w=o.useCallback(t=>{v.getSocket().emit(k.INPUT,{sessionId:c,data:t})},[c]),E=o.useCallback((t,i)=>{v.getSocket().emit(k.RESIZE,{sessionId:c,cols:t,rows:i})},[c]);return{isConnected:S,isAttached:l,attach:d,detach:y,sendInput:w,resize:E}}function A({className:n,...c}){return s.jsx("div",{"data-slot":"card",className:$("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",n),...c})}function L(){const{t:n}=T(),[c,j]=o.useState([]),[p,N]=o.useState(""),[S,g]=o.useState(""),[l,u]=o.useState(null),[f,d]=o.useState([]),[y,w]=o.useState(!1),[E,t]=o.useState(""),i=o.useRef(null),h=o.useCallback(e=>{d(a=>{const x=a[a.length-1];return x&&x.role==="agent"?[...a.slice(0,-1),{...x,content:x.content+e}]:[...a,{role:"agent",content:e,timestamp:new Date}]})},[]),D=o.useCallback(e=>{d(a=>[...a,{role:"agent",content:`
1
+ import{r as o,s as v,S as m,C as k,j as s,u as T,g as R}from"./index-D7K8KUJH.js";import{B}from"./button-D_HFYACB.js";import{c as $}from"./utils-CkSf8FUe.js";function M(n){const{sessionId:c,onOutput:j,onExit:p,onError:N}=n,[S,g]=o.useState(()=>v.isConnected()),[l,u]=o.useState(!1),f=o.useRef({onOutput:j,onExit:p,onError:N});f.current={onOutput:j,onExit:p,onError:N},o.useEffect(()=>{const t=v.getSocket();g(t.connected);const i=()=>g(!0),h=()=>{g(!1),u(!1)},D=r=>{r.sessionId===c&&f.current.onOutput?.(r.data)},O=r=>{r.sessionId===c&&(u(!1),f.current.onExit?.(r.exitCode))},I=r=>{r.sessionId===c&&f.current.onError?.(r.message)},b=r=>{r.sessionId===c&&u(!0)},C=r=>{r.sessionId===c&&u(!1)};return t.on("connect",i),t.on("disconnect",h),t.on(m.SESSION_STDOUT,D),t.on(m.SESSION_EXIT,O),t.on(m.SESSION_ERROR,I),t.on(m.SESSION_SUBSCRIBED,b),t.on(m.SESSION_UNSUBSCRIBED,C),g(t.connected),()=>{t.off("connect",i),t.off("disconnect",h),t.off(m.SESSION_STDOUT,D),t.off(m.SESSION_EXIT,O),t.off(m.SESSION_ERROR,I),t.off(m.SESSION_SUBSCRIBED,b),t.off(m.SESSION_UNSUBSCRIBED,C),t.emit(k.UNSUBSCRIBE,{topic:"session",id:c})}},[c]);const d=o.useCallback(()=>new Promise(t=>{const i=v.getSocket();if(!i.connected){t(!1);return}i.emit(k.SUBSCRIBE,{topic:"session",id:c},h=>{t(h.success)})}),[c]),y=o.useCallback(()=>{v.getSocket().emit(k.UNSUBSCRIBE,{topic:"session",id:c})},[c]),w=o.useCallback(t=>{v.getSocket().emit(k.INPUT,{sessionId:c,data:t})},[c]),E=o.useCallback((t,i)=>{v.getSocket().emit(k.RESIZE,{sessionId:c,cols:t,rows:i})},[c]);return{isConnected:S,isAttached:l,attach:d,detach:y,sendInput:w,resize:E}}function A({className:n,...c}){return s.jsx("div",{"data-slot":"card",className:$("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",n),...c})}function L(){const{t:n}=T(),[c,j]=o.useState([]),[p,N]=o.useState(""),[S,g]=o.useState(""),[l,u]=o.useState(null),[f,d]=o.useState([]),[y,w]=o.useState(!1),[E,t]=o.useState(""),i=o.useRef(null),h=o.useCallback(e=>{d(a=>{const x=a[a.length-1];return x&&x.role==="agent"?[...a.slice(0,-1),{...x,content:x.content+e}]:[...a,{role:"agent",content:e,timestamp:new Date}]})},[]),D=o.useCallback(e=>{d(a=>[...a,{role:"agent",content:`
2
2
  [进程退出,退出码: ${e}]`,timestamp:new Date}]),u(null)},[]),O=o.useCallback(e=>{d(a=>[...a,{role:"agent",content:`
3
3
  [错误: ${e}]`,timestamp:new Date}])},[]),{isConnected:I,isAttached:b,attach:C}=M({sessionId:l||"",onOutput:h,onExit:D,onError:O});o.useEffect(()=>{R.get("/demo/agents").then(e=>{j(e.agents);const a=e.agents.find(x=>x.available);a&&N(a.type)})},[]),o.useEffect(()=>{i.current?.scrollIntoView({behavior:"smooth"})},[f]),o.useEffect(()=>{l&&I&&!b&&C()},[l,I,b,C]);const r=async()=>{if(!(!p||!S.trim())){w(!0),d([{role:"user",content:S,timestamp:new Date}]);try{const e=await R.post("/demo/start",{agentType:p,prompt:S.trim()});u(e.sessionId),g("")}catch(e){d(a=>[...a,{role:"agent",content:n("启动失败: {message}",{message:e instanceof Error?e.message:n("未知错误")}),timestamp:new Date}])}finally{w(!1)}}},U=async()=>{if(!l||!E.trim())return;const e=E.trim();d(a=>[...a,{role:"user",content:e,timestamp:new Date}]),t("");try{await R.post(`/demo/${l}/message`,{message:e})}catch(a){d(x=>[...x,{role:"agent",content:n("发送失败: {message}",{message:a instanceof Error?a.message:n("未知错误")}),timestamp:new Date}])}},_=async()=>{if(l)try{await R.post(`/demo/${l}/stop`),d(e=>[...e,{role:"agent",content:`
4
4
  [${n("会话已停止")}]`,timestamp:new Date}]),u(null)}catch(e){console.error("Stop failed:",e)}};return s.jsxs("div",{className:"flex flex-col h-full max-w-4xl mx-auto p-4 gap-4",children:[s.jsx("h1",{className:"text-2xl font-bold",children:n("Agent 交互演示")}),!l&&s.jsxs(A,{className:"p-4",children:[s.jsx("h2",{className:"text-lg font-semibold mb-3",children:n("选择 Agent")}),s.jsx("div",{className:"flex gap-2 flex-wrap mb-4",children:c.map(e=>s.jsxs(B,{variant:p===e.type?"default":"outline",disabled:!e.available,onClick:()=>N(e.type),children:[e.name,e.available&&e.version&&` (${e.version})`,!e.available&&n(" (不可用)")]},e.type))}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx("input",{type:"text",value:S,onChange:e=>g(e.target.value),onKeyDown:e=>e.key==="Enter"&&!e.nativeEvent.isComposing&&e.nativeEvent.keyCode!==229&&r(),placeholder:n("输入你的问题或任务..."),className:"flex-1 px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"}),s.jsx(B,{onClick:r,disabled:y||!p||!S.trim(),children:n(y?"启动中...":"开始")})]})]}),s.jsxs(A,{className:"flex-1 p-4 overflow-hidden flex flex-col",children:[s.jsxs("div",{className:"flex justify-between items-center mb-3",children:[s.jsx("h2",{className:"text-lg font-semibold",children:n("对话")}),l&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-sm text-gray-500",children:n(I?b?"已连接":"连接中...":"未连接")}),s.jsx(B,{variant:"outline",size:"sm",onClick:_,children:n("停止")})]})]}),s.jsxs("div",{className:"flex-1 overflow-y-auto space-y-3",children:[f.length===0?s.jsx("div",{className:"text-gray-400 text-center py-8",children:n("选择 Agent 并输入问题开始对话")}):f.map((e,a)=>s.jsxs("div",{className:`p-3 rounded-lg ${e.role==="user"?"bg-blue-100 ml-8":"bg-gray-100 mr-8"}`,children:[s.jsx("div",{className:"text-xs text-gray-500 mb-1",children:e.role==="user"?n("你"):"Agent"}),s.jsx("pre",{className:"whitespace-pre-wrap font-mono text-sm",children:e.content})]},a)),s.jsx("div",{ref:i})]}),l&&s.jsxs("div",{className:"flex gap-2 mt-3 pt-3 border-t",children:[s.jsx("input",{type:"text",value:E,onChange:e=>t(e.target.value),onKeyDown:e=>e.key==="Enter"&&!e.repeat&&!e.nativeEvent.isComposing&&e.nativeEvent.keyCode!==229&&U(),placeholder:n("发送后续消息..."),className:"flex-1 px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"}),s.jsx(B,{onClick:U,disabled:!E.trim(),children:n("发送")})]})]})]})}export{L as DemoPage};
@@ -0,0 +1 @@
1
+ import{u as S,a as y,b as C,c as A,r,t as d,j as e}from"./index-D7K8KUJH.js";import{S as u}from"./select-DfuMoG1o.js";import{u as _}from"./use-providers-BU-lcRuU.js";import"./utils-CkSf8FUe.js";import"./chevron-down-9WClAEn8.js";const w=[{value:"zh-CN",label:"简体中文"},{value:"en",label:"English"}],i="__follow_task__";function k(){const{locale:p,setLocale:h,t}=S(),{data:l}=y(),{data:g}=_(),{data:o}=C(),a=A(),[b,x]=r.useState(i),[m,c]=r.useState(""),[v,n]=r.useState(!1);r.useEffect(()=>{!l||!o||(x(l.commitMessageProviderId||i),c(l.commitMessagePrompt||o.prompt),n(!1))},[l,o]);const f=[{value:i,label:t("跟随任务")},...(g??[]).filter(s=>s.availability.type!=="NOT_FOUND").map(s=>({value:s.provider.id,label:s.provider.name}))],j=r.useCallback(s=>{x(s);const P=s===i?null:s;a.mutate({commitMessageProviderId:P},{onError:()=>d.error(t("保存失败"))})},[a,t]),N=r.useCallback(()=>{const s=m.trim()||null;a.mutate({commitMessagePrompt:s},{onSuccess:()=>{n(!1),d.success(t("已保存"))},onError:()=>d.error(t("保存失败"))})},[m,a,t]);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("h2",{className:"text-lg font-semibold text-neutral-900",children:t("通用设置")}),e.jsx("p",{className:"mt-1 text-sm text-neutral-500",children:t("选择界面语言。设置会保存到本地 Agent Tower 数据库,并在重新打开后继续生效。")})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:t("显示语言")}),e.jsx(u,{value:p,onChange:s=>h(s),options:w.map(s=>({value:s.value,label:s.label}))})]}),e.jsxs("section",{className:"border-t border-neutral-100 pt-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-neutral-900",children:t("Git Commit Message")}),e.jsx("p",{className:"mt-1 text-sm text-neutral-500",children:t("配置自动生成 commit message 时使用的 Agent 渠道和提示词。")}),e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:t("Agent 渠道")}),e.jsx("p",{className:"text-xs text-neutral-400 mb-1.5",children:t('"跟随任务"表示使用当前任务所用的 Agent 渠道。选择具体渠道可使用更经济的模型。')}),e.jsx(u,{value:b,onChange:j,options:f})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:t("提示词模板")}),e.jsx("p",{className:"text-xs text-neutral-400 mb-1.5",children:t("自定义生成 commit message 的提示词。留空则使用内置默认模板。")}),e.jsx("textarea",{value:m,onChange:s=>{c(s.target.value),n(!0)},rows:6,className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm bg-white focus:outline-none focus:border-neutral-400 resize-y font-mono"}),v&&e.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[e.jsx("button",{onClick:N,disabled:a.isPending,className:"px-3 py-1.5 text-xs font-medium text-white bg-neutral-900 rounded-md hover:bg-neutral-800 disabled:opacity-50 transition-colors",children:a.isPending?t("保存中..."):t("保存")}),e.jsx("button",{onClick:()=>{c(l?.commitMessagePrompt||o?.prompt||""),n(!1)},className:"px-3 py-1.5 text-xs text-neutral-500 hover:text-neutral-900 transition-colors",children:t("取消")})]})]})]})]})]})}export{k as GeneralSettingsPage};
@@ -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-CFjAe6OM.js";import{B as j}from"./button-Dh8FHptl.js";import{S as R}from"./select-DN0KH4Bi.js";import{L as z}from"./loader-circle-BiT33tiH.js";import{C as B}from"./circle-check-MgjzSuSN.js";import{C as L}from"./circle-alert-DwzV6nbB.js";import"./utils-CkSf8FUe.js";import"./chevron-down-B-UCtkpw.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
+ import{h as I,d as E,e as P,f as j,q as k,g as x,u as q,r,j as e}from"./index-D7K8KUJH.js";import{B as g}from"./button-D_HFYACB.js";import{S as R}from"./select-DfuMoG1o.js";import{L as z}from"./loader-circle-lo-fmqx0.js";import{C as B}from"./circle-check-cTH6ieYz.js";import{C as L}from"./circle-alert-HHdlJNqe.js";import"./utils-CkSf8FUe.js";import"./chevron-down-9WClAEn8.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 j({mutationFn:a=>x.put("/notifications/settings",a),onSuccess:()=>{t.invalidateQueries({queryKey:k.notifications.settings})}})}function Q(){return j({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(g,{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(g,{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-CFjAe6OM.js";import{u as I,a as L,b as A,c as D}from"./use-profiles-CUlWd_po.js";import{B as N}from"./button-Dh8FHptl.js";import{P as M,T,M as U}from"./modal-hQOddjel.js";import{P as z}from"./pencil-Ca4AsZLH.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(`{
1
+ import{u as V,r as o,j as e}from"./index-D7K8KUJH.js";import{u as I,a as L,b as A,c as D}from"./use-profiles-Dne_0dqT.js";import{B as N}from"./button-D_HFYACB.js";import{P as M,T,M as U}from"./modal-CUBMvXmY.js";import{P as z}from"./pencil-DYpEk25M.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
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};