@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.
Files changed (134) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/src/index.js +1 -1
  3. package/dist/src/index.js.map +1 -1
  4. package/dist/src/server.d.ts +1 -2
  5. package/dist/src/server.d.ts.map +1 -1
  6. package/dist/src/server.js +7 -18
  7. package/dist/src/server.js.map +1 -1
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/package.json +4 -4
  10. package/dist/src/dsl/index.d.ts +0 -71
  11. package/dist/src/dsl/index.d.ts.map +0 -1
  12. package/dist/src/dsl/index.js +0 -504
  13. package/dist/src/dsl/index.js.map +0 -1
  14. package/dist/src/dsl/types.d.ts +0 -39
  15. package/dist/src/dsl/types.d.ts.map +0 -1
  16. package/dist/src/dsl/types.js +0 -2
  17. package/dist/src/dsl/types.js.map +0 -1
  18. package/dist/src/dsl-exports.d.ts +0 -5
  19. package/dist/src/dsl-exports.d.ts.map +0 -1
  20. package/dist/src/dsl-exports.js +0 -4
  21. package/dist/src/dsl-exports.js.map +0 -1
  22. package/dist/src/plugin-loader.d.ts +0 -84
  23. package/dist/src/plugin-loader.d.ts.map +0 -1
  24. package/dist/src/plugin-loader.js +0 -788
  25. package/dist/src/plugin-loader.js.map +0 -1
  26. package/dist/src/server/command-metadata-service.d.ts +0 -27
  27. package/dist/src/server/command-metadata-service.d.ts.map +0 -1
  28. package/dist/src/server/command-metadata-service.js +0 -69
  29. package/dist/src/server/command-metadata-service.js.map +0 -1
  30. package/dist/src/server/command-registry.d.ts +0 -21
  31. package/dist/src/server/command-registry.d.ts.map +0 -1
  32. package/dist/src/server/command-registry.js +0 -58
  33. package/dist/src/server/command-registry.js.map +0 -1
  34. package/dist/src/server/config-loader.d.ts +0 -16
  35. package/dist/src/server/config-loader.d.ts.map +0 -1
  36. package/dist/src/server/config-loader.js +0 -106
  37. package/dist/src/server/config-loader.js.map +0 -1
  38. package/dist/src/server/event-processor.d.ts +0 -45
  39. package/dist/src/server/event-processor.d.ts.map +0 -1
  40. package/dist/src/server/event-processor.js +0 -287
  41. package/dist/src/server/event-processor.js.map +0 -1
  42. package/dist/src/server/file-syncer/crypto/jwe-encryptor.d.ts +0 -15
  43. package/dist/src/server/file-syncer/crypto/jwe-encryptor.d.ts.map +0 -1
  44. package/dist/src/server/file-syncer/crypto/jwe-encryptor.js +0 -72
  45. package/dist/src/server/file-syncer/crypto/jwe-encryptor.js.map +0 -1
  46. package/dist/src/server/file-syncer/crypto/provider-resolver.d.ts +0 -24
  47. package/dist/src/server/file-syncer/crypto/provider-resolver.d.ts.map +0 -1
  48. package/dist/src/server/file-syncer/crypto/provider-resolver.js +0 -71
  49. package/dist/src/server/file-syncer/crypto/provider-resolver.js.map +0 -1
  50. package/dist/src/server/file-syncer/discovery/bareImports.d.ts +0 -3
  51. package/dist/src/server/file-syncer/discovery/bareImports.d.ts.map +0 -1
  52. package/dist/src/server/file-syncer/discovery/bareImports.js +0 -36
  53. package/dist/src/server/file-syncer/discovery/bareImports.js.map +0 -1
  54. package/dist/src/server/file-syncer/discovery/dts.d.ts +0 -11
  55. package/dist/src/server/file-syncer/discovery/dts.d.ts.map +0 -1
  56. package/dist/src/server/file-syncer/discovery/dts.js +0 -108
  57. package/dist/src/server/file-syncer/discovery/dts.js.map +0 -1
  58. package/dist/src/server/file-syncer/index.d.ts +0 -22
  59. package/dist/src/server/file-syncer/index.d.ts.map +0 -1
  60. package/dist/src/server/file-syncer/index.js +0 -378
  61. package/dist/src/server/file-syncer/index.js.map +0 -1
  62. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts +0 -7
  63. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts.map +0 -1
  64. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js +0 -103
  65. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js.map +0 -1
  66. package/dist/src/server/file-syncer/types/wire.d.ts +0 -14
  67. package/dist/src/server/file-syncer/types/wire.d.ts.map +0 -1
  68. package/dist/src/server/file-syncer/types/wire.js +0 -2
  69. package/dist/src/server/file-syncer/types/wire.js.map +0 -1
  70. package/dist/src/server/file-syncer/utils/hash.d.ts +0 -5
  71. package/dist/src/server/file-syncer/utils/hash.d.ts.map +0 -1
  72. package/dist/src/server/file-syncer/utils/hash.js +0 -20
  73. package/dist/src/server/file-syncer/utils/hash.js.map +0 -1
  74. package/dist/src/server/file-syncer/utils/path.d.ts +0 -15
  75. package/dist/src/server/file-syncer/utils/path.d.ts.map +0 -1
  76. package/dist/src/server/file-syncer/utils/path.js +0 -109
  77. package/dist/src/server/file-syncer/utils/path.js.map +0 -1
  78. package/dist/src/server/http-routes.d.ts +0 -30
  79. package/dist/src/server/http-routes.d.ts.map +0 -1
  80. package/dist/src/server/http-routes.js +0 -394
  81. package/dist/src/server/http-routes.js.map +0 -1
  82. package/dist/src/server/sandbox-landing-page.html +0 -367
  83. package/dist/src/server/server.d.ts +0 -106
  84. package/dist/src/server/server.d.ts.map +0 -1
  85. package/dist/src/server/server.js +0 -255
  86. package/dist/src/server/server.js.map +0 -1
  87. package/dist/src/server/services/child-process-manager.d.ts +0 -27
  88. package/dist/src/server/services/child-process-manager.d.ts.map +0 -1
  89. package/dist/src/server/services/child-process-manager.js +0 -126
  90. package/dist/src/server/services/child-process-manager.js.map +0 -1
  91. package/dist/src/server/services/index.d.ts +0 -3
  92. package/dist/src/server/services/index.d.ts.map +0 -1
  93. package/dist/src/server/services/index.js +0 -2
  94. package/dist/src/server/services/index.js.map +0 -1
  95. package/dist/src/server/services/interface.d.ts +0 -6
  96. package/dist/src/server/services/interface.d.ts.map +0 -1
  97. package/dist/src/server/services/interface.js +0 -2
  98. package/dist/src/server/services/interface.js.map +0 -1
  99. package/dist/src/server/settled-tracker.d.ts +0 -29
  100. package/dist/src/server/settled-tracker.d.ts.map +0 -1
  101. package/dist/src/server/settled-tracker.js +0 -203
  102. package/dist/src/server/settled-tracker.js.map +0 -1
  103. package/dist/src/server/state-manager.d.ts +0 -24
  104. package/dist/src/server/state-manager.d.ts.map +0 -1
  105. package/dist/src/server/state-manager.js +0 -56
  106. package/dist/src/server/state-manager.js.map +0 -1
  107. package/dist/src/server/websocket-handler.d.ts +0 -5
  108. package/dist/src/server/websocket-handler.d.ts.map +0 -1
  109. package/dist/src/server/websocket-handler.js +0 -40
  110. package/dist/src/server/websocket-handler.js.map +0 -1
  111. package/dist/src/utils/analytics.d.ts +0 -21
  112. package/dist/src/utils/analytics.d.ts.map +0 -1
  113. package/dist/src/utils/analytics.js +0 -41
  114. package/dist/src/utils/analytics.js.map +0 -1
  115. package/dist/src/utils/config.d.ts +0 -11
  116. package/dist/src/utils/config.d.ts.map +0 -1
  117. package/dist/src/utils/config.js +0 -50
  118. package/dist/src/utils/config.js.map +0 -1
  119. package/dist/src/utils/correlation-id.d.ts +0 -3
  120. package/dist/src/utils/correlation-id.d.ts.map +0 -1
  121. package/dist/src/utils/correlation-id.js +0 -7
  122. package/dist/src/utils/correlation-id.js.map +0 -1
  123. package/dist/src/utils/errors.d.ts +0 -22
  124. package/dist/src/utils/errors.d.ts.map +0 -1
  125. package/dist/src/utils/errors.js +0 -50
  126. package/dist/src/utils/errors.js.map +0 -1
  127. package/dist/src/utils/get-package-version.d.ts +0 -7
  128. package/dist/src/utils/get-package-version.d.ts.map +0 -1
  129. package/dist/src/utils/get-package-version.js +0 -31
  130. package/dist/src/utils/get-package-version.js.map +0 -1
  131. package/dist/src/utils/terminal.d.ts +0 -13
  132. package/dist/src/utils/terminal.d.ts.map +0 -1
  133. package/dist/src/utils/terminal.js +0 -85
  134. 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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wire.js.map
@@ -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