@cluesmith/codev 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/agent-farm/cli.d.ts.map +1 -1
  2. package/dist/agent-farm/cli.js +19 -0
  3. package/dist/agent-farm/cli.js.map +1 -1
  4. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  5. package/dist/agent-farm/commands/cleanup.js +18 -1
  6. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  7. package/dist/agent-farm/commands/consult.d.ts +16 -0
  8. package/dist/agent-farm/commands/consult.d.ts.map +1 -0
  9. package/dist/agent-farm/commands/consult.js +51 -0
  10. package/dist/agent-farm/commands/consult.js.map +1 -0
  11. package/dist/agent-farm/commands/open.js +6 -6
  12. package/dist/agent-farm/commands/open.js.map +1 -1
  13. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  14. package/dist/agent-farm/commands/spawn.js +51 -42
  15. package/dist/agent-farm/commands/spawn.js.map +1 -1
  16. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  17. package/dist/agent-farm/commands/start.js +9 -14
  18. package/dist/agent-farm/commands/start.js.map +1 -1
  19. package/dist/agent-farm/commands/util.js +2 -2
  20. package/dist/agent-farm/commands/util.js.map +1 -1
  21. package/dist/agent-farm/db/errors.d.ts +4 -0
  22. package/dist/agent-farm/db/errors.d.ts.map +1 -1
  23. package/dist/agent-farm/db/errors.js +8 -0
  24. package/dist/agent-farm/db/errors.js.map +1 -1
  25. package/dist/agent-farm/servers/dashboard-server.js +125 -71
  26. package/dist/agent-farm/servers/dashboard-server.js.map +1 -1
  27. package/dist/agent-farm/servers/open-server.d.ts +9 -0
  28. package/dist/agent-farm/servers/open-server.d.ts.map +1 -0
  29. package/dist/agent-farm/servers/{annotate-server.js → open-server.js} +17 -15
  30. package/dist/agent-farm/servers/open-server.js.map +1 -0
  31. package/dist/agent-farm/servers/tower-server.js +4 -7
  32. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  33. package/dist/agent-farm/state.d.ts +5 -0
  34. package/dist/agent-farm/state.d.ts.map +1 -1
  35. package/dist/agent-farm/state.js +17 -0
  36. package/dist/agent-farm/state.js.map +1 -1
  37. package/dist/agent-farm/types.d.ts +1 -1
  38. package/dist/agent-farm/types.d.ts.map +1 -1
  39. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  40. package/dist/agent-farm/utils/config.js +13 -7
  41. package/dist/agent-farm/utils/config.js.map +1 -1
  42. package/dist/agent-farm/utils/port-registry.d.ts +1 -1
  43. package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
  44. package/dist/agent-farm/utils/port-registry.js +1 -1
  45. package/dist/agent-farm/utils/port-registry.js.map +1 -1
  46. package/dist/agent-farm/utils/shell.d.ts +19 -0
  47. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  48. package/dist/agent-farm/utils/shell.js +28 -0
  49. package/dist/agent-farm/utils/shell.js.map +1 -1
  50. package/dist/cli.d.ts.map +1 -1
  51. package/dist/cli.js +33 -0
  52. package/dist/cli.js.map +1 -1
  53. package/dist/commands/adopt.d.ts +3 -0
  54. package/dist/commands/adopt.d.ts.map +1 -1
  55. package/dist/commands/adopt.js +31 -25
  56. package/dist/commands/adopt.js.map +1 -1
  57. package/dist/commands/consult/index.d.ts +3 -2
  58. package/dist/commands/consult/index.d.ts.map +1 -1
  59. package/dist/commands/consult/index.js +128 -54
  60. package/dist/commands/consult/index.js.map +1 -1
  61. package/dist/commands/doctor.d.ts.map +1 -1
  62. package/dist/commands/doctor.js +88 -36
  63. package/dist/commands/doctor.js.map +1 -1
  64. package/dist/commands/eject.d.ts +18 -0
  65. package/dist/commands/eject.d.ts.map +1 -0
  66. package/dist/commands/eject.js +149 -0
  67. package/dist/commands/eject.js.map +1 -0
  68. package/dist/commands/import.d.ts +16 -0
  69. package/dist/commands/import.d.ts.map +1 -0
  70. package/dist/commands/import.js +278 -0
  71. package/dist/commands/import.js.map +1 -0
  72. package/dist/commands/init.d.ts +3 -0
  73. package/dist/commands/init.d.ts.map +1 -1
  74. package/dist/commands/init.js +32 -27
  75. package/dist/commands/init.js.map +1 -1
  76. package/dist/lib/projectlist-parser.d.ts +70 -0
  77. package/dist/lib/projectlist-parser.d.ts.map +1 -0
  78. package/dist/lib/projectlist-parser.js +200 -0
  79. package/dist/lib/projectlist-parser.js.map +1 -0
  80. package/dist/lib/skeleton.d.ts +41 -0
  81. package/dist/lib/skeleton.d.ts.map +1 -0
  82. package/dist/lib/skeleton.js +110 -0
  83. package/dist/lib/skeleton.js.map +1 -0
  84. package/dist/lib/templates.d.ts +2 -1
  85. package/dist/lib/templates.d.ts.map +1 -1
  86. package/dist/lib/templates.js +11 -10
  87. package/dist/lib/templates.js.map +1 -1
  88. package/package.json +5 -4
  89. package/{templates → skeleton}/DEPENDENCIES.md +3 -48
  90. package/skeleton/bin/agent-farm +7 -0
  91. package/skeleton/docs/commands/agent-farm.md +469 -0
  92. package/skeleton/docs/commands/codev.md +253 -0
  93. package/skeleton/docs/commands/consult.md +286 -0
  94. package/skeleton/docs/commands/overview.md +108 -0
  95. package/skeleton/maintain/.gitkeep +2 -0
  96. package/{templates → skeleton}/protocols/experiment/protocol.md +2 -2
  97. package/skeleton/protocols/maintain/protocol.md +502 -0
  98. package/skeleton/protocols/maintain/templates/maintenance-run.md +64 -0
  99. package/{templates → skeleton}/protocols/spider/protocol.md +9 -9
  100. package/{templates/protocols/spider-solo → skeleton/protocols/spider}/templates/plan.md +22 -1
  101. package/{templates/protocols/spider-solo → skeleton/protocols/spider}/templates/spec.md +30 -1
  102. package/skeleton/protocols/tick/protocol.md +277 -0
  103. package/skeleton/resources/lessons-learned.md +30 -0
  104. package/skeleton/resources/workflow-reference.md +242 -0
  105. package/skeleton/roles/architect.md +283 -0
  106. package/{templates → skeleton}/roles/builder.md +2 -0
  107. package/skeleton/roles/review-types/impl-review.md +56 -0
  108. package/skeleton/roles/review-types/integration-review.md +68 -0
  109. package/skeleton/roles/review-types/plan-review.md +59 -0
  110. package/skeleton/roles/review-types/pr-ready.md +72 -0
  111. package/skeleton/roles/review-types/spec-review.md +55 -0
  112. package/skeleton/templates/lessons-learned.md +28 -0
  113. package/{templates → skeleton}/templates/projectlist.md +17 -16
  114. package/dist/agent-farm/servers/annotate-server.d.ts +0 -9
  115. package/dist/agent-farm/servers/annotate-server.d.ts.map +0 -1
  116. package/dist/agent-farm/servers/annotate-server.js.map +0 -1
  117. package/templates/agents/architecture-documenter.md +0 -189
  118. package/templates/agents/codev-updater.md +0 -276
  119. package/templates/agents/spider-protocol-updater.md +0 -118
  120. package/templates/annotate.html +0 -903
  121. package/templates/bin/agent-farm +0 -18
  122. package/templates/bin/annotate-server.js +0 -140
  123. package/templates/dashboard-split.html +0 -1679
  124. package/templates/dashboard.html +0 -149
  125. package/templates/protocols/maintain/protocol.md +0 -235
  126. package/templates/protocols/spider/templates/plan.md +0 -169
  127. package/templates/protocols/spider/templates/review.md +0 -207
  128. package/templates/protocols/spider/templates/spec.md +0 -140
  129. package/templates/protocols/spider-solo/protocol.md +0 -619
  130. package/templates/protocols/tick/protocol.md +0 -250
  131. package/templates/roles/architect.md +0 -230
  132. package/templates/tower.html +0 -1032
  133. /package/{templates/AGENTS.md → skeleton/AGENTS.md.template} +0 -0
  134. /package/{templates/CLAUDE.md → skeleton/CLAUDE.md.template} +0 -0
  135. /package/{templates → skeleton}/bin/codev-doctor +0 -0
  136. /package/{templates → skeleton}/builders.md +0 -0
  137. /package/{templates → skeleton}/config.json +0 -0
  138. /package/{templates → skeleton}/plans/.gitkeep +0 -0
  139. /package/{templates → skeleton}/protocols/experiment/templates/notes.md +0 -0
  140. /package/{templates/protocols/spider-solo → skeleton/protocols/spider}/templates/review.md +0 -0
  141. /package/{templates → skeleton}/protocols/tick/templates/plan.md +0 -0
  142. /package/{templates → skeleton}/protocols/tick/templates/review.md +0 -0
  143. /package/{templates → skeleton}/protocols/tick/templates/spec.md +0 -0
  144. /package/{templates → skeleton}/reviews/.gitkeep +0 -0
  145. /package/{templates → skeleton}/roles/consultant.md +0 -0
  146. /package/{templates → skeleton}/specs/.gitkeep +0 -0
@@ -0,0 +1,278 @@
1
+ /**
2
+ * codev import - AI-assisted protocol import from other codev projects
3
+ *
4
+ * Fetches codev/ directory from another project (local or GitHub) and
5
+ * spawns an interactive Claude session to analyze differences and
6
+ * recommend imports.
7
+ */
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import * as os from 'node:os';
11
+ import { spawn, execSync } from 'node:child_process';
12
+ import chalk from 'chalk';
13
+ import { findProjectRoot } from '../lib/skeleton.js';
14
+ /**
15
+ * Parse a source argument into its type and path
16
+ */
17
+ function parseSource(source) {
18
+ // GitHub URL patterns:
19
+ // - github:owner/repo
20
+ // - https://github.com/owner/repo
21
+ // - git@github.com:owner/repo.git
22
+ if (source.startsWith('github:')) {
23
+ const repo = source.slice('github:'.length);
24
+ return { type: 'github', path: repo, repo };
25
+ }
26
+ if (source.includes('github.com')) {
27
+ // Extract owner/repo from URL
28
+ // Regex captures owner/repo including dots (e.g., vercel/next.js, owner/repo.name)
29
+ const match = source.match(/github\.com[/:]([\w.-]+\/[\w.-]+)/);
30
+ if (match) {
31
+ const repo = match[1].replace(/\.git$/, '');
32
+ return { type: 'github', path: repo, repo };
33
+ }
34
+ }
35
+ // Treat as local path
36
+ return { type: 'local', path: source };
37
+ }
38
+ /**
39
+ * Fetch codev directory from GitHub
40
+ */
41
+ async function fetchFromGitHub(repo, tempDir) {
42
+ console.log(chalk.dim(`Fetching from GitHub: ${repo}...`));
43
+ // Clone with depth 1 to get only latest
44
+ const cloneUrl = `https://github.com/${repo}.git`;
45
+ try {
46
+ execSync(`git clone --depth 1 "${cloneUrl}" "${tempDir}"`, {
47
+ stdio: 'pipe',
48
+ encoding: 'utf-8',
49
+ });
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Failed to clone ${repo}: ${error instanceof Error ? error.message : String(error)}`);
53
+ }
54
+ const codevDir = path.join(tempDir, 'codev');
55
+ if (!fs.existsSync(codevDir)) {
56
+ throw new Error(`Repository ${repo} does not have a codev/ directory`);
57
+ }
58
+ return codevDir;
59
+ }
60
+ /**
61
+ * Read relevant codev files for comparison
62
+ */
63
+ function readCodevDirectory(dir) {
64
+ const files = new Map();
65
+ // Directories to include in comparison
66
+ const includeDirs = ['protocols', 'resources', 'roles'];
67
+ function walkDir(currentPath, relativePath) {
68
+ if (!fs.existsSync(currentPath))
69
+ return;
70
+ const entries = fs.readdirSync(currentPath, { withFileTypes: true });
71
+ for (const entry of entries) {
72
+ const fullPath = path.join(currentPath, entry.name);
73
+ const relPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
74
+ if (entry.isDirectory()) {
75
+ walkDir(fullPath, relPath);
76
+ }
77
+ else if (entry.name.endsWith('.md')) {
78
+ try {
79
+ const content = fs.readFileSync(fullPath, 'utf-8');
80
+ files.set(relPath, content);
81
+ }
82
+ catch {
83
+ // Skip unreadable files
84
+ }
85
+ }
86
+ }
87
+ }
88
+ for (const subdir of includeDirs) {
89
+ walkDir(path.join(dir, subdir), subdir);
90
+ }
91
+ return files;
92
+ }
93
+ /**
94
+ * Format files map for Claude context
95
+ */
96
+ function formatFilesForContext(files, label) {
97
+ let output = `## ${label}\n\n`;
98
+ if (files.size === 0) {
99
+ output += '(No codev files found)\n';
100
+ return output;
101
+ }
102
+ for (const [filePath, content] of files) {
103
+ output += `### ${filePath}\n\n`;
104
+ output += '```markdown\n';
105
+ // Truncate very long files
106
+ if (content.length > 10000) {
107
+ output += content.substring(0, 10000);
108
+ output += '\n\n... (truncated, ' + content.length + ' chars total)\n';
109
+ }
110
+ else {
111
+ output += content;
112
+ }
113
+ output += '\n```\n\n';
114
+ }
115
+ return output;
116
+ }
117
+ /**
118
+ * Build the prompt for Claude
119
+ */
120
+ function buildImportPrompt(sourceFiles, targetFiles, sourceLabel) {
121
+ return `You are helping import protocol improvements from another codev project.
122
+
123
+ The user wants to import improvements from "${sourceLabel}" into their local codev installation.
124
+
125
+ ${formatFilesForContext(sourceFiles, 'SOURCE (from ' + sourceLabel + ')')}
126
+
127
+ ${formatFilesForContext(targetFiles, 'TARGET (local codev/)')}
128
+
129
+ ---
130
+
131
+ ## Your Task
132
+
133
+ Analyze the differences between SOURCE and TARGET and help the user decide what to import.
134
+
135
+ Focus on:
136
+ 1. **Protocol improvements**: New phases, better documentation, additional guidance
137
+ 2. **Lessons learned**: Wisdom from other projects' reviews
138
+ 3. **Architectural patterns**: Better ways to document or structure things
139
+ 4. **New protocols**: Protocols that exist in source but not target
140
+
141
+ For each potential import, explain:
142
+ - What it is and why it might be valuable
143
+ - Any risks or considerations
144
+ - Your recommendation (import, skip, or merge manually)
145
+
146
+ Be interactive - discuss with the user and wait for their approval before making changes.
147
+
148
+ When the user approves a change, make the edit to the appropriate file in codev/.
149
+
150
+ Start by summarizing the key differences you found.`;
151
+ }
152
+ /**
153
+ * Main import entry point
154
+ */
155
+ export async function importCommand(source, options = {}) {
156
+ const { dryRun = false } = options;
157
+ if (!source) {
158
+ throw new Error('Source required.\n\n' +
159
+ 'Usage:\n' +
160
+ ' codev import /path/to/other-project\n' +
161
+ ' codev import github:owner/repo\n' +
162
+ ' codev import https://github.com/owner/repo');
163
+ }
164
+ const projectRoot = findProjectRoot();
165
+ const localCodevDir = path.join(projectRoot, 'codev');
166
+ if (!fs.existsSync(localCodevDir)) {
167
+ throw new Error('No codev/ directory found in current project.\n' +
168
+ 'Run "codev init" or "codev adopt" first.');
169
+ }
170
+ console.log('');
171
+ console.log(chalk.bold('Codev Import'));
172
+ console.log(chalk.dim('AI-assisted protocol import from other projects'));
173
+ console.log('');
174
+ const parsed = parseSource(source);
175
+ let sourceCodevDir;
176
+ let tempDir = null;
177
+ let sourceLabel = source;
178
+ try {
179
+ if (parsed.type === 'github') {
180
+ // Create temp directory for GitHub clone
181
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'codev-import-'));
182
+ sourceCodevDir = await fetchFromGitHub(parsed.repo, tempDir);
183
+ sourceLabel = `github:${parsed.repo}`;
184
+ console.log(chalk.green('✓'), `Fetched ${parsed.repo}`);
185
+ }
186
+ else {
187
+ // Local path
188
+ sourceCodevDir = path.join(parsed.path, 'codev');
189
+ if (!fs.existsSync(sourceCodevDir)) {
190
+ // Maybe they specified the codev dir directly?
191
+ if (fs.existsSync(parsed.path) && fs.statSync(parsed.path).isDirectory()) {
192
+ // Check if it looks like a codev directory
193
+ if (fs.existsSync(path.join(parsed.path, 'protocols')) ||
194
+ fs.existsSync(path.join(parsed.path, 'roles'))) {
195
+ sourceCodevDir = parsed.path;
196
+ }
197
+ else {
198
+ throw new Error(`No codev/ directory found at ${parsed.path}`);
199
+ }
200
+ }
201
+ else {
202
+ throw new Error(`Path not found: ${parsed.path}`);
203
+ }
204
+ }
205
+ sourceLabel = path.basename(path.dirname(sourceCodevDir)) || parsed.path;
206
+ console.log(chalk.green('✓'), `Found local source: ${sourceCodevDir}`);
207
+ }
208
+ // Read files from both directories
209
+ console.log(chalk.dim('Reading source files...'));
210
+ const sourceFiles = readCodevDirectory(sourceCodevDir);
211
+ console.log(chalk.dim(` Found ${sourceFiles.size} files`));
212
+ console.log(chalk.dim('Reading target files...'));
213
+ const targetFiles = readCodevDirectory(localCodevDir);
214
+ console.log(chalk.dim(` Found ${targetFiles.size} files`));
215
+ if (sourceFiles.size === 0) {
216
+ throw new Error('No codev files found in source');
217
+ }
218
+ // Build the prompt
219
+ const prompt = buildImportPrompt(sourceFiles, targetFiles, sourceLabel);
220
+ if (dryRun) {
221
+ console.log('');
222
+ console.log(chalk.yellow('Dry run - would spawn Claude with this context:'));
223
+ console.log('');
224
+ console.log(chalk.dim('Source files:'));
225
+ for (const file of sourceFiles.keys()) {
226
+ console.log(chalk.dim(` - ${file}`));
227
+ }
228
+ console.log('');
229
+ console.log(chalk.dim('Target files:'));
230
+ for (const file of targetFiles.keys()) {
231
+ console.log(chalk.dim(` - ${file}`));
232
+ }
233
+ console.log('');
234
+ console.log(chalk.dim('Prompt length:'), prompt.length, 'chars');
235
+ return;
236
+ }
237
+ // Check if claude is available
238
+ try {
239
+ execSync('which claude', { stdio: 'pipe' });
240
+ }
241
+ catch {
242
+ throw new Error('Claude CLI not found.\n' +
243
+ 'Install with: npm install -g @anthropic-ai/claude-code');
244
+ }
245
+ console.log('');
246
+ console.log(chalk.bold('Starting interactive Claude session...'));
247
+ console.log(chalk.dim('Claude will analyze the differences and help you decide what to import.'));
248
+ console.log('');
249
+ // Spawn interactive Claude session
250
+ // We use -p to pass the initial prompt, but NOT --print so it stays interactive
251
+ const claudeProcess = spawn('claude', ['-p', prompt], {
252
+ stdio: 'inherit',
253
+ cwd: projectRoot, // Run from project root so Claude can make edits
254
+ });
255
+ await new Promise((resolve, reject) => {
256
+ claudeProcess.on('close', (code) => {
257
+ if (code === 0) {
258
+ resolve();
259
+ }
260
+ else {
261
+ reject(new Error(`Claude exited with code ${code}`));
262
+ }
263
+ });
264
+ claudeProcess.on('error', (error) => {
265
+ reject(error);
266
+ });
267
+ });
268
+ console.log('');
269
+ console.log(chalk.green('✓'), 'Import session complete');
270
+ }
271
+ finally {
272
+ // Clean up temp directory if we created one
273
+ if (tempDir && fs.existsSync(tempDir)) {
274
+ fs.rmSync(tempDir, { recursive: true, force: true });
275
+ }
276
+ }
277
+ }
278
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMrD;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,uBAAuB;IACvB,sBAAsB;IACtB,kCAAkC;IAClC,kCAAkC;IAElC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,8BAA8B;QAC9B,mFAAmF;QACnF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAChE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,IAAI,KAAK,CAAC,CAAC,CAAC;IAE3D,wCAAwC;IACxC,MAAM,QAAQ,GAAG,sBAAsB,IAAI,MAAM,CAAC;IAElD,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,QAAQ,MAAM,OAAO,GAAG,EAAE;YACzD,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,mCAAmC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,uCAAuC;IACvC,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAExD,SAAS,OAAO,CAAC,WAAmB,EAAE,YAAoB;QACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO;QAExC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAE5E,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACnD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,KAA0B,EAAE,KAAa;IACtE,IAAI,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IAE/B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,0BAA0B,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,OAAO,QAAQ,MAAM,CAAC;QAChC,MAAM,IAAI,eAAe,CAAC;QAC1B,2BAA2B;QAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,IAAI,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,OAAO,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,WAAW,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,WAAgC,EAChC,WAAgC,EAChC,WAAmB;IAEnB,OAAO;;8CAEqC,WAAW;;EAEvD,qBAAqB,CAAC,WAAW,EAAE,eAAe,GAAG,WAAW,GAAG,GAAG,CAAC;;EAEvE,qBAAqB,CAAC,WAAW,EAAE,uBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;oDAuBT,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,UAAyB,EAAE;IAC7E,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,sBAAsB;YACtB,UAAU;YACV,yCAAyC;YACzC,oCAAoC;YACpC,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,iDAAiD;YACjD,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,cAAsB,CAAC;IAC3B,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,WAAW,GAAG,MAAM,CAAC;IAEzB,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,yCAAyC;YACzC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;YAClE,cAAc,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAK,EAAE,OAAO,CAAC,CAAC;YAC9D,WAAW,GAAG,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,aAAa;YACb,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,+CAA+C;gBAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACzE,2CAA2C;oBAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;wBAClD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;wBACnD,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,uBAAuB,cAAc,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,mCAAmC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QAE5D,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAExE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,yBAAyB;gBACzB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,mCAAmC;QACnC,gFAAgF;QAChF,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACpD,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,WAAW,EAAE,iDAAiD;SACpE,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAE3D,CAAC;YAAS,CAAC;QACT,4CAA4C;QAC5C,IAAI,OAAO,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,5 +1,8 @@
1
1
  /**
2
2
  * codev init - Create a new codev project
3
+ *
4
+ * Creates a minimal codev structure. Framework files (protocols, roles)
5
+ * are provided by the embedded skeleton at runtime, not copied to the project.
3
6
  */
4
7
  interface InitOptions {
5
8
  yes?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA2CD;;GAEG;AACH,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIzF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA2CD;;GAEG;AACH,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoIzF"}
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * codev init - Create a new codev project
3
+ *
4
+ * Creates a minimal codev structure. Framework files (protocols, roles)
5
+ * are provided by the embedded skeleton at runtime, not copied to the project.
3
6
  */
4
7
  import * as fs from 'node:fs';
5
8
  import * as path from 'node:path';
6
9
  import * as readline from 'node:readline';
7
10
  import chalk from 'chalk';
8
- import { getTemplatesDir, copyTemplateDir, saveHashStore } from '../lib/templates.js';
11
+ import { getTemplatesDir } from '../lib/templates.js';
9
12
  /**
10
13
  * Prompt user for input
11
14
  */
@@ -77,36 +80,38 @@ export async function init(projectName, options = {}) {
77
80
  }
78
81
  // Create directory
79
82
  fs.mkdirSync(targetDir, { recursive: true });
80
- // Copy templates
81
- const templatesDir = getTemplatesDir();
82
- const hashes = {};
83
+ // Create minimal codev structure
84
+ // Framework files (protocols, roles) are provided by embedded skeleton at runtime
83
85
  let fileCount = 0;
84
- console.log(chalk.dim('Copying codev structure...'));
85
- copyTemplateDir(templatesDir, path.join(targetDir, 'codev'), {
86
- skipExisting: false,
87
- hashes,
88
- onFile: (relativePath, action) => {
89
- if (action === 'copy') {
90
- fileCount++;
91
- console.log(chalk.green(' +'), `codev/${relativePath}`);
92
- }
93
- },
94
- });
95
- // Save hash store for future updates
96
- saveHashStore(targetDir, hashes);
97
- // Create empty directories for user data
98
- const userDirs = ['specs', 'plans', 'reviews', 'resources'];
86
+ console.log(chalk.dim('Creating minimal codev structure...'));
87
+ console.log(chalk.dim('(Framework files provided by @cluesmith/codev at runtime)'));
88
+ console.log('');
89
+ // Create user data directories
90
+ const userDirs = ['specs', 'plans', 'reviews'];
99
91
  for (const dir of userDirs) {
100
92
  const dirPath = path.join(targetDir, 'codev', dir);
101
- if (!fs.existsSync(dirPath)) {
102
- fs.mkdirSync(dirPath, { recursive: true });
103
- // Create .gitkeep to preserve empty directory
104
- fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
105
- }
93
+ fs.mkdirSync(dirPath, { recursive: true });
94
+ // Create .gitkeep to preserve empty directory
95
+ fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
96
+ console.log(chalk.green(' +'), `codev/${dir}/`);
97
+ fileCount++;
106
98
  }
107
- // Create CLAUDE.md / AGENTS.md at project root
108
- const claudeMdSrc = path.join(templatesDir, 'CLAUDE.md');
109
- const agentsMdSrc = path.join(templatesDir, 'AGENTS.md');
99
+ // Create projectlist.md for tracking projects
100
+ const projectlistPath = path.join(targetDir, 'codev', 'projectlist.md');
101
+ const projectlistContent = `# Project List
102
+
103
+ Track all projects here. See codev documentation for status values.
104
+
105
+ | ID | Name | Status | Priority | Notes |
106
+ |----|------|--------|----------|-------|
107
+ `;
108
+ fs.writeFileSync(projectlistPath, projectlistContent);
109
+ console.log(chalk.green(' +'), 'codev/projectlist.md');
110
+ fileCount++;
111
+ // Create CLAUDE.md / AGENTS.md at project root from skeleton templates
112
+ const skeletonDir = getTemplatesDir();
113
+ const claudeMdSrc = path.join(skeletonDir, 'CLAUDE.md.template');
114
+ const agentsMdSrc = path.join(skeletonDir, 'AGENTS.md.template');
110
115
  if (fs.existsSync(claudeMdSrc)) {
111
116
  const content = fs.readFileSync(claudeMdSrc, 'utf-8')
112
117
  .replace(/\{\{PROJECT_NAME\}\}/g, projectBaseName);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Projectlist.md parser for the Projects Tab UI (Spec 0045)
3
+ *
4
+ * This module provides functions to parse the YAML project entries from
5
+ * codev/projectlist.md. It's used by both the dashboard UI and for testing.
6
+ */
7
+ export interface ProjectFiles {
8
+ spec?: string | null;
9
+ plan?: string | null;
10
+ review?: string | null;
11
+ }
12
+ export interface ProjectTimestamps {
13
+ conceived_at?: string | null;
14
+ specified_at?: string | null;
15
+ planned_at?: string | null;
16
+ implementing_at?: string | null;
17
+ implemented_at?: string | null;
18
+ committed_at?: string | null;
19
+ integrated_at?: string | null;
20
+ }
21
+ export interface Project {
22
+ id: string;
23
+ title: string;
24
+ summary?: string;
25
+ status: string;
26
+ priority?: string;
27
+ release?: string;
28
+ files?: ProjectFiles;
29
+ dependencies?: string[];
30
+ tags?: string[];
31
+ ticks?: string[];
32
+ timestamps?: ProjectTimestamps;
33
+ notes?: string;
34
+ }
35
+ export declare const VALID_STATUSES: readonly ["conceived", "specified", "planned", "implementing", "implemented", "committed", "integrated", "abandoned", "on-hold"];
36
+ export type ProjectStatus = (typeof VALID_STATUSES)[number];
37
+ export declare const LIFECYCLE_STAGES: ProjectStatus[];
38
+ /**
39
+ * XSS-safe HTML escaping
40
+ */
41
+ export declare function escapeHtml(text: string | null | undefined): string;
42
+ /**
43
+ * Parse a single project entry from YAML-like text
44
+ */
45
+ export declare function parseProjectEntry(text: string): Partial<Project>;
46
+ /**
47
+ * Validate that a project entry is valid
48
+ */
49
+ export declare function isValidProject(project: Partial<Project>): project is Project;
50
+ /**
51
+ * Parse projectlist.md content into array of projects
52
+ */
53
+ export declare function parseProjectlist(content: string): Project[];
54
+ /**
55
+ * Get the index of a lifecycle stage
56
+ */
57
+ export declare function getStageIndex(status: string): number;
58
+ /**
59
+ * Filter projects to only active (non-terminal) ones
60
+ */
61
+ export declare function getActiveProjects(projects: Project[]): Project[];
62
+ /**
63
+ * Filter projects to only terminal (abandoned, on-hold) ones
64
+ */
65
+ export declare function getTerminalProjects(projects: Project[]): Project[];
66
+ /**
67
+ * Get projects grouped by status
68
+ */
69
+ export declare function groupByStatus(projects: Project[], statuses: string[]): Record<string, Project[]>;
70
+ //# sourceMappingURL=projectlist-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectlist-parser.d.ts","sourceRoot":"","sources":["../../src/lib/projectlist-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc,kIAUjB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAQ3C,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAQlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA6EhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,IAAI,OAAO,CA6B5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CA8B3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAIhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAIlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAM3B"}