@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
@@ -0,0 +1,448 @@
1
+ import process from 'node:process';globalThis._importMeta_=globalThis._importMeta_||{url:"file:///_entry.js",env:process.env};import { promises, existsSync } from 'node:fs';
2
+ import { dirname, join, resolve, isAbsolute, basename, relative } from 'node:path';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { homedir } from 'node:os';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ const DEFAULT_DATA_HOME = process.env.XDG_DATA_HOME || join(homedir(), ".local", "share");
11
+ const DEFAULT_DB_PATH = join(DEFAULT_DATA_HOME, "prd", "state.db");
12
+ const SQLITE_ENABLE_FLAG = "--experimental-sqlite";
13
+ const SQLITE_DISABLE_FLAG = "--no-experimental-sqlite";
14
+ let adapterPromise = null;
15
+ class SqliteRuntimeError extends Error {
16
+ constructor(message, details) {
17
+ super(message);
18
+ __publicField(this, "code");
19
+ __publicField(this, "details");
20
+ this.name = "SqliteRuntimeError";
21
+ this.code = "SQLITE_RUNTIME_UNSUPPORTED";
22
+ this.details = details;
23
+ }
24
+ }
25
+ function coerceChanges(result) {
26
+ if (!result || typeof result !== "object") {
27
+ return 0;
28
+ }
29
+ const maybeChanges = result.changes;
30
+ return typeof maybeChanges === "number" ? maybeChanges : 0;
31
+ }
32
+ function resolveDbPath() {
33
+ const customPath = process.env.PRD_STATE_DB_PATH;
34
+ if (customPath && customPath.trim().length > 0) {
35
+ return customPath;
36
+ }
37
+ const customHome = process.env.PRD_STATE_HOME;
38
+ if (customHome && customHome.trim().length > 0) {
39
+ return join(customHome, "state.db");
40
+ }
41
+ return DEFAULT_DB_PATH;
42
+ }
43
+ function formatNodeRuntimeHint() {
44
+ const nodeOptions = process.env.NODE_OPTIONS || "";
45
+ const hasDisableFlag = process.execArgv.includes(SQLITE_DISABLE_FLAG) || nodeOptions.includes(SQLITE_DISABLE_FLAG);
46
+ if (hasDisableFlag) {
47
+ return `Remove ${SQLITE_DISABLE_FLAG} from NODE_OPTIONS or Node arguments.`;
48
+ }
49
+ return `Use Node.js with built-in sqlite support, or launch with ${SQLITE_ENABLE_FLAG}.`;
50
+ }
51
+ function mapSqliteImportError(error, dbPath) {
52
+ if (!(error instanceof Error)) {
53
+ return new SqliteRuntimeError("SQLite runtime support is unavailable in this process.", {
54
+ runtime: "node",
55
+ dbPath,
56
+ nodeVersion: process.version,
57
+ execPath: process.execPath,
58
+ execArgv: [...process.execArgv],
59
+ nodeOptions: process.env.NODE_OPTIONS || "",
60
+ originalMessage: String(error)
61
+ });
62
+ }
63
+ const code = error.code;
64
+ const isMissingBuiltin = typeof code === "string" && code === "ERR_UNKNOWN_BUILTIN_MODULE" && error.message.includes("node:sqlite");
65
+ const isMissingModule = typeof code === "string" && code === "ERR_MODULE_NOT_FOUND" && error.message.includes("node:sqlite");
66
+ if (!isMissingBuiltin && !isMissingModule) {
67
+ return error;
68
+ }
69
+ return new SqliteRuntimeError(
70
+ `SQLite runtime support is unavailable for Steward (${process.version}). ${formatNodeRuntimeHint()}`,
71
+ {
72
+ runtime: "node",
73
+ dbPath,
74
+ nodeVersion: process.version,
75
+ execPath: process.execPath,
76
+ execArgv: [...process.execArgv],
77
+ nodeOptions: process.env.NODE_OPTIONS || "",
78
+ originalCode: typeof code === "string" ? code : void 0,
79
+ originalMessage: error.message
80
+ }
81
+ );
82
+ }
83
+ async function loadNodeSqlite(dbPath) {
84
+ try {
85
+ return await import('node:sqlite');
86
+ } catch (error) {
87
+ throw mapSqliteImportError(error, dbPath);
88
+ }
89
+ }
90
+ async function createNodeAdapter(dbPath) {
91
+ const sqliteModule = await loadNodeSqlite(dbPath);
92
+ const db = new sqliteModule.DatabaseSync(dbPath);
93
+ return {
94
+ exec(sql) {
95
+ db.exec(sql);
96
+ },
97
+ run(sql, params = []) {
98
+ const result = db.prepare(sql).run(...params);
99
+ return { changes: coerceChanges(result) };
100
+ },
101
+ get(sql, params = []) {
102
+ const row = db.prepare(sql).get(...params);
103
+ return row ? row : null;
104
+ },
105
+ all(sql, params = []) {
106
+ return db.prepare(sql).all(...params);
107
+ }
108
+ };
109
+ }
110
+ async function createBunAdapter(dbPath) {
111
+ const bunModuleName = "bun:sqlite";
112
+ const sqliteModule = await import(bunModuleName);
113
+ const Database = sqliteModule.Database;
114
+ const db = new Database(dbPath, { create: true });
115
+ return {
116
+ exec(sql) {
117
+ db.exec(sql);
118
+ },
119
+ run(sql, params = []) {
120
+ const result = db.query(sql).run(...params);
121
+ return { changes: coerceChanges(result) };
122
+ },
123
+ get(sql, params = []) {
124
+ const row = db.query(sql).get(...params);
125
+ return row != null ? row : null;
126
+ },
127
+ all(sql, params = []) {
128
+ return db.query(sql).all(...params);
129
+ }
130
+ };
131
+ }
132
+ async function initializeDatabase() {
133
+ const dbPath = resolveDbPath();
134
+ await promises.mkdir(dirname(dbPath), { recursive: true });
135
+ const isBunRuntime = typeof globalThis.Bun !== "undefined";
136
+ const adapter = isBunRuntime ? await createBunAdapter(dbPath) : await createNodeAdapter(dbPath);
137
+ adapter.exec("PRAGMA journal_mode = WAL;");
138
+ adapter.exec("PRAGMA foreign_keys = ON;");
139
+ adapter.exec("PRAGMA busy_timeout = 5000;");
140
+ adapter.exec(`
141
+ CREATE TABLE IF NOT EXISTS repos (
142
+ id TEXT PRIMARY KEY,
143
+ name TEXT NOT NULL,
144
+ path TEXT NOT NULL UNIQUE,
145
+ added_at TEXT NOT NULL,
146
+ git_repos_json TEXT
147
+ );
148
+
149
+ CREATE TABLE IF NOT EXISTS prd_states (
150
+ repo_id TEXT NOT NULL,
151
+ slug TEXT NOT NULL,
152
+ tasks_json TEXT,
153
+ progress_json TEXT,
154
+ notes_md TEXT,
155
+ updated_at TEXT NOT NULL,
156
+ PRIMARY KEY (repo_id, slug),
157
+ FOREIGN KEY (repo_id) REFERENCES repos(id) ON DELETE CASCADE
158
+ );
159
+
160
+ CREATE INDEX IF NOT EXISTS idx_prd_states_repo_id ON prd_states(repo_id);
161
+ `);
162
+ return adapter;
163
+ }
164
+ async function getAdapter() {
165
+ if (!adapterPromise) {
166
+ adapterPromise = initializeDatabase();
167
+ }
168
+ return adapterPromise;
169
+ }
170
+ async function dbRun(sql, params = []) {
171
+ const adapter = await getAdapter();
172
+ return adapter.run(sql, params);
173
+ }
174
+ async function dbGet(sql, params = []) {
175
+ const adapter = await getAdapter();
176
+ return adapter.get(sql, params);
177
+ }
178
+ async function dbAll(sql, params = []) {
179
+ const adapter = await getAdapter();
180
+ return adapter.all(sql, params);
181
+ }
182
+
183
+ function findPackageRoot(startDir) {
184
+ let currentDir = startDir;
185
+ while (true) {
186
+ if (existsSync(join(currentDir, "package.json"))) {
187
+ return currentDir;
188
+ }
189
+ const parentDir = dirname(currentDir);
190
+ if (parentDir === currentDir) {
191
+ return startDir;
192
+ }
193
+ currentDir = parentDir;
194
+ }
195
+ }
196
+ function normalizePathSlashes(path) {
197
+ return path.replaceAll("\\", "/");
198
+ }
199
+ function isPathWithin(basePath, candidatePath) {
200
+ const relativePath = relative(resolve(basePath), resolve(candidatePath));
201
+ return relativePath === "" || !relativePath.startsWith("..") && !isAbsolute(relativePath);
202
+ }
203
+ const PACKAGE_ROOT = findPackageRoot(dirname(fileURLToPath(globalThis._importMeta_.url)));
204
+ const LEGACY_REPOS_FILE = join(PACKAGE_ROOT, "server", "data", "repos.json");
205
+ let legacyImportPromise = null;
206
+ function serializeGitRepos(gitRepos) {
207
+ return gitRepos && gitRepos.length > 0 ? JSON.stringify(gitRepos) : null;
208
+ }
209
+ function parseGitRepos(repoPath, gitReposJson) {
210
+ if (!gitReposJson) {
211
+ return void 0;
212
+ }
213
+ try {
214
+ const parsed = JSON.parse(gitReposJson);
215
+ if (!Array.isArray(parsed)) {
216
+ return void 0;
217
+ }
218
+ const repoRoot = resolve(repoPath);
219
+ const validRepos = /* @__PURE__ */ new Map();
220
+ for (const item of parsed) {
221
+ if (!item || typeof item !== "object") {
222
+ continue;
223
+ }
224
+ const relativePath = item.relativePath;
225
+ const name = item.name;
226
+ if (!relativePath || !name) {
227
+ continue;
228
+ }
229
+ const normalizedRelativePath = normalizePathSlashes(relativePath).replace(/^\.\//, "");
230
+ if (!normalizedRelativePath || normalizedRelativePath === ".") {
231
+ continue;
232
+ }
233
+ const absolutePath = resolve(repoRoot, normalizedRelativePath);
234
+ if (!isPathWithin(repoRoot, absolutePath)) {
235
+ continue;
236
+ }
237
+ validRepos.set(normalizedRelativePath, {
238
+ relativePath: normalizedRelativePath,
239
+ absolutePath,
240
+ name
241
+ });
242
+ }
243
+ return validRepos.size > 0 ? Array.from(validRepos.values()) : void 0;
244
+ } catch {
245
+ return void 0;
246
+ }
247
+ }
248
+ function rowToRepo(row) {
249
+ const gitRepos = parseGitRepos(row.path, row.git_repos_json);
250
+ return {
251
+ id: row.id,
252
+ name: row.name,
253
+ path: row.path,
254
+ addedAt: row.added_at,
255
+ ...gitRepos && { gitRepos }
256
+ };
257
+ }
258
+ function isLegacyRepoConfig(value) {
259
+ if (!value || typeof value !== "object") {
260
+ return false;
261
+ }
262
+ const repo = value;
263
+ return typeof repo.id === "string" && typeof repo.name === "string" && typeof repo.path === "string" && typeof repo.addedAt === "string";
264
+ }
265
+ async function importLegacyReposIfNeeded() {
266
+ if (legacyImportPromise) {
267
+ return legacyImportPromise;
268
+ }
269
+ legacyImportPromise = (async () => {
270
+ var _a;
271
+ const row = await dbGet("SELECT COUNT(*) as count FROM repos");
272
+ if (((_a = row == null ? void 0 : row.count) != null ? _a : 0) > 0) {
273
+ return;
274
+ }
275
+ let legacyRepos;
276
+ try {
277
+ const content = await promises.readFile(LEGACY_REPOS_FILE, "utf-8");
278
+ legacyRepos = JSON.parse(content);
279
+ } catch {
280
+ return;
281
+ }
282
+ if (!Array.isArray(legacyRepos) || legacyRepos.length === 0) {
283
+ return;
284
+ }
285
+ for (const candidate of legacyRepos) {
286
+ if (!isLegacyRepoConfig(candidate)) {
287
+ continue;
288
+ }
289
+ const repo = candidate;
290
+ await dbRun(
291
+ `
292
+ INSERT INTO repos (id, name, path, added_at, git_repos_json)
293
+ VALUES (?, ?, ?, ?, ?)
294
+ ON CONFLICT(id) DO UPDATE SET
295
+ name = excluded.name,
296
+ path = excluded.path,
297
+ added_at = excluded.added_at,
298
+ git_repos_json = excluded.git_repos_json
299
+ `,
300
+ [repo.id, repo.name, repo.path, repo.addedAt, serializeGitRepos(repo.gitRepos)]
301
+ );
302
+ }
303
+ try {
304
+ await promises.unlink(LEGACY_REPOS_FILE);
305
+ } catch {
306
+ }
307
+ })();
308
+ return legacyImportPromise;
309
+ }
310
+ async function getRepos() {
311
+ await importLegacyReposIfNeeded();
312
+ const rows = await dbAll("SELECT id, name, path, added_at, git_repos_json FROM repos ORDER BY added_at ASC");
313
+ return rows.map(rowToRepo);
314
+ }
315
+ async function addRepo(path, name) {
316
+ await importLegacyReposIfNeeded();
317
+ const resolvedPath = resolve(path);
318
+ const existing = await dbGet("SELECT id FROM repos WHERE path = ?", [resolvedPath]);
319
+ if (existing) {
320
+ throw new Error("Repository already added");
321
+ }
322
+ const gitRepos = await discoverGitRepos(resolvedPath);
323
+ const repo = {
324
+ id: randomUUID(),
325
+ name: name || basename(resolvedPath),
326
+ path: resolvedPath,
327
+ addedAt: (/* @__PURE__ */ new Date()).toISOString(),
328
+ ...gitRepos.length > 0 && { gitRepos }
329
+ };
330
+ await dbRun(
331
+ "INSERT INTO repos (id, name, path, added_at, git_repos_json) VALUES (?, ?, ?, ?, ?)",
332
+ [repo.id, repo.name, repo.path, repo.addedAt, serializeGitRepos(repo.gitRepos)]
333
+ );
334
+ return repo;
335
+ }
336
+ async function getRepoById(id) {
337
+ await importLegacyReposIfNeeded();
338
+ const row = await dbGet(
339
+ "SELECT id, name, path, added_at, git_repos_json FROM repos WHERE id = ?",
340
+ [id]
341
+ );
342
+ return row ? rowToRepo(row) : void 0;
343
+ }
344
+ async function updateRepoGitRepos(id, gitRepos) {
345
+ await importLegacyReposIfNeeded();
346
+ const result = await dbRun(
347
+ "UPDATE repos SET git_repos_json = ? WHERE id = ?",
348
+ [serializeGitRepos(gitRepos), id]
349
+ );
350
+ return result.changes > 0;
351
+ }
352
+ async function removeRepo(id) {
353
+ await importLegacyReposIfNeeded();
354
+ const result = await dbRun("DELETE FROM repos WHERE id = ?", [id]);
355
+ return result.changes > 0;
356
+ }
357
+ const IGNORED_DIRS = /* @__PURE__ */ new Set([
358
+ "node_modules",
359
+ ".git",
360
+ "vendor",
361
+ "dist",
362
+ "build",
363
+ ".next",
364
+ ".nuxt",
365
+ "__pycache__",
366
+ ".venv",
367
+ "venv",
368
+ "target",
369
+ // Rust
370
+ "Pods"
371
+ // iOS
372
+ ]);
373
+ async function isGitRepo(dirPath) {
374
+ try {
375
+ const gitPath = join(dirPath, ".git");
376
+ const stats = await promises.stat(gitPath);
377
+ return stats.isDirectory() || stats.isFile();
378
+ } catch {
379
+ return false;
380
+ }
381
+ }
382
+ async function discoverGitRepos(basePath, maxDepth = 4) {
383
+ const resolvedBase = resolve(basePath);
384
+ if (await isGitRepo(resolvedBase)) {
385
+ return [];
386
+ }
387
+ const discovered = [];
388
+ async function scanDirectory(dirPath, currentDepth) {
389
+ if (currentDepth > maxDepth) return;
390
+ try {
391
+ const entries = await promises.readdir(dirPath, { withFileTypes: true });
392
+ for (const entry of entries) {
393
+ if (!entry.isDirectory()) continue;
394
+ if (IGNORED_DIRS.has(entry.name)) continue;
395
+ const fullPath = join(dirPath, entry.name);
396
+ if (await isGitRepo(fullPath)) {
397
+ const relativePath = relative(resolvedBase, fullPath);
398
+ discovered.push({
399
+ relativePath,
400
+ absolutePath: fullPath,
401
+ name: entry.name
402
+ });
403
+ continue;
404
+ }
405
+ await scanDirectory(fullPath, currentDepth + 1);
406
+ }
407
+ } catch {
408
+ }
409
+ }
410
+ await scanDirectory(resolvedBase, 1);
411
+ return discovered;
412
+ }
413
+ async function validateRepoPath(path) {
414
+ const trimmedPath = path.trim();
415
+ if (trimmedPath.length === 0) {
416
+ return { valid: false, error: "Path is required" };
417
+ }
418
+ if (trimmedPath.length > 4096) {
419
+ return { valid: false, error: "Path is too long" };
420
+ }
421
+ if (trimmedPath.includes("\0")) {
422
+ return { valid: false, error: "Path contains invalid characters" };
423
+ }
424
+ const isWindowsAbsolutePath = /^[A-Za-z]:[\\/]/.test(trimmedPath);
425
+ if (!isAbsolute(trimmedPath) && !isWindowsAbsolutePath) {
426
+ return { valid: false, error: "Path must be absolute" };
427
+ }
428
+ const resolvedPath = resolve(trimmedPath);
429
+ try {
430
+ const stats = await promises.stat(resolvedPath);
431
+ if (!stats.isDirectory()) {
432
+ return { valid: false, error: "Path is not a directory" };
433
+ }
434
+ const hasPrdDir = await promises.stat(join(resolvedPath, "docs", "prd")).then(() => true).catch(() => false);
435
+ if (!hasPrdDir) {
436
+ return {
437
+ valid: false,
438
+ error: "Directory does not appear to be a valid PRD repository (missing docs/prd directory)"
439
+ };
440
+ }
441
+ return { valid: true };
442
+ } catch {
443
+ return { valid: false, error: "Directory does not exist" };
444
+ }
445
+ }
446
+
447
+ export { getRepoById as a, dbAll as b, dbGet as c, discoverGitRepos as d, addRepo as e, getRepos as g, removeRepo as r, updateRepoGitRepos as u, validateRepoPath as v };
448
+ //# sourceMappingURL=repos.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos.mjs","sources":["../../../../server/utils/db.ts","../../../../server/utils/repos.ts"],"names":["fs"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { promises } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { m as migrateLegacyStateForRepo, f as getPrdStateSummaries, h as getPrdState } from '../nitro/nitro.mjs';
2
+ import { g as getPrdStateSummaries, b as getPrdState, c as resolvePrdMarkdownPath } from './prd-service.mjs';
4
3
 
5
4
  const NODE_SEPARATOR = "::";
6
5
  const MISSING_PREFIX = "missing";
@@ -41,8 +40,8 @@ function parseDependency(rawDependency, currentPrdSlug) {
41
40
  }
42
41
  async function resolvePrdName(repo, prdSlug) {
43
42
  var _a;
44
- const prdPath = join(repo.path, "docs", "prd", `${prdSlug}.md`);
45
43
  try {
44
+ const prdPath = resolvePrdMarkdownPath(repo.path, prdSlug);
46
45
  const content = await promises.readFile(prdPath, "utf-8");
47
46
  const h1Match = content.match(/^#\s+(.+)$/m);
48
47
  return ((_a = h1Match == null ? void 0 : h1Match[1]) == null ? void 0 : _a.trim()) || prdSlug;
@@ -141,7 +140,6 @@ function buildGraphFromInputs(inputs) {
141
140
  }
142
141
  async function buildPrdGraph(repo, prdSlug) {
143
142
  var _a;
144
- await migrateLegacyStateForRepo(repo);
145
143
  const [state, prdName] = await Promise.all([
146
144
  getPrdState(repo.id, prdSlug),
147
145
  resolvePrdName(repo, prdSlug)
@@ -164,23 +162,24 @@ async function buildPrdGraph(repo, prdSlug) {
164
162
  };
165
163
  }
166
164
  async function buildRepoGraph(repo) {
167
- var _a;
168
- await migrateLegacyStateForRepo(repo);
169
165
  const summaries = await getPrdStateSummaries(repo.id);
170
166
  const slugs = [...summaries.keys()].sort((a, b) => a.localeCompare(b));
171
- const inputs = [];
172
- for (const slug of slugs) {
173
- const state = await getPrdState(repo.id, slug);
167
+ const inputs = (await Promise.all(slugs.map(async (slug) => {
168
+ var _a;
169
+ const [state, prdName] = await Promise.all([
170
+ getPrdState(repo.id, slug),
171
+ resolvePrdName(repo, slug)
172
+ ]);
174
173
  const tasks = (_a = state == null ? void 0 : state.tasks) == null ? void 0 : _a.tasks;
175
174
  if (!Array.isArray(tasks)) {
176
- continue;
175
+ return null;
177
176
  }
178
- inputs.push({
177
+ return {
179
178
  prdSlug: slug,
180
- prdName: await resolvePrdName(repo, slug),
179
+ prdName,
181
180
  tasks
182
- });
183
- }
181
+ };
182
+ }))).filter((input) => input !== null);
184
183
  const graph = buildGraphFromInputs(inputs);
185
184
  return {
186
185
  scope: "repo",
@@ -1 +1 @@
1
- {"version":3,"file":"task-graph.mjs","sources":["../../../../server/utils/task-graph.ts"],"names":["fs"],"mappings":"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"}
1
+ {"version":3,"file":"task-graph.mjs","sources":["../../../../server/utils/task-graph.ts"],"names":["fs"],"mappings":"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"}