@auto-engineer/cli 0.21.0 → 0.21.2
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 +11 -0
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/server.d.ts +1 -2
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +7 -18
- package/dist/src/server.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/dsl/index.d.ts +0 -71
- package/dist/src/dsl/index.d.ts.map +0 -1
- package/dist/src/dsl/index.js +0 -504
- package/dist/src/dsl/index.js.map +0 -1
- package/dist/src/dsl/types.d.ts +0 -39
- package/dist/src/dsl/types.d.ts.map +0 -1
- package/dist/src/dsl/types.js +0 -2
- package/dist/src/dsl/types.js.map +0 -1
- package/dist/src/dsl-exports.d.ts +0 -5
- package/dist/src/dsl-exports.d.ts.map +0 -1
- package/dist/src/dsl-exports.js +0 -4
- package/dist/src/dsl-exports.js.map +0 -1
- package/dist/src/plugin-loader.d.ts +0 -84
- package/dist/src/plugin-loader.d.ts.map +0 -1
- package/dist/src/plugin-loader.js +0 -788
- package/dist/src/plugin-loader.js.map +0 -1
- package/dist/src/server/command-metadata-service.d.ts +0 -27
- package/dist/src/server/command-metadata-service.d.ts.map +0 -1
- package/dist/src/server/command-metadata-service.js +0 -69
- package/dist/src/server/command-metadata-service.js.map +0 -1
- package/dist/src/server/command-registry.d.ts +0 -21
- package/dist/src/server/command-registry.d.ts.map +0 -1
- package/dist/src/server/command-registry.js +0 -58
- package/dist/src/server/command-registry.js.map +0 -1
- package/dist/src/server/config-loader.d.ts +0 -16
- package/dist/src/server/config-loader.d.ts.map +0 -1
- package/dist/src/server/config-loader.js +0 -106
- package/dist/src/server/config-loader.js.map +0 -1
- package/dist/src/server/event-processor.d.ts +0 -45
- package/dist/src/server/event-processor.d.ts.map +0 -1
- package/dist/src/server/event-processor.js +0 -287
- package/dist/src/server/event-processor.js.map +0 -1
- package/dist/src/server/file-syncer/crypto/jwe-encryptor.d.ts +0 -15
- package/dist/src/server/file-syncer/crypto/jwe-encryptor.d.ts.map +0 -1
- package/dist/src/server/file-syncer/crypto/jwe-encryptor.js +0 -72
- package/dist/src/server/file-syncer/crypto/jwe-encryptor.js.map +0 -1
- package/dist/src/server/file-syncer/crypto/provider-resolver.d.ts +0 -24
- package/dist/src/server/file-syncer/crypto/provider-resolver.d.ts.map +0 -1
- package/dist/src/server/file-syncer/crypto/provider-resolver.js +0 -71
- package/dist/src/server/file-syncer/crypto/provider-resolver.js.map +0 -1
- package/dist/src/server/file-syncer/discovery/bareImports.d.ts +0 -3
- package/dist/src/server/file-syncer/discovery/bareImports.d.ts.map +0 -1
- package/dist/src/server/file-syncer/discovery/bareImports.js +0 -36
- package/dist/src/server/file-syncer/discovery/bareImports.js.map +0 -1
- package/dist/src/server/file-syncer/discovery/dts.d.ts +0 -11
- package/dist/src/server/file-syncer/discovery/dts.d.ts.map +0 -1
- package/dist/src/server/file-syncer/discovery/dts.js +0 -108
- package/dist/src/server/file-syncer/discovery/dts.js.map +0 -1
- package/dist/src/server/file-syncer/index.d.ts +0 -22
- package/dist/src/server/file-syncer/index.d.ts.map +0 -1
- package/dist/src/server/file-syncer/index.js +0 -378
- package/dist/src/server/file-syncer/index.js.map +0 -1
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts +0 -7
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts.map +0 -1
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js +0 -103
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js.map +0 -1
- package/dist/src/server/file-syncer/types/wire.d.ts +0 -14
- package/dist/src/server/file-syncer/types/wire.d.ts.map +0 -1
- package/dist/src/server/file-syncer/types/wire.js +0 -2
- package/dist/src/server/file-syncer/types/wire.js.map +0 -1
- package/dist/src/server/file-syncer/utils/hash.d.ts +0 -5
- package/dist/src/server/file-syncer/utils/hash.d.ts.map +0 -1
- package/dist/src/server/file-syncer/utils/hash.js +0 -20
- package/dist/src/server/file-syncer/utils/hash.js.map +0 -1
- package/dist/src/server/file-syncer/utils/path.d.ts +0 -15
- package/dist/src/server/file-syncer/utils/path.d.ts.map +0 -1
- package/dist/src/server/file-syncer/utils/path.js +0 -109
- package/dist/src/server/file-syncer/utils/path.js.map +0 -1
- package/dist/src/server/http-routes.d.ts +0 -30
- package/dist/src/server/http-routes.d.ts.map +0 -1
- package/dist/src/server/http-routes.js +0 -394
- package/dist/src/server/http-routes.js.map +0 -1
- package/dist/src/server/sandbox-landing-page.html +0 -367
- package/dist/src/server/server.d.ts +0 -106
- package/dist/src/server/server.d.ts.map +0 -1
- package/dist/src/server/server.js +0 -255
- package/dist/src/server/server.js.map +0 -1
- package/dist/src/server/services/child-process-manager.d.ts +0 -27
- package/dist/src/server/services/child-process-manager.d.ts.map +0 -1
- package/dist/src/server/services/child-process-manager.js +0 -126
- package/dist/src/server/services/child-process-manager.js.map +0 -1
- package/dist/src/server/services/index.d.ts +0 -3
- package/dist/src/server/services/index.d.ts.map +0 -1
- package/dist/src/server/services/index.js +0 -2
- package/dist/src/server/services/index.js.map +0 -1
- package/dist/src/server/services/interface.d.ts +0 -6
- package/dist/src/server/services/interface.d.ts.map +0 -1
- package/dist/src/server/services/interface.js +0 -2
- package/dist/src/server/services/interface.js.map +0 -1
- package/dist/src/server/settled-tracker.d.ts +0 -29
- package/dist/src/server/settled-tracker.d.ts.map +0 -1
- package/dist/src/server/settled-tracker.js +0 -203
- package/dist/src/server/settled-tracker.js.map +0 -1
- package/dist/src/server/state-manager.d.ts +0 -24
- package/dist/src/server/state-manager.d.ts.map +0 -1
- package/dist/src/server/state-manager.js +0 -56
- package/dist/src/server/state-manager.js.map +0 -1
- package/dist/src/server/websocket-handler.d.ts +0 -5
- package/dist/src/server/websocket-handler.d.ts.map +0 -1
- package/dist/src/server/websocket-handler.js +0 -40
- package/dist/src/server/websocket-handler.js.map +0 -1
- package/dist/src/utils/analytics.d.ts +0 -21
- package/dist/src/utils/analytics.d.ts.map +0 -1
- package/dist/src/utils/analytics.js +0 -41
- package/dist/src/utils/analytics.js.map +0 -1
- package/dist/src/utils/config.d.ts +0 -11
- package/dist/src/utils/config.d.ts.map +0 -1
- package/dist/src/utils/config.js +0 -50
- package/dist/src/utils/config.js.map +0 -1
- package/dist/src/utils/correlation-id.d.ts +0 -3
- package/dist/src/utils/correlation-id.d.ts.map +0 -1
- package/dist/src/utils/correlation-id.js +0 -7
- package/dist/src/utils/correlation-id.js.map +0 -1
- package/dist/src/utils/errors.d.ts +0 -22
- package/dist/src/utils/errors.d.ts.map +0 -1
- package/dist/src/utils/errors.js +0 -50
- package/dist/src/utils/errors.js.map +0 -1
- package/dist/src/utils/get-package-version.d.ts +0 -7
- package/dist/src/utils/get-package-version.d.ts.map +0 -1
- package/dist/src/utils/get-package-version.js +0 -31
- package/dist/src/utils/get-package-version.js.map +0 -1
- package/dist/src/utils/terminal.d.ts +0 -13
- package/dist/src/utils/terminal.d.ts.map +0 -1
- package/dist/src/utils/terminal.js +0 -85
- package/dist/src/utils/terminal.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSyncFileSet.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/sync/resolveSyncFileSet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type FileEvent = 'add' | 'change' | 'delete';
|
|
2
|
-
export type WireChange = {
|
|
3
|
-
event: FileEvent;
|
|
4
|
-
path: string;
|
|
5
|
-
content?: string;
|
|
6
|
-
};
|
|
7
|
-
export type WireInitial = {
|
|
8
|
-
files: Array<{
|
|
9
|
-
path: string;
|
|
10
|
-
content: string;
|
|
11
|
-
}>;
|
|
12
|
-
directory: string;
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=wire.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/types/wire.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/types/wire.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { NodeFileStore } from '@auto-engineer/file-store';
|
|
2
|
-
export declare function readBase64(vfs: NodeFileStore, abs: string): Promise<string | null>;
|
|
3
|
-
export declare function md5(vfs: NodeFileStore, abs: string): Promise<string | null>;
|
|
4
|
-
export declare function statSize(vfs: NodeFileStore, abs: string): Promise<number>;
|
|
5
|
-
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/utils/hash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,wBAAsB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxF;AAED,wBAAsB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIjF;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/E"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import crypto from 'node:crypto';
|
|
2
|
-
export async function readBase64(vfs, abs) {
|
|
3
|
-
const buf = await vfs.read(abs);
|
|
4
|
-
if (!buf) {
|
|
5
|
-
console.warn(`[sync] readBase64: missing file in VFS: ${abs}`);
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
return Buffer.from(buf).toString('base64');
|
|
9
|
-
}
|
|
10
|
-
export async function md5(vfs, abs) {
|
|
11
|
-
const buf = await vfs.read(abs);
|
|
12
|
-
if (!buf)
|
|
13
|
-
return null;
|
|
14
|
-
return crypto.createHash('md5').update(buf).digest('hex');
|
|
15
|
-
}
|
|
16
|
-
export async function statSize(vfs, abs) {
|
|
17
|
-
const buf = await vfs.read(abs);
|
|
18
|
-
return buf ? buf.byteLength : 0;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=hash.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAkB,EAAE,GAAW;IAC9D,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,GAAkB,EAAE,GAAW;IACvD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAkB,EAAE,GAAW;IAC5D,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare const posix: (p: string) => string;
|
|
2
|
-
export declare function toWirePath(abs: string, projectRoot: string): string;
|
|
3
|
-
export declare function sample<T>(arr: T[], n?: number): T[];
|
|
4
|
-
export declare function logArray(label: string, arr: string[], _n?: number): void;
|
|
5
|
-
export declare function uniq<T>(arr: T[]): T[];
|
|
6
|
-
export declare function rebuildWirePathCache(files: Array<{
|
|
7
|
-
abs: string;
|
|
8
|
-
projectRoot: string;
|
|
9
|
-
}>): void;
|
|
10
|
-
export declare function fromWirePath(wirePath: string, projectRoot: string): string;
|
|
11
|
-
export declare function cacheWireMapping(wirePath: string, absPath: string): void;
|
|
12
|
-
export declare function dirOf(p: string): string;
|
|
13
|
-
export declare function pkgNameFromPath(p: string): string | null;
|
|
14
|
-
export declare function scorePathForDedupe(p: string): number;
|
|
15
|
-
//# sourceMappingURL=path.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/utils/path.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,WAAgC,CAAC;AAEhE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UA+B1D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,SAAI,OAExC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAI,QAa5D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAErC;AAOD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAM7F;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB1E;AAGD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvC;AAGD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGxD;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQpD"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import createDebug from 'debug';
|
|
3
|
-
const debug = createDebug('cli:file-syncer:path');
|
|
4
|
-
export const posix = (p) => p.split(path.sep).join('/');
|
|
5
|
-
export function toWirePath(abs, projectRoot) {
|
|
6
|
-
const rel = path.relative(projectRoot, abs);
|
|
7
|
-
if (rel.startsWith('..')) {
|
|
8
|
-
debug('toWirePath: abs is outside projectRoot. abs=%s', abs);
|
|
9
|
-
const nodeModulesMatch = abs.match(/.*\/node_modules\/(.*)/);
|
|
10
|
-
if (nodeModulesMatch) {
|
|
11
|
-
// Remap to virtual /.external/node_modules/ path to avoid traversal error
|
|
12
|
-
let modulePath = nodeModulesMatch[1];
|
|
13
|
-
// Normalize path by removing redundant ./ segments
|
|
14
|
-
modulePath = modulePath.replace(/\/\.\//g, '/').replace(/^\.\//, '');
|
|
15
|
-
const wire = `/.external/node_modules/${modulePath}`.split(path.sep).join('/');
|
|
16
|
-
cacheWireMapping(wire, abs); // Cache for reverse mapping
|
|
17
|
-
return wire;
|
|
18
|
-
}
|
|
19
|
-
// For other external paths, use a hash to create a unique virtual path
|
|
20
|
-
const hash = Buffer.from(abs)
|
|
21
|
-
.toString('base64')
|
|
22
|
-
.replace(/[^a-zA-Z0-9]/g, '')
|
|
23
|
-
.substring(0, 16);
|
|
24
|
-
const fileName = path.basename(abs);
|
|
25
|
-
const wire = `/.external/other/${hash}_${fileName}`;
|
|
26
|
-
debug('Remapped external path to: %s', wire);
|
|
27
|
-
cacheWireMapping(wire, abs); // Cache for reverse mapping
|
|
28
|
-
return wire;
|
|
29
|
-
}
|
|
30
|
-
// Normal case: path is within project root
|
|
31
|
-
const wire = ('/' + rel).split(path.sep).join('/');
|
|
32
|
-
return wire;
|
|
33
|
-
}
|
|
34
|
-
export function sample(arr, n = 5) {
|
|
35
|
-
return arr.slice(0, n);
|
|
36
|
-
}
|
|
37
|
-
export function logArray(label, arr, _n = 5) {
|
|
38
|
-
if (arr.length === 0) {
|
|
39
|
-
debug(`${label}: (empty)`);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
debug(`${label}: ${arr.length} items`);
|
|
43
|
-
const sampled = sample(arr, _n);
|
|
44
|
-
for (let i = 0; i < sampled.length; i++) {
|
|
45
|
-
debug(` ${i + 1}. ${sampled[i]}`);
|
|
46
|
-
}
|
|
47
|
-
if (arr.length > _n) {
|
|
48
|
-
debug(` ... and ${arr.length - _n} more`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export function uniq(arr) {
|
|
52
|
-
return [...new Set(arr)];
|
|
53
|
-
}
|
|
54
|
-
// Map to store reverse mappings for two-way sync
|
|
55
|
-
// This needs to be persistent across connections for reliable sync
|
|
56
|
-
const wirePathToAbsCache = new Map();
|
|
57
|
-
// Clear and rebuild the cache (used when new connections are established)
|
|
58
|
-
export function rebuildWirePathCache(files) {
|
|
59
|
-
wirePathToAbsCache.clear();
|
|
60
|
-
for (const { abs, projectRoot } of files) {
|
|
61
|
-
toWirePath(abs, projectRoot);
|
|
62
|
-
// Cache will be populated automatically by toWirePath for external paths
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export function fromWirePath(wirePath, projectRoot) {
|
|
66
|
-
// Check if it's a virtual external path
|
|
67
|
-
if (wirePath.startsWith('/.external/')) {
|
|
68
|
-
// Look up in cache
|
|
69
|
-
const cached = wirePathToAbsCache.get(wirePath);
|
|
70
|
-
if (cached !== undefined) {
|
|
71
|
-
return cached;
|
|
72
|
-
}
|
|
73
|
-
// Can't reverse map without cache - this shouldn't happen in practice
|
|
74
|
-
debug('⚠ Cannot reverse map virtual path: %s', wirePath);
|
|
75
|
-
return path.join(projectRoot, wirePath.substring(1)); // Fallback
|
|
76
|
-
}
|
|
77
|
-
// Normal path: remove leading slash and resolve relative to project root
|
|
78
|
-
const relativePath = wirePath.startsWith('/') ? wirePath.substring(1) : wirePath;
|
|
79
|
-
return path.join(projectRoot, relativePath);
|
|
80
|
-
}
|
|
81
|
-
// Store reverse mapping when creating wire paths
|
|
82
|
-
export function cacheWireMapping(wirePath, absPath) {
|
|
83
|
-
if (wirePath.startsWith('/.external/')) {
|
|
84
|
-
wirePathToAbsCache.set(wirePath, absPath);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
export function dirOf(p) {
|
|
88
|
-
const norm = p.replace(/\\/g, '/');
|
|
89
|
-
return norm.slice(0, norm.lastIndexOf('/')) || '/';
|
|
90
|
-
}
|
|
91
|
-
// Extract npm package from a node_modules path
|
|
92
|
-
export function pkgNameFromPath(p) {
|
|
93
|
-
const m = p.replace(/\\/g, '/').match(/\/node_modules\/((@[^/]+\/)?[^/]+)/);
|
|
94
|
-
return m ? m[1] : null;
|
|
95
|
-
}
|
|
96
|
-
// Prefer server/node_modules, then plain node_modules, avoid .pnpm, and shorter paths
|
|
97
|
-
export function scorePathForDedupe(p) {
|
|
98
|
-
let s = 0;
|
|
99
|
-
const pathPosix = p.replace(/\\/g, '/');
|
|
100
|
-
if (pathPosix.includes('/server/node_modules/'))
|
|
101
|
-
s -= 10;
|
|
102
|
-
if (!pathPosix.includes('/.pnpm/'))
|
|
103
|
-
s -= 3;
|
|
104
|
-
if (pathPosix.includes('/node_modules/'))
|
|
105
|
-
s -= 1;
|
|
106
|
-
s += pathPosix.length / 1000;
|
|
107
|
-
return s;
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=path.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/utils/path.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import type { MessageBus, Command, Event } from '@auto-engineer/message-bus';
|
|
3
|
-
import type { IMessageStore } from '@auto-engineer/message-store';
|
|
4
|
-
import type { StateManager, FoldFunction } from './state-manager';
|
|
5
|
-
import type { CommandMetadataService } from './command-metadata-service';
|
|
6
|
-
export interface HttpRoutesConfig {
|
|
7
|
-
commandHandlerNames: string[];
|
|
8
|
-
commandMetadata: Map<string, {
|
|
9
|
-
alias: string;
|
|
10
|
-
description: string;
|
|
11
|
-
package: string;
|
|
12
|
-
version?: string;
|
|
13
|
-
category?: string;
|
|
14
|
-
icon?: string;
|
|
15
|
-
}>;
|
|
16
|
-
commandMetadataService: CommandMetadataService;
|
|
17
|
-
eventHandlers: Map<string, Array<(event: Event) => void>>;
|
|
18
|
-
foldRegistry: Map<string, FoldFunction<Record<string, unknown>>>;
|
|
19
|
-
messageStore: IMessageStore;
|
|
20
|
-
dslRegistrations: Array<import('../dsl/types').DslRegistration>;
|
|
21
|
-
getDslRegistrations?: () => Array<import('../dsl/types').DslRegistration>;
|
|
22
|
-
onCommandError: (error: {
|
|
23
|
-
commandId: string;
|
|
24
|
-
error: string;
|
|
25
|
-
timestamp: string;
|
|
26
|
-
}) => void;
|
|
27
|
-
onCommandReceived: (command: Command) => Promise<void>;
|
|
28
|
-
}
|
|
29
|
-
export declare function setupHttpRoutes(app: express.Application, messageBus: MessageBus, stateManager: StateManager<Record<string, unknown>>, config: HttpRoutesConfig): void;
|
|
30
|
-
//# sourceMappingURL=http-routes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-routes.d.ts","sourceRoot":"","sources":["../../../src/server/http-routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,8BAA8B,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAKzE,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAC5G,CAAC;IACF,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;IAC1D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,YAAY,EAAE,aAAa,CAAC;IAC5B,gBAAgB,EAAE,KAAK,CAAC,OAAO,cAAc,EAAE,eAAe,CAAC,CAAC;IAChE,mBAAmB,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,cAAc,EAAE,eAAe,CAAC,CAAC;IAC1E,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzF,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAoFD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,CAAC,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnD,MAAM,EAAE,gBAAgB,GACvB,IAAI,CA+WN"}
|
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath } from 'url';
|
|
2
|
-
import { dirname, join } from 'path';
|
|
3
|
-
import { getPipelineGraph } from '../dsl/index.js';
|
|
4
|
-
import createDebug from 'debug';
|
|
5
|
-
const debugHttp = createDebug('auto-engineer:server:http');
|
|
6
|
-
// Helper functions to reduce complexity
|
|
7
|
-
function validateCommandStructure(command) {
|
|
8
|
-
if (!command.type || !('data' in command)) {
|
|
9
|
-
return 'Invalid command structure. Must have type and data fields.';
|
|
10
|
-
}
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
function addMissingIds(command) {
|
|
14
|
-
const hasRequestId = command.requestId !== null && command.requestId !== undefined && command.requestId !== '';
|
|
15
|
-
const hasCorrelationId = command.correlationId !== null && command.correlationId !== undefined && command.correlationId !== '';
|
|
16
|
-
return {
|
|
17
|
-
...command,
|
|
18
|
-
requestId: hasRequestId ? command.requestId : `req-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,
|
|
19
|
-
correlationId: hasCorrelationId
|
|
20
|
-
? command.correlationId
|
|
21
|
-
: `corr-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
function validateCommandHandler(commandType, availableCommands) {
|
|
25
|
-
if (!availableCommands.includes(commandType)) {
|
|
26
|
-
return `Command handler not found for command: ${commandType}`;
|
|
27
|
-
}
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
function mapCommandToMetadata(cmd) {
|
|
31
|
-
const metadata = cmd.metadata ?? {};
|
|
32
|
-
const packageName = metadata.package ?? 'unknown';
|
|
33
|
-
const baseAlias = metadata.alias ?? cmd.name;
|
|
34
|
-
return {
|
|
35
|
-
id: `${packageName}/${baseAlias}`,
|
|
36
|
-
name: cmd.name,
|
|
37
|
-
alias: baseAlias,
|
|
38
|
-
description: metadata.description ?? 'No description',
|
|
39
|
-
package: packageName,
|
|
40
|
-
version: metadata.version,
|
|
41
|
-
category: metadata.category,
|
|
42
|
-
icon: metadata.icon ?? 'terminal',
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
async function processCommand(messageBus, command, config) {
|
|
46
|
-
try {
|
|
47
|
-
await messageBus.sendCommand(command);
|
|
48
|
-
debugHttp('Command processed successfully:', command.type);
|
|
49
|
-
}
|
|
50
|
-
catch (err) {
|
|
51
|
-
const isTest = process.env.NODE_ENV === 'test' || process.env.VITEST === 'true';
|
|
52
|
-
if (!isTest) {
|
|
53
|
-
console.error('Command failed:', err);
|
|
54
|
-
}
|
|
55
|
-
debugHttp('Command failed (suppressed in tests):', err);
|
|
56
|
-
config.onCommandError({
|
|
57
|
-
commandId: command.requestId ?? 'unknown',
|
|
58
|
-
error: err instanceof Error ? err.message : String(err),
|
|
59
|
-
timestamp: new Date().toISOString(),
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export function setupHttpRoutes(app, messageBus, stateManager, config) {
|
|
64
|
-
let cachedPipelineGraph = null;
|
|
65
|
-
let lastMessageCount = 0;
|
|
66
|
-
// Health check endpoint
|
|
67
|
-
app.get('/health', (_req, res) => {
|
|
68
|
-
res.json({
|
|
69
|
-
status: 'healthy',
|
|
70
|
-
uptime: process.uptime(),
|
|
71
|
-
timestamp: new Date().toISOString(),
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
// Serve landing page
|
|
75
|
-
app.get('/', (_req, res) => {
|
|
76
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
77
|
-
res.sendFile(join(__dirname, 'sandbox-landing-page.html'));
|
|
78
|
-
});
|
|
79
|
-
// Get registry information
|
|
80
|
-
app.get('/registry', (_req, res) => {
|
|
81
|
-
// Sort commands alphabetically by alias
|
|
82
|
-
const sortedCommands = config.commandHandlerNames
|
|
83
|
-
.map((name) => ({
|
|
84
|
-
name,
|
|
85
|
-
metadata: config.commandMetadata.get(name),
|
|
86
|
-
}))
|
|
87
|
-
.sort((a, b) => {
|
|
88
|
-
const aliasA = a.metadata?.alias ?? a.name;
|
|
89
|
-
const aliasB = b.metadata?.alias ?? b.name;
|
|
90
|
-
return aliasA.localeCompare(aliasB);
|
|
91
|
-
});
|
|
92
|
-
res.json({
|
|
93
|
-
eventHandlers: Array.from(config.eventHandlers.keys()),
|
|
94
|
-
folds: Array.from(config.foldRegistry.keys()),
|
|
95
|
-
commandHandlers: sortedCommands.map((cmd) => cmd.name),
|
|
96
|
-
commandsWithMetadata: sortedCommands.map(mapCommandToMetadata),
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
// Get pipeline graph with command metadata and icons
|
|
100
|
-
// This endpoint will be polled frequently for status updates
|
|
101
|
-
// Caching is implemented to avoid expensive recomputation when nothing has changed
|
|
102
|
-
app.get('/pipeline', (_req, res) => {
|
|
103
|
-
void (async () => {
|
|
104
|
-
try {
|
|
105
|
-
const stats = await config.messageStore.getStats();
|
|
106
|
-
const currentMessageCount = stats.totalMessages;
|
|
107
|
-
if (cachedPipelineGraph !== null && currentMessageCount === lastMessageCount) {
|
|
108
|
-
debugHttp('Pipeline cache hit - returning cached graph');
|
|
109
|
-
res.json(cachedPipelineGraph);
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
debugHttp('Pipeline cache miss - rebuilding graph (messages: %d -> %d)', lastMessageCount, currentMessageCount);
|
|
113
|
-
const currentDslRegistrations = config.getDslRegistrations?.() ?? config.dslRegistrations;
|
|
114
|
-
const graph = await getPipelineGraph({
|
|
115
|
-
metadataService: config.commandMetadataService,
|
|
116
|
-
messageStore: config.messageStore,
|
|
117
|
-
dslRegistrations: currentDslRegistrations,
|
|
118
|
-
});
|
|
119
|
-
cachedPipelineGraph = graph;
|
|
120
|
-
lastMessageCount = currentMessageCount;
|
|
121
|
-
res.json(graph);
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
debugHttp('Error building pipeline graph:', error);
|
|
125
|
-
res.status(500).json({ error: 'Failed to build pipeline graph' });
|
|
126
|
-
}
|
|
127
|
-
})();
|
|
128
|
-
});
|
|
129
|
-
// Get all messages with filtering
|
|
130
|
-
// eslint-disable-next-line complexity, @typescript-eslint/no-misused-promises
|
|
131
|
-
app.get('/messages', async (req, res) => {
|
|
132
|
-
try {
|
|
133
|
-
const filter = {};
|
|
134
|
-
// Parse query parameters
|
|
135
|
-
if (req.query.messageType !== undefined && req.query.messageType !== null) {
|
|
136
|
-
filter.messageType = req.query.messageType;
|
|
137
|
-
}
|
|
138
|
-
if (req.query.messageNames !== undefined && req.query.messageNames !== null) {
|
|
139
|
-
filter.messageNames = Array.isArray(req.query.messageNames)
|
|
140
|
-
? req.query.messageNames
|
|
141
|
-
: [req.query.messageNames];
|
|
142
|
-
}
|
|
143
|
-
if (req.query.streamId !== undefined && req.query.streamId !== null) {
|
|
144
|
-
filter.streamId = req.query.streamId;
|
|
145
|
-
}
|
|
146
|
-
if (req.query.sessionId !== undefined && req.query.sessionId !== null) {
|
|
147
|
-
filter.sessionId = req.query.sessionId;
|
|
148
|
-
}
|
|
149
|
-
if (req.query.correlationId !== undefined && req.query.correlationId !== null) {
|
|
150
|
-
filter.correlationId = req.query.correlationId;
|
|
151
|
-
}
|
|
152
|
-
if (req.query.requestId !== undefined && req.query.requestId !== null) {
|
|
153
|
-
filter.requestId = req.query.requestId;
|
|
154
|
-
}
|
|
155
|
-
if (req.query.fromPosition !== undefined && req.query.fromPosition !== null) {
|
|
156
|
-
filter.fromPosition = BigInt(req.query.fromPosition);
|
|
157
|
-
}
|
|
158
|
-
if (req.query.toPosition !== undefined && req.query.toPosition !== null) {
|
|
159
|
-
filter.toPosition = BigInt(req.query.toPosition);
|
|
160
|
-
}
|
|
161
|
-
if (req.query.jsonFilter !== undefined && req.query.jsonFilter !== null) {
|
|
162
|
-
try {
|
|
163
|
-
filter.jsonFilter = JSON.parse(req.query.jsonFilter);
|
|
164
|
-
}
|
|
165
|
-
catch {
|
|
166
|
-
return res.status(400).json({ error: 'Invalid JSON filter' });
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
const count = req.query.count !== undefined && req.query.count !== null ? parseInt(req.query.count) : 1000;
|
|
170
|
-
// Read only from the global $all stream to avoid duplicates, but still apply filters
|
|
171
|
-
const allStreamMessages = await config.messageStore.getMessages('$all', undefined);
|
|
172
|
-
// Apply filters manually since we're not using getAllMessages
|
|
173
|
-
let filteredMessages = allStreamMessages;
|
|
174
|
-
// Apply message type filter
|
|
175
|
-
if (filter.messageType) {
|
|
176
|
-
filteredMessages = filteredMessages.filter((msg) => msg.messageType === filter.messageType);
|
|
177
|
-
}
|
|
178
|
-
// Apply other filters as needed
|
|
179
|
-
if (filter.messageNames && filter.messageNames.length > 0) {
|
|
180
|
-
filteredMessages = filteredMessages.filter((msg) => filter.messageNames.includes(msg.message.type));
|
|
181
|
-
}
|
|
182
|
-
if (filter.sessionId !== undefined && filter.sessionId !== null && filter.sessionId !== '') {
|
|
183
|
-
filteredMessages = filteredMessages.filter((msg) => msg.sessionId === filter.sessionId);
|
|
184
|
-
}
|
|
185
|
-
if (filter.correlationId !== undefined && filter.correlationId !== null && filter.correlationId !== '') {
|
|
186
|
-
filteredMessages = filteredMessages.filter((msg) => msg.message.correlationId === filter.correlationId);
|
|
187
|
-
}
|
|
188
|
-
if (filter.requestId !== undefined && filter.requestId !== null && filter.requestId !== '') {
|
|
189
|
-
filteredMessages = filteredMessages.filter((msg) => msg.message.requestId === filter.requestId);
|
|
190
|
-
}
|
|
191
|
-
if (count && count > 0) {
|
|
192
|
-
filteredMessages = filteredMessages.slice(-count);
|
|
193
|
-
}
|
|
194
|
-
const messages = filteredMessages;
|
|
195
|
-
// Convert BigInt fields to strings for JSON serialization
|
|
196
|
-
const serializedMessages = messages.map((message) => ({
|
|
197
|
-
...message,
|
|
198
|
-
revision: message.revision.toString(),
|
|
199
|
-
position: message.position.toString(),
|
|
200
|
-
}));
|
|
201
|
-
res.json(serializedMessages);
|
|
202
|
-
}
|
|
203
|
-
catch (error) {
|
|
204
|
-
debugHttp('Error fetching messages:', error);
|
|
205
|
-
console.error('Detailed error fetching messages:', error);
|
|
206
|
-
res
|
|
207
|
-
.status(500)
|
|
208
|
-
.json({ error: 'Failed to fetch messages', details: error instanceof Error ? error.message : String(error) });
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
// Get commands only
|
|
212
|
-
app.get('/commands', (req, res) => {
|
|
213
|
-
(async () => {
|
|
214
|
-
try {
|
|
215
|
-
const count = req.query.count !== undefined && req.query.count !== null ? parseInt(req.query.count) : 1000;
|
|
216
|
-
const commands = await config.messageStore.getAllCommands(undefined, count);
|
|
217
|
-
// Convert BigInt fields to strings for JSON serialization
|
|
218
|
-
const serializedCommands = commands.map((command) => ({
|
|
219
|
-
...command,
|
|
220
|
-
revision: command.revision.toString(),
|
|
221
|
-
position: command.position.toString(),
|
|
222
|
-
}));
|
|
223
|
-
res.json(serializedCommands);
|
|
224
|
-
}
|
|
225
|
-
catch (error) {
|
|
226
|
-
console.error('Error fetching commands:', error);
|
|
227
|
-
res.status(500).json({ error: 'Failed to fetch commands' });
|
|
228
|
-
}
|
|
229
|
-
})().catch((error) => {
|
|
230
|
-
console.error('Unhandled error in /commands:', error);
|
|
231
|
-
if (!res.headersSent) {
|
|
232
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
// Get events only (backward compatibility)
|
|
237
|
-
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
238
|
-
app.get('/events', async (req, res) => {
|
|
239
|
-
try {
|
|
240
|
-
const count = req.query.count !== undefined && req.query.count !== null ? parseInt(req.query.count) : 1000;
|
|
241
|
-
const events = await config.messageStore.getAllEvents(undefined, count);
|
|
242
|
-
// Transform to legacy format for backward compatibility
|
|
243
|
-
const legacyFormat = events.map((event) => ({
|
|
244
|
-
event: event.message,
|
|
245
|
-
timestamp: event.timestamp.toISOString(),
|
|
246
|
-
}));
|
|
247
|
-
res.json(legacyFormat);
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
debugHttp('Error fetching events:', error);
|
|
251
|
-
res.status(500).json({ error: 'Failed to fetch events' });
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
// Get current state
|
|
255
|
-
app.get('/state', (_req, res) => {
|
|
256
|
-
res.json(stateManager.getState());
|
|
257
|
-
});
|
|
258
|
-
// Get sessions
|
|
259
|
-
app.get('/sessions', (_req, res) => {
|
|
260
|
-
(async () => {
|
|
261
|
-
try {
|
|
262
|
-
const sessions = await config.messageStore.getSessions();
|
|
263
|
-
res.json(sessions);
|
|
264
|
-
}
|
|
265
|
-
catch (error) {
|
|
266
|
-
console.error('Error fetching sessions:', error);
|
|
267
|
-
res.status(500).json({ error: 'Failed to fetch sessions' });
|
|
268
|
-
}
|
|
269
|
-
})().catch((error) => {
|
|
270
|
-
console.error('Unhandled error in /sessions:', error);
|
|
271
|
-
if (!res.headersSent) {
|
|
272
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
// Get streams
|
|
277
|
-
app.get('/streams', (_req, res) => {
|
|
278
|
-
(async () => {
|
|
279
|
-
try {
|
|
280
|
-
const streams = await config.messageStore.getStreams();
|
|
281
|
-
res.json(streams);
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
console.error('Error fetching streams:', error);
|
|
285
|
-
res.status(500).json({ error: 'Failed to fetch streams' });
|
|
286
|
-
}
|
|
287
|
-
})().catch((error) => {
|
|
288
|
-
console.error('Unhandled error in /streams:', error);
|
|
289
|
-
if (!res.headersSent) {
|
|
290
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
});
|
|
294
|
-
// Get messages from specific stream
|
|
295
|
-
app.get('/streams/:streamId', (req, res) => {
|
|
296
|
-
(async () => {
|
|
297
|
-
try {
|
|
298
|
-
const streamId = req.params.streamId;
|
|
299
|
-
const count = req.query.count !== undefined && req.query.count !== null ? parseInt(req.query.count) : 1000;
|
|
300
|
-
const messages = await config.messageStore.getMessages(streamId, undefined, count);
|
|
301
|
-
// Convert BigInt fields to strings for JSON serialization
|
|
302
|
-
const serializedMessages = messages.map((message) => ({
|
|
303
|
-
...message,
|
|
304
|
-
revision: message.revision.toString(),
|
|
305
|
-
position: message.position.toString(),
|
|
306
|
-
}));
|
|
307
|
-
res.json(serializedMessages);
|
|
308
|
-
}
|
|
309
|
-
catch (error) {
|
|
310
|
-
console.error('Error fetching stream messages:', error);
|
|
311
|
-
res.status(500).json({ error: 'Failed to fetch stream messages' });
|
|
312
|
-
}
|
|
313
|
-
})().catch((error) => {
|
|
314
|
-
console.error('Unhandled error in /streams/:streamId:', error);
|
|
315
|
-
if (!res.headersSent) {
|
|
316
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
// Get stats
|
|
321
|
-
app.get('/stats', (_req, res) => {
|
|
322
|
-
(async () => {
|
|
323
|
-
try {
|
|
324
|
-
const stats = await config.messageStore.getStats();
|
|
325
|
-
res.json(stats);
|
|
326
|
-
}
|
|
327
|
-
catch (error) {
|
|
328
|
-
console.error('Error fetching stats:', error);
|
|
329
|
-
res.status(500).json({ error: 'Failed to fetch stats' });
|
|
330
|
-
}
|
|
331
|
-
})().catch((error) => {
|
|
332
|
-
console.error('Unhandled error in /stats:', error);
|
|
333
|
-
if (!res.headersSent) {
|
|
334
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
});
|
|
338
|
-
// Command endpoint
|
|
339
|
-
app.post('/command', (req, res) => {
|
|
340
|
-
(async () => {
|
|
341
|
-
try {
|
|
342
|
-
const command = req.body;
|
|
343
|
-
debugHttp('Received command:', command.type);
|
|
344
|
-
debugHttp('Command data:', command.data);
|
|
345
|
-
// Validate command structure
|
|
346
|
-
const structureError = validateCommandStructure(command);
|
|
347
|
-
if (structureError !== null && structureError !== '') {
|
|
348
|
-
return res.status(400).json({
|
|
349
|
-
status: 'nack',
|
|
350
|
-
error: structureError,
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
// Add missing IDs
|
|
354
|
-
const cmdWithId = addMissingIds(command);
|
|
355
|
-
// Check if command handler exists
|
|
356
|
-
const handlerError = validateCommandHandler(cmdWithId.type, config.commandHandlerNames);
|
|
357
|
-
if (handlerError !== null && handlerError !== '') {
|
|
358
|
-
return res.status(404).json({
|
|
359
|
-
status: 'nack',
|
|
360
|
-
error: handlerError,
|
|
361
|
-
availableCommands: config.commandHandlerNames,
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
// Store command in message store first
|
|
365
|
-
await config.onCommandReceived(cmdWithId);
|
|
366
|
-
// Process command asynchronously
|
|
367
|
-
await processCommand(messageBus, cmdWithId, config);
|
|
368
|
-
// Return acknowledgment immediately
|
|
369
|
-
res.json({
|
|
370
|
-
status: 'ack',
|
|
371
|
-
commandId: cmdWithId.requestId ?? 'unknown',
|
|
372
|
-
timestamp: new Date().toISOString(),
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
catch (error) {
|
|
376
|
-
debugHttp('Error processing command:', error);
|
|
377
|
-
res.status(400).json({
|
|
378
|
-
status: 'nack',
|
|
379
|
-
error: error instanceof Error ? error.message : 'Failed to process command',
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
})().catch((err) => {
|
|
383
|
-
debugHttp('Unhandled error in command handler:', err);
|
|
384
|
-
if (!res.headersSent) {
|
|
385
|
-
res.status(500).json({
|
|
386
|
-
status: 'nack',
|
|
387
|
-
error: 'Internal server error',
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
});
|
|
392
|
-
debugHttp('HTTP routes configured');
|
|
393
|
-
}
|
|
394
|
-
//# sourceMappingURL=http-routes.js.map
|