@specverse/engines 6.60.1 → 6.65.0
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/dist/ai/analyse-runner.d.ts.map +1 -1
- package/dist/ai/analyse-runner.js +22 -1
- package/dist/ai/analyse-runner.js.map +1 -1
- package/dist/analyse-prepass/adapters/module-functions.d.ts +25 -0
- package/dist/analyse-prepass/adapters/module-functions.d.ts.map +1 -1
- package/dist/analyse-prepass/adapters/module-functions.js +54 -0
- package/dist/analyse-prepass/adapters/module-functions.js.map +1 -1
- package/dist/analyse-prepass/backends/gitnexus.d.ts +28 -0
- package/dist/analyse-prepass/backends/gitnexus.d.ts.map +1 -1
- package/dist/analyse-prepass/backends/gitnexus.js +36 -2
- package/dist/analyse-prepass/backends/gitnexus.js.map +1 -1
- package/dist/analyse-prepass/index.d.ts.map +1 -1
- package/dist/analyse-prepass/index.js +17 -1
- package/dist/analyse-prepass/index.js.map +1 -1
- package/dist/libs/instance-factories/services/templates/_shared/step-matching.js +11 -0
- package/dist/libs/instance-factories/services/templates/mongodb-native/step-conventions.js +39 -19
- package/dist/libs/instance-factories/services/templates/postgres-native/step-conventions.js +35 -18
- package/dist/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.js +7 -3
- package/dist/libs/instance-factories/services/templates/prisma/step-conventions.js +34 -12
- package/dist/libs/instance-factories/services/templates/shared-patterns.js +5 -5
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +62 -2
- package/dist/realize/index.js.map +1 -1
- package/dist/realize/per-action-recovery.d.ts.map +1 -1
- package/dist/realize/per-action-recovery.js +6 -19
- package/dist/realize/per-action-recovery.js.map +1 -1
- package/dist/realize/per-owner-emit.d.ts +40 -0
- package/dist/realize/per-owner-emit.d.ts.map +1 -1
- package/dist/realize/per-owner-emit.js +154 -4
- package/dist/realize/per-owner-emit.js.map +1 -1
- package/dist/realize/per-owner-runner.d.ts.map +1 -1
- package/dist/realize/per-owner-runner.js +15 -28
- package/dist/realize/per-owner-runner.js.map +1 -1
- package/dist/realize/post-emit-verify/feedback-runner.d.ts +2 -1
- package/dist/realize/post-emit-verify/feedback-runner.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/feedback-runner.js +2 -1
- package/dist/realize/post-emit-verify/feedback-runner.js.map +1 -1
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.d.ts +43 -1
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.d.ts.map +1 -1
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.js +129 -4
- package/dist/realize/post-emit-verify/verifiers/stub-completeness.js.map +1 -1
- package/libs/instance-factories/services/templates/_shared/step-matching.ts +43 -0
- package/libs/instance-factories/services/templates/mongodb-native/step-conventions.ts +39 -19
- package/libs/instance-factories/services/templates/postgres-native/step-conventions.ts +35 -18
- package/libs/instance-factories/services/templates/prisma/__tests__/step-conventions-create.test.ts +184 -0
- package/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.ts +16 -3
- package/libs/instance-factories/services/templates/prisma/step-conventions.ts +34 -12
- package/libs/instance-factories/services/templates/shared-patterns.ts +20 -10
- package/package.json +1 -1
- package/libs/instance-factories/services/templates/_shared/step-matching.d.ts +0 -39
- package/libs/instance-factories/services/templates/_shared/step-matching.d.ts.map +0 -1
- package/libs/instance-factories/services/templates/_shared/step-matching.js +0 -90
- package/libs/instance-factories/services/templates/_shared/step-matching.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-runner.js","sourceRoot":"","sources":["../../../src/realize/post-emit-verify/feedback-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuFzD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,CAAC,GAAG,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"feedback-runner.js","sourceRoot":"","sources":["../../../src/realize/post-emit-verify/feedback-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ export declare const STUB_CODES: {
|
|
|
45
45
|
readonly LLM_THROW: "STUB002";
|
|
46
46
|
readonly TRIVIAL_RETURN: "STUB003";
|
|
47
47
|
readonly EMPTY_BODY: "STUB004";
|
|
48
|
+
readonly MISPLACED_BRACE: "STUB005";
|
|
48
49
|
};
|
|
49
50
|
/**
|
|
50
51
|
* Find every top-level `export async function NAME(...): Promise<X> {`
|
|
@@ -63,6 +64,8 @@ interface ExtractedFunction {
|
|
|
63
64
|
declLine: number;
|
|
64
65
|
/** 1-based line number of the first body line (after the opening `{`). */
|
|
65
66
|
bodyStartLine: number;
|
|
67
|
+
/** 1-based line number of the closing `}` that ends the body. */
|
|
68
|
+
endLine: number;
|
|
66
69
|
}
|
|
67
70
|
export declare function extractAsyncFunctions(source: string): ExtractedFunction[];
|
|
68
71
|
/**
|
|
@@ -71,9 +74,48 @@ export declare function extractAsyncFunctions(source: string): ExtractedFunction
|
|
|
71
74
|
*/
|
|
72
75
|
export declare function stripCommentsAndBlanks(body: string): string;
|
|
73
76
|
export interface StubMatch {
|
|
74
|
-
kind: 'gamma-fallback' | 'llm-throw' | 'trivial-return' | 'empty';
|
|
77
|
+
kind: 'gamma-fallback' | 'llm-throw' | 'trivial-return' | 'empty' | 'misplaced-brace';
|
|
75
78
|
code: string;
|
|
79
|
+
/** For 'misplaced-brace': a sample of the orphan code that follows
|
|
80
|
+
* the misplaced `}`. Surfaced to the LLM in the reemit prompt so it
|
|
81
|
+
* knows exactly which lines were displaced. */
|
|
82
|
+
orphanPreview?: string;
|
|
76
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Detect the "misplaced `}`" emission pattern surfaced by marrbox on
|
|
86
|
+
* `GameConditionController.loadGameData` (2026-05-14). When the LLM
|
|
87
|
+
* emits a stray `}` right after the [PRE-BAKED] comment block, the
|
|
88
|
+
* brace-walker (correctly) treats it as the function's end. The
|
|
89
|
+
* function body classifies as `empty`, but the steps that were meant
|
|
90
|
+
* to be inside the body are now orphan top-level code:
|
|
91
|
+
*
|
|
92
|
+
* export async function loadGameData(_input: any): Promise<any> {
|
|
93
|
+
* // [PRE-BAKED] Step 1: ...
|
|
94
|
+
* // TODO: ...
|
|
95
|
+
* } ← misplaced
|
|
96
|
+
* // [WRITE] Step 2: ... ← orphan
|
|
97
|
+
* const v3BaseUrl = ...; ← orphan
|
|
98
|
+
* return { ... }; ← orphan, tsc TS1108
|
|
99
|
+
*
|
|
100
|
+
* The plain STUB004 message ("empty body") gives the LLM no clue why
|
|
101
|
+
* its previous emission was wrong; the reemit typically repeats the
|
|
102
|
+
* same mistake. STUB005's message names the specific shape so the
|
|
103
|
+
* LLM can correct the brace placement.
|
|
104
|
+
*
|
|
105
|
+
* Heuristic: between `fn.endLine + 1` and `nextDeclLine - 1` (or EOF
|
|
106
|
+
* if no next function), strip comments + blanks; if any non-trivial
|
|
107
|
+
* line remains AND we see at least one of:
|
|
108
|
+
* - `// [WRITE]` or `// [PRE-BAKED]` marker (these belong INSIDE
|
|
109
|
+
* function bodies; their presence at top level is diagnostic)
|
|
110
|
+
* - a top-level `return` statement (illegal TS — TS1108)
|
|
111
|
+
* - a top-level `const`/`let`/`var` declaration that isn't followed
|
|
112
|
+
* by `export`/`function` (i.e. not a module-level binding)
|
|
113
|
+
* → it's misplaced-brace orphan code.
|
|
114
|
+
*
|
|
115
|
+
* Returns a preview of the first ~5 orphan lines, or `null` if not
|
|
116
|
+
* misplaced-brace.
|
|
117
|
+
*/
|
|
118
|
+
export declare function detectMisplacedBrace(source: string, fn: ExtractedFunction, nextDeclLine: number | null): string | null;
|
|
77
119
|
/**
|
|
78
120
|
* Classify a function body as a stub (or not). Conservative: requires
|
|
79
121
|
* the body to be a single-statement match to avoid false positives on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub-completeness.d.ts","sourceRoot":"","sources":["../../../../src/realize/post-emit-verify/verifiers/stub-completeness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,aAAa,CAAC;AAErB;;4BAE4B;AAC5B,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"stub-completeness.d.ts","sourceRoot":"","sources":["../../../../src/realize/post-emit-verify/verifiers/stub-completeness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,aAAa,CAAC;AAErB;;4BAE4B;AAC5B,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAQX;;;;;;;;;GASG;AACH,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAwFzE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAaD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,gBAAgB,GAAG,WAAW,GAAG,gBAAgB,GAAG,OAAO,GAAG,iBAAiB,CAAC;IACtF,IAAI,EAAE,MAAM,CAAC;IACb;;oDAEgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,iBAAiB,EACrB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,MAAM,GAAG,IAAI,CA8Df;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAwB3D;AAsDD,eAAO,MAAM,0BAA0B,EAAE,gBAuFxC,CAAC"}
|
|
@@ -46,6 +46,7 @@ export const STUB_CODES = {
|
|
|
46
46
|
LLM_THROW: 'STUB002', // LLM emitted "throw not implemented"
|
|
47
47
|
TRIVIAL_RETURN: 'STUB003', // LLM emitted `return null|undefined|{}|[]`
|
|
48
48
|
EMPTY_BODY: 'STUB004', // body is whitespace/comments only
|
|
49
|
+
MISPLACED_BRACE: 'STUB005', // empty body + orphan top-level code follows
|
|
49
50
|
};
|
|
50
51
|
/** Resolve the behaviors directory tsc + this verifier scan. */
|
|
51
52
|
function resolveBehaviorsDir(ctx) {
|
|
@@ -141,6 +142,7 @@ export function extractAsyncFunctions(source) {
|
|
|
141
142
|
body,
|
|
142
143
|
declLine: i + 1,
|
|
143
144
|
bodyStartLine: bodyStartLineIdx + 1,
|
|
145
|
+
endLine: endLineIdx + 1,
|
|
144
146
|
});
|
|
145
147
|
// Skip past the end so we don't re-scan content inside the body.
|
|
146
148
|
i = endLineIdx;
|
|
@@ -168,6 +170,103 @@ export function stripCommentsAndBlanks(body) {
|
|
|
168
170
|
const GAMMA_FALLBACK_RE = /^throw new Error\s*\(\s*["'`].*?not implemented \((?:per-owner emit|per-action recovery) fell back\).*?["'`]\s*\)\s*;?$/s;
|
|
169
171
|
const LLM_THROW_RE = /^throw new Error\s*\(\s*["'`][^"'`]*\b(not\s+implement\w*|not\s+yet|todo|placeholder|stub|requires|fallback|missing|unimplement\w*)\b[^"'`]*["'`]\s*\)\s*;?$/is;
|
|
170
172
|
const TRIVIAL_RETURN_RE = /^return\s+(?:null|undefined|\{\s*\}|\[\s*\])(\s+as\s+\w+)?\s*;?$/s;
|
|
173
|
+
/**
|
|
174
|
+
* Detect the "misplaced `}`" emission pattern surfaced by marrbox on
|
|
175
|
+
* `GameConditionController.loadGameData` (2026-05-14). When the LLM
|
|
176
|
+
* emits a stray `}` right after the [PRE-BAKED] comment block, the
|
|
177
|
+
* brace-walker (correctly) treats it as the function's end. The
|
|
178
|
+
* function body classifies as `empty`, but the steps that were meant
|
|
179
|
+
* to be inside the body are now orphan top-level code:
|
|
180
|
+
*
|
|
181
|
+
* export async function loadGameData(_input: any): Promise<any> {
|
|
182
|
+
* // [PRE-BAKED] Step 1: ...
|
|
183
|
+
* // TODO: ...
|
|
184
|
+
* } ← misplaced
|
|
185
|
+
* // [WRITE] Step 2: ... ← orphan
|
|
186
|
+
* const v3BaseUrl = ...; ← orphan
|
|
187
|
+
* return { ... }; ← orphan, tsc TS1108
|
|
188
|
+
*
|
|
189
|
+
* The plain STUB004 message ("empty body") gives the LLM no clue why
|
|
190
|
+
* its previous emission was wrong; the reemit typically repeats the
|
|
191
|
+
* same mistake. STUB005's message names the specific shape so the
|
|
192
|
+
* LLM can correct the brace placement.
|
|
193
|
+
*
|
|
194
|
+
* Heuristic: between `fn.endLine + 1` and `nextDeclLine - 1` (or EOF
|
|
195
|
+
* if no next function), strip comments + blanks; if any non-trivial
|
|
196
|
+
* line remains AND we see at least one of:
|
|
197
|
+
* - `// [WRITE]` or `// [PRE-BAKED]` marker (these belong INSIDE
|
|
198
|
+
* function bodies; their presence at top level is diagnostic)
|
|
199
|
+
* - a top-level `return` statement (illegal TS — TS1108)
|
|
200
|
+
* - a top-level `const`/`let`/`var` declaration that isn't followed
|
|
201
|
+
* by `export`/`function` (i.e. not a module-level binding)
|
|
202
|
+
* → it's misplaced-brace orphan code.
|
|
203
|
+
*
|
|
204
|
+
* Returns a preview of the first ~5 orphan lines, or `null` if not
|
|
205
|
+
* misplaced-brace.
|
|
206
|
+
*/
|
|
207
|
+
export function detectMisplacedBrace(source, fn, nextDeclLine) {
|
|
208
|
+
const lines = source.split('\n');
|
|
209
|
+
const startIdx = fn.endLine; // 1-based endLine → 0-based first line after = endLine
|
|
210
|
+
const stopIdx = nextDeclLine !== null ? nextDeclLine - 1 : lines.length;
|
|
211
|
+
if (startIdx >= stopIdx)
|
|
212
|
+
return null;
|
|
213
|
+
const range = lines.slice(startIdx, stopIdx);
|
|
214
|
+
// Look for diagnostic markers.
|
|
215
|
+
let hasInsideMarker = false;
|
|
216
|
+
let hasOrphanStatement = false;
|
|
217
|
+
const orphanLines = [];
|
|
218
|
+
for (const raw of range) {
|
|
219
|
+
const trimmed = raw.trim();
|
|
220
|
+
if (trimmed === '')
|
|
221
|
+
continue;
|
|
222
|
+
// Markers that should only appear INSIDE function bodies.
|
|
223
|
+
if (/^\/\/\s*\[(WRITE|PRE-BAKED|PRE_BAKED)\]/.test(trimmed)) {
|
|
224
|
+
hasInsideMarker = true;
|
|
225
|
+
if (orphanLines.length < 5)
|
|
226
|
+
orphanLines.push(trimmed);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
// Module-level legal tokens (skip — not orphan).
|
|
230
|
+
if (/^(import|export|function|async\s+function|class|interface|type|enum|declare|\/\/|\/\*|\*)/.test(trimmed)) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (trimmed.startsWith('*/') || trimmed.startsWith('*'))
|
|
234
|
+
continue;
|
|
235
|
+
if (trimmed === '}' || trimmed === '};' || trimmed === ');' || trimmed === '})' || trimmed === '});') {
|
|
236
|
+
// Stray closers from orphan bodies. Diagnostic, but not by themselves.
|
|
237
|
+
if (orphanLines.length < 5)
|
|
238
|
+
orphanLines.push(trimmed);
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
// Statement-level keywords / patterns that are illegal at module top.
|
|
242
|
+
if (/^(return|await|if\s*\(|for\s*\(|while\s*\(|switch\s*\(|throw\s|break|continue)/.test(trimmed)) {
|
|
243
|
+
hasOrphanStatement = true;
|
|
244
|
+
if (orphanLines.length < 5)
|
|
245
|
+
orphanLines.push(trimmed);
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
// Bare `const`/`let`/`var` could be legal module-level, but in the
|
|
249
|
+
// body of an .ai.ts file (which only contains function declarations)
|
|
250
|
+
// they are diagnostic. Treat as orphan in conjunction with other
|
|
251
|
+
// signals — not on their own.
|
|
252
|
+
if (/^(const|let|var)\s/.test(trimmed)) {
|
|
253
|
+
if (orphanLines.length < 5)
|
|
254
|
+
orphanLines.push(trimmed);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
// Identifier-followed-by-call (e.g. `gameDataResponse.edges.forEach`)
|
|
258
|
+
// is also a statement-level pattern, diagnostic when paired with
|
|
259
|
+
// markers above.
|
|
260
|
+
if (/^[A-Za-z_$][\w$]*[.[(]/.test(trimmed)) {
|
|
261
|
+
if (orphanLines.length < 5)
|
|
262
|
+
orphanLines.push(trimmed);
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (!hasInsideMarker && !hasOrphanStatement)
|
|
267
|
+
return null;
|
|
268
|
+
return orphanLines.join('\n');
|
|
269
|
+
}
|
|
171
270
|
/**
|
|
172
271
|
* Classify a function body as a stub (or not). Conservative: requires
|
|
173
272
|
* the body to be a single-statement match to avoid false positives on
|
|
@@ -195,7 +294,7 @@ export function classifyBody(body) {
|
|
|
195
294
|
return null;
|
|
196
295
|
}
|
|
197
296
|
/** Render a feedback-prompt-friendly message for a stub match. */
|
|
198
|
-
function messageFor(kind, fnName) {
|
|
297
|
+
function messageFor(kind, fnName, orphanPreview) {
|
|
199
298
|
switch (kind) {
|
|
200
299
|
case 'gamma-fallback':
|
|
201
300
|
return (`Function '${fnName}' is a γ-stub placeholder (per-owner emit fell back). ` +
|
|
@@ -209,6 +308,15 @@ function messageFor(kind, fnName) {
|
|
|
209
308
|
case 'empty':
|
|
210
309
|
return (`Function '${fnName}' has an empty body. ` +
|
|
211
310
|
`Emit a real implementation per the [PRE-BAKED] action contract.`);
|
|
311
|
+
case 'misplaced-brace': {
|
|
312
|
+
const preview = orphanPreview ? `\nOrphan code sample:\n${orphanPreview}` : '';
|
|
313
|
+
return (`Function '${fnName}' has an empty body AND top-level code follows the ` +
|
|
314
|
+
`closing '}'. This is a misplaced-brace bug: the '}' that closes the function ` +
|
|
315
|
+
`was emitted right after the [PRE-BAKED] / [WRITE] step comments, leaving the ` +
|
|
316
|
+
`actual step bodies as illegal top-level statements (tsc TS1108). Fix: place ` +
|
|
317
|
+
`the closing '}' AFTER the last step body — not between the step comments and ` +
|
|
318
|
+
`their implementations.${preview}`);
|
|
319
|
+
}
|
|
212
320
|
}
|
|
213
321
|
}
|
|
214
322
|
/** Recursively list `*.ai.ts` files under a directory. Defensive — the
|
|
@@ -269,18 +377,35 @@ export const STUB_COMPLETENESS_VERIFIER = {
|
|
|
269
377
|
}
|
|
270
378
|
const fns = extractAsyncFunctions(source);
|
|
271
379
|
totalFunctions += fns.length;
|
|
272
|
-
for (
|
|
380
|
+
for (let fnIdx = 0; fnIdx < fns.length; fnIdx++) {
|
|
381
|
+
const fn = fns[fnIdx];
|
|
273
382
|
const match = classifyBody(fn.body);
|
|
274
383
|
if (!match)
|
|
275
384
|
continue;
|
|
385
|
+
// Promote 'empty' to 'misplaced-brace' when orphan top-level
|
|
386
|
+
// code follows the (apparent) closing `}`. Same severity, same
|
|
387
|
+
// treatment routing — only the message text changes, so the
|
|
388
|
+
// LLM gets a richer diagnostic on reemit.
|
|
389
|
+
let resolvedKind = match.kind;
|
|
390
|
+
let resolvedCode = match.code;
|
|
391
|
+
let orphanPreview;
|
|
392
|
+
if (match.kind === 'empty') {
|
|
393
|
+
const nextDeclLine = fnIdx + 1 < fns.length ? fns[fnIdx + 1].declLine : null;
|
|
394
|
+
const preview = detectMisplacedBrace(source, fn, nextDeclLine);
|
|
395
|
+
if (preview !== null) {
|
|
396
|
+
resolvedKind = 'misplaced-brace';
|
|
397
|
+
resolvedCode = STUB_CODES.MISPLACED_BRACE;
|
|
398
|
+
orphanPreview = preview;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
276
401
|
totalStubs++;
|
|
277
402
|
errors.push({
|
|
278
403
|
file: relative(ctx.outputDir, absFile),
|
|
279
404
|
line: fn.declLine,
|
|
280
405
|
col: 1,
|
|
281
406
|
severity: 'warning',
|
|
282
|
-
code:
|
|
283
|
-
message: messageFor(
|
|
407
|
+
code: resolvedCode,
|
|
408
|
+
message: messageFor(resolvedKind, fn.name, orphanPreview),
|
|
284
409
|
});
|
|
285
410
|
}
|
|
286
411
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub-completeness.js","sourceRoot":"","sources":["../../../../src/realize/post-emit-verify/verifiers/stub-completeness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stub-completeness.js","sourceRoot":"","sources":["../../../../src/realize/post-emit-verify/verifiers/stub-completeness.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,49 @@ export function toVar(name: string): string {
|
|
|
30
30
|
return name.charAt(0).toLowerCase() + name.slice(1);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Common English adjectives/articles that can leak into entity-noun
|
|
35
|
+
* extraction from NL spec steps. The matcher's pattern fragments use
|
|
36
|
+
* this to skip a leading adjective when capturing the entity noun, so
|
|
37
|
+
* "Create new Player with…" extracts `Player`, not `new`.
|
|
38
|
+
*
|
|
39
|
+
* Concern-separation note: this is NL-input-side. The TS-output-side
|
|
40
|
+
* counterpart is `TS_RESERVED_WORDS` from `@specverse/types`. Don't
|
|
41
|
+
* merge the two lists — they have distinct consumers and tuning
|
|
42
|
+
* lifecycles. NL adjectives are open-ended (extend as we see leakage);
|
|
43
|
+
* reserved identifiers are fixed by the target language spec.
|
|
44
|
+
*/
|
|
45
|
+
export const NL_LEADING_ADJECTIVES: readonly string[] = [
|
|
46
|
+
'new', 'existing', 'current', 'the', 'a', 'an',
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Regex fragment for the optional leading-adjective skip, e.g.
|
|
51
|
+
* pattern: new RegExp(`^create\\s+${NL_ADJECTIVE_PREFIX}(\\w+)…`, 'i')
|
|
52
|
+
*
|
|
53
|
+
* Patterns that prefer regex literals can inline the equivalent group:
|
|
54
|
+
* /^create\s+(?:(?:new|existing|current|the|a|an)\s+)?(\w+)…/i
|
|
55
|
+
* — keep this in sync if you do.
|
|
56
|
+
*/
|
|
57
|
+
export const NL_ADJECTIVE_PREFIX = `(?:(?:${NL_LEADING_ADJECTIVES.join('|')})\\s+)?`;
|
|
58
|
+
|
|
59
|
+
// Safe-identifier primitives live in `@specverse/types`:
|
|
60
|
+
// - `safeEntityName(name)` → returns the lowerCamel identifier, or
|
|
61
|
+
// null when the name would emit a TS
|
|
62
|
+
// reserved word as an entity reference
|
|
63
|
+
// (`prisma.<X>.create`). Use this in
|
|
64
|
+
// step-conventions' `generateCall` to
|
|
65
|
+
// replace the toVar+predicate pair.
|
|
66
|
+
// - `safeFunctionName(name)` → returns `{ name, reserved }`; on
|
|
67
|
+
// reserved input, name is suffix-renamed
|
|
68
|
+
// (`delete` → `delete_`) and the caller
|
|
69
|
+
// emits a re-export so consumers
|
|
70
|
+
// importing the original name still
|
|
71
|
+
// resolve. Used by the γ-stub renderers.
|
|
72
|
+
// Import directly from `@specverse/types`; this file no longer
|
|
73
|
+
// re-exports the predicate (was `isUnsafeEntityName`, retired in favour
|
|
74
|
+
// of the more expressive primitives).
|
|
75
|
+
|
|
33
76
|
// #54 (2026-05-10): SharedStepContext, SharedConvention, MatchResult
|
|
34
77
|
// and MatcherFn are now canonical in @specverse/types. Re-exported here
|
|
35
78
|
// so existing dynamic-import call sites that grab types from this path
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
type SharedConvention,
|
|
22
22
|
type SharedStepContext,
|
|
23
23
|
} from '../_shared/step-matching.js';
|
|
24
|
+
import { safeEntityName } from '@specverse/types';
|
|
24
25
|
|
|
25
26
|
export type MongoStepConvention = SharedConvention<MongoStepContext>;
|
|
26
27
|
|
|
@@ -178,7 +179,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
178
179
|
generateCall: (m, ctx) => {
|
|
179
180
|
const model = m[1];
|
|
180
181
|
const field = m[2];
|
|
181
|
-
const modelVar =
|
|
182
|
+
const modelVar = safeEntityName(model);
|
|
183
|
+
if (!modelVar) return '';
|
|
182
184
|
const collection = toCollection(model);
|
|
183
185
|
const params = ctx.parameterNames || [];
|
|
184
186
|
const declared = ctx.declaredVars || new Set();
|
|
@@ -212,7 +214,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
212
214
|
const model = m[1];
|
|
213
215
|
const f1 = m[2];
|
|
214
216
|
const f2 = m[3];
|
|
215
|
-
const modelVar =
|
|
217
|
+
const modelVar = safeEntityName(model);
|
|
218
|
+
if (!modelVar) return '';
|
|
216
219
|
const collection = toCollection(model);
|
|
217
220
|
const declared = ctx.declaredVars || new Set();
|
|
218
221
|
if (declared.has(modelVar)) {
|
|
@@ -246,13 +249,19 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
246
249
|
},
|
|
247
250
|
|
|
248
251
|
// --- Create model record ---
|
|
249
|
-
// Matches: "Create X", "Create new X with ..."
|
|
252
|
+
// Matches: "Create X", "Create new X with ...", "Create existing X with ...".
|
|
253
|
+
// Leading-adjective skip kept in sync with NL_LEADING_ADJECTIVES in
|
|
254
|
+
// _shared/step-matching.ts. Reserved-word safety net via
|
|
255
|
+
// safeEntityName from @specverse/types — returns null when the extracted noun would emit a TS reserved word
|
|
256
|
+
// (e.g. mis-parsed adjectives) by returning '' so the matcher falls
|
|
257
|
+
// through to the AI [WRITE] fallback.
|
|
250
258
|
{
|
|
251
259
|
name: 'create',
|
|
252
|
-
pattern: /^create\s+(?:new\s+)?(\w+)(?:\s+(?:with\s+)?(.+))?/i,
|
|
260
|
+
pattern: /^create\s+(?:(?:new|existing|current|the|a|an)\s+)?(\w+)(?:\s+(?:with\s+)?(.+))?/i,
|
|
253
261
|
generateCall: (m, ctx) => {
|
|
254
262
|
const model = m[1];
|
|
255
|
-
const modelVar =
|
|
263
|
+
const modelVar = safeEntityName(model);
|
|
264
|
+
if (!modelVar) return '';
|
|
256
265
|
const collection = toCollection(model);
|
|
257
266
|
const params = ctx.parameterNames || [];
|
|
258
267
|
const declared = ctx.declaredVars || new Set();
|
|
@@ -272,12 +281,13 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
272
281
|
// lets the AI layer handle it.
|
|
273
282
|
{
|
|
274
283
|
name: 'update-field',
|
|
275
|
-
pattern: /^update\s+(\w+)\s+(\w+)\s+to\s+(.+)/i,
|
|
284
|
+
pattern: /^update\s+(?:(?:new|existing|current|the|a|an)\s+)?(\w+)\s+(\w+)\s+to\s+(.+)/i,
|
|
276
285
|
generateCall: (m, ctx) => {
|
|
277
286
|
const model = m[1];
|
|
287
|
+
const modelVar = safeEntityName(model);
|
|
288
|
+
if (!modelVar) return '';
|
|
278
289
|
const field = m[2];
|
|
279
290
|
const rawValue = m[3];
|
|
280
|
-
const modelVar = toVar(model);
|
|
281
291
|
if (!ctx.declaredVars?.has(modelVar)) return ''; // signal "not really matched"
|
|
282
292
|
const collection = toCollection(model);
|
|
283
293
|
const val = resolveValue(rawValue, ctx);
|
|
@@ -292,11 +302,12 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
292
302
|
// --- Update field timestamp (e.g. "Update device lastLoginAt timestamp") ---
|
|
293
303
|
{
|
|
294
304
|
name: 'update-field-timestamp',
|
|
295
|
-
pattern: /^update\s+(\w+)\s+(\w+)\s+timestamp$/i,
|
|
305
|
+
pattern: /^update\s+(?:(?:new|existing|current|the|a|an)\s+)?(\w+)\s+(\w+)\s+timestamp$/i,
|
|
296
306
|
generateCall: (m, ctx) => {
|
|
297
307
|
const model = m[1];
|
|
308
|
+
const modelVar = safeEntityName(model);
|
|
309
|
+
if (!modelVar) return '';
|
|
298
310
|
const field = m[2];
|
|
299
|
-
const modelVar = toVar(model);
|
|
300
311
|
if (!ctx.declaredVars?.has(modelVar)) return '';
|
|
301
312
|
const collection = toCollection(model);
|
|
302
313
|
return ` // Step ${ctx.stepNum}: Update ${model}.${field} timestamp
|
|
@@ -310,10 +321,11 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
310
321
|
// --- Generic "Update X" (writes args back to record) ---
|
|
311
322
|
{
|
|
312
323
|
name: 'update',
|
|
313
|
-
pattern: /^update\s+(\w+)(?:\s+(.+))?$/i,
|
|
324
|
+
pattern: /^update\s+(?:(?:new|existing|current|the|a|an)\s+)?(\w+)(?:\s+(.+))?$/i,
|
|
314
325
|
generateCall: (m, ctx) => {
|
|
315
326
|
const model = m[1];
|
|
316
|
-
const modelVar =
|
|
327
|
+
const modelVar = safeEntityName(model);
|
|
328
|
+
if (!modelVar) return '';
|
|
317
329
|
if (!ctx.declaredVars?.has(modelVar)) return '';
|
|
318
330
|
const collection = toCollection(model);
|
|
319
331
|
return ` // Step ${ctx.stepNum}: Update ${model}
|
|
@@ -327,10 +339,11 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
327
339
|
// --- Delete model record ---
|
|
328
340
|
{
|
|
329
341
|
name: 'delete',
|
|
330
|
-
pattern: /^delete\s+(\w+)/i,
|
|
342
|
+
pattern: /^delete\s+(?:(?:new|existing|current|the|a|an)\s+)?(\w+)/i,
|
|
331
343
|
generateCall: (m, ctx) => {
|
|
332
344
|
const model = m[1];
|
|
333
|
-
const modelVar =
|
|
345
|
+
const modelVar = safeEntityName(model);
|
|
346
|
+
if (!modelVar) return '';
|
|
334
347
|
if (!ctx.declaredVars?.has(modelVar)) return '';
|
|
335
348
|
const collection = toCollection(model);
|
|
336
349
|
return ` // Step ${ctx.stepNum}: Delete ${model}
|
|
@@ -349,7 +362,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
349
362
|
generateCall: (m, ctx) => {
|
|
350
363
|
const model = m[1];
|
|
351
364
|
const state = m[2];
|
|
352
|
-
const modelVar =
|
|
365
|
+
const modelVar = safeEntityName(model);
|
|
366
|
+
if (!modelVar) return '';
|
|
353
367
|
if (!ctx.declaredVars?.has(modelVar)) return '';
|
|
354
368
|
const collection = toCollection(model);
|
|
355
369
|
return ` // Step ${ctx.stepNum}: Transition ${model} to ${state}
|
|
@@ -424,7 +438,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
424
438
|
pattern: /^(?:persist|save|store)\s+(\w+(?:\s+\w+)?)(?:\s+(?:for|to|record).*)?$/i,
|
|
425
439
|
generateCall: (m, ctx) => {
|
|
426
440
|
// m[1] may be "refresh token" — collapse to camelCase + collection
|
|
427
|
-
const target =
|
|
441
|
+
const target = safeEntityName(m[1].replace(/\s+(.)/g, (_, c) => c.toUpperCase()));
|
|
442
|
+
if (!target) return '';
|
|
428
443
|
const collection = toCollection(target);
|
|
429
444
|
const recordSrc = mostRecentStepResult(ctx) ?? 'args';
|
|
430
445
|
return ` // Step ${ctx.stepNum}: Persist ${m[1]}
|
|
@@ -442,7 +457,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
442
457
|
name: 'conditional-create',
|
|
443
458
|
pattern: /^if\s+(\w+)\s+does\s+not\s+exist,?\s+create\s+new\s+(\w+)(?:\s+with\s+.+)?$/i,
|
|
444
459
|
generateCall: (m, ctx) => {
|
|
445
|
-
const modelVar =
|
|
460
|
+
const modelVar = safeEntityName(m[1]);
|
|
461
|
+
if (!modelVar) return '';
|
|
446
462
|
const Model = pascal(m[2]);
|
|
447
463
|
const collection = toCollection(Model);
|
|
448
464
|
if (!ctx.declaredVars?.has(modelVar)) return ''; // need prior find
|
|
@@ -472,7 +488,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
472
488
|
name: 'conditional-update',
|
|
473
489
|
pattern: /^if\s+(\w+)\s+exists,?\s+update\s+(\w+)(?:\s+(.+))?$/i,
|
|
474
490
|
generateCall: (m, ctx) => {
|
|
475
|
-
const modelVar =
|
|
491
|
+
const modelVar = safeEntityName(m[1]);
|
|
492
|
+
if (!modelVar) return '';
|
|
476
493
|
const field = m[2];
|
|
477
494
|
const collection = toCollection(m[1]);
|
|
478
495
|
if (!ctx.declaredVars?.has(modelVar)) return '';
|
|
@@ -547,7 +564,8 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
547
564
|
pattern: /^otherwise\s+create\s+(?:new\s+)?(\w+)\s+record$/i,
|
|
548
565
|
generateCall: (m, ctx) => {
|
|
549
566
|
const Model = pascal(m[1]);
|
|
550
|
-
const modelVar =
|
|
567
|
+
const modelVar = safeEntityName(Model);
|
|
568
|
+
if (!modelVar) return '';
|
|
551
569
|
const collection = toCollection(Model);
|
|
552
570
|
// The model var was declared (as `let`) by the find that paired
|
|
553
571
|
// with the prior conditional-update; reassign it here so downstream
|
|
@@ -612,9 +630,11 @@ export const MONGO_STEP_CONVENTIONS: MongoStepConvention[] = [
|
|
|
612
630
|
generateCall: (m, ctx) => {
|
|
613
631
|
const service = m[1];
|
|
614
632
|
const method = m[2];
|
|
633
|
+
const serviceVar = safeEntityName(service);
|
|
634
|
+
if (!serviceVar) return '';
|
|
615
635
|
const args = (ctx.parameterNames || []).join(', ');
|
|
616
636
|
return ` // Step ${ctx.stepNum}: Call ${service}.${method}
|
|
617
|
-
await (${
|
|
637
|
+
await (${serviceVar} as any).${method}({ ${args} });`;
|
|
618
638
|
},
|
|
619
639
|
},
|
|
620
640
|
|