agent-tower 0.5.3-beta.5 → 0.5.3-beta.6

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 (152) hide show
  1. package/dist/routes/__tests__/filesystem.test.js +5 -2
  2. package/dist/routes/__tests__/filesystem.test.js.map +1 -1
  3. package/dist/routes/__tests__/git.test.d.ts +2 -0
  4. package/dist/routes/__tests__/git.test.d.ts.map +1 -0
  5. package/dist/routes/__tests__/git.test.js +47 -0
  6. package/dist/routes/__tests__/git.test.js.map +1 -0
  7. package/dist/routes/__tests__/workspaces.test.d.ts +2 -0
  8. package/dist/routes/__tests__/workspaces.test.d.ts.map +1 -0
  9. package/dist/routes/__tests__/workspaces.test.js +85 -0
  10. package/dist/routes/__tests__/workspaces.test.js.map +1 -0
  11. package/dist/routes/filesystem.d.ts.map +1 -1
  12. package/dist/routes/filesystem.js +4 -3
  13. package/dist/routes/filesystem.js.map +1 -1
  14. package/dist/routes/git.d.ts.map +1 -1
  15. package/dist/routes/git.js +32 -0
  16. package/dist/routes/git.js.map +1 -1
  17. package/dist/services/__tests__/project.service.test.js +56 -0
  18. package/dist/services/__tests__/project.service.test.js.map +1 -1
  19. package/dist/services/__tests__/task.service.test.js +49 -0
  20. package/dist/services/__tests__/task.service.test.js.map +1 -1
  21. package/dist/services/__tests__/team-reconciler.service.test.js +15 -9
  22. package/dist/services/__tests__/team-reconciler.service.test.js.map +1 -1
  23. package/dist/services/__tests__/team-run.service.test.js +27 -3
  24. package/dist/services/__tests__/team-run.service.test.js.map +1 -1
  25. package/dist/services/__tests__/workspace.service.test.js +49 -1
  26. package/dist/services/__tests__/workspace.service.test.js.map +1 -1
  27. package/dist/services/project-guards.d.ts +4 -0
  28. package/dist/services/project-guards.d.ts.map +1 -1
  29. package/dist/services/project-guards.js +10 -0
  30. package/dist/services/project-guards.js.map +1 -1
  31. package/dist/services/project.service.d.ts +6 -1
  32. package/dist/services/project.service.d.ts.map +1 -1
  33. package/dist/services/project.service.js +31 -29
  34. package/dist/services/project.service.js.map +1 -1
  35. package/dist/services/task.service.d.ts +152 -3
  36. package/dist/services/task.service.d.ts.map +1 -1
  37. package/dist/services/task.service.js +54 -9
  38. package/dist/services/task.service.js.map +1 -1
  39. package/dist/services/team-run.service.d.ts.map +1 -1
  40. package/dist/services/team-run.service.js +11 -2
  41. package/dist/services/team-run.service.js.map +1 -1
  42. package/dist/services/workspace.service.d.ts.map +1 -1
  43. package/dist/services/workspace.service.js +9 -1
  44. package/dist/services/workspace.service.js.map +1 -1
  45. package/dist/web/assets/{AgentDemoPage-DC61uZJ_.js → AgentDemoPage-BqUFGORQ.js} +1 -1
  46. package/dist/web/assets/{AgentLogo-CGrwilQJ.js → AgentLogo-O_lfAIQi.js} +1 -1
  47. package/dist/web/assets/{ConversationPage-DvD_lYUj.js → ConversationPage-t8BHC8qL.js} +1 -1
  48. package/dist/web/assets/CreateTaskInput-D5aroK_o.js +2 -0
  49. package/dist/web/assets/{DemoPage-BDUjXkK3.js → DemoPage-DohwggTK.js} +1 -1
  50. package/dist/web/assets/{GeneralSettingsPage-DuYC1Vhv.js → GeneralSettingsPage-BqSO35vU.js} +1 -1
  51. package/dist/web/assets/{Icons-BqZeUyTx.js → Icons-B5Qr68Dp.js} +1 -1
  52. package/dist/web/assets/{LoadingPreviewPage-DPA8HxNr.js → LoadingPreviewPage-DBVTXpq2.js} +1 -1
  53. package/dist/web/assets/{McpSettingsPage-BO_Fd_mA.js → McpSettingsPage-B4hjk8Q6.js} +1 -1
  54. package/dist/web/assets/{MemberAvatar-BesdHRgJ.js → MemberAvatar-DmWOKCwf.js} +1 -1
  55. package/dist/web/assets/{NotificationSettingsPage-F5HPtn9-.js → NotificationSettingsPage-DiUyq7V-.js} +1 -1
  56. package/dist/web/assets/{ProfileSettingsPage-DweTPF_t.js → ProfileSettingsPage-BcUtq3sY.js} +1 -1
  57. package/dist/web/assets/{ProjectKanbanPage-taUI2xm6.js → ProjectKanbanPage-klp2fAN1.js} +35 -35
  58. package/dist/web/assets/ProjectSettingsPage-D2gQsbTJ.js +2 -0
  59. package/dist/web/assets/{ProviderSettingsPage-Cio0LIzm.js → ProviderSettingsPage-CX8WeQ3x.js} +1 -1
  60. package/dist/web/assets/{SettingsMasterDetail-BnqVBe7H.js → SettingsMasterDetail-BtiI8TDc.js} +1 -1
  61. package/dist/web/assets/TeamSettingsPage-CZgtzFUH.js +1 -0
  62. package/dist/web/assets/{arc-CYddG-Kz.js → arc-BP5t0cJz.js} +1 -1
  63. package/dist/web/assets/{architectureDiagram-3BPJPVTR-B3RXX4-J.js → architectureDiagram-3BPJPVTR-B4nGdxyB.js} +1 -1
  64. package/dist/web/assets/{arrow-left-CufhOEz9.js → arrow-left-CH7x-bnE.js} +1 -1
  65. package/dist/web/assets/{blockDiagram-GPEHLZMM-a7Dr_zcs.js → blockDiagram-GPEHLZMM-C0obS1hu.js} +1 -1
  66. package/dist/web/assets/{c4Diagram-AAUBKEIU-BLwSao_g.js → c4Diagram-AAUBKEIU-DLOq2msX.js} +1 -1
  67. package/dist/web/assets/channel-ByQ8jatA.js +1 -0
  68. package/dist/web/assets/check-EXzHBr5H.js +1 -0
  69. package/dist/web/assets/{chevron-down-BQyZkT4A.js → chevron-down-CBY3fFTT.js} +1 -1
  70. package/dist/web/assets/{chevron-right-94xg9kiO.js → chevron-right-DZo7j27r.js} +1 -1
  71. package/dist/web/assets/{chevron-up-BZM-aGAU.js → chevron-up-721LBv_e.js} +1 -1
  72. package/dist/web/assets/{chunk-2J33WTMH-CV8jFvSt.js → chunk-2J33WTMH-C07Su0AF.js} +1 -1
  73. package/dist/web/assets/{chunk-4BX2VUAB-DXquqZ4n.js → chunk-4BX2VUAB-DAdn-ED3.js} +1 -1
  74. package/dist/web/assets/{chunk-55IACEB6-BowEEH_6.js → chunk-55IACEB6-BL4-BcAX.js} +1 -1
  75. package/dist/web/assets/{chunk-727SXJPM-Cbn9G9U_.js → chunk-727SXJPM-BmmMDMNV.js} +1 -1
  76. package/dist/web/assets/{chunk-AQP2D5EJ-C-0K23VQ.js → chunk-AQP2D5EJ-CeLsYTvJ.js} +1 -1
  77. package/dist/web/assets/{chunk-FMBD7UC4-BJv0I_Lt.js → chunk-FMBD7UC4-Bs7S01MB.js} +1 -1
  78. package/dist/web/assets/{chunk-ND2GUHAM-DJBjsrJO.js → chunk-ND2GUHAM-uqytV5JO.js} +1 -1
  79. package/dist/web/assets/{chunk-QZHKN3VN-CBw_GG0t.js → chunk-QZHKN3VN-DGM3LKCe.js} +1 -1
  80. package/dist/web/assets/{circle-alert-lbce0dXY.js → circle-alert-Dkp6R_Ml.js} +1 -1
  81. package/dist/web/assets/classDiagram-4FO5ZUOK-BTR6CDm1.js +1 -0
  82. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-BTR6CDm1.js +1 -0
  83. package/dist/web/assets/{code-block-OCS4YCEC-CRG-xCnX.js → code-block-OCS4YCEC-C_fs5i5h.js} +1 -1
  84. package/dist/web/assets/{confirm-dialog-Cnw_rxtM.js → confirm-dialog-IGqDL03n.js} +1 -1
  85. package/dist/web/assets/{cose-bilkent-S5V4N54A-DCNqQrFt.js → cose-bilkent-S5V4N54A-2VABc7UM.js} +1 -1
  86. package/dist/web/assets/{dagre-BM42HDAG-oecZRFap.js → dagre-BM42HDAG-D0-HOAOA.js} +1 -1
  87. package/dist/web/assets/{diagram-2AECGRRQ-BXx6WNMi.js → diagram-2AECGRRQ-Cyt7AAOQ.js} +1 -1
  88. package/dist/web/assets/{diagram-5GNKFQAL-Bu66xpEW.js → diagram-5GNKFQAL-BBv9SoKB.js} +1 -1
  89. package/dist/web/assets/{diagram-KO2AKTUF-ZGMyoO90.js → diagram-KO2AKTUF-DV5NTHkX.js} +1 -1
  90. package/dist/web/assets/{diagram-LMA3HP47-riQUwPgu.js → diagram-LMA3HP47-eNPojcJF.js} +1 -1
  91. package/dist/web/assets/{diagram-OG6HWLK6-H_PHYJoy.js → diagram-OG6HWLK6-DYNkChUG.js} +1 -1
  92. package/dist/web/assets/{erDiagram-TEJ5UH35-ePGpWuWD.js → erDiagram-TEJ5UH35-ZXZ2vyVY.js} +1 -1
  93. package/dist/web/assets/{flowDiagram-I6XJVG4X-BZUDzSVZ.js → flowDiagram-I6XJVG4X-E8oqHUJx.js} +1 -1
  94. package/dist/web/assets/{folder-Ca5RFac7.js → folder-BxT7ExMF.js} +1 -1
  95. package/dist/web/assets/folder-picker-57gIIPSi.js +1 -0
  96. package/dist/web/assets/{ganttDiagram-6RSMTGT7-D2UOmWEL.js → ganttDiagram-6RSMTGT7-CEAjt7Nr.js} +1 -1
  97. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-DEzWWRW3.js → gitGraphDiagram-PVQCEYII-3dNQBESX.js} +1 -1
  98. package/dist/web/assets/{index-M-QRACZK.js → index-B2TV-FU2.js} +3 -3
  99. package/dist/web/assets/index-D1vY2KQU.css +1 -0
  100. package/dist/web/assets/{index-JK3A62-g.js → index-DhYpUXuu.js} +4 -4
  101. package/dist/web/assets/{infoDiagram-5YYISTIA-BNClnI_5.js → infoDiagram-5YYISTIA-DkDDpqvX.js} +1 -1
  102. package/dist/web/assets/{input-7UYarzFy.js → input-CupQF5Np.js} +1 -1
  103. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-B1aSs8GW.js → ishikawaDiagram-YF4QCWOH-BSm79ZFA.js} +1 -1
  104. package/dist/web/assets/{journeyDiagram-JHISSGLW-DlXxUTcw.js → journeyDiagram-JHISSGLW-BCP6kLky.js} +1 -1
  105. package/dist/web/assets/{kanban-definition-UN3LZRKU-Ctkuw8kN.js → kanban-definition-UN3LZRKU-jzLQwKw3.js} +1 -1
  106. package/dist/web/assets/{layers-C89p38EX.js → layers-CCP9NEZU.js} +1 -1
  107. package/dist/web/assets/{linear--QsFiowO.js → linear-DWq5jvYH.js} +1 -1
  108. package/dist/web/assets/{loader-circle-DolxjVmY.js → loader-circle-RvIxJahM.js} +1 -1
  109. package/dist/web/assets/{mermaid-NOHMQCX5-CW_FGpKP.js → mermaid-NOHMQCX5-v8DEF9xx.js} +3 -3
  110. package/dist/web/assets/{message-square-KV4Azzxs.js → message-square-tSoG7yGO.js} +1 -1
  111. package/dist/web/assets/{mindmap-definition-RKZ34NQL-Dm6rZMiM.js → mindmap-definition-RKZ34NQL-C5FxGBPQ.js} +1 -1
  112. package/dist/web/assets/{modal-PZSR91HW.js → modal-Dc2shjmi.js} +1 -1
  113. package/dist/web/assets/{pencil-9lMJOuw2.js → pencil-BOmVWDhP.js} +1 -1
  114. package/dist/web/assets/{pieDiagram-4H26LBE5-DbQPjRBP.js → pieDiagram-4H26LBE5-CmWVRs82.js} +1 -1
  115. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-DeRrMc4Y.js → quadrantDiagram-W4KKPZXB-B4s3NNDO.js} +1 -1
  116. package/dist/web/assets/{requirementDiagram-4Y6WPE33-aajAoXSH.js → requirementDiagram-4Y6WPE33-C2KmzOV2.js} +1 -1
  117. package/dist/web/assets/{rotate-ccw-D7tnDKF_.js → rotate-ccw-BJfFrvl2.js} +1 -1
  118. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-DWsta0ns.js → sankeyDiagram-5OEKKPKP-CJbPnzq8.js} +1 -1
  119. package/dist/web/assets/{select-CTiftuHJ.js → select-C_UWYFsQ.js} +1 -1
  120. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-BGBP9NTB.js → sequenceDiagram-3UESZ5HK-BFea2ow4.js} +1 -1
  121. package/dist/web/assets/{stateDiagram-AJRCARHV-Dl0Q7uMb.js → stateDiagram-AJRCARHV-osdtBRSX.js} +1 -1
  122. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-ChsboHHf.js +1 -0
  123. package/dist/web/assets/{switch-BhqMnTiu.js → switch-C6O0UllM.js} +1 -1
  124. package/dist/web/assets/{terminal-BR0PXV2W.js → terminal-BKrr_mRJ.js} +1 -1
  125. package/dist/web/assets/{textarea-eWIZ3eZW.js → textarea-Cj61Z7ha.js} +1 -1
  126. package/dist/web/assets/{timeline-definition-PNZ67QCA-DuDIvs1s.js → timeline-definition-PNZ67QCA-BlXV0jf2.js} +1 -1
  127. package/dist/web/assets/{trash-2-C7F85sIB.js → trash-2-D2zJVeEr.js} +1 -1
  128. package/dist/web/assets/{upload-CQTsuurY.js → upload-Q5mYpwnh.js} +1 -1
  129. package/dist/web/assets/{use-profiles-Btexu_oH.js → use-profiles-BSYIQUHp.js} +1 -1
  130. package/dist/web/assets/{use-providers-BEPU5ALg.js → use-providers-Ct5qGj1d.js} +1 -1
  131. package/dist/web/assets/{useNormalizedLogs-CvCCSYxy.js → useNormalizedLogs-DqPhzW9t.js} +1 -1
  132. package/dist/web/assets/{vennDiagram-CIIHVFJN-BDyKeyr8.js → vennDiagram-CIIHVFJN-CCuhn7zI.js} +1 -1
  133. package/dist/web/assets/{wardley-L42UT6IY-DAOA5Zsv.js → wardley-L42UT6IY-Xu-SY-Xt.js} +1 -1
  134. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CCmLvkBT.js → wardleyDiagram-YWT4CUSO-BDVBG-Eu.js} +1 -1
  135. package/dist/web/assets/{xychartDiagram-2RQKCTM6-EsyeKzfj.js → xychartDiagram-2RQKCTM6-DC5IWyMr.js} +1 -1
  136. package/dist/web/index.html +2 -2
  137. package/node_modules/@agent-tower/shared/dist/types.d.ts +4 -0
  138. package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
  139. package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
  140. package/node_modules/@prisma/client/.prisma/client/edge.js +3 -4
  141. package/node_modules/@prisma/client/.prisma/client/index.js +3 -4
  142. package/package.json +1 -1
  143. package/dist/web/assets/CreateTaskInput-CstzayW9.js +0 -2
  144. package/dist/web/assets/ProjectSettingsPage-BfTQwRb7.js +0 -2
  145. package/dist/web/assets/TeamSettingsPage-CHoLj7rL.js +0 -1
  146. package/dist/web/assets/channel-BTbcDemz.js +0 -1
  147. package/dist/web/assets/check-C5Ba8Rby.js +0 -1
  148. package/dist/web/assets/classDiagram-4FO5ZUOK-D4Noh8IG.js +0 -1
  149. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-D4Noh8IG.js +0 -1
  150. package/dist/web/assets/folder-picker-CZIjxGNQ.js +0 -1
  151. package/dist/web/assets/index-17XUvLGe.css +0 -1
  152. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BEhmiwth.js +0 -1
@@ -5,7 +5,7 @@ import { prisma } from '../utils/index.js';
5
5
  import { NotFoundError, ValidationError } from '../errors.js';
6
6
  import { execGit } from '../git/git-cli.js';
7
7
  import { getWorkspaceGitWatcherService } from '../core/container.js';
8
- import { ensureProjectIsMutable } from './project-guards.js';
8
+ import { ensureProjectIsMutable, hasGitMetadata } from './project-guards.js';
9
9
  import { TaskStatus, SessionStatus, WorkspaceStatus, WorkspaceKind, } from '../types/index.js';
10
10
  async function getRepoRemoteUrl(repoPath) {
11
11
  try {
@@ -19,27 +19,17 @@ async function getRepoRemoteUrl(repoPath) {
19
19
  }
20
20
  function assertDirectoryPathExists(resolvedPath) {
21
21
  if (!fs.existsSync(resolvedPath)) {
22
- throw new ValidationError(`repoPath does not exist: ${resolvedPath}`);
22
+ throw new ValidationError(`Project path does not exist: ${resolvedPath}`);
23
23
  }
24
24
  const stat = fs.statSync(resolvedPath);
25
25
  if (!stat.isDirectory()) {
26
- throw new ValidationError(`repoPath is not a directory: ${resolvedPath}`);
27
- }
28
- }
29
- function hasGitMetadata(resolvedPath) {
30
- const gitPath = path.join(resolvedPath, '.git');
31
- return fs.existsSync(gitPath);
32
- }
33
- function assertRepoPathExists(resolvedPath) {
34
- assertDirectoryPathExists(resolvedPath);
35
- if (!hasGitMetadata(resolvedPath)) {
36
- throw new ValidationError(`repoPath is not a valid Git repository (no .git found): ${resolvedPath}`);
26
+ throw new ValidationError(`Project path is not a directory: ${resolvedPath}`);
37
27
  }
38
28
  }
39
29
  async function assertDirectoryIsEmpty(resolvedPath) {
40
30
  const entries = await fsPromises.readdir(resolvedPath);
41
31
  if (entries.length > 0) {
42
- throw new ValidationError(`repoPath is not a Git repository and is not empty: ${resolvedPath}`);
32
+ throw new ValidationError(`Project path is not a Git repository and is not empty: ${resolvedPath}`);
43
33
  }
44
34
  }
45
35
  /**
@@ -77,9 +67,9 @@ async function initializeEmptyRepository(repoPath) {
77
67
  async function removeGitMetadata(repoPath) {
78
68
  await fsPromises.rm(path.join(repoPath, '.git'), { recursive: true, force: true }).catch(() => { });
79
69
  }
80
- async function resolveAndValidateRepoPath(repoPath) {
70
+ async function resolveProjectPath(repoPath) {
81
71
  const resolvedPath = path.resolve(repoPath);
82
- assertRepoPathExists(resolvedPath);
72
+ assertDirectoryPathExists(resolvedPath);
83
73
  return {
84
74
  resolvedPath,
85
75
  repoRemoteUrl: await getRepoRemoteUrl(resolvedPath),
@@ -91,7 +81,11 @@ async function prepareRepoForProjectCreate(repoPath, initEmptyRepo) {
91
81
  let initialized = false;
92
82
  if (!hasGitMetadata(resolvedPath)) {
93
83
  if (!initEmptyRepo) {
94
- throw new ValidationError(`repoPath is not a valid Git repository (no .git found): ${resolvedPath}`);
84
+ return {
85
+ resolvedPath,
86
+ repoRemoteUrl: null,
87
+ initialized,
88
+ };
95
89
  }
96
90
  await assertDirectoryIsEmpty(resolvedPath);
97
91
  try {
@@ -118,9 +112,9 @@ async function prepareRepoForProjectCreate(repoPath, initEmptyRepo) {
118
112
  initialized,
119
113
  };
120
114
  }
121
- async function isValidGitRepo(repoPath) {
115
+ async function isValidProjectDirectory(repoPath) {
122
116
  try {
123
- assertRepoPathExists(path.resolve(repoPath));
117
+ assertDirectoryPathExists(path.resolve(repoPath));
124
118
  return true;
125
119
  }
126
120
  catch {
@@ -132,7 +126,7 @@ function buildRepoIdentityWarnings(previousProject, nextRepo) {
132
126
  const previousBaseName = path.basename(previousProject.repoPath);
133
127
  const nextBaseName = path.basename(nextRepo.resolvedPath);
134
128
  if (previousBaseName && nextBaseName && previousBaseName !== nextBaseName) {
135
- warnings.push(`Repository folder name changed from "${previousBaseName}" to "${nextBaseName}".`);
129
+ warnings.push(`Project folder name changed from "${previousBaseName}" to "${nextBaseName}".`);
136
130
  }
137
131
  if (previousProject.repoRemoteUrl && nextRepo.repoRemoteUrl) {
138
132
  if (previousProject.repoRemoteUrl !== nextRepo.repoRemoteUrl) {
@@ -167,7 +161,7 @@ export class ProjectService {
167
161
  prisma.project.count({ where }),
168
162
  ]);
169
163
  return {
170
- data,
164
+ data: data.map((project) => this.withGitMetadata(project)),
171
165
  total,
172
166
  page,
173
167
  limit,
@@ -209,11 +203,12 @@ export class ProjectService {
209
203
  break;
210
204
  }
211
205
  }
212
- return { ...project, taskStats };
206
+ return { ...this.withGitMetadata(project), taskStats };
213
207
  }
214
208
  /**
215
209
  * 创建项目
216
- * - 校验 repoPath 是否存在且为有效的 Git 仓库
210
+ * - 校验项目路径是否存在且为目录
211
+ * - 允许非 Git 目录作为本地项目打开
217
212
  * - 允许对空目录执行 Git 初始化
218
213
  */
219
214
  async create(input) {
@@ -226,7 +221,7 @@ export class ProjectService {
226
221
  }
227
222
  const { resolvedPath, repoRemoteUrl, initialized } = await prepareRepoForProjectCreate(input.repoPath, input.initEmptyRepo ?? false);
228
223
  try {
229
- return await prisma.project.create({
224
+ const created = await prisma.project.create({
230
225
  data: {
231
226
  name: input.name,
232
227
  description: input.description,
@@ -238,6 +233,7 @@ export class ProjectService {
238
233
  quickCommands: input.quickCommands,
239
234
  },
240
235
  });
236
+ return this.withGitMetadata(created);
241
237
  }
242
238
  catch (error) {
243
239
  if (initialized) {
@@ -339,13 +335,13 @@ export class ProjectService {
339
335
  throw new ValidationError(`Project "${project.name}" is not archived`);
340
336
  }
341
337
  const wantsNewRepoPath = Boolean(input.repoPath?.trim());
342
- const currentRepoIsValid = await isValidGitRepo(project.repoPath);
343
- const requiresRepoPath = Boolean(project.repoDeletedAt) || !currentRepoIsValid;
338
+ const currentPathIsValid = await isValidProjectDirectory(project.repoPath);
339
+ const requiresRepoPath = Boolean(project.repoDeletedAt) || !currentPathIsValid;
344
340
  if (requiresRepoPath && !wantsNewRepoPath) {
345
- throw new ValidationError(`Project "${project.name}" needs a valid repoPath before it can be restored.`);
341
+ throw new ValidationError(`Project "${project.name}" needs a valid project path before it can be restored.`);
346
342
  }
347
343
  const nextRepo = wantsNewRepoPath
348
- ? await resolveAndValidateRepoPath(input.repoPath.trim())
344
+ ? await resolveProjectPath(input.repoPath.trim())
349
345
  : {
350
346
  resolvedPath: project.repoPath,
351
347
  repoRemoteUrl: project.repoRemoteUrl,
@@ -361,7 +357,7 @@ export class ProjectService {
361
357
  },
362
358
  });
363
359
  return {
364
- project: restored,
360
+ project: this.withGitMetadata(restored),
365
361
  warnings,
366
362
  };
367
363
  }
@@ -377,5 +373,11 @@ export class ProjectService {
377
373
  this.workspaceGitWatcher.unwatchWorkspace(workspaceId);
378
374
  }
379
375
  }
376
+ withGitMetadata(project) {
377
+ return {
378
+ ...project,
379
+ isGitRepo: hasGitMetadata(project.repoPath),
380
+ };
381
+ }
380
382
  }
381
383
  //# sourceMappingURL=project.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/services/project.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/services/project.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AA0D3B,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,YAAoB;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,eAAe,CACvB,gCAAgC,YAAY,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CACvB,oCAAoC,YAAY,EAAE,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,YAAoB;IACxD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CACvB,0DAA0D,YAAY,EAAE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,QAAQ,EAAE;gBACtB,IAAI;gBACJ,uBAAuB;gBACvB,IAAI;gBACJ,8BAA8B;gBAC9B,QAAQ;gBACR,eAAe;gBACf,eAAe;gBACf,IAAI;gBACJ,uBAAuB;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,IAAI,eAAe,CACvB,wDAAwD,GAAG,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,QAAgB;IACvD,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAIhD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAExC,OAAO;QACL,YAAY;QACZ,aAAa,EAAE,MAAM,gBAAgB,CAAC,YAAY,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,QAAgB,EAChB,aAAsB;IAMtB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAExC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;gBACL,YAAY;gBACZ,aAAa,EAAE,IAAI;gBACnB,WAAW;aACZ,CAAC;QACJ,CAAC;QAED,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;YAC9C,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO;QACL,YAAY;QACZ,aAAa,EAAE,MAAM,gBAAgB,CAAC,YAAY,CAAC;QACnD,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,eAAmE,EACnE,QAAgE;IAEhE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,gBAAgB,IAAI,YAAY,IAAI,gBAAgB,KAAK,YAAY,EAAE,CAAC;QAC1E,QAAQ,CAAC,IAAI,CACX,qCAAqC,gBAAgB,SAAS,YAAY,IAAI,CAC/E,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5D,IAAI,eAAe,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC7D,QAAQ,CAAC,IAAI,CACX,uFAAuF,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACpE,QAAQ,CAAC,IAAI,CACX,gIAAgI,CACjI,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,cAAc;IAEN;IADnB,YACmB,sBAA4E,6BAA6B,EAAE;QAA3G,wBAAmB,GAAnB,mBAAmB,CAAwF;IAC3H,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAA2B,EAAE;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAExE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,KAAK;gBACL,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC9B,IAAI;gBACJ,IAAI,EAAE,KAAK;aACZ,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC1D,KAAK;YACL,IAAI;YACJ,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;SACnD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,aAAa;QACb,MAAM,SAAS,GAAc;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;SACR,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,UAAU,CAAC,IAAI;oBAClB,SAAS,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM;gBACR,KAAK,UAAU,CAAC,WAAW;oBACzB,SAAS,CAAC,UAAU,EAAE,CAAC;oBACvB,MAAM;gBACR,KAAK,UAAU,CAAC,SAAS;oBACvB,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM;gBACR,KAAK,UAAU,CAAC,IAAI;oBAClB,SAAS,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAyB;QACpC,SAAS;QACT,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAC9C,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;SAC5B,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CACvB,wBAAwB,KAAK,CAAC,IAAI,kBAAkB,CACrD,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM,2BAA2B,CACpF,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,IAAI,KAAK,CAC7B,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1C,IAAI,EAAE;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,YAAY;oBACtB,aAAa;oBACb,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM;oBACtC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;iBACnC;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,KAAyB;QAChD,UAAU;QACV,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAEvD,aAAa;QACb,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC9C,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;aAC5B,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,wBAAwB,KAAK,CAAC,IAAI,kBAAkB,CACrD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,QAA6B,EAAE;QACvD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,OAAO,EAAE;wBACP,UAAU,EAAE;4BACV,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;yBAC5B;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,eAAe,CAAC,YAAY,OAAO,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CACzD,SAAS,CAAC,QAAQ,CAAC,MAAM,CACvB,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO;YACxC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,CAC3C,CACF,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,eAAe,CACvB,YAAY,OAAO,CAAC,IAAI,sEAAsE,CAC/F,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,aAAa;aACrC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC;aAClE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAC3C,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;gBAChC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE;gBACzC,IAAI,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,IAAI,GAAG,CACL,aAAa;iBACV,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,QAAQ,CAAC;iBACzE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC;iBAC1C,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACtD,CACF,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,CACf,mBAAmB,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CACvC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC9D,CACF,CAAC;YACF,MAAM,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAExE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;oBAChC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE;oBACrE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI,IAAI,EAAE;gBACtB,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;aACpD;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,QAA6B,EAAE;QACvD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,eAAe,CAAC,YAAY,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAE/E,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,IAAI,eAAe,CACvB,YAAY,OAAO,CAAC,IAAI,yDAAyD,CAClF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB;YAC/B,CAAC,CAAC,MAAM,kBAAkB,CAAC,KAAK,CAAC,QAAS,CAAC,IAAI,EAAE,CAAC;YAClD,CAAC,CAAC;gBACE,YAAY,EAAE,OAAO,CAAC,QAAQ;gBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC;QAEN,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,QAAQ,EAAE,QAAQ,CAAC,YAAY;gBAC/B,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;aACpB;SACF,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YACvC,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,YAAsB;QAC9C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,eAAe,CAAiC,OAAU;QAChE,OAAO;YACL,GAAG,OAAO;YACV,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC5C,CAAC;IACJ,CAAC;CACF"}
@@ -33,7 +33,7 @@ export declare class TaskService {
33
33
  * 获取项目的任务列表(支持按状态过滤和分页)
34
34
  */
35
35
  findByProjectId(projectId: string, params?: FindTasksParams): Promise<{
36
- data: ({
36
+ data: (Omit<{
37
37
  id: string;
38
38
  createdAt: Date;
39
39
  status: string;
@@ -87,6 +87,24 @@ export declare class TaskService {
87
87
  setupScript: string | null;
88
88
  quickCommands: string | null;
89
89
  };
90
+ }, "project"> & {
91
+ project: {
92
+ id: string;
93
+ name: string;
94
+ createdAt: Date;
95
+ description: string | null;
96
+ updatedAt: Date;
97
+ repoDeletedAt: Date | null;
98
+ archivedAt: Date | null;
99
+ repoPath: string;
100
+ repoRemoteUrl: string | null;
101
+ mainBranch: string;
102
+ copyFiles: string | null;
103
+ setupScript: string | null;
104
+ quickCommands: string | null;
105
+ } & {
106
+ isGitRepo: boolean;
107
+ };
90
108
  } & {
91
109
  title: string;
92
110
  titlePreview: string;
@@ -101,7 +119,7 @@ export declare class TaskService {
101
119
  /**
102
120
  * 获取任务详情
103
121
  */
104
- findById(id: string): Promise<{
122
+ findById(id: string): Promise<Omit<{
105
123
  id: string;
106
124
  createdAt: Date;
107
125
  status: string;
@@ -140,6 +158,39 @@ export declare class TaskService {
140
158
  title: string;
141
159
  position: number;
142
160
  projectId: string;
161
+ project: {
162
+ id: string;
163
+ name: string;
164
+ createdAt: Date;
165
+ description: string | null;
166
+ updatedAt: Date;
167
+ repoDeletedAt: Date | null;
168
+ archivedAt: Date | null;
169
+ repoPath: string;
170
+ repoRemoteUrl: string | null;
171
+ mainBranch: string;
172
+ copyFiles: string | null;
173
+ setupScript: string | null;
174
+ quickCommands: string | null;
175
+ };
176
+ }, "project"> & {
177
+ project: {
178
+ id: string;
179
+ name: string;
180
+ createdAt: Date;
181
+ description: string | null;
182
+ updatedAt: Date;
183
+ repoDeletedAt: Date | null;
184
+ archivedAt: Date | null;
185
+ repoPath: string;
186
+ repoRemoteUrl: string | null;
187
+ mainBranch: string;
188
+ copyFiles: string | null;
189
+ setupScript: string | null;
190
+ quickCommands: string | null;
191
+ } & {
192
+ isGitRepo: boolean;
193
+ };
143
194
  } & {
144
195
  title: string;
145
196
  titlePreview: string;
@@ -161,6 +212,22 @@ export declare class TaskService {
161
212
  * - 自动计算 position(同状态下最大 position + 1)
162
213
  */
163
214
  create(projectId: string, input: CreateTaskInput): Promise<{
215
+ project: {
216
+ isGitRepo: boolean;
217
+ id: string;
218
+ name: string;
219
+ createdAt: Date;
220
+ description: string | null;
221
+ updatedAt: Date;
222
+ repoDeletedAt: Date | null;
223
+ archivedAt: Date | null;
224
+ repoPath: string;
225
+ repoRemoteUrl: string | null;
226
+ mainBranch: string;
227
+ copyFiles: string | null;
228
+ setupScript: string | null;
229
+ quickCommands: string | null;
230
+ };
164
231
  id: string;
165
232
  createdAt: Date;
166
233
  status: string;
@@ -176,6 +243,22 @@ export declare class TaskService {
176
243
  * 更新任务基本信息
177
244
  */
178
245
  update(id: string, input: UpdateTaskInput): Promise<{
246
+ project: {
247
+ isGitRepo: boolean;
248
+ id: string;
249
+ name: string;
250
+ createdAt: Date;
251
+ description: string | null;
252
+ updatedAt: Date;
253
+ repoDeletedAt: Date | null;
254
+ archivedAt: Date | null;
255
+ repoPath: string;
256
+ repoRemoteUrl: string | null;
257
+ mainBranch: string;
258
+ copyFiles: string | null;
259
+ setupScript: string | null;
260
+ quickCommands: string | null;
261
+ };
179
262
  id: string;
180
263
  createdAt: Date;
181
264
  status: string;
@@ -191,7 +274,23 @@ export declare class TaskService {
191
274
  * 更新任务状态(含状态流转校验)
192
275
  * 更新后通过 EventBus 发射 task:updated 事件,通知前端实时更新
193
276
  */
194
- updateStatus(id: string, status: TaskStatus): Promise<{
277
+ updateStatus(id: string, status: TaskStatus): Promise<Omit<{
278
+ project: {
279
+ id: string;
280
+ name: string;
281
+ createdAt: Date;
282
+ description: string | null;
283
+ updatedAt: Date;
284
+ repoDeletedAt: Date | null;
285
+ archivedAt: Date | null;
286
+ repoPath: string;
287
+ repoRemoteUrl: string | null;
288
+ mainBranch: string;
289
+ copyFiles: string | null;
290
+ setupScript: string | null;
291
+ quickCommands: string | null;
292
+ };
293
+ } & {
195
294
  id: string;
196
295
  createdAt: Date;
197
296
  status: string;
@@ -202,12 +301,46 @@ export declare class TaskService {
202
301
  position: number;
203
302
  projectId: string;
204
303
  deletedAt: Date | null;
304
+ }, "project"> & {
305
+ project: {
306
+ id: string;
307
+ name: string;
308
+ createdAt: Date;
309
+ description: string | null;
310
+ updatedAt: Date;
311
+ repoDeletedAt: Date | null;
312
+ archivedAt: Date | null;
313
+ repoPath: string;
314
+ repoRemoteUrl: string | null;
315
+ mainBranch: string;
316
+ copyFiles: string | null;
317
+ setupScript: string | null;
318
+ quickCommands: string | null;
319
+ } & {
320
+ isGitRepo: boolean;
321
+ };
205
322
  }>;
206
323
  /**
207
324
  * 更新任务位置(用于拖拽排序)
208
325
  * 如果同时传了 status,会进行状态流转并通知前端
209
326
  */
210
327
  updatePosition(id: string, position: number, status?: TaskStatus): Promise<{
328
+ project: {
329
+ isGitRepo: boolean;
330
+ id: string;
331
+ name: string;
332
+ createdAt: Date;
333
+ description: string | null;
334
+ updatedAt: Date;
335
+ repoDeletedAt: Date | null;
336
+ archivedAt: Date | null;
337
+ repoPath: string;
338
+ repoRemoteUrl: string | null;
339
+ mainBranch: string;
340
+ copyFiles: string | null;
341
+ setupScript: string | null;
342
+ quickCommands: string | null;
343
+ };
211
344
  id: string;
212
345
  createdAt: Date;
213
346
  status: string;
@@ -248,6 +381,22 @@ export declare class TaskService {
248
381
  * 4. 通知前端 — 用户可重新派发 Agent(会创建新 Worktree)
249
382
  */
250
383
  retry(id: string): Promise<{
384
+ project: {
385
+ isGitRepo: boolean;
386
+ id: string;
387
+ name: string;
388
+ createdAt: Date;
389
+ description: string | null;
390
+ updatedAt: Date;
391
+ repoDeletedAt: Date | null;
392
+ archivedAt: Date | null;
393
+ repoPath: string;
394
+ repoRemoteUrl: string | null;
395
+ mainBranch: string;
396
+ copyFiles: string | null;
397
+ setupScript: string | null;
398
+ quickCommands: string | null;
399
+ };
251
400
  id: string;
252
401
  createdAt: Date;
253
402
  status: string;
@@ -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;AAO/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAuB,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAKrF,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;AAeD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,oCAAoC,MAAiC,CAAC;AAmInF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,SAA0B,GAAG,MAAM,CAM9G;AAqCD,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAHnB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,cAAc,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG,SAAqB,EAC3E,mBAAmB,GAAE,IAAI,CAAC,0BAA0B,EAAE,kBAAkB,CAAmC;IAG9H;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkErE;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuBnB,YAAY,CAAC,EAAE,EAAE,MAAM;;;;;;;;;IAyC7B;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;;IA6BtD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;;IAiB/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;IA0IvB;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;;;;;IAgD3C;;;;;;;OAOG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;IAgDtB;;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":"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"}
@@ -3,7 +3,7 @@ import { TaskStatus, SessionStatus, SessionPurpose, WorkspaceStatus } from '../t
3
3
  import { getWorkspaceWorkingDir } from './workspace-kind.js';
4
4
  import { NotFoundError, ValidationError, InvalidStateTransitionError, } from '../errors.js';
5
5
  import { getWorkspaceGitWatcherService } from '../core/container.js';
6
- import { ensureProjectIsMutable } from './project-guards.js';
6
+ import { ensureProjectIsMutable, hasGitMetadata } from './project-guards.js';
7
7
  import { defaultTeamLockService } from './team-lock.service.js';
8
8
  /**
9
9
  * 合法的状态流转规则
@@ -153,6 +153,18 @@ function withTaskPreviews(task, options = {}) {
153
153
  }
154
154
  return base;
155
155
  }
156
+ function withProjectGitMetadata(task) {
157
+ return {
158
+ ...task,
159
+ project: {
160
+ ...task.project,
161
+ isGitRepo: hasGitMetadata(task.project.repoPath),
162
+ },
163
+ };
164
+ }
165
+ function buildProjectGitMetadata(project) {
166
+ return { isGitRepo: hasGitMetadata(project.repoPath) };
167
+ }
156
168
  function buildTaskPrompt(task) {
157
169
  const title = task.title.trim();
158
170
  const description = task.description;
@@ -227,7 +239,7 @@ export class TaskService {
227
239
  return (a.position ?? 0) - (b.position ?? 0);
228
240
  });
229
241
  return {
230
- data: data.map((task) => withTaskPreviews(task, { omitDescription: true })),
242
+ data: data.map((task) => withTaskPreviews(withProjectGitMetadata(task), { omitDescription: true })),
231
243
  total,
232
244
  page,
233
245
  limit,
@@ -243,6 +255,7 @@ export class TaskService {
243
255
  select: {
244
256
  id: true,
245
257
  projectId: true,
258
+ project: true,
246
259
  title: true,
247
260
  status: true,
248
261
  priority: true,
@@ -255,7 +268,7 @@ export class TaskService {
255
268
  if (!task) {
256
269
  throw new NotFoundError('Task', id);
257
270
  }
258
- return withTaskPreviews(task, { omitDescription: true });
271
+ return withTaskPreviews(withProjectGitMetadata(task), { omitDescription: true });
259
272
  }
260
273
  async findBodyById(id) {
261
274
  const task = await prisma.task.findFirst({
@@ -313,7 +326,7 @@ export class TaskService {
313
326
  where: { projectId, status: TaskStatus.TODO, deletedAt: null },
314
327
  _max: { position: true },
315
328
  });
316
- return prisma.task.create({
329
+ const created = await prisma.task.create({
317
330
  data: {
318
331
  title: normalizedInput.title,
319
332
  description: normalizedInput.description,
@@ -322,6 +335,13 @@ export class TaskService {
322
335
  projectId,
323
336
  },
324
337
  });
338
+ return {
339
+ ...created,
340
+ project: {
341
+ ...project,
342
+ ...buildProjectGitMetadata(project),
343
+ },
344
+ };
325
345
  }
326
346
  /**
327
347
  * 更新任务基本信息
@@ -336,10 +356,17 @@ export class TaskService {
336
356
  }
337
357
  ensureProjectIsMutable(task.project, 'update tasks');
338
358
  const normalizedInput = normalizeUpdateTaskInput(task, input);
339
- return prisma.task.update({
359
+ const updated = await prisma.task.update({
340
360
  where: { id },
341
361
  data: normalizedInput,
342
362
  });
363
+ return {
364
+ ...updated,
365
+ project: {
366
+ ...task.project,
367
+ ...buildProjectGitMetadata(task.project),
368
+ },
369
+ };
343
370
  }
344
371
  /**
345
372
  * 更新任务状态(含状态流转校验)
@@ -357,7 +384,7 @@ export class TaskService {
357
384
  const currentStatus = task.status;
358
385
  // 如果状态没有变化,直接返回
359
386
  if (currentStatus === status) {
360
- return task;
387
+ return withProjectGitMetadata(task);
361
388
  }
362
389
  // 校验状态流转是否合法
363
390
  const allowedTransitions = VALID_TRANSITIONS[currentStatus];
@@ -378,7 +405,13 @@ export class TaskService {
378
405
  });
379
406
  // 通知前端
380
407
  this.emitTaskUpdated(id, task.projectId, status);
381
- return updated;
408
+ return {
409
+ ...updated,
410
+ project: {
411
+ ...task.project,
412
+ ...buildProjectGitMetadata(task.project),
413
+ },
414
+ };
382
415
  }
383
416
  /**
384
417
  * 更新任务位置(用于拖拽排序)
@@ -409,7 +442,13 @@ export class TaskService {
409
442
  if (status && status !== task.status) {
410
443
  this.emitTaskUpdated(id, task.projectId, status);
411
444
  }
412
- return updated;
445
+ return {
446
+ ...updated,
447
+ project: {
448
+ ...task.project,
449
+ ...buildProjectGitMetadata(task.project),
450
+ },
451
+ };
413
452
  }
414
453
  /**
415
454
  * 快速删除任务
@@ -640,7 +679,13 @@ export class TaskService {
640
679
  data: { status: TaskStatus.TODO },
641
680
  });
642
681
  this.emitTaskUpdated(id, task.projectId, TaskStatus.TODO);
643
- return updated;
682
+ return {
683
+ ...updated,
684
+ project: {
685
+ ...task.project,
686
+ ...buildProjectGitMetadata(task.project),
687
+ },
688
+ };
644
689
  }
645
690
  // ── 内部方法 ────────────────────────────────────────────────────────────────
646
691
  /**