@thxgg/steward 0.1.16 → 0.1.18

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 (157) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{CxHOXVf6.js → -z_Gr0GN.js} +1 -1
  3. package/.output/public/_nuxt/5LlyHjkF.js +60 -0
  4. package/.output/public/_nuxt/BA0u_CRT.js +1 -0
  5. package/.output/public/_nuxt/{Bibm_IDv.js → BA4e9-N5.js} +2 -2
  6. package/.output/public/_nuxt/{BSA0RJ-H.js → BO8EM227.js} +1 -1
  7. package/.output/public/_nuxt/C0XT5P3Q.js +1 -0
  8. package/.output/public/_nuxt/{BWVTacYj.js → CGzrvVc6.js} +1 -1
  9. package/.output/public/_nuxt/{Dum5qplW.js → CJlXUkTg.js} +1 -1
  10. package/.output/public/_nuxt/CZsXZugv.js +1 -0
  11. package/.output/public/_nuxt/{ynmyrfyT.js → C_HVaH3B.js} +1 -1
  12. package/.output/public/_nuxt/{wbjFvimm.js → DAnnHVQP.js} +1 -1
  13. package/.output/public/_nuxt/DEr8q68O.js +141 -0
  14. package/.output/public/_nuxt/Detail.DSyVQNdr.css +1 -0
  15. package/.output/public/_nuxt/DrXxYwWw.js +30 -0
  16. package/.output/public/_nuxt/QAzsKGuP.js +1 -0
  17. package/.output/public/_nuxt/TSsR_oCL.js +1 -0
  18. package/.output/public/_nuxt/WUF6Thhn.js +13 -0
  19. package/.output/public/_nuxt/_prd_.BkpxMFSV.css +1 -0
  20. package/.output/public/_nuxt/builds/latest.json +1 -1
  21. package/.output/public/_nuxt/builds/meta/19e0e040-a531-4c25-b46d-a6ca54a1ae3e.json +1 -0
  22. package/.output/public/_nuxt/i9wn3hS7.js +1 -0
  23. package/.output/server/chunks/_/git-api.mjs +101 -8
  24. package/.output/server/chunks/_/git-api.mjs.map +1 -1
  25. package/.output/server/chunks/_/git.mjs +3 -10
  26. package/.output/server/chunks/_/git.mjs.map +1 -1
  27. package/.output/server/chunks/_/prd-service.mjs +366 -0
  28. package/.output/server/chunks/_/prd-service.mjs.map +1 -0
  29. package/.output/server/chunks/_/repos.mjs +448 -0
  30. package/.output/server/chunks/_/repos.mjs.map +1 -0
  31. package/.output/server/chunks/_/task-graph.mjs +13 -14
  32. package/.output/server/chunks/_/task-graph.mjs.map +1 -1
  33. package/.output/server/chunks/_/watcher.mjs +54 -68
  34. package/.output/server/chunks/_/watcher.mjs.map +1 -1
  35. package/.output/server/chunks/build/{Detail-CUfU85GY.mjs → Detail-BQSkP9Zm.mjs} +170 -74
  36. package/.output/server/chunks/build/Detail-BQSkP9Zm.mjs.map +1 -0
  37. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-BFsE2PCW.mjs +4 -0
  38. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-BFsE2PCW.mjs.map +1 -0
  39. package/.output/server/chunks/build/DiffViewer-styles.D2bqX3nK.mjs +8 -0
  40. package/.output/server/chunks/build/DiffViewer-styles.D2bqX3nK.mjs.map +1 -0
  41. package/.output/server/chunks/build/DiffViewer-styles.FoV36wuV.mjs +10 -0
  42. package/.output/server/chunks/build/DiffViewer-styles.FoV36wuV.mjs.map +1 -0
  43. package/.output/server/chunks/build/Viewer-styles.D6wYWFb1.mjs +8 -0
  44. package/.output/server/chunks/build/Viewer-styles.D6wYWFb1.mjs.map +1 -0
  45. package/.output/server/chunks/build/{_prd_-CeVnQzOV.mjs → _prd_-CBR_wm9i.mjs} +73 -33
  46. package/.output/server/chunks/build/_prd_-CBR_wm9i.mjs.map +1 -0
  47. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  48. package/.output/server/chunks/build/{default-DWCOHHTE.mjs → default-Cao5eO80.mjs} +2 -3
  49. package/.output/server/chunks/build/default-Cao5eO80.mjs.map +1 -0
  50. package/.output/server/chunks/build/error-404-Bf6kdO80.mjs +0 -1
  51. package/.output/server/chunks/build/error-500-D_bcARXN.mjs +0 -1
  52. package/.output/server/chunks/build/{index-CckL_NBD.mjs → index-ByZO4Bvq.mjs} +2 -2
  53. package/.output/server/chunks/build/index-ByZO4Bvq.mjs.map +1 -0
  54. package/.output/server/chunks/build/{index-QVeSHT3L.mjs → index-ljj9uTXI.mjs} +6 -5
  55. package/.output/server/chunks/build/index-ljj9uTXI.mjs.map +1 -0
  56. package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs +1 -1
  57. package/.output/server/chunks/build/{repo-graph-CHNl58mY.mjs → repo-graph-CVnkmn8i.mjs} +23 -10
  58. package/.output/server/chunks/build/repo-graph-CVnkmn8i.mjs.map +1 -0
  59. package/.output/server/chunks/build/server.mjs +5 -6
  60. package/.output/server/chunks/build/styles.mjs +4 -4
  61. package/.output/server/chunks/build/{usePrd-SqcxGyFU.mjs → usePrd-f7ylhIqs.mjs} +10 -34
  62. package/.output/server/chunks/build/usePrd-f7ylhIqs.mjs.map +1 -0
  63. package/.output/server/chunks/nitro/nitro.mjs +614 -1211
  64. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  65. package/.output/server/chunks/routes/api/browse.get.mjs +34 -10
  66. package/.output/server/chunks/routes/api/browse.get.mjs.map +1 -1
  67. package/.output/server/chunks/routes/api/index.get.mjs +3 -2
  68. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  69. package/.output/server/chunks/routes/api/index.post.mjs +22 -7
  70. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  71. package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs +29 -23
  72. package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs.map +1 -1
  73. package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs +12 -7
  74. package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs.map +1 -1
  75. package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs +32 -13
  76. package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs.map +1 -1
  77. package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs +14 -14
  78. package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs.map +1 -1
  79. package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs +7 -2
  80. package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs.map +1 -1
  81. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs +16 -2
  82. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs.map +1 -1
  83. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs +21 -9
  84. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs.map +1 -1
  85. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs +21 -85
  86. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs.map +1 -1
  87. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs +21 -9
  88. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs.map +1 -1
  89. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs +31 -50
  90. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs.map +1 -1
  91. package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs +20 -49
  92. package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs.map +1 -1
  93. package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs +6 -13
  94. package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs.map +1 -1
  95. package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs +3 -2
  96. package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs.map +1 -1
  97. package/.output/server/chunks/routes/api/runtime.get.mjs +1 -2
  98. package/.output/server/chunks/routes/api/runtime.get.mjs.map +1 -1
  99. package/.output/server/chunks/routes/api/watch.get.mjs +5 -4
  100. package/.output/server/chunks/routes/api/watch.get.mjs.map +1 -1
  101. package/.output/server/chunks/routes/renderer.mjs +1 -1
  102. package/.output/server/index.mjs +1 -2
  103. package/.output/server/index.mjs.map +1 -1
  104. package/.output/server/node_modules/zod/index.js +4 -0
  105. package/.output/server/node_modules/zod/package.json +118 -0
  106. package/.output/server/node_modules/zod/v3/ZodError.js +133 -0
  107. package/.output/server/node_modules/zod/v3/errors.js +9 -0
  108. package/.output/server/node_modules/zod/v3/external.js +6 -0
  109. package/.output/server/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  110. package/.output/server/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  111. package/.output/server/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  112. package/.output/server/node_modules/zod/v3/helpers/util.js +133 -0
  113. package/.output/server/node_modules/zod/v3/locales/en.js +109 -0
  114. package/.output/server/node_modules/zod/v3/types.js +3693 -0
  115. package/.output/server/package.json +2 -1
  116. package/README.md +2 -2
  117. package/dist/host/src/api/prds.js +6 -172
  118. package/dist/host/src/api/repos.js +3 -18
  119. package/dist/host/src/api/state.js +8 -9
  120. package/dist/host/src/executor-runner.js +368 -0
  121. package/dist/host/src/executor.js +138 -260
  122. package/dist/host/src/mcp.js +27 -1
  123. package/dist/host/src/ui.js +14 -4
  124. package/dist/server/utils/change-events.js +33 -0
  125. package/dist/server/utils/git.js +11 -16
  126. package/dist/server/utils/prd-service.js +231 -0
  127. package/dist/server/utils/prd-state.js +54 -162
  128. package/dist/server/utils/repos.js +72 -17
  129. package/dist/server/utils/state-schema.js +61 -0
  130. package/dist/server/utils/task-graph.js +13 -13
  131. package/package.json +2 -1
  132. package/.output/public/_nuxt/CVJh28bx.js +0 -1
  133. package/.output/public/_nuxt/CyZuidLG.js +0 -60
  134. package/.output/public/_nuxt/D0op9E2g.js +0 -1
  135. package/.output/public/_nuxt/DX8awZaa.js +0 -1
  136. package/.output/public/_nuxt/Detail.z33AHKev.css +0 -1
  137. package/.output/public/_nuxt/DiTJUZOC.js +0 -1
  138. package/.output/public/_nuxt/T_3JE9C-.js +0 -1
  139. package/.output/public/_nuxt/WOI2tLsR.js +0 -42
  140. package/.output/public/_nuxt/_prd_.KTotLoF_.css +0 -1
  141. package/.output/public/_nuxt/builds/meta/029070b0-b8e2-4988-84f4-d0c9ff55c998.json +0 -1
  142. package/.output/public/_nuxt/odRGDGwj.js +0 -1
  143. package/.output/server/chunks/build/Detail-CUfU85GY.mjs.map +0 -1
  144. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs +0 -4
  145. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs.map +0 -1
  146. package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs +0 -10
  147. package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs.map +0 -1
  148. package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs +0 -8
  149. package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs.map +0 -1
  150. package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs +0 -8
  151. package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs.map +0 -1
  152. package/.output/server/chunks/build/_prd_-CeVnQzOV.mjs.map +0 -1
  153. package/.output/server/chunks/build/default-DWCOHHTE.mjs.map +0 -1
  154. package/.output/server/chunks/build/index-CckL_NBD.mjs.map +0 -1
  155. package/.output/server/chunks/build/index-QVeSHT3L.mjs.map +0 -1
  156. package/.output/server/chunks/build/repo-graph-CHNl58mY.mjs.map +0 -1
  157. package/.output/server/chunks/build/usePrd-SqcxGyFU.mjs.map +0 -1
@@ -1,4 +1,6 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, b as getRepos, m as migrateLegacyStateForRepo, h as getPrdState } from '../../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../../../../nitro/nitro.mjs';
2
+ import { d as readPrdProgress } from '../../../../../../_/prd-service.mjs';
3
+ import { a as getRepoById } from '../../../../../../_/repos.mjs';
2
4
  import 'node:http';
3
5
  import 'node:https';
4
6
  import 'node:events';
@@ -6,11 +8,16 @@ import 'node:buffer';
6
8
  import 'node:fs';
7
9
  import 'node:path';
8
10
  import 'node:crypto';
9
- import 'node:os';
10
11
  import 'node:url';
12
+ import '../../../../../../_/git.mjs';
13
+ import 'node:child_process';
14
+ import 'zod';
15
+ import 'node:os';
11
16
 
17
+ function normalizeErrorMessage(message) {
18
+ return message.replace(/\s+/g, " ").trim();
19
+ }
12
20
  const progress_get = defineEventHandler(async (event) => {
13
- var _a;
14
21
  const repoId = getRouterParam(event, "repoId");
15
22
  const prdSlug = getRouterParam(event, "prdSlug");
16
23
  if (!repoId || !prdSlug) {
@@ -19,23 +26,28 @@ const progress_get = defineEventHandler(async (event) => {
19
26
  statusMessage: "Repository ID and PRD slug are required"
20
27
  });
21
28
  }
22
- const repos = await getRepos();
23
- const repo = repos.find((r) => r.id === repoId);
29
+ const repo = await getRepoById(repoId);
24
30
  if (!repo) {
25
31
  throw createError({
26
32
  statusCode: 404,
27
33
  statusMessage: "Repository not found"
28
34
  });
29
35
  }
30
- await migrateLegacyStateForRepo(repo);
31
36
  try {
32
- const state = await getPrdState(repo.id, prdSlug);
33
- return (_a = state == null ? void 0 : state.progress) != null ? _a : null;
37
+ return await readPrdProgress(repo, prdSlug);
34
38
  } catch (error) {
39
+ const message = normalizeErrorMessage(error.message);
40
+ if (message.includes("Invalid PRD slug")) {
41
+ throw createError({
42
+ statusCode: 400,
43
+ statusMessage: "Invalid PRD slug",
44
+ message
45
+ });
46
+ }
35
47
  throw createError({
36
48
  statusCode: 500,
37
49
  statusMessage: "Failed to read progress state",
38
- message: error.message.replace(/\s+/g, " ").trim()
50
+ message
39
51
  });
40
52
  }
41
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"progress.get.mjs","sources":["../../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug]/progress.get.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,qBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,KAAA,GAAA,MAAA,QAAA,EAAA;AACA,EAAA,MAAA,OAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,MAAA,CAAA;AAEA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,0BAAA,IAAA,CAAA;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,MAAA,WAAA,CAAA,IAAA,CAAA,IAAA,OAAA,CAAA;AACA,IAAA,OAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,IAAA,GAAA,EAAA,GAAA,IAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,+BAAA;AAAA,MACA,SAAA,KAAA,CAAA,OAAA,CAAA,QAAA,MAAA,EAAA,GAAA,EAAA,IAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"progress.get.mjs","sources":["../../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug]/progress.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,SAAA,sBAAA,OAAA,EAAA;AACA,EAAA,OAAA,OAAA,CAAA,OAAA,CAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;AACA;AAEA,qBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,OAAA,GAAA,qBAAA,CAAA,KAAA,CAAA,OAAA,CAAA;AAEA,IAAA,IAAA,OAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,kBAAA;AAAA,QACA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,+BAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, b as getRepos, m as migrateLegacyStateForRepo, h as getPrdState, e as discoverGitRepos, s as saveRepos } from '../../../../../../../../nitro/nitro.mjs';
2
- import { r as resolveCommitRepo } from '../../../../../../../../_/git.mjs';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../../../../../../nitro/nitro.mjs';
2
+ import { f as resolveTaskCommits } from '../../../../../../../../_/prd-service.mjs';
3
+ import { a as getRepoById } from '../../../../../../../../_/repos.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:events';
@@ -7,12 +8,16 @@ import 'node:buffer';
7
8
  import 'node:fs';
8
9
  import 'node:path';
9
10
  import 'node:crypto';
10
- import 'node:os';
11
11
  import 'node:url';
12
+ import '../../../../../../../../_/git.mjs';
12
13
  import 'node:child_process';
14
+ import 'zod';
15
+ import 'node:os';
13
16
 
17
+ function normalizeErrorMessage(message) {
18
+ return message.replace(/\s+/g, " ").trim();
19
+ }
14
20
  const commits_get = defineEventHandler(async (event) => {
15
- var _a;
16
21
  const repoId = getRouterParam(event, "repoId");
17
22
  const prdSlug = getRouterParam(event, "prdSlug");
18
23
  const taskId = getRouterParam(event, "taskId");
@@ -22,99 +27,30 @@ const commits_get = defineEventHandler(async (event) => {
22
27
  statusMessage: "Repository ID, PRD slug, and task ID are required"
23
28
  });
24
29
  }
25
- const repos = await getRepos();
26
- const repo = repos.find((r) => r.id === repoId);
30
+ const repo = await getRepoById(repoId);
27
31
  if (!repo) {
28
32
  throw createError({
29
33
  statusCode: 404,
30
34
  statusMessage: "Repository not found"
31
35
  });
32
36
  }
33
- await migrateLegacyStateForRepo(repo);
34
- let progress = null;
35
37
  try {
36
- const state = await getPrdState(repo.id, prdSlug);
37
- progress = (_a = state == null ? void 0 : state.progress) != null ? _a : null;
38
+ return await resolveTaskCommits(repo, prdSlug, taskId);
38
39
  } catch (error) {
40
+ const message = normalizeErrorMessage(error.message);
41
+ if (message.includes("Invalid PRD slug")) {
42
+ throw createError({
43
+ statusCode: 400,
44
+ statusMessage: "Invalid PRD slug",
45
+ message
46
+ });
47
+ }
39
48
  throw createError({
40
49
  statusCode: 500,
41
- statusMessage: "Failed to read progress state",
42
- message: error.message.replace(/\s+/g, " ").trim()
50
+ statusMessage: "Failed to resolve task commits",
51
+ message
43
52
  });
44
53
  }
45
- if (!progress) {
46
- return [];
47
- }
48
- const taskLogs = Array.isArray(progress.taskLogs) ? progress.taskLogs : [];
49
- const taskLog = taskLogs.find((log) => log.taskId === taskId);
50
- if (!taskLog) {
51
- return [];
52
- }
53
- if (!taskLog.commits || taskLog.commits.length === 0) {
54
- return [];
55
- }
56
- const resolvedCommits = [];
57
- const failedEntries = [];
58
- for (const commitEntry of taskLog.commits) {
59
- try {
60
- const resolved = await resolveCommitRepo(repo, commitEntry);
61
- resolvedCommits.push({
62
- sha: resolved.sha,
63
- repo: resolved.repoPath
64
- });
65
- } catch {
66
- failedEntries.push(commitEntry);
67
- }
68
- }
69
- if (failedEntries.length > 0) {
70
- const newGitRepos = await discoverGitRepos(repo.path);
71
- const existingPaths = new Set((repo.gitRepos || []).map((gr) => gr.relativePath));
72
- const hasNewRepos = newGitRepos.some((gr) => !existingPaths.has(gr.relativePath));
73
- if (hasNewRepos) {
74
- const repos2 = await getRepos();
75
- const repoIndex = repos2.findIndex((r) => r.id === repoId);
76
- if (repoIndex !== -1) {
77
- const updatedRepo = {
78
- ...repos2[repoIndex],
79
- gitRepos: newGitRepos.length > 0 ? newGitRepos : void 0
80
- };
81
- repos2[repoIndex] = updatedRepo;
82
- await saveRepos(repos2);
83
- for (const commitEntry of failedEntries) {
84
- try {
85
- const resolved = await resolveCommitRepo(updatedRepo, commitEntry);
86
- resolvedCommits.push({
87
- sha: resolved.sha,
88
- repo: resolved.repoPath
89
- });
90
- } catch {
91
- const sha = typeof commitEntry === "string" ? commitEntry : commitEntry.sha;
92
- resolvedCommits.push({
93
- sha,
94
- repo: ""
95
- });
96
- }
97
- }
98
- } else {
99
- for (const commitEntry of failedEntries) {
100
- const sha = typeof commitEntry === "string" ? commitEntry : commitEntry.sha;
101
- resolvedCommits.push({
102
- sha,
103
- repo: ""
104
- });
105
- }
106
- }
107
- } else {
108
- for (const commitEntry of failedEntries) {
109
- const sha = typeof commitEntry === "string" ? commitEntry : commitEntry.sha;
110
- resolvedCommits.push({
111
- sha,
112
- repo: ""
113
- });
114
- }
115
- }
116
- }
117
- return resolvedCommits;
118
54
  });
119
55
 
120
56
  export { commits_get as default };
@@ -1 +1 @@
1
- {"version":3,"file":"commits.get.mjs","sources":["../../../../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug]/tasks/[taskId]/commits.get.ts"],"names":["repos"],"mappings":";;;;;;;;;;;;;AAcA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,IAAA,CAAA,MAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,KAAA,GAAA,MAAA,QAAA,EAAA;AACA,EAAA,MAAA,OAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,MAAA,CAAA;AAEA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,0BAAA,IAAA,CAAA;AAEA,EAAA,IAAA,QAAA,GAAA,IAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,MAAA,WAAA,CAAA,IAAA,CAAA,IAAA,OAAA,CAAA;AACA,IAAA,QAAA,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,IAAA,GAAA,EAAA,GAAA,IAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,+BAAA;AAAA,MACA,SAAA,KAAA,CAAA,OAAA,CAAA,QAAA,MAAA,EAAA,GAAA,EAAA,IAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA,CAAA,QAAA,EAAA;AACA,IAAA,OAAA,EAAA;AAAA,EACA;AAGA,EAAA,MAAA,QAAA,GAAA,MAAA,OAAA,CAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA,WAAA,EAAA;AAGA,EAAA,MAAA,UAAA,QAAA,CAAA,IAAA,CAAA,CAAA,GAAA,KAAA,GAAA,CAAA,WAAA,MAAA,CAAA;AAEA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,OAAA,EAAA;AAAA,EACA;AAGA,EAAA,IAAA,CAAA,OAAA,CAAA,OAAA,IAAA,OAAA,CAAA,OAAA,CAAA,WAAA,CAAA,EAAA;AACA,IAAA,OAAA,EAAA;AAAA,EACA;AAGA,EAAA,MAAA,kBAAA,EAAA;AACA,EAAA,MAAA,gBAAA,EAAA;AAGA,EAAA,KAAA,MAAA,WAAA,IAAA,QAAA,OAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,MAAA,QAAA,GAAA,MAAA,iBAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACA,MAAA,eAAA,CAAA,IAAA,CAAA;AAAA,QACA,KAAA,QAAA,CAAA,GAAA;AAAA,QACA,MAAA,QAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA,CAAA,CAAA,MAAA;AACA,MAAA,aAAA,CAAA,KAAA,WAAA,CAAA;AAAA,IACA;AAAA,EACA;AAGA,EAAA,IAAA,aAAA,CAAA,SAAA,CAAA,EAAA;AACA,IAAA,MAAA,WAAA,GAAA,MAAA,gBAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAGA,IAAA,MAAA,aAAA,GAAA,IAAA,GAAA,CAAA,CAAA,IAAA,CAAA,QAAA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,YAAA,CAAA,CAAA;AACA,IAAA,MAAA,WAAA,GAAA,YAAA,IAAA,CAAA,CAAA,EAAA,KAAA,CAAA,aAAA,CAAA,GAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA;AAEA,IAAA,IAAA,WAAA,EAAA;AAEA,MAAA,MAAAA,MAAAA,GAAA,MAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAAA,MAAAA,CAAA,SAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,MAAA,CAAA;AACA,MAAA,IAAA,cAAA,EAAA,EAAA;AACA,QAAA,MAAA,WAAA,GAAA;AAAA,UACA,GAAAA,OAAA,SAAA,CAAA;AAAA,UACA,QAAA,EAAA,WAAA,CAAA,MAAA,GAAA,CAAA,GAAA,WAAA,GAAA;AAAA,SACA;AACA,QAAAA,MAAAA,CAAA,SAAA,CAAA,GAAA,WAAA;AACA,QAAA,MAAA,UAAAA,MAAA,CAAA;AAGA,QAAA,KAAA,MAAA,eAAA,aAAA,EAAA;AACA,UAAA,IAAA;AACA,YAAA,MAAA,QAAA,GAAA,MAAA,iBAAA,CAAA,WAAA,EAAA,WAAA,CAAA;AACA,YAAA,eAAA,CAAA,IAAA,CAAA;AAAA,cACA,KAAA,QAAA,CAAA,GAAA;AAAA,cACA,MAAA,QAAA,CAAA;AAAA,aACA,CAAA;AAAA,UACA,CAAA,CAAA,MAAA;AAEA,YAAA,MAAA,GAAA,GAAA,OAAA,WAAA,KAAA,QAAA,GAAA,cAAA,WAAA,CAAA,GAAA;AACA,YAAA,eAAA,CAAA,IAAA,CAAA;AAAA,cACA,GAAA;AAAA,cACA,IAAA,EAAA;AAAA,aACA,CAAA;AAAA,UACA;AAAA,QACA;AAAA,MACA,CAAA,MAAA;AAEA,QAAA,KAAA,MAAA,eAAA,aAAA,EAAA;AACA,UAAA,MAAA,GAAA,GAAA,OAAA,WAAA,KAAA,QAAA,GAAA,cAAA,WAAA,CAAA,GAAA;AACA,UAAA,eAAA,CAAA,IAAA,CAAA;AAAA,YACA,GAAA;AAAA,YACA,IAAA,EAAA;AAAA,WACA,CAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA,CAAA,MAAA;AAEA,MAAA,KAAA,MAAA,eAAA,aAAA,EAAA;AACA,QAAA,MAAA,GAAA,GAAA,OAAA,WAAA,KAAA,QAAA,GAAA,cAAA,WAAA,CAAA,GAAA;AACA,QAAA,eAAA,CAAA,IAAA,CAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA,EAAA;AAAA,SACA,CAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAEA,EAAA,OAAA,eAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"commits.get.mjs","sources":["../../../../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug]/tasks/[taskId]/commits.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,SAAA,sBAAA,OAAA,EAAA;AACA,EAAA,OAAA,OAAA,CAAA,OAAA,CAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;AACA;AAEA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,IAAA,CAAA,MAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,kBAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,OAAA,GAAA,qBAAA,CAAA,KAAA,CAAA,OAAA,CAAA;AAEA,IAAA,IAAA,OAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,kBAAA;AAAA,QACA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,gCAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,4 +1,6 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, b as getRepos, m as migrateLegacyStateForRepo, h as getPrdState } from '../../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../../../../nitro/nitro.mjs';
2
+ import { e as readPrdTasks } from '../../../../../../_/prd-service.mjs';
3
+ import { a as getRepoById } from '../../../../../../_/repos.mjs';
2
4
  import 'node:http';
3
5
  import 'node:https';
4
6
  import 'node:events';
@@ -6,11 +8,16 @@ import 'node:buffer';
6
8
  import 'node:fs';
7
9
  import 'node:path';
8
10
  import 'node:crypto';
9
- import 'node:os';
10
11
  import 'node:url';
12
+ import '../../../../../../_/git.mjs';
13
+ import 'node:child_process';
14
+ import 'zod';
15
+ import 'node:os';
11
16
 
17
+ function normalizeErrorMessage(message) {
18
+ return message.replace(/\s+/g, " ").trim();
19
+ }
12
20
  const tasks_get = defineEventHandler(async (event) => {
13
- var _a;
14
21
  const repoId = getRouterParam(event, "repoId");
15
22
  const prdSlug = getRouterParam(event, "prdSlug");
16
23
  if (!repoId || !prdSlug) {
@@ -19,23 +26,28 @@ const tasks_get = defineEventHandler(async (event) => {
19
26
  statusMessage: "Repository ID and PRD slug are required"
20
27
  });
21
28
  }
22
- const repos = await getRepos();
23
- const repo = repos.find((r) => r.id === repoId);
29
+ const repo = await getRepoById(repoId);
24
30
  if (!repo) {
25
31
  throw createError({
26
32
  statusCode: 404,
27
33
  statusMessage: "Repository not found"
28
34
  });
29
35
  }
30
- await migrateLegacyStateForRepo(repo);
31
36
  try {
32
- const state = await getPrdState(repo.id, prdSlug);
33
- return (_a = state == null ? void 0 : state.tasks) != null ? _a : null;
37
+ return await readPrdTasks(repo, prdSlug);
34
38
  } catch (error) {
39
+ const message = normalizeErrorMessage(error.message);
40
+ if (message.includes("Invalid PRD slug")) {
41
+ throw createError({
42
+ statusCode: 400,
43
+ statusMessage: "Invalid PRD slug",
44
+ message
45
+ });
46
+ }
35
47
  throw createError({
36
48
  statusCode: 500,
37
49
  statusMessage: "Failed to read task state",
38
- message: error.message.replace(/\s+/g, " ").trim()
50
+ message
39
51
  });
40
52
  }
41
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.get.mjs","sources":["../../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug]/tasks.get.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,KAAA,GAAA,MAAA,QAAA,EAAA;AACA,EAAA,MAAA,OAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,MAAA,CAAA;AAEA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,0BAAA,IAAA,CAAA;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,MAAA,WAAA,CAAA,IAAA,CAAA,IAAA,OAAA,CAAA;AACA,IAAA,OAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,UAAA,IAAA,GAAA,EAAA,GAAA,IAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,2BAAA;AAAA,MACA,SAAA,KAAA,CAAA,OAAA,CAAA,QAAA,MAAA,EAAA,GAAA,EAAA,IAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"tasks.get.mjs","sources":["../../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug]/tasks.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,SAAA,sBAAA,OAAA,EAAA;AACA,EAAA,OAAA,OAAA,CAAA,OAAA,CAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;AACA;AAEA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,OAAA,GAAA,qBAAA,CAAA,KAAA,CAAA,OAAA,CAAA;AAEA,IAAA,IAAA,OAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,kBAAA;AAAA,QACA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,2BAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,39 +1,21 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, b as getRepos } from '../../../../../nitro/nitro.mjs';
2
- import { promises } from 'node:fs';
3
- import { join } from 'node:path';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../../../nitro/nitro.mjs';
2
+ import { r as readPrdDocument } from '../../../../../_/prd-service.mjs';
3
+ import { a as getRepoById } from '../../../../../_/repos.mjs';
4
4
  import 'node:http';
5
5
  import 'node:https';
6
6
  import 'node:events';
7
7
  import 'node:buffer';
8
+ import 'node:fs';
9
+ import 'node:path';
8
10
  import 'node:crypto';
9
- import 'node:os';
10
11
  import 'node:url';
12
+ import '../../../../../_/git.mjs';
13
+ import 'node:child_process';
14
+ import 'zod';
15
+ import 'node:os';
11
16
 
12
- function parseMetadata(content) {
13
- const metadata = {};
14
- const authorMatch = content.match(/\*{0,2}Author\*{0,2}:\*{0,2}\s*(.+?)(?:\n|$)/i);
15
- if (authorMatch && authorMatch[1]) {
16
- metadata.author = authorMatch[1].trim();
17
- }
18
- const dateMatch = content.match(/\*{0,2}Date\*{0,2}:\*{0,2}\s*(.+?)(?:\n|$)/i);
19
- if (dateMatch && dateMatch[1]) {
20
- metadata.date = dateMatch[1].trim();
21
- }
22
- const statusMatch = content.match(/\*{0,2}Status\*{0,2}:\*{0,2}\s*(.+?)(?:\n|$)/i);
23
- if (statusMatch && statusMatch[1]) {
24
- metadata.status = statusMatch[1].trim();
25
- }
26
- const shortcutLinkMatch = content.match(/\[([Ss][Cc]-\d+)\]\(([^)]+)\)/);
27
- if (shortcutLinkMatch && shortcutLinkMatch[1] && shortcutLinkMatch[2]) {
28
- metadata.shortcutStory = shortcutLinkMatch[1];
29
- metadata.shortcutUrl = shortcutLinkMatch[2];
30
- } else {
31
- const shortcutIdMatch = content.match(/\*{0,2}Shortcut(?:\s+Story)?\*{0,2}:\*{0,2}\s*([Ss][Cc]-\d+)/i);
32
- if (shortcutIdMatch && shortcutIdMatch[1]) {
33
- metadata.shortcutStory = shortcutIdMatch[1];
34
- }
35
- }
36
- return metadata;
17
+ function normalizeErrorMessage(message) {
18
+ return message.replace(/\s+/g, " ").trim();
37
19
  }
38
20
  const _prdSlug__get = defineEventHandler(async (event) => {
39
21
  const repoId = getRouterParam(event, "repoId");
@@ -44,37 +26,36 @@ const _prdSlug__get = defineEventHandler(async (event) => {
44
26
  statusMessage: "Repository ID and PRD slug are required"
45
27
  });
46
28
  }
47
- const repos = await getRepos();
48
- const repo = repos.find((r) => r.id === repoId);
29
+ const repo = await getRepoById(repoId);
49
30
  if (!repo) {
50
31
  throw createError({
51
32
  statusCode: 404,
52
33
  statusMessage: "Repository not found"
53
34
  });
54
35
  }
55
- const prdPath = join(repo.path, "docs", "prd", `${prdSlug}.md`);
56
- let content;
57
36
  try {
58
- content = await promises.readFile(prdPath, "utf-8");
59
- } catch {
37
+ return await readPrdDocument(repo, prdSlug);
38
+ } catch (error) {
39
+ const message = normalizeErrorMessage(error.message);
40
+ if (message.includes("Invalid PRD slug")) {
41
+ throw createError({
42
+ statusCode: 400,
43
+ statusMessage: "Invalid PRD slug",
44
+ message
45
+ });
46
+ }
47
+ if (message.includes("PRD not found")) {
48
+ throw createError({
49
+ statusCode: 404,
50
+ statusMessage: "PRD not found"
51
+ });
52
+ }
60
53
  throw createError({
61
- statusCode: 404,
62
- statusMessage: "PRD not found"
54
+ statusCode: 500,
55
+ statusMessage: "Failed to load PRD document",
56
+ message
63
57
  });
64
58
  }
65
- let name = prdSlug;
66
- const h1Match = content.match(/^#\s+(.+)$/m);
67
- if (h1Match && h1Match[1]) {
68
- name = h1Match[1].trim();
69
- }
70
- const metadata = parseMetadata(content);
71
- const document = {
72
- slug: prdSlug,
73
- name,
74
- content,
75
- metadata
76
- };
77
- return document;
78
59
  });
79
60
 
80
61
  export { _prdSlug__get as default };
@@ -1 +1 @@
1
- {"version":3,"file":"_prdSlug_.get.mjs","sources":["../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug].get.ts"],"names":["fs"],"mappings":"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"}
1
+ {"version":3,"file":"_prdSlug_.get.mjs","sources":["../../../../../../../../server/api/repos/[repoId]/prd/[prdSlug].get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,SAAA,sBAAA,OAAA,EAAA;AACA,EAAA,OAAA,OAAA,CAAA,OAAA,CAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;AACA;AAEA,sBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AACA,EAAA,MAAA,OAAA,GAAA,cAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,OAAA,GAAA,qBAAA,CAAA,KAAA,CAAA,OAAA,CAAA;AAEA,IAAA,IAAA,OAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,kBAAA;AAAA,QACA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,OAAA,CAAA,QAAA,CAAA,eAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,6BAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,14 +1,22 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, b as getRepos, m as migrateLegacyStateForRepo, f as getPrdStateSummaries } from '../../../../nitro/nitro.mjs';
2
- import { promises } from 'node:fs';
3
- import { join, basename } from 'node:path';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
2
+ import { l as listPrdDocuments } from '../../../../_/prd-service.mjs';
3
+ import { a as getRepoById } from '../../../../_/repos.mjs';
4
4
  import 'node:http';
5
5
  import 'node:https';
6
6
  import 'node:events';
7
7
  import 'node:buffer';
8
+ import 'node:fs';
9
+ import 'node:path';
8
10
  import 'node:crypto';
9
- import 'node:os';
10
11
  import 'node:url';
12
+ import '../../../../_/git.mjs';
13
+ import 'node:child_process';
14
+ import 'zod';
15
+ import 'node:os';
11
16
 
17
+ function normalizeErrorMessage(message) {
18
+ return message.replace(/\s+/g, " ").trim();
19
+ }
12
20
  const prds_get = defineEventHandler(async (event) => {
13
21
  const repoId = getRouterParam(event, "repoId");
14
22
  if (!repoId) {
@@ -17,59 +25,22 @@ const prds_get = defineEventHandler(async (event) => {
17
25
  statusMessage: "Repository ID is required"
18
26
  });
19
27
  }
20
- const repos = await getRepos();
21
- const repo = repos.find((r) => r.id === repoId);
28
+ const repo = await getRepoById(repoId);
22
29
  if (!repo) {
23
30
  throw createError({
24
31
  statusCode: 404,
25
32
  statusMessage: "Repository not found"
26
33
  });
27
34
  }
28
- await migrateLegacyStateForRepo(repo);
29
- const prdDir = join(repo.path, "docs", "prd");
30
- let prdFiles = [];
31
35
  try {
32
- const files = await promises.readdir(prdDir);
33
- prdFiles = files.filter((f) => f.endsWith(".md"));
34
- } catch {
35
- return [];
36
+ return await listPrdDocuments(repo);
37
+ } catch (error) {
38
+ throw createError({
39
+ statusCode: 500,
40
+ statusMessage: "Failed to load PRD list",
41
+ message: normalizeErrorMessage(error.message)
42
+ });
36
43
  }
37
- const stateSummaries = await getPrdStateSummaries(repo.id);
38
- const prds = await Promise.all(
39
- prdFiles.map(async (filename) => {
40
- const slug = basename(filename, ".md");
41
- const filePath = join(prdDir, filename);
42
- let name = slug;
43
- let modifiedAt = 0;
44
- try {
45
- const [content, stat] = await Promise.all([
46
- promises.readFile(filePath, "utf-8"),
47
- promises.stat(filePath)
48
- ]);
49
- modifiedAt = stat.mtime.getTime();
50
- const h1Match = content.match(/^#\s+(.+)$/m);
51
- if (h1Match && h1Match[1]) {
52
- name = h1Match[1].trim();
53
- }
54
- } catch {
55
- }
56
- const stateSummary = stateSummaries.get(slug);
57
- const hasState = !!(stateSummary == null ? void 0 : stateSummary.hasState);
58
- const taskCount = stateSummary == null ? void 0 : stateSummary.taskCount;
59
- const completedCount = stateSummary == null ? void 0 : stateSummary.completedCount;
60
- return {
61
- slug,
62
- name,
63
- source: `docs/prd/${filename}`,
64
- hasState,
65
- modifiedAt,
66
- ...taskCount !== void 0 && { taskCount },
67
- ...completedCount !== void 0 && { completedCount }
68
- };
69
- })
70
- );
71
- prds.sort((a, b) => b.modifiedAt - a.modifiedAt);
72
- return prds;
73
44
  });
74
45
 
75
46
  export { prds_get as default };
@@ -1 +1 @@
1
- {"version":3,"file":"prds.get.mjs","sources":["../../../../../../../server/api/repos/[repoId]/prds.get.ts"],"names":["fs"],"mappings":"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"}
1
+ {"version":3,"file":"prds.get.mjs","sources":["../../../../../../../server/api/repos/[repoId]/prds.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,SAAA,sBAAA,OAAA,EAAA;AACA,EAAA,OAAA,OAAA,CAAA,OAAA,CAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;AACA;AAEA,iBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,iBAAA,IAAA,CAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,yBAAA;AAAA,MACA,OAAA,EAAA,qBAAA,CAAA,KAAA,CAAA,OAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,4 +1,5 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, b as getRepos, e as discoverGitRepos, s as saveRepos } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
2
+ import { a as getRepoById, d as discoverGitRepos, u as updateRepoGitRepos } from '../../../../_/repos.mjs';
2
3
  import 'node:http';
3
4
  import 'node:https';
4
5
  import 'node:events';
@@ -6,8 +7,8 @@ import 'node:buffer';
6
7
  import 'node:fs';
7
8
  import 'node:path';
8
9
  import 'node:crypto';
9
- import 'node:os';
10
10
  import 'node:url';
11
+ import 'node:os';
11
12
 
12
13
  const refreshGitRepos_post = defineEventHandler(async (event) => {
13
14
  const repoId = getRouterParam(event, "repoId");
@@ -17,23 +18,15 @@ const refreshGitRepos_post = defineEventHandler(async (event) => {
17
18
  statusMessage: "Repository ID is required"
18
19
  });
19
20
  }
20
- const repos = await getRepos();
21
- const repoIndex = repos.findIndex((r) => r.id === repoId);
22
- if (repoIndex === -1) {
21
+ const repo = await getRepoById(repoId);
22
+ if (!repo) {
23
23
  throw createError({
24
24
  statusCode: 404,
25
25
  statusMessage: "Repository not found"
26
26
  });
27
27
  }
28
- const repo = repos[repoIndex];
29
28
  const gitRepos = await discoverGitRepos(repo.path);
30
- if (gitRepos.length > 0) {
31
- repo.gitRepos = gitRepos;
32
- } else {
33
- delete repo.gitRepos;
34
- }
35
- repos[repoIndex] = repo;
36
- await saveRepos(repos);
29
+ await updateRepoGitRepos(repo.id, gitRepos.length > 0 ? gitRepos : void 0);
37
30
  return {
38
31
  discovered: gitRepos.length,
39
32
  gitRepos
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-git-repos.post.mjs","sources":["../../../../../../../server/api/repos/[repoId]/refresh-git-repos.post.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,6BAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,KAAA,GAAA,MAAA,QAAA,EAAA;AACA,EAAA,MAAA,YAAA,KAAA,CAAA,SAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,MAAA,CAAA;AAEA,EAAA,IAAA,cAAA,EAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,SAAA,CAAA;AAGA,EAAA,MAAA,QAAA,GAAA,MAAA,gBAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAGA,EAAA,IAAA,QAAA,CAAA,SAAA,CAAA,EAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA,EACA,CAAA,MAAA;AACA,IAAA,OAAA,IAAA,CAAA,QAAA;AAAA,EACA;AAEA,EAAA,KAAA,CAAA,SAAA,CAAA,GAAA,IAAA;AACA,EAAA,MAAA,UAAA,KAAA,CAAA;AAEA,EAAA,OAAA;AAAA,IACA,YAAA,QAAA,CAAA,MAAA;AAAA,IACA;AAAA,GACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"refresh-git-repos.post.mjs","sources":["../../../../../../../server/api/repos/[repoId]/refresh-git-repos.post.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,6BAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,MAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,MAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,QAAA,GAAA,MAAA,gBAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAEA,EAAA,MAAA,mBAAA,IAAA,CAAA,EAAA,EAAA,SAAA,MAAA,GAAA,CAAA,GAAA,WAAA,MAAA,CAAA;AAEA,EAAA,OAAA;AAAA,IACA,YAAA,QAAA,CAAA,MAAA;AAAA,IACA;AAAA,GACA;AACA,CAAA,CAAA;;;;"}
@@ -1,4 +1,5 @@
1
- import { d as defineEventHandler, a as getRouterParam, c as createError, r as removeRepo } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, a as getRouterParam, c as createError } from '../../../nitro/nitro.mjs';
2
+ import { r as removeRepo } from '../../../_/repos.mjs';
2
3
  import { r as refreshWatcher } from '../../../_/watcher.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
@@ -7,8 +8,8 @@ import 'node:buffer';
7
8
  import 'node:fs';
8
9
  import 'node:path';
9
10
  import 'node:crypto';
10
- import 'node:os';
11
11
  import 'node:url';
12
+ import 'node:os';
12
13
  import 'chokidar';
13
14
 
14
15
  const _repoId__delete = defineEventHandler(async (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"_repoId_.delete.mjs","sources":["../../../../../../server/api/repos/[repoId].delete.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,wBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,EAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,MAAA,UAAA,CAAA,EAAA,CAAA;AAEA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,cAAA,EAAA;AAEA,EAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"_repoId_.delete.mjs","sources":["../../../../../../server/api/repos/[repoId].delete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,wBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA;AAEA,EAAA,IAAA,CAAA,EAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,MAAA,UAAA,CAAA,EAAA,CAAA;AAEA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,cAAA,EAAA;AAEA,EAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AACA,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, u as useRuntimeConfig, k as setHeader } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, u as useRuntimeConfig, s as setHeader } from '../../nitro/nitro.mjs';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import 'node:http';
4
4
  import 'node:https';
@@ -6,7 +6,6 @@ import 'node:events';
6
6
  import 'node:buffer';
7
7
  import 'node:fs';
8
8
  import 'node:path';
9
- import 'node:os';
10
9
  import 'node:url';
11
10
 
12
11
  const SERVER_INSTANCE_ID = randomUUID();
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.get.mjs","sources":["../../../../../server/api/runtime.get.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,MAAA,qBAAA,UAAA,EAAA;AACA,MAAA,iBAAA,GAAA,iBAAA,IAAA,IAAA,EAAA,EAAA,WAAA,EAAA;AAEA,oBAAA,kBAAA,CAAA,CAAA,KAAA,KAAA;AACA,EAAA,MAAA,aAAA,GAAA,iBAAA,KAAA,CAAA;AAEA,EAAA,SAAA,CAAA,KAAA,EAAA,iBAAA,qCAAA,CAAA;AAEA,EAAA,OAAA;AAAA,IACA,OAAA,EAAA,cAAA,GAAA,CAAA,OAAA;AAAA,IACA,UAAA,EAAA,kBAAA;AAAA,IACA,SAAA,EAAA;AAAA,GACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"runtime.get.mjs","sources":["../../../../../server/api/runtime.get.ts"],"names":[],"mappings":";;;;;;;;;;AAEA,MAAA,qBAAA,UAAA,EAAA;AACA,MAAA,iBAAA,GAAA,iBAAA,IAAA,IAAA,EAAA,EAAA,WAAA,EAAA;AAEA,oBAAA,kBAAA,CAAA,CAAA,KAAA,KAAA;AACA,EAAA,MAAA,aAAA,GAAA,iBAAA,KAAA,CAAA;AAEA,EAAA,SAAA,CAAA,KAAA,EAAA,iBAAA,qCAAA,CAAA;AAEA,EAAA,OAAA;AAAA,IACA,OAAA,EAAA,cAAA,GAAA,CAAA,OAAA;AAAA,IACA,UAAA,EAAA,kBAAA;AAAA,IACA,SAAA,EAAA;AAAA,GACA;AACA,CAAA,CAAA;;;;"}