@specverse/engines 6.21.4 → 6.27.10

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 (59) hide show
  1. package/dist/ai/analyse-runner.d.ts +16 -0
  2. package/dist/ai/analyse-runner.d.ts.map +1 -1
  3. package/dist/ai/analyse-runner.js +417 -53
  4. package/dist/ai/analyse-runner.js.map +1 -1
  5. package/dist/ai/microcall-orchestrator.d.ts +187 -0
  6. package/dist/ai/microcall-orchestrator.d.ts.map +1 -0
  7. package/dist/ai/microcall-orchestrator.js +673 -0
  8. package/dist/ai/microcall-orchestrator.js.map +1 -0
  9. package/dist/ai/skeleton-emitter.d.ts +94 -0
  10. package/dist/ai/skeleton-emitter.d.ts.map +1 -0
  11. package/dist/ai/skeleton-emitter.js +752 -0
  12. package/dist/ai/skeleton-emitter.js.map +1 -0
  13. package/dist/analyse-prepass/adapters/express-routes.d.ts +71 -0
  14. package/dist/analyse-prepass/adapters/express-routes.d.ts.map +1 -0
  15. package/dist/analyse-prepass/adapters/express-routes.js +329 -0
  16. package/dist/analyse-prepass/adapters/express-routes.js.map +1 -0
  17. package/dist/analyse-prepass/adapters/typescript-interfaces.d.ts +91 -0
  18. package/dist/analyse-prepass/adapters/typescript-interfaces.d.ts.map +1 -0
  19. package/dist/analyse-prepass/adapters/typescript-interfaces.js +411 -0
  20. package/dist/analyse-prepass/adapters/typescript-interfaces.js.map +1 -0
  21. package/dist/analyse-prepass/backends/gitnexus.d.ts.map +1 -1
  22. package/dist/analyse-prepass/backends/gitnexus.js +36 -8
  23. package/dist/analyse-prepass/backends/gitnexus.js.map +1 -1
  24. package/dist/analyse-prepass/backends/index.d.ts.map +1 -1
  25. package/dist/analyse-prepass/backends/index.js +3 -5
  26. package/dist/analyse-prepass/backends/index.js.map +1 -1
  27. package/dist/analyse-prepass/behavior-step-classifier.d.ts +3 -0
  28. package/dist/analyse-prepass/behavior-step-classifier.d.ts.map +1 -1
  29. package/dist/analyse-prepass/behavior-step-classifier.js +1 -0
  30. package/dist/analyse-prepass/behavior-step-classifier.js.map +1 -1
  31. package/dist/analyse-prepass/index.d.ts +69 -0
  32. package/dist/analyse-prepass/index.d.ts.map +1 -1
  33. package/dist/analyse-prepass/index.js +319 -37
  34. package/dist/analyse-prepass/index.js.map +1 -1
  35. package/dist/analyse-prepass/method-body-walker.d.ts +4 -0
  36. package/dist/analyse-prepass/method-body-walker.d.ts.map +1 -1
  37. package/dist/analyse-prepass/method-body-walker.js +14 -0
  38. package/dist/analyse-prepass/method-body-walker.js.map +1 -1
  39. package/dist/audit/realize-recorder.d.ts +164 -0
  40. package/dist/audit/realize-recorder.d.ts.map +1 -0
  41. package/dist/audit/realize-recorder.js +153 -0
  42. package/dist/audit/realize-recorder.js.map +1 -0
  43. package/dist/audit/verify-checks.d.ts +32 -0
  44. package/dist/audit/verify-checks.d.ts.map +1 -0
  45. package/dist/audit/verify-checks.js +202 -0
  46. package/dist/audit/verify-checks.js.map +1 -0
  47. package/dist/audit/verify-recorder.d.ts +84 -0
  48. package/dist/audit/verify-recorder.d.ts.map +1 -0
  49. package/dist/audit/verify-recorder.js +90 -0
  50. package/dist/audit/verify-recorder.js.map +1 -0
  51. package/dist/inference/core/specly-converter.d.ts.map +1 -1
  52. package/dist/inference/core/specly-converter.js +67 -36
  53. package/dist/inference/core/specly-converter.js.map +1 -1
  54. package/dist/libs/instance-factories/services/templates/_shared/step-matching.js +39 -15
  55. package/dist/realize/index.d.ts.map +1 -1
  56. package/dist/realize/index.js +63 -0
  57. package/dist/realize/index.js.map +1 -1
  58. package/libs/instance-factories/services/templates/_shared/step-matching.ts +61 -16
  59. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton-emitter.js","sourceRoot":"","sources":["../../src/ai/skeleton-emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `express-routes` adapter — surfaces HTTP routes from Express-style
3
+ * router files as synthetic *Controller classes.
4
+ *
5
+ * Why this exists: idle-meta-style codebases keep their HTTP API in
6
+ * `routes/<resource>.ts` modules using `const router = Router()` +
7
+ * `router.<verb>(path, handler)` declarations. There are NO class-based
8
+ * `*Controller`s — but the API surface is real and architecturally
9
+ * meaningful. Without this adapter the spec loses the entire
10
+ * controllers: layer (every action collapses into services or
11
+ * Unassigned).
12
+ *
13
+ * Each route file becomes one synthetic controller in the prepass
14
+ * output. Each `router.<verb>(path, handler)` becomes one method on
15
+ * that controller. The handler's body is extracted verbatim so the
16
+ * existing candidate-step classifier can run on it unmodified.
17
+ *
18
+ * Detection criteria (must match BOTH):
19
+ * - File contains `Router()` or `import { Router }` from express
20
+ * - File has at least one `router.<verb>(...)` call where verb is
21
+ * get|post|put|patch|delete|all|head|options
22
+ *
23
+ * Naming derivation:
24
+ * - filename `auth.ts` → `AuthController`
25
+ * - filename `games.v3.ts` → `GamesV3Controller`
26
+ * - filename `user-profile.ts` → `UserProfileController`
27
+ *
28
+ * Action-name derivation (per handler, in priority order):
29
+ * 1. Named handler reference: `router.post('/x', registerHandler)` →
30
+ * strip `Handler` suffix → `register`
31
+ * 2. Single-word path with no parameters: `router.post('/login', ...)` →
32
+ * `login`
33
+ * 3. Verb + path PascalCase: `router.get('/users/:id', ...)` → `getUsers`
34
+ * 4. Fallback: `<verb><N>` where N is the handler ordinal
35
+ */
36
+ export interface ExpressRouteHandler {
37
+ /** Action name (suitable as a yaml key — lowercase first char, [a-z][a-zA-Z0-9_]*). */
38
+ methodName: string;
39
+ /** Whether the handler is declared async. */
40
+ isAsync: boolean;
41
+ /** The handler function body (between matching braces, no wrapping). */
42
+ body: string;
43
+ /** Source line range of the FULL handler declaration (start of router.x() call to closing brace). */
44
+ sourceLineRange: [number, number];
45
+ /** Original HTTP verb, lowercase. */
46
+ httpVerb: 'get' | 'post' | 'put' | 'patch' | 'delete' | 'all' | 'head' | 'options';
47
+ /** Original path. */
48
+ routePath: string;
49
+ }
50
+ export interface ExpressRouteFile {
51
+ filePath: string;
52
+ /** Synthesized controller name (PascalCase + Controller suffix). */
53
+ controllerName: string;
54
+ handlers: ExpressRouteHandler[];
55
+ }
56
+ /** True when the source looks like an Express router file. */
57
+ export declare function isExpressRouterFile(source: string): boolean;
58
+ /**
59
+ * Scan an Express router file and extract every `router.<verb>(path, handler)` call.
60
+ * Returns one `ExpressRouteHandler` per call — handler body included verbatim.
61
+ */
62
+ export declare function parseExpressRoutes(source: string): ExpressRouteHandler[];
63
+ /**
64
+ * Wrap a list of handlers in a synthetic class body. The output is
65
+ * suitable for `walkMethodBodies` / `extractCandidateSteps` to consume.
66
+ * Each handler becomes a `<methodName>(req, res) { <body> }` member.
67
+ */
68
+ export declare function synthesizeControllerClass(controllerName: string, handlers: ExpressRouteHandler[]): string;
69
+ /** Derive a controller name from a route file's basename. */
70
+ export declare function deriveControllerName(filePath: string): string;
71
+ //# sourceMappingURL=express-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-routes.d.ts","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/express-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,qGAAqG;IACrG,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,qCAAqC;IACrC,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IACnF,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK3D;AAoID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAuFxE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,MAAM,CAcR;AAED,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI7D"}
@@ -0,0 +1,329 @@
1
+ /**
2
+ * `express-routes` adapter — surfaces HTTP routes from Express-style
3
+ * router files as synthetic *Controller classes.
4
+ *
5
+ * Why this exists: idle-meta-style codebases keep their HTTP API in
6
+ * `routes/<resource>.ts` modules using `const router = Router()` +
7
+ * `router.<verb>(path, handler)` declarations. There are NO class-based
8
+ * `*Controller`s — but the API surface is real and architecturally
9
+ * meaningful. Without this adapter the spec loses the entire
10
+ * controllers: layer (every action collapses into services or
11
+ * Unassigned).
12
+ *
13
+ * Each route file becomes one synthetic controller in the prepass
14
+ * output. Each `router.<verb>(path, handler)` becomes one method on
15
+ * that controller. The handler's body is extracted verbatim so the
16
+ * existing candidate-step classifier can run on it unmodified.
17
+ *
18
+ * Detection criteria (must match BOTH):
19
+ * - File contains `Router()` or `import { Router }` from express
20
+ * - File has at least one `router.<verb>(...)` call where verb is
21
+ * get|post|put|patch|delete|all|head|options
22
+ *
23
+ * Naming derivation:
24
+ * - filename `auth.ts` → `AuthController`
25
+ * - filename `games.v3.ts` → `GamesV3Controller`
26
+ * - filename `user-profile.ts` → `UserProfileController`
27
+ *
28
+ * Action-name derivation (per handler, in priority order):
29
+ * 1. Named handler reference: `router.post('/x', registerHandler)` →
30
+ * strip `Handler` suffix → `register`
31
+ * 2. Single-word path with no parameters: `router.post('/login', ...)` →
32
+ * `login`
33
+ * 3. Verb + path PascalCase: `router.get('/users/:id', ...)` → `getUsers`
34
+ * 4. Fallback: `<verb><N>` where N is the handler ordinal
35
+ */
36
+ /** True when the source looks like an Express router file. */
37
+ export function isExpressRouterFile(source) {
38
+ // Must reference Router (named import or call) AND have ≥1 router.<verb>(...) call.
39
+ const hasRouter = /\bRouter\s*\(\s*\)/.test(source) || /from\s+['"]express['"]/.test(source);
40
+ if (!hasRouter)
41
+ return false;
42
+ return /\b\w+\.(?:get|post|put|patch|delete|all|head|options)\s*\(/.test(source);
43
+ }
44
+ /** PascalCase a filename basename, stripping the extension first. */
45
+ function fileBasenameToPascalCase(basename) {
46
+ const noExt = basename.replace(/\.(ts|js|tsx|jsx|mjs|cjs)$/, '');
47
+ return noExt
48
+ .split(/[-_./]+/)
49
+ .filter((p) => p.length > 0)
50
+ .map((p) => p.charAt(0).toUpperCase() + p.slice(1))
51
+ .join('');
52
+ }
53
+ /** PascalCase a single segment of a route path. */
54
+ function segmentToPascalCase(seg) {
55
+ if (!seg)
56
+ return '';
57
+ return seg
58
+ .split(/[-_]/)
59
+ .map((p) => p.charAt(0).toUpperCase() + p.slice(1))
60
+ .join('');
61
+ }
62
+ /**
63
+ * Find the matching close brace for an open brace at `openIdx`. Naive
64
+ * brace-balancer — sufficient for handler bodies (no string-literal
65
+ * backslash escapes to worry about that contain unbalanced braces in
66
+ * practice). Returns -1 if unmatched.
67
+ */
68
+ function findMatchingBrace(source, openIdx) {
69
+ let depth = 1;
70
+ let inString = null;
71
+ let inLineComment = false;
72
+ let inBlockComment = false;
73
+ for (let i = openIdx + 1; i < source.length; i++) {
74
+ const c = source[i];
75
+ const n = source[i + 1];
76
+ if (inLineComment) {
77
+ if (c === '\n')
78
+ inLineComment = false;
79
+ continue;
80
+ }
81
+ if (inBlockComment) {
82
+ if (c === '*' && n === '/') {
83
+ inBlockComment = false;
84
+ i++;
85
+ }
86
+ continue;
87
+ }
88
+ if (inString) {
89
+ if (c === '\\') {
90
+ i++;
91
+ continue;
92
+ }
93
+ if (c === inString)
94
+ inString = null;
95
+ continue;
96
+ }
97
+ if (c === '/' && n === '/') {
98
+ inLineComment = true;
99
+ i++;
100
+ continue;
101
+ }
102
+ if (c === '/' && n === '*') {
103
+ inBlockComment = true;
104
+ i++;
105
+ continue;
106
+ }
107
+ if (c === '"' || c === "'" || c === '`') {
108
+ inString = c;
109
+ continue;
110
+ }
111
+ if (c === '{')
112
+ depth++;
113
+ else if (c === '}') {
114
+ depth--;
115
+ if (depth === 0)
116
+ return i;
117
+ }
118
+ }
119
+ return -1;
120
+ }
121
+ /** Find the matching close paren for an open paren at `openIdx`. */
122
+ function findMatchingParen(source, openIdx) {
123
+ let depth = 1;
124
+ let inString = null;
125
+ for (let i = openIdx + 1; i < source.length; i++) {
126
+ const c = source[i];
127
+ if (inString) {
128
+ if (c === '\\') {
129
+ i++;
130
+ continue;
131
+ }
132
+ if (c === inString)
133
+ inString = null;
134
+ continue;
135
+ }
136
+ if (c === '"' || c === "'" || c === '`') {
137
+ inString = c;
138
+ continue;
139
+ }
140
+ if (c === '(')
141
+ depth++;
142
+ else if (c === ')') {
143
+ depth--;
144
+ if (depth === 0)
145
+ return i;
146
+ }
147
+ else if (c === '{') {
148
+ // Skip object-literal / arrow-body braces.
149
+ const close = findMatchingBrace(source, i);
150
+ if (close < 0)
151
+ return -1;
152
+ i = close;
153
+ }
154
+ }
155
+ return -1;
156
+ }
157
+ /**
158
+ * Derive an action method name from the route definition + handler.
159
+ * Resolution order (per file-header doc).
160
+ */
161
+ function deriveMethodName(verb, routePath, handlerExpr, ordinal) {
162
+ // 1. Named handler reference (NOT an inline arrow/function expression).
163
+ const nameRefMatch = handlerExpr.match(/^([a-zA-Z_$][\w$]*)\s*$/);
164
+ if (nameRefMatch) {
165
+ const name = nameRefMatch[1].replace(/Handler$/, '');
166
+ if (name && /^[a-z]/.test(name))
167
+ return name;
168
+ }
169
+ // 2. Single segment, no params, lowercase-friendly.
170
+ const cleanedPath = routePath.replace(/^\//, '').replace(/\/$/, '');
171
+ if (cleanedPath && !/[:/]/.test(cleanedPath)) {
172
+ return cleanedPath.replace(/[-_.]/g, '').toLowerCase();
173
+ }
174
+ // 3. Verb + path PascalCase. Skip params (`:id`).
175
+ const segments = cleanedPath
176
+ .split('/')
177
+ .filter((s) => s.length > 0 && !s.startsWith(':'));
178
+ if (segments.length > 0) {
179
+ const path = segments.map(segmentToPascalCase).join('');
180
+ return verb + path;
181
+ }
182
+ // 4. Fallback.
183
+ return `${verb}${ordinal}`;
184
+ }
185
+ /** Given an ordered list of methodNames, append _N to disambiguate duplicates. */
186
+ function deduplicateMethodNames(handlers) {
187
+ const seen = new Map();
188
+ for (const h of handlers) {
189
+ const count = seen.get(h.methodName) ?? 0;
190
+ if (count > 0) {
191
+ h.methodName = `${h.methodName}_${count + 1}`;
192
+ }
193
+ seen.set(h.methodName, count + 1);
194
+ }
195
+ }
196
+ /**
197
+ * Scan an Express router file and extract every `router.<verb>(path, handler)` call.
198
+ * Returns one `ExpressRouteHandler` per call — handler body included verbatim.
199
+ */
200
+ export function parseExpressRoutes(source) {
201
+ const out = [];
202
+ // Match `<ident>.<verb>(` — capture the verb. The leading identifier
203
+ // is usually `router` but not always (some codebases use `app.get`,
204
+ // `route.post`, etc.); accept any identifier the source uses.
205
+ const re = /\b\w+\.(get|post|put|patch|delete|all|head|options)\s*\(/g;
206
+ let m;
207
+ let ordinal = 0;
208
+ while ((m = re.exec(source)) !== null) {
209
+ const verb = m[1];
210
+ const argsOpenIdx = m.index + m[0].length - 1; // position of `(`
211
+ const argsCloseIdx = findMatchingParen(source, argsOpenIdx);
212
+ if (argsCloseIdx < 0)
213
+ continue;
214
+ const argsStr = source.slice(argsOpenIdx + 1, argsCloseIdx);
215
+ // Find the path string (first quoted argument).
216
+ const pathMatch = argsStr.match(/^\s*(['"`])([^'"`]+)\1/);
217
+ if (!pathMatch)
218
+ continue;
219
+ const routePath = pathMatch[2];
220
+ // Extract the handler arg — skip the path + any middleware args, take the LAST argument
221
+ // (the one whose body we want). Handlers can be:
222
+ // (a) inline arrow: `async (req, res) => { ... }` or `(req, res) => expr`
223
+ // (b) named: `someHandler` or `asyncHandler(myFn)`
224
+ // For our purpose, we want the BODY when (a), the NAME when (b).
225
+ // Walk the args from start, skipping until we find the last comma at depth 0.
226
+ let lastTopComma = -1;
227
+ let depth = 0;
228
+ let strChar = null;
229
+ for (let i = 0; i < argsStr.length; i++) {
230
+ const c = argsStr[i];
231
+ if (strChar) {
232
+ if (c === '\\') {
233
+ i++;
234
+ continue;
235
+ }
236
+ if (c === strChar)
237
+ strChar = null;
238
+ continue;
239
+ }
240
+ if (c === '"' || c === "'" || c === '`') {
241
+ strChar = c;
242
+ continue;
243
+ }
244
+ if (c === '(' || c === '[' || c === '{')
245
+ depth++;
246
+ else if (c === ')' || c === ']' || c === '}')
247
+ depth--;
248
+ else if (c === ',' && depth === 0)
249
+ lastTopComma = i;
250
+ }
251
+ if (lastTopComma < 0)
252
+ continue;
253
+ const handlerExpr = argsStr.slice(lastTopComma + 1).trim();
254
+ let body = '';
255
+ let isAsync = false;
256
+ // (a) Inline arrow.
257
+ const arrowMatch = handlerExpr.match(/^(async\s+)?\(([^)]*)\)\s*=>\s*\{/);
258
+ if (arrowMatch) {
259
+ isAsync = !!arrowMatch[1];
260
+ // Find the opening brace of the arrow body in the ORIGINAL source.
261
+ // The handlerExpr starts at `argsOpenIdx + 1 + lastTopComma + 1`,
262
+ // possibly with leading whitespace. Locate the first `{` after that.
263
+ const handlerStartInSource = argsOpenIdx + 1 + lastTopComma + 1;
264
+ const braceIdx = source.indexOf('{', handlerStartInSource);
265
+ if (braceIdx > 0 && braceIdx < argsCloseIdx) {
266
+ const closeIdx = findMatchingBrace(source, braceIdx);
267
+ if (closeIdx > 0)
268
+ body = source.slice(braceIdx + 1, closeIdx);
269
+ }
270
+ }
271
+ else {
272
+ // (b) Named handler — wrapped or bare. We can't see the body, but
273
+ // extractCandidateSteps wants something to walk. Synthesize a
274
+ // pseudo-body with a single call so it produces a `call` step.
275
+ // The microcall LLM gets the original source location anyway.
276
+ const wrapperMatch = handlerExpr.match(/^([a-zA-Z_$][\w$]*)\s*\(\s*([a-zA-Z_$][\w$]*)\s*\)/);
277
+ const handlerName = wrapperMatch?.[2] ?? handlerExpr.match(/^[a-zA-Z_$][\w$]*/)?.[0];
278
+ body = handlerName ? `${handlerName}(req, res);` : '';
279
+ // We don't know if the named function is async without more
280
+ // analysis; assume false — the microcall LLM will see the actual
281
+ // declaration when authoring the body.
282
+ }
283
+ // Compute source line range — start at the line of `router.<verb>(`,
284
+ // end at the line of the closing `)`.
285
+ const startOffset = m.index;
286
+ const endOffset = argsCloseIdx;
287
+ const startLine = source.slice(0, startOffset).split('\n').length;
288
+ const endLine = source.slice(0, endOffset + 1).split('\n').length;
289
+ const methodName = deriveMethodName(verb, routePath, handlerExpr, ordinal);
290
+ out.push({
291
+ methodName,
292
+ isAsync,
293
+ body,
294
+ sourceLineRange: [startLine, endLine],
295
+ httpVerb: verb,
296
+ routePath,
297
+ });
298
+ ordinal++;
299
+ }
300
+ deduplicateMethodNames(out);
301
+ return out;
302
+ }
303
+ /**
304
+ * Wrap a list of handlers in a synthetic class body. The output is
305
+ * suitable for `walkMethodBodies` / `extractCandidateSteps` to consume.
306
+ * Each handler becomes a `<methodName>(req, res) { <body> }` member.
307
+ */
308
+ export function synthesizeControllerClass(controllerName, handlers) {
309
+ const lines = [];
310
+ lines.push(`class ${controllerName} {`);
311
+ for (const h of handlers) {
312
+ const asyncWord = h.isAsync ? 'async ' : '';
313
+ lines.push(` ${asyncWord}${h.methodName}(req, res) {`);
314
+ // Preserve body indentation reasonably; avoid empty lines breaking
315
+ // the regex-based walker.
316
+ const bodyLines = h.body.split('\n').map((l) => ' ' + l);
317
+ lines.push(...bodyLines);
318
+ lines.push(' }');
319
+ }
320
+ lines.push('}');
321
+ return lines.join('\n');
322
+ }
323
+ /** Derive a controller name from a route file's basename. */
324
+ export function deriveControllerName(filePath) {
325
+ const basename = filePath.split('/').pop() ?? filePath;
326
+ const pascal = fileBasenameToPascalCase(basename);
327
+ return /Controller$/.test(pascal) ? pascal : `${pascal}Controller`;
328
+ }
329
+ //# sourceMappingURL=express-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-routes.js","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/express-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `typescript-interfaces` adapter — entity-shape extraction from raw
3
+ * TypeScript class / interface / type declarations. Designed for
4
+ * adapter-free codebases (no decorators, no schema.prisma, no JPA
5
+ * annotations) where the only source signal is the declared types
6
+ * themselves.
7
+ *
8
+ * Phase C of the 2026-05-04-ANALYSE-VIA-FAITHFUL-SKELETON-AND-MICROCALLS
9
+ * plan. Closes the empirical gap surfaced when comparing the giant-call
10
+ * idle-meta output (20 LLM-fabricated models, faithfully translated
11
+ * from TS interfaces) vs the microcall idle-meta output (0 models,
12
+ * because no adapter detected entities).
13
+ *
14
+ * Design principle: faithful mirror of source, no fabrication. Promotes
15
+ * an interface/class to an entity ONLY when its shape suggests
16
+ * persistence. Non-entity types (DTOs, request/response shapes, internal
17
+ * computation aids) are recorded separately in `declaredTypes` but NOT
18
+ * promoted to `facts.entities`. The future `types:` schema slot is
19
+ * deferred to TODO #49.
20
+ *
21
+ * Heuristics (configurable):
22
+ * - liberal (default): has an `id` field of any type → entity
23
+ * - conservative: has `id` AND at least one of {createdAt, updatedAt, _id} → entity
24
+ *
25
+ * Relationships are inferred by cross-referencing field types:
26
+ * - `field: T[]` where T is a detected entity → hasMany
27
+ * - `field: T` where T is a detected entity → belongsTo (or hasOne)
28
+ * - bidirectional pairs: hasMany + belongsTo when both sides exist
29
+ *
30
+ * Lifecycles are NOT inferred here — that requires method-body analysis
31
+ * (the existing method-body-walker already covers that path via the
32
+ * lifecycleField hint, separate from this walker).
33
+ */
34
+ import type { StructuralPrepass } from '../interface.js';
35
+ export interface TypeScriptInterfaceField {
36
+ name: string;
37
+ declaredType: string;
38
+ isOptional: boolean;
39
+ isArray: boolean;
40
+ }
41
+ export interface TypeScriptDeclaredType {
42
+ name: string;
43
+ filePath: string;
44
+ startLine: number;
45
+ endLine: number;
46
+ /** class | interface | type-alias */
47
+ kind: 'class' | 'interface' | 'type';
48
+ fields: TypeScriptInterfaceField[];
49
+ /** Classified shape: persistent entity vs DTO vs utility. */
50
+ shape: 'entity' | 'dto-shape' | 'utility' | 'unknown';
51
+ }
52
+ export interface TypeScriptInterfaceFacts {
53
+ /** Types that look like persistent entities (per the heuristic). */
54
+ entities: TypeScriptDeclaredType[];
55
+ /** Inferred relationships between entities via field cross-reference. */
56
+ relationships: Array<{
57
+ from: string;
58
+ to: string;
59
+ type: 'hasMany' | 'hasOne' | 'belongsTo';
60
+ fieldName: string;
61
+ }>;
62
+ /** Inferred lifecycles from literal-union type aliases (engines 6.27.6+).
63
+ * Symmetry with the typescript-decorators adapter, which derives
64
+ * lifecycles from `@Column({ enum: ... })` shapes. Adapter-free
65
+ * codebases declare states as `type Status = "a" | "b" | "c"` and
66
+ * reference them in entity fields; we surface those as state machines.
67
+ * Transitions intentionally empty here — recovering transitions
68
+ * needs method-body analysis (see method-body-walker for the
69
+ * `this.<field> = <enumMember>` path). */
70
+ lifecycles: Array<{
71
+ model: string;
72
+ field: string;
73
+ states: string[];
74
+ transitions: Array<{
75
+ action: string;
76
+ from: string[];
77
+ to: string;
78
+ }>;
79
+ }>;
80
+ /** Non-entity declared types — DTOs, request/response shapes, etc.
81
+ * Captured for future use (TODO #49 — `types:` schema slot) but NOT
82
+ * promoted to facts.entities. */
83
+ declaredTypes: TypeScriptDeclaredType[];
84
+ }
85
+ export interface TypeScriptInterfaceOptions {
86
+ /** Default 'liberal'. Liberal: has `id` field. Conservative: has `id`
87
+ * AND timestamp field (createdAt | updatedAt | _id). */
88
+ entityShapeHeuristic?: 'liberal' | 'conservative';
89
+ }
90
+ export declare function extractTypeScriptInterfaces(prepass: StructuralPrepass, options?: TypeScriptInterfaceOptions): Promise<TypeScriptInterfaceFacts>;
91
+ //# sourceMappingURL=typescript-interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-interfaces.d.ts","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/typescript-interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;IACrC,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,6DAA6D;IAC7D,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,yEAAyE;IACzE,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH;;;;;;;+CAO2C;IAC3C,UAAU,EAAE,KAAK,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpE,CAAC,CAAC;IACH;;sCAEkC;IAClC,aAAa,EAAE,sBAAsB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,0BAA0B;IACzC;6DACyD;IACzD,oBAAoB,CAAC,EAAE,SAAS,GAAG,cAAc,CAAC;CACnD;AAID,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,wBAAwB,CAAC,CAwGnC"}