@cluesmith/codev 2.0.0-rc.54 → 2.0.0-rc.56

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 (42) hide show
  1. package/dashboard/dist/assets/{index-BIHeqvy0.css → index-BV7KQvFU.css} +1 -1
  2. package/dashboard/dist/assets/index-xOaDIZ0l.js +132 -0
  3. package/dashboard/dist/assets/index-xOaDIZ0l.js.map +1 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/dist/agent-farm/commands/open.d.ts +4 -2
  6. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  7. package/dist/agent-farm/commands/open.js +37 -70
  8. package/dist/agent-farm/commands/open.js.map +1 -1
  9. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  10. package/dist/agent-farm/commands/spawn.js +31 -20
  11. package/dist/agent-farm/commands/spawn.js.map +1 -1
  12. package/dist/agent-farm/commands/stop.js +1 -1
  13. package/dist/agent-farm/commands/stop.js.map +1 -1
  14. package/dist/agent-farm/db/index.d.ts.map +1 -1
  15. package/dist/agent-farm/db/index.js +20 -0
  16. package/dist/agent-farm/db/index.js.map +1 -1
  17. package/dist/agent-farm/db/schema.d.ts +1 -1
  18. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  19. package/dist/agent-farm/db/schema.js +16 -0
  20. package/dist/agent-farm/db/schema.js.map +1 -1
  21. package/dist/agent-farm/servers/tower-server.js +731 -49
  22. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  23. package/dist/agent-farm/types.d.ts +0 -1
  24. package/dist/agent-farm/types.d.ts.map +1 -1
  25. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  26. package/dist/agent-farm/utils/config.js +1 -3
  27. package/dist/agent-farm/utils/config.js.map +1 -1
  28. package/dist/agent-farm/utils/port-registry.d.ts +0 -1
  29. package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
  30. package/dist/agent-farm/utils/port-registry.js +1 -1
  31. package/dist/agent-farm/utils/port-registry.js.map +1 -1
  32. package/package.json +1 -1
  33. package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
  34. package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
  35. package/skeleton/protocols/bugfix/prompts/pr.md +76 -0
  36. package/skeleton/protocols/bugfix/protocol.json +5 -0
  37. package/dashboard/dist/assets/index-VvUWRPNP.js +0 -120
  38. package/dashboard/dist/assets/index-VvUWRPNP.js.map +0 -1
  39. package/dist/agent-farm/servers/open-server.d.ts +0 -7
  40. package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
  41. package/dist/agent-farm/servers/open-server.js +0 -315
  42. package/dist/agent-farm/servers/open-server.js.map +0 -1
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Open server for file viewing/editing.
4
- * Serves the file viewer and handles file saves.
5
- */
6
- export {};
7
- //# sourceMappingURL=open-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-server.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/open-server.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -1,315 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Open server for file viewing/editing.
4
- * Serves the file viewer and handles file saves.
5
- */
6
- import http from 'node:http';
7
- import fs from 'node:fs';
8
- import path from 'node:path';
9
- import { fileURLToPath } from 'node:url';
10
- import { Command } from 'commander';
11
- import { escapeHtml } from '../utils/server-utils.js';
12
- const __filename = fileURLToPath(import.meta.url);
13
- const __dirname = path.dirname(__filename);
14
- // Parse arguments with Commander
15
- const program = new Command()
16
- .name('open-server')
17
- .description('File viewer/editor server for Agent Farm')
18
- .argument('<port>', 'Port to listen on')
19
- .argument('<filepath>', 'File path to open')
20
- .parse(process.argv);
21
- const args = program.args;
22
- const port = parseInt(args[0], 10);
23
- const filePath = args[1];
24
- if (isNaN(port) || port < 1 || port > 65535) {
25
- console.error(`Error: Invalid port "${args[0]}". Must be a number between 1 and 65535.`);
26
- process.exit(1);
27
- }
28
- // Paths
29
- const fullFilePath = filePath;
30
- const displayPath = path.basename(filePath);
31
- /**
32
- * Find a template file
33
- * Templates are bundled with agent-farm package in templates/ directory
34
- */
35
- function findTemplatePath(filename) {
36
- // Templates are at package root: packages/codev/templates/
37
- // From compiled: dist/agent-farm/servers/ -> ../../../templates/
38
- // From source: src/agent-farm/servers/ -> ../../../templates/
39
- const pkgPath = path.resolve(__dirname, '../../../templates/', filename);
40
- if (fs.existsSync(pkgPath))
41
- return pkgPath;
42
- throw new Error(`Template not found: ${filename}`);
43
- }
44
- const templatePath = findTemplatePath('open.html');
45
- // escapeHtml imported from ../utils/server-utils.js
46
- // Validate file exists
47
- if (!fs.existsSync(fullFilePath)) {
48
- console.error(`File not found: ${fullFilePath}`);
49
- process.exit(1);
50
- }
51
- // Get language from extension
52
- const ext = path.extname(filePath).slice(1).toLowerCase();
53
- const langMap = {
54
- js: 'javascript', ts: 'typescript', jsx: 'javascript', tsx: 'typescript',
55
- py: 'python', sh: 'bash', bash: 'bash',
56
- md: 'markdown', html: 'markup', css: 'css',
57
- json: 'json', yaml: 'yaml', yml: 'yaml'
58
- };
59
- const lang = langMap[ext] || ext;
60
- const isMarkdown = ext === 'md';
61
- // Image detection
62
- const imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg'];
63
- const isImage = imageExtensions.includes(ext);
64
- // Video detection
65
- const videoExtensions = ['webm', 'mp4', 'mov', 'avi'];
66
- const isVideo = videoExtensions.includes(ext);
67
- // 3D model detection (STL and 3MF)
68
- const isSTL = ext === 'stl';
69
- const is3MF = ext === '3mf';
70
- const is3D = isSTL || is3MF;
71
- const format3D = isSTL ? 'stl' : '3mf';
72
- const viewerTemplatePath3D = is3D ? findTemplatePath('3d-viewer.html') : null;
73
- // MIME type mapping for images
74
- const imageMimeTypes = {
75
- png: 'image/png',
76
- jpg: 'image/jpeg',
77
- jpeg: 'image/jpeg',
78
- gif: 'image/gif',
79
- webp: 'image/webp',
80
- svg: 'image/svg+xml'
81
- };
82
- // MIME type mapping for videos
83
- const videoMimeTypes = {
84
- webm: 'video/webm',
85
- mp4: 'video/mp4',
86
- mov: 'video/quicktime',
87
- avi: 'video/x-msvideo'
88
- };
89
- // Create server
90
- const server = http.createServer((req, res) => {
91
- // CORS headers
92
- res.setHeader('Access-Control-Allow-Origin', '*');
93
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
94
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
95
- if (req.method === 'OPTIONS') {
96
- res.writeHead(200);
97
- res.end();
98
- return;
99
- }
100
- // Parse URL for robust pathname matching (handles query strings, etc.)
101
- const url = new URL(req.url || '/', `http://localhost:${port}`);
102
- const pathname = url.pathname;
103
- // Serve 3D viewer for STL and 3MF files
104
- if (req.method === 'GET' && (pathname === '/' || pathname === '/index.html') && is3D && viewerTemplatePath3D) {
105
- try {
106
- let template = fs.readFileSync(viewerTemplatePath3D, 'utf-8');
107
- // Replace placeholders with proper escaping for security
108
- // FILE_PATH_JSON: JSON-encoded for JavaScript string context
109
- template = template.replace(/\{\{FILE_PATH_JSON\}\}/g, JSON.stringify(fullFilePath));
110
- // FILE: HTML-escaped for HTML context (title, visible text)
111
- template = template.replace(/\{\{FILE\}\}/g, escapeHtml(displayPath));
112
- // FORMAT: hardcoded 'stl' or '3mf', no escaping needed
113
- template = template.replace(/\{\{FORMAT\}\}/g, format3D);
114
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
115
- res.end(template);
116
- }
117
- catch (err) {
118
- res.writeHead(500, { 'Content-Type': 'text/plain' });
119
- res.end('Error loading 3D viewer: ' + err.message);
120
- }
121
- return;
122
- }
123
- // Serve annotation viewer for other files
124
- if (req.method === 'GET' && (pathname === '/' || pathname === '/index.html')) {
125
- try {
126
- let template = fs.readFileSync(templatePath, 'utf-8');
127
- // Get file stats for images
128
- const fileStats = fs.statSync(fullFilePath);
129
- const fileSize = fileStats.size;
130
- // Replace placeholders
131
- template = template.replace(/\{\{BUILDER_ID\}\}/g, '');
132
- template = template.replace(/\{\{FILE_PATH\}\}/g, fullFilePath);
133
- template = template.replace(/\{\{FILE\}\}/g, displayPath);
134
- template = template.replace(/\{\{LANG\}\}/g, lang);
135
- template = template.replace(/\{\{IS_MARKDOWN\}\}/g, String(isMarkdown));
136
- template = template.replace(/\{\{IS_IMAGE\}\}/g, String(isImage));
137
- template = template.replace(/\{\{IS_VIDEO\}\}/g, String(isVideo));
138
- template = template.replace(/\{\{FILE_SIZE\}\}/g, String(fileSize));
139
- if (isImage) {
140
- // For images, don't inject file content - it will be loaded via /api/image
141
- template = template.replace('// FILE_CONTENT will be injected by the server', `initImage(${fileSize});`);
142
- }
143
- else if (isVideo) {
144
- // For videos, don't inject file content - it will be loaded via /api/video
145
- template = template.replace('// FILE_CONTENT will be injected by the server', `initVideo(${fileSize});`);
146
- }
147
- else {
148
- // For text files, inject content as before
149
- const fileContent = fs.readFileSync(fullFilePath, 'utf-8');
150
- // JSON.stringify escapes quotes but not </script> which would break HTML parsing
151
- // Replace </script> with <\/script> (valid JS, doesn't match HTML closing tag)
152
- const escapedContent = JSON.stringify(fileContent).replace(/<\/script>/gi, '<\\/script>');
153
- template = template.replace('// FILE_CONTENT will be injected by the server', `init(${escapedContent});`);
154
- }
155
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
156
- res.end(template);
157
- }
158
- catch (err) {
159
- res.writeHead(500, { 'Content-Type': 'text/plain' });
160
- res.end('Error loading viewer: ' + err.message);
161
- }
162
- return;
163
- }
164
- // Handle file reload (GET /file)
165
- if (req.method === 'GET' && pathname.startsWith('/file')) {
166
- try {
167
- // Re-read file from disk
168
- const fileContent = fs.readFileSync(fullFilePath, 'utf-8');
169
- res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
170
- res.end(fileContent);
171
- }
172
- catch (err) {
173
- res.writeHead(500, { 'Content-Type': 'text/plain' });
174
- res.end('Error reading file: ' + err.message);
175
- }
176
- return;
177
- }
178
- // Handle image content (GET /api/image)
179
- if (req.method === 'GET' && pathname.startsWith('/api/image')) {
180
- if (!isImage) {
181
- res.writeHead(400, { 'Content-Type': 'text/plain' });
182
- res.end('Not an image file');
183
- return;
184
- }
185
- try {
186
- const imageData = fs.readFileSync(fullFilePath);
187
- const mimeType = imageMimeTypes[ext] || 'application/octet-stream';
188
- res.writeHead(200, {
189
- 'Content-Type': mimeType,
190
- 'Content-Length': imageData.length,
191
- 'Cache-Control': 'no-cache' // Don't cache, allow reload to work
192
- });
193
- res.end(imageData);
194
- }
195
- catch (err) {
196
- res.writeHead(500, { 'Content-Type': 'text/plain' });
197
- res.end('Error reading image: ' + err.message);
198
- }
199
- return;
200
- }
201
- // Handle video content (GET /api/video)
202
- if (req.method === 'GET' && pathname.startsWith('/api/video')) {
203
- if (!isVideo) {
204
- res.writeHead(400, { 'Content-Type': 'text/plain' });
205
- res.end('Not a video file');
206
- return;
207
- }
208
- try {
209
- const videoData = fs.readFileSync(fullFilePath);
210
- const mimeType = videoMimeTypes[ext] || 'application/octet-stream';
211
- res.writeHead(200, {
212
- 'Content-Type': mimeType,
213
- 'Content-Length': videoData.length,
214
- 'Cache-Control': 'no-cache' // Don't cache, allow reload to work
215
- });
216
- res.end(videoData);
217
- }
218
- catch (err) {
219
- res.writeHead(500, { 'Content-Type': 'text/plain' });
220
- res.end('Error reading video: ' + err.message);
221
- }
222
- return;
223
- }
224
- // Handle file mtime check (GET /api/mtime) - for auto-reload
225
- if (req.method === 'GET' && pathname.startsWith('/api/mtime')) {
226
- try {
227
- const stat = fs.statSync(fullFilePath);
228
- res.writeHead(200, { 'Content-Type': 'application/json' });
229
- res.end(JSON.stringify({ mtime: stat.mtimeMs }));
230
- }
231
- catch (err) {
232
- res.writeHead(500, { 'Content-Type': 'application/json' });
233
- res.end(JSON.stringify({ error: 'Failed to stat file' }));
234
- }
235
- return;
236
- }
237
- // Handle 3D model content (GET /api/model) - supports STL and 3MF
238
- if (req.method === 'GET' && pathname.startsWith('/api/model')) {
239
- if (!is3D) {
240
- res.writeHead(400, { 'Content-Type': 'text/plain' });
241
- res.end('Not a 3D model file');
242
- return;
243
- }
244
- try {
245
- const modelData = fs.readFileSync(fullFilePath);
246
- const mimeType = isSTL ? 'model/stl' : 'model/3mf';
247
- res.writeHead(200, {
248
- 'Content-Type': mimeType,
249
- 'Content-Length': modelData.length,
250
- 'Cache-Control': 'no-cache'
251
- });
252
- res.end(modelData);
253
- }
254
- catch (err) {
255
- res.writeHead(500, { 'Content-Type': 'text/plain' });
256
- res.end('Error reading 3D model: ' + err.message);
257
- }
258
- return;
259
- }
260
- // Handle legacy STL endpoint (GET /api/stl) - redirects to /api/model
261
- if (req.method === 'GET' && pathname.startsWith('/api/stl')) {
262
- if (!isSTL) {
263
- res.writeHead(400, { 'Content-Type': 'text/plain' });
264
- res.end('Not an STL file');
265
- return;
266
- }
267
- try {
268
- const stlData = fs.readFileSync(fullFilePath);
269
- res.writeHead(200, {
270
- 'Content-Type': 'model/stl',
271
- 'Content-Length': stlData.length,
272
- 'Cache-Control': 'no-cache'
273
- });
274
- res.end(stlData);
275
- }
276
- catch (err) {
277
- res.writeHead(500, { 'Content-Type': 'text/plain' });
278
- res.end('Error reading STL: ' + err.message);
279
- }
280
- return;
281
- }
282
- // Handle file save
283
- if (req.method === 'POST' && pathname === '/save') {
284
- let body = '';
285
- req.on('data', (chunk) => body += chunk.toString());
286
- req.on('end', () => {
287
- try {
288
- const { file, content } = JSON.parse(body);
289
- // Security: only allow saving the opened file
290
- if (file !== fullFilePath) {
291
- res.writeHead(403, { 'Content-Type': 'text/plain' });
292
- res.end('Cannot save to different file');
293
- return;
294
- }
295
- fs.writeFileSync(fullFilePath, content, 'utf-8');
296
- console.log(`Saved: ${fullFilePath}`);
297
- res.writeHead(200, { 'Content-Type': 'application/json' });
298
- res.end(JSON.stringify({ success: true }));
299
- }
300
- catch (err) {
301
- res.writeHead(500, { 'Content-Type': 'text/plain' });
302
- res.end('Error saving file: ' + err.message);
303
- }
304
- });
305
- return;
306
- }
307
- // 404 for everything else
308
- res.writeHead(404, { 'Content-Type': 'text/plain' });
309
- res.end('Not found');
310
- });
311
- server.listen(port, () => {
312
- console.log(`File Viewer: http://localhost:${port}`);
313
- console.log(`File: ${fullFilePath}`);
314
- });
315
- //# sourceMappingURL=open-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-server.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/open-server.ts"],"names":[],"mappings":"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"}