@cluesmith/codev 2.0.13 → 2.0.15

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 (48) hide show
  1. package/dashboard/dist/assets/index-2EEvbgZv.css +32 -0
  2. package/dashboard/dist/assets/index-BYfmVwKi.js +134 -0
  3. package/dashboard/dist/assets/index-BYfmVwKi.js.map +1 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/dist/agent-farm/cli.d.ts.map +1 -1
  6. package/dist/agent-farm/cli.js +33 -0
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/bench.d.ts +49 -0
  9. package/dist/agent-farm/commands/bench.d.ts.map +1 -0
  10. package/dist/agent-farm/commands/bench.js +262 -0
  11. package/dist/agent-farm/commands/bench.js.map +1 -0
  12. package/dist/agent-farm/commands/spawn-roles.d.ts +1 -0
  13. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  14. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  15. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  16. package/dist/agent-farm/commands/spawn.js +45 -13
  17. package/dist/agent-farm/commands/spawn.js.map +1 -1
  18. package/dist/agent-farm/servers/overview.js +1 -1
  19. package/dist/agent-farm/servers/overview.js.map +1 -1
  20. package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
  21. package/dist/agent-farm/servers/send-buffer.js +3 -1
  22. package/dist/agent-farm/servers/send-buffer.js.map +1 -1
  23. package/dist/agent-farm/servers/tower-routes.js +5 -3
  24. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  25. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  26. package/dist/agent-farm/servers/tower-websocket.js +31 -3
  27. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  28. package/dist/cli.d.ts.map +1 -1
  29. package/dist/cli.js +47 -1
  30. package/dist/cli.js.map +1 -1
  31. package/dist/commands/consult/index.d.ts.map +1 -1
  32. package/dist/commands/consult/index.js +14 -6
  33. package/dist/commands/consult/index.js.map +1 -1
  34. package/dist/commands/update.d.ts +16 -3
  35. package/dist/commands/update.d.ts.map +1 -1
  36. package/dist/commands/update.js +248 -212
  37. package/dist/commands/update.js.map +1 -1
  38. package/dist/terminal/pty-session.d.ts +7 -0
  39. package/dist/terminal/pty-session.d.ts.map +1 -1
  40. package/dist/terminal/pty-session.js +13 -0
  41. package/dist/terminal/pty-session.js.map +1 -1
  42. package/dist/terminal/ws-protocol.d.ts +1 -1
  43. package/dist/terminal/ws-protocol.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/skeleton/.claude/skills/codev/SKILL.md +2 -1
  46. package/dashboard/dist/assets/index-8O8nCk_X.js +0 -135
  47. package/dashboard/dist/assets/index-8O8nCk_X.js.map +0 -1
  48. package/dashboard/dist/assets/index-DCQyWOPv.css +0 -32
@@ -11,70 +11,11 @@ import { copyConsultTypes, copyRoles, copySkills } from '../lib/scaffold.js';
11
11
  * Update codev templates in current project
12
12
  */
13
13
  export async function update(options = {}) {
14
- const { dryRun = false, force = false } = options;
14
+ const { dryRun = false, force = false, agent = false } = options;
15
15
  const targetDir = process.cwd();
16
16
  const codevDir = path.join(targetDir, 'codev');
17
- // Check if codev exists
18
- if (!fs.existsSync(codevDir)) {
19
- throw new Error("No codev/ directory found. Use 'codev init' or 'codev adopt' first.");
20
- }
21
- console.log('');
22
- console.log(chalk.bold('Updating codev templates'));
23
- if (dryRun) {
24
- console.log(chalk.yellow('(dry run - no files will be changed)'));
25
- }
26
- console.log('');
27
- // Clean up legacy codev/bin directory (bash-based agent farm is deprecated)
28
- const legacyBinDir = path.join(codevDir, 'bin');
29
- if (fs.existsSync(legacyBinDir)) {
30
- if (!dryRun) {
31
- fs.rmSync(legacyBinDir, { recursive: true });
32
- }
33
- console.log(chalk.red(' - (removed)'), 'codev/bin/ (deprecated bash scripts)');
34
- }
35
- // Migrate codev/config.json to af-config.json (v2.0 change)
36
- const legacyConfigPath = path.join(codevDir, 'config.json');
37
- const newConfigPath = path.join(targetDir, 'af-config.json');
38
- if (fs.existsSync(legacyConfigPath) && !fs.existsSync(newConfigPath)) {
39
- if (!dryRun) {
40
- fs.copyFileSync(legacyConfigPath, newConfigPath);
41
- fs.unlinkSync(legacyConfigPath);
42
- }
43
- console.log(chalk.blue(' ~ (migrated)'), 'codev/config.json → af-config.json');
44
- }
45
- const templatesDir = getTemplatesDir();
46
- const templateFiles = getTemplateFiles(templatesDir);
47
- const currentHashes = loadHashStore(targetDir);
48
- const newHashes = { ...currentHashes };
49
- // Update consult-types (with skipExisting to preserve user customizations)
50
- if (!dryRun) {
51
- const consultTypesResult = copyConsultTypes(targetDir, templatesDir, { skipExisting: true });
52
- if (consultTypesResult.copied.length > 0) {
53
- for (const file of consultTypesResult.copied) {
54
- console.log(chalk.green(' + (new)'), `codev/consult-types/${file}`);
55
- }
56
- }
57
- }
58
- // Update .claude/skills/ (add new skills, preserve user customizations)
59
- if (!dryRun) {
60
- const skillsResult = copySkills(targetDir, templatesDir, { skipExisting: true });
61
- if (skillsResult.copied.length > 0) {
62
- for (const skill of skillsResult.copied) {
63
- console.log(chalk.green(' + (new)'), `.claude/skills/${skill}/`);
64
- }
65
- }
66
- }
67
- // Update codev/roles/ (add new roles for existing projects that lack them)
68
- if (!dryRun) {
69
- const rolesResult = copyRoles(targetDir, templatesDir, { skipExisting: true });
70
- if (rolesResult.copied.length > 0) {
71
- for (const file of rolesResult.copied) {
72
- console.log(chalk.green(' + (new)'), `codev/roles/${file}`);
73
- }
74
- }
75
- }
76
- // Note: protocols are handled by the main hash-based loop below
77
- // This ensures proper conflict detection for user-customized prompts
17
+ // In agent mode, route human-readable output to stderr; otherwise stdout
18
+ const log = agent ? console.error.bind(console) : console.log.bind(console);
78
19
  const result = {
79
20
  updated: [],
80
21
  skipped: [],
@@ -82,177 +23,272 @@ export async function update(options = {}) {
82
23
  newFiles: [],
83
24
  rootConflicts: [],
84
25
  };
85
- for (const relativePath of templateFiles) {
86
- // Skip user data files
87
- if (isUserDataPath(relativePath)) {
88
- continue;
26
+ // Check if codev exists
27
+ if (!fs.existsSync(codevDir)) {
28
+ const msg = "No codev/ directory found. Use 'codev init' or 'codev adopt' first.";
29
+ if (agent) {
30
+ result.error = msg;
31
+ return result;
89
32
  }
90
- // Only update updatable files (protocols, roles, agents, etc.)
91
- if (!isUpdatableFile(relativePath)) {
92
- continue;
33
+ throw new Error(msg);
34
+ }
35
+ try {
36
+ log('');
37
+ log(chalk.bold('Updating codev templates'));
38
+ if (dryRun) {
39
+ log(chalk.yellow('(dry run - no files will be changed)'));
93
40
  }
94
- const srcPath = path.join(templatesDir, relativePath);
95
- const destPath = path.join(codevDir, relativePath);
96
- // New file - copy it
97
- if (!fs.existsSync(destPath)) {
41
+ log('');
42
+ // Clean up legacy codev/bin directory (bash-based agent farm is deprecated)
43
+ const legacyBinDir = path.join(codevDir, 'bin');
44
+ if (fs.existsSync(legacyBinDir)) {
98
45
  if (!dryRun) {
99
- const destDir = path.dirname(destPath);
100
- if (!fs.existsSync(destDir)) {
101
- fs.mkdirSync(destDir, { recursive: true });
102
- }
103
- fs.copyFileSync(srcPath, destPath);
104
- newHashes[relativePath] = hashFile(destPath);
46
+ fs.rmSync(legacyBinDir, { recursive: true });
105
47
  }
106
- result.newFiles.push(relativePath);
107
- console.log(chalk.green(' + (new)'), `codev/${relativePath}`);
108
- continue;
48
+ log(chalk.red(' - (removed)'), 'codev/bin/ (deprecated bash scripts)');
109
49
  }
110
- // File exists - check if it was modified by user
111
- const currentHash = hashFile(destPath);
112
- const storedHash = currentHashes[relativePath];
113
- const newHash = hashFile(srcPath);
114
- // If the template hasn't changed, skip
115
- if (currentHash === newHash) {
116
- result.skipped.push(relativePath);
117
- continue;
118
- }
119
- // If force mode, overwrite everything
120
- if (force) {
50
+ // Migrate codev/config.json to af-config.json (v2.0 change)
51
+ const legacyConfigPath = path.join(codevDir, 'config.json');
52
+ const newConfigPath = path.join(targetDir, 'af-config.json');
53
+ if (fs.existsSync(legacyConfigPath) && !fs.existsSync(newConfigPath)) {
121
54
  if (!dryRun) {
122
- fs.copyFileSync(srcPath, destPath);
123
- newHashes[relativePath] = hashFile(destPath);
55
+ fs.copyFileSync(legacyConfigPath, newConfigPath);
56
+ fs.unlinkSync(legacyConfigPath);
124
57
  }
125
- result.updated.push(relativePath);
126
- console.log(chalk.blue(' ~ (force)'), `codev/${relativePath}`);
127
- continue;
58
+ log(chalk.blue(' ~ (migrated)'), 'codev/config.json → af-config.json');
128
59
  }
129
- // Check if user modified the file
130
- const userModified = storedHash && currentHash !== storedHash;
131
- if (userModified) {
132
- // User modified the file - write as .codev-new and mark as conflict
133
- if (!dryRun) {
134
- fs.copyFileSync(srcPath, destPath + '.codev-new');
60
+ const templatesDir = getTemplatesDir();
61
+ const templateFiles = getTemplateFiles(templatesDir);
62
+ const currentHashes = loadHashStore(targetDir);
63
+ const newHashes = { ...currentHashes };
64
+ // Update consult-types (with skipExisting to preserve user customizations)
65
+ if (!dryRun) {
66
+ const consultTypesResult = copyConsultTypes(targetDir, templatesDir, { skipExisting: true });
67
+ if (consultTypesResult.copied.length > 0) {
68
+ for (const file of consultTypesResult.copied) {
69
+ const fullPath = `codev/consult-types/${file}`;
70
+ result.newFiles.push(fullPath);
71
+ log(chalk.green(' + (new)'), fullPath);
72
+ }
135
73
  }
136
- result.conflicts.push(relativePath);
137
- console.log(chalk.yellow(' ! (conflict)'), `codev/${relativePath}`);
138
- console.log(chalk.dim(' New version saved as:'), `codev/${relativePath}.codev-new`);
139
74
  }
140
- else {
141
- // File unchanged by user - safe to overwrite
142
- if (!dryRun) {
143
- fs.copyFileSync(srcPath, destPath);
144
- newHashes[relativePath] = hashFile(destPath);
75
+ // Update .claude/skills/ (add new skills, preserve user customizations)
76
+ if (!dryRun) {
77
+ const skillsResult = copySkills(targetDir, templatesDir, { skipExisting: true });
78
+ if (skillsResult.copied.length > 0) {
79
+ for (const skill of skillsResult.copied) {
80
+ const fullPath = `.claude/skills/${skill}/`;
81
+ result.newFiles.push(fullPath);
82
+ log(chalk.green(' + (new)'), fullPath);
83
+ }
145
84
  }
146
- result.updated.push(relativePath);
147
- console.log(chalk.blue(' ~'), `codev/${relativePath}`);
148
85
  }
149
- }
150
- // Save updated hash store
151
- if (!dryRun) {
152
- saveHashStore(targetDir, newHashes);
153
- }
154
- // Handle root-level files (CLAUDE.md, AGENTS.md)
155
- const rootFiles = ['CLAUDE.md', 'AGENTS.md'];
156
- const skeletonTemplatesDir = path.join(templatesDir, 'templates');
157
- for (const fileName of rootFiles) {
158
- const srcPath = path.join(skeletonTemplatesDir, fileName);
159
- const destPath = path.join(targetDir, fileName);
160
- // Skip if source doesn't exist
161
- if (!fs.existsSync(srcPath)) {
162
- continue;
86
+ // Update codev/roles/ (add new roles for existing projects that lack them)
87
+ if (!dryRun) {
88
+ const rolesResult = copyRoles(targetDir, templatesDir, { skipExisting: true });
89
+ if (rolesResult.copied.length > 0) {
90
+ for (const file of rolesResult.copied) {
91
+ const fullPath = `codev/roles/${file}`;
92
+ result.newFiles.push(fullPath);
93
+ log(chalk.green(' + (new)'), fullPath);
94
+ }
95
+ }
163
96
  }
164
- // New file - copy it (replacing {{PROJECT_NAME}} placeholder)
165
- if (!fs.existsSync(destPath)) {
166
- if (!dryRun) {
167
- const projectName = path.basename(targetDir);
168
- let content = fs.readFileSync(srcPath, 'utf-8');
169
- content = content.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
170
- fs.writeFileSync(destPath, content);
97
+ // Note: protocols are handled by the main hash-based loop below
98
+ // This ensures proper conflict detection for user-customized prompts
99
+ for (const relativePath of templateFiles) {
100
+ // Skip user data files
101
+ if (isUserDataPath(relativePath)) {
102
+ continue;
103
+ }
104
+ // Only update updatable files (protocols, roles, agents, etc.)
105
+ if (!isUpdatableFile(relativePath)) {
106
+ continue;
107
+ }
108
+ const srcPath = path.join(templatesDir, relativePath);
109
+ const destPath = path.join(codevDir, relativePath);
110
+ const projectRelativePath = `codev/${relativePath}`;
111
+ // New file - copy it
112
+ if (!fs.existsSync(destPath)) {
113
+ if (!dryRun) {
114
+ const destDir = path.dirname(destPath);
115
+ if (!fs.existsSync(destDir)) {
116
+ fs.mkdirSync(destDir, { recursive: true });
117
+ }
118
+ fs.copyFileSync(srcPath, destPath);
119
+ newHashes[relativePath] = hashFile(destPath);
120
+ }
121
+ result.newFiles.push(projectRelativePath);
122
+ log(chalk.green(' + (new)'), projectRelativePath);
123
+ continue;
124
+ }
125
+ // File exists - check if it was modified by user
126
+ const currentHash = hashFile(destPath);
127
+ const storedHash = currentHashes[relativePath];
128
+ const newHash = hashFile(srcPath);
129
+ // If the template hasn't changed, skip
130
+ if (currentHash === newHash) {
131
+ result.skipped.push(projectRelativePath);
132
+ continue;
133
+ }
134
+ // If force mode, overwrite everything
135
+ if (force) {
136
+ if (!dryRun) {
137
+ fs.copyFileSync(srcPath, destPath);
138
+ newHashes[relativePath] = hashFile(destPath);
139
+ }
140
+ result.updated.push(projectRelativePath);
141
+ log(chalk.blue(' ~ (force)'), projectRelativePath);
142
+ continue;
143
+ }
144
+ // Check if user modified the file
145
+ const userModified = storedHash && currentHash !== storedHash;
146
+ if (userModified) {
147
+ // User modified the file - write as .codev-new and mark as conflict
148
+ if (!dryRun) {
149
+ fs.copyFileSync(srcPath, destPath + '.codev-new');
150
+ }
151
+ result.conflicts.push({
152
+ file: projectRelativePath,
153
+ codevNew: `${projectRelativePath}.codev-new`,
154
+ reason: 'User modified file; new template version available',
155
+ });
156
+ log(chalk.yellow(' ! (conflict)'), projectRelativePath);
157
+ log(chalk.dim(' New version saved as:'), `${projectRelativePath}.codev-new`);
158
+ }
159
+ else {
160
+ // File unchanged by user - safe to overwrite
161
+ if (!dryRun) {
162
+ fs.copyFileSync(srcPath, destPath);
163
+ newHashes[relativePath] = hashFile(destPath);
164
+ }
165
+ result.updated.push(projectRelativePath);
166
+ log(chalk.blue(' ~'), projectRelativePath);
171
167
  }
172
- result.newFiles.push(fileName);
173
- console.log(chalk.green(' + (new)'), fileName);
174
- continue;
175
168
  }
176
- // File exists - check if template has changed
177
- const currentContent = fs.readFileSync(destPath, 'utf-8');
178
- const projectName = path.basename(targetDir);
179
- let templateContent = fs.readFileSync(srcPath, 'utf-8');
180
- templateContent = templateContent.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
181
- // If content is identical, skip
182
- if (currentContent === templateContent) {
183
- result.skipped.push(fileName);
184
- continue;
169
+ // Save updated hash store
170
+ if (!dryRun) {
171
+ saveHashStore(targetDir, newHashes);
185
172
  }
186
- // If force mode, overwrite
187
- if (force) {
173
+ // Handle root-level files (CLAUDE.md, AGENTS.md)
174
+ const rootFiles = ['CLAUDE.md', 'AGENTS.md'];
175
+ const skeletonTemplatesDir = path.join(templatesDir, 'templates');
176
+ for (const fileName of rootFiles) {
177
+ const srcPath = path.join(skeletonTemplatesDir, fileName);
178
+ const destPath = path.join(targetDir, fileName);
179
+ // Skip if source doesn't exist
180
+ if (!fs.existsSync(srcPath)) {
181
+ continue;
182
+ }
183
+ // New file - copy it (replacing {{PROJECT_NAME}} placeholder)
184
+ if (!fs.existsSync(destPath)) {
185
+ if (!dryRun) {
186
+ const projectName = path.basename(targetDir);
187
+ let content = fs.readFileSync(srcPath, 'utf-8');
188
+ content = content.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
189
+ fs.writeFileSync(destPath, content);
190
+ }
191
+ result.newFiles.push(fileName);
192
+ log(chalk.green(' + (new)'), fileName);
193
+ continue;
194
+ }
195
+ // File exists - check if template has changed
196
+ const currentContent = fs.readFileSync(destPath, 'utf-8');
197
+ const projectName = path.basename(targetDir);
198
+ let templateContent = fs.readFileSync(srcPath, 'utf-8');
199
+ templateContent = templateContent.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
200
+ // If content is identical, skip
201
+ if (currentContent === templateContent) {
202
+ result.skipped.push(fileName);
203
+ continue;
204
+ }
205
+ // If force mode, overwrite
206
+ if (force) {
207
+ if (!dryRun) {
208
+ fs.writeFileSync(destPath, templateContent);
209
+ }
210
+ result.updated.push(fileName);
211
+ log(chalk.blue(' ~ (force)'), fileName);
212
+ continue;
213
+ }
214
+ // Content differs - save as .codev-new for merge
188
215
  if (!dryRun) {
189
- fs.writeFileSync(destPath, templateContent);
216
+ fs.writeFileSync(destPath + '.codev-new', templateContent);
190
217
  }
191
- result.updated.push(fileName);
192
- console.log(chalk.blue(' ~ (force)'), fileName);
193
- continue;
218
+ result.rootConflicts.push({
219
+ file: fileName,
220
+ codevNew: `${fileName}.codev-new`,
221
+ reason: 'Content differs from template',
222
+ });
223
+ log(chalk.yellow(' ! (conflict)'), fileName);
224
+ log(chalk.dim(' New version saved as:'), `${fileName}.codev-new`);
194
225
  }
195
- // Content differs - save as .codev-new for merge
196
- if (!dryRun) {
197
- fs.writeFileSync(destPath + '.codev-new', templateContent);
226
+ // Summary
227
+ log('');
228
+ log(chalk.bold('Summary:'));
229
+ if (result.newFiles.length > 0) {
230
+ log(chalk.green(` + ${result.newFiles.length} new files`));
198
231
  }
199
- result.rootConflicts.push(fileName);
200
- console.log(chalk.yellow(' ! (conflict)'), fileName);
201
- console.log(chalk.dim(' New version saved as:'), `${fileName}.codev-new`);
202
- }
203
- // Summary
204
- console.log('');
205
- console.log(chalk.bold('Summary:'));
206
- if (result.newFiles.length > 0) {
207
- console.log(chalk.green(` + ${result.newFiles.length} new files`));
208
- }
209
- if (result.updated.length > 0) {
210
- console.log(chalk.blue(` ~ ${result.updated.length} updated`));
211
- }
212
- if (result.skipped.length > 0) {
213
- console.log(chalk.dim(` - ${result.skipped.length} unchanged (skipped)`));
214
- }
215
- if (result.conflicts.length > 0) {
216
- console.log(chalk.yellow(` ! ${result.conflicts.length} codev/ conflicts`));
217
- }
218
- if (result.rootConflicts.length > 0) {
219
- console.log(chalk.yellow(` ! ${result.rootConflicts.length} root conflicts`));
220
- }
221
- if (result.newFiles.length === 0 && result.updated.length === 0 && result.conflicts.length === 0 && result.rootConflicts.length === 0) {
222
- console.log(chalk.dim(' No updates available - already up to date!'));
223
- }
224
- if (dryRun) {
225
- console.log('');
226
- console.log(chalk.yellow('Dry run complete. Run without --dry-run to apply changes.'));
227
- return;
232
+ if (result.updated.length > 0) {
233
+ log(chalk.blue(` ~ ${result.updated.length} updated`));
234
+ }
235
+ if (result.skipped.length > 0) {
236
+ log(chalk.dim(` - ${result.skipped.length} unchanged (skipped)`));
237
+ }
238
+ if (result.conflicts.length > 0) {
239
+ log(chalk.yellow(` ! ${result.conflicts.length} codev/ conflicts`));
240
+ }
241
+ if (result.rootConflicts.length > 0) {
242
+ log(chalk.yellow(` ! ${result.rootConflicts.length} root conflicts`));
243
+ }
244
+ if (result.newFiles.length === 0 && result.updated.length === 0 && result.conflicts.length === 0 && result.rootConflicts.length === 0) {
245
+ log(chalk.dim(' No updates available - already up to date!'));
246
+ }
247
+ if (dryRun) {
248
+ log('');
249
+ log(chalk.yellow('Dry run complete. Run without --dry-run to apply changes.'));
250
+ return result;
251
+ }
252
+ // In agent mode, skip the interactive Claude spawn
253
+ if (agent) {
254
+ return result;
255
+ }
256
+ // Combine all conflicts for Claude merge (file paths are already project-relative)
257
+ const allConflicts = [
258
+ ...result.conflicts.map(c => c.file),
259
+ ...result.rootConflicts.map(c => c.file),
260
+ ];
261
+ // If there are any conflicts, spawn Claude to merge
262
+ if (allConflicts.length > 0) {
263
+ log('');
264
+ log(chalk.cyan('═══════════════════════════════════════════════════════════'));
265
+ log(chalk.cyan(' Launching Claude to merge conflicts...'));
266
+ log(chalk.cyan('═══════════════════════════════════════════════════════════'));
267
+ log('');
268
+ const fileList = allConflicts.join(', ');
269
+ const mergePrompt = `Merge the following files from their .codev-new versions: ${fileList}. For each file, add new sections from the .codev-new version, preserve my customizations, then delete the .codev-new file when done.`;
270
+ // Spawn Claude interactively with merge instructions as initial prompt
271
+ const claude = spawn('claude', [mergePrompt], {
272
+ stdio: 'inherit',
273
+ cwd: targetDir,
274
+ });
275
+ claude.on('error', (err) => {
276
+ console.error(chalk.red('Failed to launch Claude:'), err.message);
277
+ log('');
278
+ log('Please merge the conflicts manually:');
279
+ for (const file of allConflicts) {
280
+ log(chalk.dim(` ${file} ← ${file}.codev-new`));
281
+ }
282
+ });
283
+ }
284
+ return result;
228
285
  }
229
- // Combine all conflicts for Claude merge
230
- const allConflicts = [
231
- ...result.conflicts.map(f => `codev/${f}`),
232
- ...result.rootConflicts,
233
- ];
234
- // If there are any conflicts, spawn Claude to merge
235
- if (allConflicts.length > 0) {
236
- console.log('');
237
- console.log(chalk.cyan('═══════════════════════════════════════════════════════════'));
238
- console.log(chalk.cyan(' Launching Claude to merge conflicts...'));
239
- console.log(chalk.cyan('═══════════════════════════════════════════════════════════'));
240
- console.log('');
241
- const fileList = allConflicts.join(', ');
242
- const mergePrompt = `Merge the following files from their .codev-new versions: ${fileList}. For each file, add new sections from the .codev-new version, preserve my customizations, then delete the .codev-new file when done.`;
243
- // Spawn Claude interactively with merge instructions as initial prompt
244
- const claude = spawn('claude', [mergePrompt], {
245
- stdio: 'inherit',
246
- cwd: targetDir,
247
- });
248
- claude.on('error', (err) => {
249
- console.error(chalk.red('Failed to launch Claude:'), err.message);
250
- console.log('');
251
- console.log('Please merge the conflicts manually:');
252
- for (const file of allConflicts) {
253
- console.log(chalk.dim(` ${file} ← ${file}.codev-new`));
254
- }
255
- });
286
+ catch (err) {
287
+ if (agent) {
288
+ result.error = err instanceof Error ? err.message : String(err);
289
+ return result;
290
+ }
291
+ throw err;
256
292
  }
257
293
  }
258
294
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@ export declare class PtySession extends EventEmitter {
57
57
  private disconnectTimer;
58
58
  private clients;
59
59
  private _lastInputAt;
60
+ private _composing;
60
61
  constructor(config: PtySessionConfig);
61
62
  /** Spawn the PTY process. Must be called after construction. */
62
63
  spawn(): Promise<void>;
@@ -116,6 +117,12 @@ export declare class PtySession extends EventEmitter {
116
117
  isUserIdle(thresholdMs: number): boolean;
117
118
  /** Timestamp (epoch ms) of the last user input, or 0 if none. */
118
119
  get lastInputAt(): number;
120
+ /** Mark the user as composing input (has typed but not pressed Enter). */
121
+ startComposing(): void;
122
+ /** Mark the user as done composing (pressed Enter to submit). */
123
+ stopComposing(): void;
124
+ /** Whether the user is currently composing input (typed but not yet submitted). */
125
+ get composing(): boolean;
119
126
  private cleanup;
120
127
  }
121
128
  //# sourceMappingURL=pty-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export class PtySession extends EventEmitter {
32
32
  disconnectTimer = null;
33
33
  clients = new Set();
34
34
  _lastInputAt = 0;
35
+ _composing = false;
35
36
  constructor(config) {
36
37
  super();
37
38
  this.config = config;
@@ -365,6 +366,18 @@ export class PtySession extends EventEmitter {
365
366
  get lastInputAt() {
366
367
  return this._lastInputAt;
367
368
  }
369
+ /** Mark the user as composing input (has typed but not pressed Enter). */
370
+ startComposing() {
371
+ this._composing = true;
372
+ }
373
+ /** Mark the user as done composing (pressed Enter to submit). */
374
+ stopComposing() {
375
+ this._composing = false;
376
+ }
377
+ /** Whether the user is currently composing input (typed but not yet submitted). */
378
+ get composing() {
379
+ return this._composing;
380
+ }
368
381
  cleanup() {
369
382
  if (this.disconnectTimer) {
370
383
  clearTimeout(this.disconnectTimer);