@auto-engineer/cli 0.8.3 → 0.8.5
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.
- package/CHANGELOG.md +14 -0
- package/LICENSE +10 -0
- package/dist/src/server/file-syncer/discovery/bareImports.d.ts +3 -0
- package/dist/src/server/file-syncer/discovery/bareImports.d.ts.map +1 -0
- package/dist/src/server/file-syncer/discovery/bareImports.js +36 -0
- package/dist/src/server/file-syncer/discovery/bareImports.js.map +1 -0
- package/dist/src/server/file-syncer/discovery/dts.d.ts +11 -0
- package/dist/src/server/file-syncer/discovery/dts.d.ts.map +1 -0
- package/dist/src/server/file-syncer/discovery/dts.js +108 -0
- package/dist/src/server/file-syncer/discovery/dts.js.map +1 -0
- package/dist/src/server/file-syncer/index.d.ts +17 -0
- package/dist/src/server/file-syncer/index.d.ts.map +1 -0
- package/dist/src/server/file-syncer/index.js +206 -0
- package/dist/src/server/file-syncer/index.js.map +1 -0
- package/dist/src/server/file-syncer/sync/computeDesiredSet.d.ts +7 -0
- package/dist/src/server/file-syncer/sync/computeDesiredSet.d.ts.map +1 -0
- package/dist/src/server/file-syncer/sync/computeDesiredSet.js +76 -0
- package/dist/src/server/file-syncer/sync/computeDesiredSet.js.map +1 -0
- package/dist/src/server/file-syncer/types/wire.d.ts +14 -0
- package/dist/src/server/file-syncer/types/wire.d.ts.map +1 -0
- package/dist/src/server/file-syncer/types/wire.js +2 -0
- package/dist/src/server/file-syncer/types/wire.js.map +1 -0
- package/dist/src/server/file-syncer/utils/hash.d.ts +5 -0
- package/dist/src/server/file-syncer/utils/hash.d.ts.map +1 -0
- package/dist/src/server/file-syncer/utils/hash.js +20 -0
- package/dist/src/server/file-syncer/utils/hash.js.map +1 -0
- package/dist/src/server/file-syncer/utils/path.d.ts +15 -0
- package/dist/src/server/file-syncer/utils/path.d.ts.map +1 -0
- package/dist/src/server/file-syncer/utils/path.js +100 -0
- package/dist/src/server/file-syncer/utils/path.js.map +1 -0
- package/dist/src/server/server.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -20
- package/dist/src/server/file-syncer.d.ts +0 -21
- package/dist/src/server/file-syncer.d.ts.map +0 -1
- package/dist/src/server/file-syncer.js +0 -101
- package/dist/src/server/file-syncer.js.map +0 -1
package/package.json
CHANGED
|
@@ -31,27 +31,10 @@
|
|
|
31
31
|
"engines": {
|
|
32
32
|
"node": ">=18.0.0"
|
|
33
33
|
},
|
|
34
|
-
"scripts": {
|
|
35
|
-
"build": "tsc && tsx ../../scripts/fix-esm-imports.ts && chmod +x dist/bin/auto.js && cp -r src/server/*.html src/server/*.svg dist/src/server/ 2>/dev/null || true",
|
|
36
|
-
"build:tsx": "echo 'Using tsx runtime, no build needed'",
|
|
37
|
-
"dev": "node scripts/watch.js",
|
|
38
|
-
"test": "vitest run --reporter=dot",
|
|
39
|
-
"test:watch": "vitest",
|
|
40
|
-
"lint": "eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --max-warnings 0 --config ../../eslint.config.ts",
|
|
41
|
-
"type-check": "tsc --noEmit",
|
|
42
|
-
"flow": "tsx src/index.ts flow",
|
|
43
|
-
"prepublishOnly": "npm run build",
|
|
44
|
-
"format": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
|
|
45
|
-
"lint:fix": "eslint 'src/**/*.ts' --fix --config ../../eslint.config.ts",
|
|
46
|
-
"format:fix": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
|
|
47
|
-
"link:dev": "pnpm build && pnpm link --global",
|
|
48
|
-
"unlink:dev": "pnpm unlink --global"
|
|
49
|
-
},
|
|
50
34
|
"publishConfig": {
|
|
51
35
|
"access": "public"
|
|
52
36
|
},
|
|
53
37
|
"dependencies": {
|
|
54
|
-
"@auto-engineer/message-bus": "workspace:*",
|
|
55
38
|
"chalk": "^5.3.0",
|
|
56
39
|
"chokidar": "^3.6.0",
|
|
57
40
|
"commander": "^12.0.0",
|
|
@@ -70,7 +53,9 @@
|
|
|
70
53
|
"ora": "^8.0.1",
|
|
71
54
|
"socket.io": "^4.7.5",
|
|
72
55
|
"test": "^3.3.0",
|
|
73
|
-
"yaml": "^2.6.1"
|
|
56
|
+
"yaml": "^2.6.1",
|
|
57
|
+
"@auto-engineer/message-bus": "0.8.5",
|
|
58
|
+
"@auto-engineer/file-store": "0.8.5"
|
|
74
59
|
},
|
|
75
60
|
"devDependencies": {
|
|
76
61
|
"@types/cors": "^2.8.0",
|
|
@@ -83,5 +68,19 @@
|
|
|
83
68
|
"get-port": "^7.1.0",
|
|
84
69
|
"tsx": "^4.20.3"
|
|
85
70
|
},
|
|
86
|
-
"version": "0.8.
|
|
87
|
-
|
|
71
|
+
"version": "0.8.5",
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsc && tsx ../../scripts/fix-esm-imports.ts && chmod +x dist/bin/auto.js && cp -r src/server/*.html src/server/*.svg dist/src/server/ 2>/dev/null || true",
|
|
74
|
+
"build:tsx": "echo 'Using tsx runtime, no build needed'",
|
|
75
|
+
"test": "vitest run --reporter=dot",
|
|
76
|
+
"test:watch": "vitest",
|
|
77
|
+
"lint": "eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --max-warnings 0 --config ../../eslint.config.ts",
|
|
78
|
+
"type-check": "tsc --noEmit",
|
|
79
|
+
"flow": "tsx src/index.ts flow",
|
|
80
|
+
"format": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
|
|
81
|
+
"lint:fix": "eslint 'src/**/*.ts' --fix --config ../../eslint.config.ts",
|
|
82
|
+
"format:fix": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
|
|
83
|
+
"link:dev": "pnpm build && pnpm link --global",
|
|
84
|
+
"unlink:dev": "pnpm unlink --global"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Server as SocketIOServer } from 'socket.io';
|
|
2
|
-
export declare class FileSyncer {
|
|
3
|
-
private watcher?;
|
|
4
|
-
private io;
|
|
5
|
-
private watchDir;
|
|
6
|
-
private extensions;
|
|
7
|
-
constructor(io: SocketIOServer, watchDir?: string, extensions?: string[]);
|
|
8
|
-
/**
|
|
9
|
-
* Start watching files for changes
|
|
10
|
-
*/
|
|
11
|
-
start(): void;
|
|
12
|
-
/**
|
|
13
|
-
* Get all initial files for syncing
|
|
14
|
-
*/
|
|
15
|
-
private getInitialFiles;
|
|
16
|
-
/**
|
|
17
|
-
* Stop watching files
|
|
18
|
-
*/
|
|
19
|
-
stop(): void;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=file-syncer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-syncer.d.ts","sourceRoot":"","sources":["../../../src/server/file-syncer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAa1D,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAC,CAAqB;IACrC,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAW;gBAEjB,EAAE,EAAE,cAAc,EAAE,QAAQ,SAAM,EAAE,UAAU,WAA2B;IAMrF;;OAEG;IACH,KAAK,IAAI,IAAI;IA4Db;;OAEG;YACW,eAAe;IAuB7B;;OAEG;IACH,IAAI,IAAI,IAAI;CAMb"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import chokidar from 'chokidar';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import createDebug from 'debug';
|
|
5
|
-
const debug = createDebug('auto-engineer:server:file-syncer');
|
|
6
|
-
export class FileSyncer {
|
|
7
|
-
constructor(io, watchDir = '.', extensions = ['.js', '.html', '.css']) {
|
|
8
|
-
this.io = io;
|
|
9
|
-
this.watchDir = watchDir;
|
|
10
|
-
this.extensions = extensions;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Start watching files for changes
|
|
14
|
-
*/
|
|
15
|
-
start() {
|
|
16
|
-
debug('Starting file syncer for directory:', this.watchDir);
|
|
17
|
-
debug('Watching extensions:', this.extensions);
|
|
18
|
-
// Set up file watcher
|
|
19
|
-
this.watcher = chokidar.watch(this.watchDir, {
|
|
20
|
-
ignored: /(^|[\\/\\])\./, // ignore dotfiles
|
|
21
|
-
persistent: true,
|
|
22
|
-
});
|
|
23
|
-
this.watcher.on('all', (event, filePath) => {
|
|
24
|
-
if (!this.extensions.some((ext) => filePath.endsWith(ext)))
|
|
25
|
-
return;
|
|
26
|
-
const relativePath = path.relative(this.watchDir, filePath);
|
|
27
|
-
debug('File event:', event, relativePath);
|
|
28
|
-
if (event === 'add' || event === 'change') {
|
|
29
|
-
const content = fs.readFileSync(filePath, 'base64');
|
|
30
|
-
this.io.emit('file-change', { event, path: relativePath, content });
|
|
31
|
-
}
|
|
32
|
-
else if (event === 'unlink') {
|
|
33
|
-
this.io.emit('file-change', { event: 'delete', path: relativePath });
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
// Handle client connections
|
|
37
|
-
this.io.on('connection', (socket) => {
|
|
38
|
-
debug('File sync client connected');
|
|
39
|
-
// Send initial file sync
|
|
40
|
-
this.getInitialFiles()
|
|
41
|
-
.then((files) => {
|
|
42
|
-
socket.emit('initial-sync', { files, directory: path.resolve(this.watchDir) });
|
|
43
|
-
debug('Sent initial sync with', files.length, 'files');
|
|
44
|
-
})
|
|
45
|
-
.catch((err) => {
|
|
46
|
-
console.error('Initial sync failed:', err);
|
|
47
|
-
});
|
|
48
|
-
// Handle client file changes
|
|
49
|
-
socket.on('client-file-change', (data) => {
|
|
50
|
-
const fullPath = path.join(this.watchDir, data.path);
|
|
51
|
-
const dir = path.dirname(fullPath);
|
|
52
|
-
debug('Client file change:', data.event, data.path);
|
|
53
|
-
try {
|
|
54
|
-
if (data.event === 'delete') {
|
|
55
|
-
fs.unlinkSync(fullPath);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
59
|
-
const content = Buffer.from(data.content ?? '', 'base64');
|
|
60
|
-
fs.writeFileSync(fullPath, content);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error('Failed to handle client file change:', error);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get all initial files for syncing
|
|
71
|
-
*/
|
|
72
|
-
async getInitialFiles() {
|
|
73
|
-
const files = [];
|
|
74
|
-
const walk = async (dir) => {
|
|
75
|
-
const entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
76
|
-
for (const entry of entries) {
|
|
77
|
-
const fullPath = path.join(dir, entry.name);
|
|
78
|
-
const relativePath = path.relative(this.watchDir, fullPath);
|
|
79
|
-
if (entry.isDirectory() && !entry.name.startsWith('.')) {
|
|
80
|
-
await walk(fullPath);
|
|
81
|
-
}
|
|
82
|
-
else if (entry.isFile() && this.extensions.some((ext) => relativePath.endsWith(ext))) {
|
|
83
|
-
const content = fs.readFileSync(fullPath, 'base64');
|
|
84
|
-
files.push({ path: relativePath, content });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
await walk(this.watchDir);
|
|
89
|
-
return files;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Stop watching files
|
|
93
|
-
*/
|
|
94
|
-
stop() {
|
|
95
|
-
if (this.watcher) {
|
|
96
|
-
debug('Stopping file syncer');
|
|
97
|
-
void this.watcher.close();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=file-syncer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-syncer.js","sourceRoot":"","sources":["../../../src/server/file-syncer.ts"],"names":[],"mappings":"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"}
|