@cluesmith/codev 1.5.9 → 1.5.11

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 (45) hide show
  1. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  2. package/dist/agent-farm/commands/architect.js +5 -20
  3. package/dist/agent-farm/commands/architect.js.map +1 -1
  4. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  5. package/dist/agent-farm/commands/spawn.js +35 -22
  6. package/dist/agent-farm/commands/spawn.js.map +1 -1
  7. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  8. package/dist/agent-farm/commands/start.js +35 -21
  9. package/dist/agent-farm/commands/start.js.map +1 -1
  10. package/dist/agent-farm/servers/dashboard-server.js +5 -53
  11. package/dist/agent-farm/servers/dashboard-server.js.map +1 -1
  12. package/dist/agent-farm/servers/open-server.js +14 -22
  13. package/dist/agent-farm/servers/open-server.js.map +1 -1
  14. package/dist/agent-farm/servers/tower-server.js +2 -54
  15. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  16. package/dist/agent-farm/utils/roles.d.ts +32 -0
  17. package/dist/agent-farm/utils/roles.d.ts.map +1 -0
  18. package/dist/agent-farm/utils/roles.js +43 -0
  19. package/dist/agent-farm/utils/roles.js.map +1 -0
  20. package/dist/agent-farm/utils/server-utils.d.ts +24 -0
  21. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -0
  22. package/dist/agent-farm/utils/server-utils.js +66 -0
  23. package/dist/agent-farm/utils/server-utils.js.map +1 -0
  24. package/dist/commands/adopt.d.ts.map +1 -1
  25. package/dist/commands/adopt.js +37 -157
  26. package/dist/commands/adopt.js.map +1 -1
  27. package/dist/commands/init.d.ts.map +1 -1
  28. package/dist/commands/init.js +26 -138
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/lib/cli-prompts.d.ts +20 -0
  31. package/dist/lib/cli-prompts.d.ts.map +1 -0
  32. package/dist/lib/cli-prompts.js +51 -0
  33. package/dist/lib/cli-prompts.js.map +1 -0
  34. package/dist/lib/scaffold.d.ts +81 -0
  35. package/dist/lib/scaffold.d.ts.map +1 -0
  36. package/dist/lib/scaffold.js +189 -0
  37. package/dist/lib/scaffold.js.map +1 -0
  38. package/package.json +1 -1
  39. package/templates/dashboard/js/activity.js +4 -130
  40. package/templates/dashboard/js/dialogs.js +4 -49
  41. package/templates/dashboard/js/files.js +2 -29
  42. package/templates/dashboard/js/main.js +2 -31
  43. package/templates/dashboard/js/tabs.js +6 -30
  44. package/templates/dashboard/js/utils.js +199 -0
  45. package/templates/open.html +8 -8
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Role prompt utilities
3
+ * Extracted from start.ts, spawn.ts, architect.ts to eliminate duplication
4
+ * (Maintenance Run 0004)
5
+ */
6
+ export interface RoleConfig {
7
+ codevDir: string;
8
+ bundledRolesDir: string;
9
+ }
10
+ export interface RolePromptPath {
11
+ path: string;
12
+ source: 'local' | 'bundled';
13
+ }
14
+ export interface RolePromptContent {
15
+ content: string;
16
+ source: 'local' | 'bundled';
17
+ }
18
+ /**
19
+ * Find role prompt file path (local first, then bundled)
20
+ * @param config - Configuration with codevDir and bundledRolesDir
21
+ * @param roleName - Name of the role (e.g., 'architect', 'builder')
22
+ * @returns Path info or null if not found
23
+ */
24
+ export declare function findRolePromptPath(config: RoleConfig, roleName: string): RolePromptPath | null;
25
+ /**
26
+ * Load role prompt content (local first, then bundled)
27
+ * @param config - Configuration with codevDir and bundledRolesDir
28
+ * @param roleName - Name of the role (e.g., 'architect', 'builder')
29
+ * @returns Content and source or null if not found
30
+ */
31
+ export declare function loadRolePrompt(config: RoleConfig, roleName: string): RolePromptContent | null;
32
+ //# sourceMappingURL=roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/roles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAc9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAS7F"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Role prompt utilities
3
+ * Extracted from start.ts, spawn.ts, architect.ts to eliminate duplication
4
+ * (Maintenance Run 0004)
5
+ */
6
+ import { existsSync, readFileSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ /**
9
+ * Find role prompt file path (local first, then bundled)
10
+ * @param config - Configuration with codevDir and bundledRolesDir
11
+ * @param roleName - Name of the role (e.g., 'architect', 'builder')
12
+ * @returns Path info or null if not found
13
+ */
14
+ export function findRolePromptPath(config, roleName) {
15
+ // Try local project first
16
+ const localPath = resolve(config.codevDir, 'roles', `${roleName}.md`);
17
+ if (existsSync(localPath)) {
18
+ return { path: localPath, source: 'local' };
19
+ }
20
+ // Fall back to bundled
21
+ const bundledPath = resolve(config.bundledRolesDir, `${roleName}.md`);
22
+ if (existsSync(bundledPath)) {
23
+ return { path: bundledPath, source: 'bundled' };
24
+ }
25
+ return null;
26
+ }
27
+ /**
28
+ * Load role prompt content (local first, then bundled)
29
+ * @param config - Configuration with codevDir and bundledRolesDir
30
+ * @param roleName - Name of the role (e.g., 'architect', 'builder')
31
+ * @returns Content and source or null if not found
32
+ */
33
+ export function loadRolePrompt(config, roleName) {
34
+ const result = findRolePromptPath(config, roleName);
35
+ if (!result) {
36
+ return null;
37
+ }
38
+ return {
39
+ content: readFileSync(result.path, 'utf-8'),
40
+ source: result.source,
41
+ };
42
+ }
43
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/roles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,QAAgB;IACrE,0BAA0B;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,QAAgB;IACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared server utilities
3
+ * Extracted from dashboard-server.ts, tower-server.ts, open-server.ts
4
+ * to eliminate code duplication (Maintenance Run 0004)
5
+ */
6
+ import type * as http from 'node:http';
7
+ /**
8
+ * HTML-escape a string to prevent XSS
9
+ */
10
+ export declare function escapeHtml(str: string): string;
11
+ /**
12
+ * Parse JSON body from request with size limit
13
+ * @param req - HTTP incoming message
14
+ * @param maxSize - Maximum body size in bytes (default 1MB)
15
+ */
16
+ export declare function parseJsonBody(req: http.IncomingMessage, maxSize?: number): Promise<Record<string, unknown>>;
17
+ /**
18
+ * Security: Validate request origin to prevent CSRF and DNS rebinding attacks
19
+ * Allows only localhost and 127.0.0.1 hosts/origins
20
+ * @param req - HTTP incoming message
21
+ * @returns true if request should be allowed
22
+ */
23
+ export declare function isRequestAllowed(req: http.IncomingMessage): boolean;
24
+ //# sourceMappingURL=server-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/server-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAEvC;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBhH;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAgBnE"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Shared server utilities
3
+ * Extracted from dashboard-server.ts, tower-server.ts, open-server.ts
4
+ * to eliminate code duplication (Maintenance Run 0004)
5
+ */
6
+ /**
7
+ * HTML-escape a string to prevent XSS
8
+ */
9
+ export function escapeHtml(str) {
10
+ return str
11
+ .replace(/&/g, '&amp;')
12
+ .replace(/</g, '&lt;')
13
+ .replace(/>/g, '&gt;')
14
+ .replace(/"/g, '&quot;')
15
+ .replace(/'/g, '&#39;');
16
+ }
17
+ /**
18
+ * Parse JSON body from request with size limit
19
+ * @param req - HTTP incoming message
20
+ * @param maxSize - Maximum body size in bytes (default 1MB)
21
+ */
22
+ export function parseJsonBody(req, maxSize = 1024 * 1024) {
23
+ return new Promise((resolve, reject) => {
24
+ let body = '';
25
+ let size = 0;
26
+ req.on('data', (chunk) => {
27
+ size += chunk.length;
28
+ if (size > maxSize) {
29
+ reject(new Error('Request body too large'));
30
+ req.destroy();
31
+ return;
32
+ }
33
+ body += chunk.toString();
34
+ });
35
+ req.on('end', () => {
36
+ try {
37
+ resolve(body ? JSON.parse(body) : {});
38
+ }
39
+ catch {
40
+ reject(new Error('Invalid JSON'));
41
+ }
42
+ });
43
+ req.on('error', reject);
44
+ });
45
+ }
46
+ /**
47
+ * Security: Validate request origin to prevent CSRF and DNS rebinding attacks
48
+ * Allows only localhost and 127.0.0.1 hosts/origins
49
+ * @param req - HTTP incoming message
50
+ * @returns true if request should be allowed
51
+ */
52
+ export function isRequestAllowed(req) {
53
+ const host = req.headers.host;
54
+ const origin = req.headers.origin;
55
+ // Host check (prevent DNS rebinding attacks)
56
+ if (host && !host.startsWith('localhost') && !host.startsWith('127.0.0.1')) {
57
+ return false;
58
+ }
59
+ // Origin check (prevent CSRF from external sites)
60
+ // Note: CLI tools/curl might not send Origin, so we only block if Origin is present and invalid
61
+ if (origin && !origin.startsWith('http://localhost') && !origin.startsWith('http://127.0.0.1')) {
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ //# sourceMappingURL=server-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/server-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAC5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAyB;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IAElC,6CAA6C;IAC7C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,gGAAgG;IAChG,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAyDD;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2OrE"}
1
+ {"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAoCD;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIrE"}
@@ -6,32 +6,12 @@
6
6
  */
7
7
  import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
- import * as readline from 'node:readline';
10
9
  import { spawn } from 'node:child_process';
11
10
  import chalk from 'chalk';
12
11
  import { getTemplatesDir } from '../lib/templates.js';
13
- /**
14
- * Prompt for yes/no confirmation
15
- */
16
- async function confirm(question, defaultYes = true) {
17
- const rl = readline.createInterface({
18
- input: process.stdin,
19
- output: process.stdout,
20
- });
21
- return new Promise((resolve) => {
22
- const hint = defaultYes ? '[Y/n]' : '[y/N]';
23
- rl.question(`${question} ${hint}: `, (answer) => {
24
- rl.close();
25
- const normalized = answer.trim().toLowerCase();
26
- if (normalized === '') {
27
- resolve(defaultYes);
28
- }
29
- else {
30
- resolve(normalized === 'y' || normalized === 'yes');
31
- }
32
- });
33
- });
34
- }
12
+ import { confirm } from '../lib/cli-prompts.js';
13
+ import { createUserDirs, copyProjectlist, copyProjectlistArchive, copyResourceTemplates, copyRootFiles, updateGitignore, } from '../lib/scaffold.js';
14
+ // confirm imported from ../lib/cli-prompts.js
35
15
  /**
36
16
  * Detect conflicts with existing files
37
17
  */
@@ -85,157 +65,57 @@ export async function adopt(options = {}) {
85
65
  process.exit(0);
86
66
  }
87
67
  }
88
- // Create minimal codev structure
89
- // Framework files (protocols, roles) are provided by embedded skeleton at runtime
68
+ // Create minimal codev structure using shared scaffold utilities
90
69
  let fileCount = 0;
91
70
  let skippedCount = 0;
92
71
  console.log(chalk.dim('Creating minimal codev structure...'));
93
72
  console.log(chalk.dim('(Framework files provided by @cluesmith/codev at runtime)'));
94
73
  console.log('');
95
- // Create user data directories
96
- const userDirs = ['specs', 'plans', 'reviews'];
97
- for (const dir of userDirs) {
98
- const dirPath = path.join(targetDir, 'codev', dir);
99
- if (!fs.existsSync(dirPath)) {
100
- fs.mkdirSync(dirPath, { recursive: true });
101
- // Create .gitkeep to preserve empty directory
102
- fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
103
- console.log(chalk.green(' +'), `codev/${dir}/`);
104
- fileCount++;
105
- }
106
- }
107
74
  // Get skeleton directory for templates
108
75
  const skeletonDir = getTemplatesDir();
109
- // Create projectlist.md from skeleton template
110
- const projectlistPath = path.join(targetDir, 'codev', 'projectlist.md');
111
- if (!fs.existsSync(projectlistPath)) {
112
- const projectlistTemplatePath = path.join(skeletonDir, 'templates', 'projectlist.md');
113
- if (fs.existsSync(projectlistTemplatePath)) {
114
- fs.copyFileSync(projectlistTemplatePath, projectlistPath);
115
- }
116
- else {
117
- // Fallback to inline template if skeleton template not found
118
- const projectlistContent = `# Project List
119
-
120
- Track all projects here. See codev documentation for status values.
121
-
122
- \`\`\`yaml
123
- projects:
124
- - id: "0001"
125
- title: "Example Project"
126
- summary: "Brief description"
127
- status: conceived
128
- priority: medium
129
- files:
130
- spec: null
131
- plan: null
132
- review: null
133
- dependencies: []
134
- tags: []
135
- notes: "Replace with your first project"
136
- \`\`\`
137
- `;
138
- fs.writeFileSync(projectlistPath, projectlistContent);
139
- }
140
- console.log(chalk.green(' +'), 'codev/projectlist.md');
76
+ // Create user data directories (specs, plans, reviews) - skip existing
77
+ const dirsResult = createUserDirs(targetDir, { skipExisting: true });
78
+ for (const dir of dirsResult.created) {
79
+ console.log(chalk.green(' +'), `codev/${dir}/`);
141
80
  fileCount++;
142
81
  }
143
- // Create projectlist-archive.md from skeleton template if it doesn't exist
144
- const projectlistArchivePath = path.join(targetDir, 'codev', 'projectlist-archive.md');
145
- if (!fs.existsSync(projectlistArchivePath)) {
146
- const projectlistArchiveTemplatePath = path.join(skeletonDir, 'templates', 'projectlist-archive.md');
147
- if (fs.existsSync(projectlistArchiveTemplatePath)) {
148
- fs.copyFileSync(projectlistArchiveTemplatePath, projectlistArchivePath);
149
- console.log(chalk.green(' +'), 'codev/projectlist-archive.md');
150
- fileCount++;
151
- }
152
- }
153
- // Create resources directory and copy templates if they don't exist
154
- const resourcesDir = path.join(targetDir, 'codev', 'resources');
155
- if (!fs.existsSync(resourcesDir)) {
156
- fs.mkdirSync(resourcesDir, { recursive: true });
157
- }
158
- // Copy lessons-learned.md template if it doesn't exist
159
- const lessonsPath = path.join(resourcesDir, 'lessons-learned.md');
160
- if (!fs.existsSync(lessonsPath)) {
161
- const lessonsTemplatePath = path.join(skeletonDir, 'templates', 'lessons-learned.md');
162
- if (fs.existsSync(lessonsTemplatePath)) {
163
- fs.copyFileSync(lessonsTemplatePath, lessonsPath);
164
- console.log(chalk.green(' +'), 'codev/resources/lessons-learned.md');
165
- fileCount++;
166
- }
167
- }
168
- // Copy arch.md template if it doesn't exist
169
- const archPath = path.join(resourcesDir, 'arch.md');
170
- if (!fs.existsSync(archPath)) {
171
- const archTemplatePath = path.join(skeletonDir, 'templates', 'arch.md');
172
- if (fs.existsSync(archTemplatePath)) {
173
- fs.copyFileSync(archTemplatePath, archPath);
174
- console.log(chalk.green(' +'), 'codev/resources/arch.md');
175
- fileCount++;
176
- }
82
+ // Create projectlist.md - skip if exists
83
+ const projectlistResult = copyProjectlist(targetDir, skeletonDir, { skipExisting: true });
84
+ if (projectlistResult.copied) {
85
+ console.log(chalk.green(' +'), 'codev/projectlist.md');
86
+ fileCount++;
177
87
  }
178
- // Create CLAUDE.md / AGENTS.md at project root from skeleton templates
179
- const claudeMdSrc = path.join(skeletonDir, 'templates', 'CLAUDE.md');
180
- const agentsMdSrc = path.join(skeletonDir, 'templates', 'AGENTS.md');
181
- const claudeMdDest = path.join(targetDir, 'CLAUDE.md');
182
- const agentsMdDest = path.join(targetDir, 'AGENTS.md');
183
- const rootConflicts = [];
184
- // CLAUDE.md
185
- if (!fs.existsSync(claudeMdDest) && fs.existsSync(claudeMdSrc)) {
186
- const content = fs.readFileSync(claudeMdSrc, 'utf-8')
187
- .replace(/\{\{PROJECT_NAME\}\}/g, projectName);
188
- fs.writeFileSync(claudeMdDest, content);
189
- console.log(chalk.green(' +'), 'CLAUDE.md');
88
+ // Create projectlist-archive.md - skip if exists
89
+ const archiveResult = copyProjectlistArchive(targetDir, skeletonDir, { skipExisting: true });
90
+ if (archiveResult.copied) {
91
+ console.log(chalk.green(' +'), 'codev/projectlist-archive.md');
190
92
  fileCount++;
191
93
  }
192
- else if (fs.existsSync(claudeMdDest) && fs.existsSync(claudeMdSrc)) {
193
- // Create .codev-new for merge
194
- const content = fs.readFileSync(claudeMdSrc, 'utf-8')
195
- .replace(/\{\{PROJECT_NAME\}\}/g, projectName);
196
- fs.writeFileSync(claudeMdDest + '.codev-new', content);
197
- console.log(chalk.yellow(' !'), 'CLAUDE.md', chalk.dim('(conflict - .codev-new created)'));
198
- rootConflicts.push('CLAUDE.md');
199
- skippedCount++;
94
+ // Copy resource templates - skip existing
95
+ const resourcesResult = copyResourceTemplates(targetDir, skeletonDir, { skipExisting: true });
96
+ for (const file of resourcesResult.copied) {
97
+ console.log(chalk.green(' +'), `codev/resources/${file}`);
98
+ fileCount++;
200
99
  }
201
- // AGENTS.md
202
- if (!fs.existsSync(agentsMdDest) && fs.existsSync(agentsMdSrc)) {
203
- const content = fs.readFileSync(agentsMdSrc, 'utf-8')
204
- .replace(/\{\{PROJECT_NAME\}\}/g, projectName);
205
- fs.writeFileSync(agentsMdDest, content);
206
- console.log(chalk.green(' +'), 'AGENTS.md');
100
+ // Copy root files with conflict handling
101
+ const rootResult = copyRootFiles(targetDir, skeletonDir, projectName, { handleConflicts: true });
102
+ for (const file of rootResult.copied) {
103
+ console.log(chalk.green(' +'), file);
207
104
  fileCount++;
208
105
  }
209
- else if (fs.existsSync(agentsMdDest) && fs.existsSync(agentsMdSrc)) {
210
- // Create .codev-new for merge
211
- const content = fs.readFileSync(agentsMdSrc, 'utf-8')
212
- .replace(/\{\{PROJECT_NAME\}\}/g, projectName);
213
- fs.writeFileSync(agentsMdDest + '.codev-new', content);
214
- console.log(chalk.yellow(' !'), 'AGENTS.md', chalk.dim('(conflict - .codev-new created)'));
215
- rootConflicts.push('AGENTS.md');
106
+ for (const file of rootResult.conflicts) {
107
+ console.log(chalk.yellow(' !'), file, chalk.dim('(conflict - .codev-new created)'));
216
108
  skippedCount++;
217
109
  }
218
- // Update .gitignore if it exists
219
- const gitignorePath = path.join(targetDir, '.gitignore');
220
- const codevGitignoreEntries = `
221
- # Codev
222
- .agent-farm/
223
- .consult/
224
- codev/.update-hashes.json
225
- .builders/
226
- `;
227
- if (fs.existsSync(gitignorePath)) {
228
- const existing = fs.readFileSync(gitignorePath, 'utf-8');
229
- if (!existing.includes('.agent-farm/')) {
230
- fs.appendFileSync(gitignorePath, codevGitignoreEntries);
231
- console.log(chalk.green(' ~'), '.gitignore', chalk.dim('(updated)'));
232
- }
233
- }
234
- else {
235
- fs.writeFileSync(gitignorePath, codevGitignoreEntries.trim() + '\n');
110
+ // Update or create .gitignore
111
+ const gitResult = updateGitignore(targetDir);
112
+ if (gitResult.created) {
236
113
  console.log(chalk.green(' +'), '.gitignore');
237
114
  fileCount++;
238
115
  }
116
+ else if (gitResult.updated) {
117
+ console.log(chalk.green(' ~'), '.gitignore', chalk.dim('(updated)'));
118
+ }
239
119
  console.log('');
240
120
  console.log(chalk.green.bold('✓'), `Created ${fileCount} files`);
241
121
  if (skippedCount > 0) {
@@ -249,13 +129,13 @@ codev/.update-hashes.json
249
129
  console.log('');
250
130
  console.log(chalk.dim('For more info, see: https://github.com/cluesmith/codev'));
251
131
  // If there are root conflicts (CLAUDE.md, AGENTS.md), spawn Claude to merge
252
- if (rootConflicts.length > 0) {
132
+ if (rootResult.conflicts.length > 0) {
253
133
  console.log('');
254
134
  console.log(chalk.cyan('═══════════════════════════════════════════════════════════'));
255
135
  console.log(chalk.cyan(' Launching Claude to merge conflicts...'));
256
136
  console.log(chalk.cyan('═══════════════════════════════════════════════════════════'));
257
137
  console.log('');
258
- const mergePrompt = `Merge ${rootConflicts.join(' and ')} from the .codev-new versions. Add new sections from the .codev-new files, preserve my customizations, then delete the .codev-new files when done.`;
138
+ const mergePrompt = `Merge ${rootResult.conflicts.join(' and ')} from the .codev-new versions. Add new sections from the .codev-new files, preserve my customizations, then delete the .codev-new files when done.`;
259
139
  // Spawn Claude interactively with merge instructions as initial prompt
260
140
  const claude = spawn('claude', [mergePrompt], {
261
141
  stdio: 'inherit',
@@ -265,7 +145,7 @@ codev/.update-hashes.json
265
145
  console.error(chalk.red('Failed to launch Claude:'), err.message);
266
146
  console.log('');
267
147
  console.log('Please merge the conflicts manually:');
268
- for (const file of rootConflicts) {
148
+ for (const file of rootResult.conflicts) {
269
149
  console.log(chalk.dim(` ${file} ← ${file}.codev-new`));
270
150
  }
271
151
  });
@@ -1 +1 @@
1
- {"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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,CA0LzF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAID;;GAEG;AACH,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GzF"}