@specverse/engines 6.39.0 → 6.40.7

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 (32) hide show
  1. package/dist/libs/instance-factories/services/templates/prisma/controller-generator.js +39 -20
  2. package/dist/libs/instance-factories/services/templates/prisma/service-generator.js +14 -5
  3. package/dist/libs/instance-factories/services/templates/prisma/step-conventions.js +10 -1
  4. package/dist/realize/index.d.ts.map +1 -1
  5. package/dist/realize/index.js +91 -13
  6. package/dist/realize/index.js.map +1 -1
  7. package/dist/realize/per-action-emitter.d.ts.map +1 -1
  8. package/dist/realize/per-action-emitter.js +12 -3
  9. package/dist/realize/per-action-emitter.js.map +1 -1
  10. package/dist/realize/per-action-llm-emit.d.ts.map +1 -1
  11. package/dist/realize/per-action-llm-emit.js +22 -0
  12. package/dist/realize/per-action-llm-emit.js.map +1 -1
  13. package/dist/realize/per-owner-emit.d.ts +101 -0
  14. package/dist/realize/per-owner-emit.d.ts.map +1 -0
  15. package/dist/realize/per-owner-emit.js +351 -0
  16. package/dist/realize/per-owner-emit.js.map +1 -0
  17. package/dist/realize/per-owner-runner.d.ts +105 -0
  18. package/dist/realize/per-owner-runner.d.ts.map +1 -0
  19. package/dist/realize/per-owner-runner.js +336 -0
  20. package/dist/realize/per-owner-runner.js.map +1 -0
  21. package/dist/realize/runtime-emitters/library.d.ts.map +1 -1
  22. package/dist/realize/runtime-emitters/library.js +17 -1
  23. package/dist/realize/runtime-emitters/library.js.map +1 -1
  24. package/libs/instance-factories/services/templates/_shared/step-matching.d.ts +39 -0
  25. package/libs/instance-factories/services/templates/_shared/step-matching.d.ts.map +1 -0
  26. package/libs/instance-factories/services/templates/_shared/step-matching.js +90 -0
  27. package/libs/instance-factories/services/templates/_shared/step-matching.js.map +1 -0
  28. package/libs/instance-factories/services/templates/prisma/__tests__/step-conventions-return.test.ts +124 -0
  29. package/libs/instance-factories/services/templates/prisma/controller-generator.ts +70 -22
  30. package/libs/instance-factories/services/templates/prisma/service-generator.ts +52 -6
  31. package/libs/instance-factories/services/templates/prisma/step-conventions.ts +33 -1
  32. package/package.json +1 -1
@@ -0,0 +1,336 @@
1
+ /**
2
+ * Per-owner realize runner — Phase 1 of the 2026-05-11-PER-OWNER-VS-PER-ACTION
3
+ * proposal.
4
+ *
5
+ * Sibling of `per-action-runner.ts`. SAME spec-walking + owner-grouping
6
+ * logic, DIFFERENT emission granularity: instead of calling
7
+ * `emitActionBody` once per action, this runner calls the per-owner
8
+ * LLM emit hook ONCE per owner and writes the resulting whole-file
9
+ * content as `<Owner>.ai.ts`.
10
+ *
11
+ * Why this exists: the per-action emitter (Realize L3 Phase 3) gave
12
+ * the LLM narrow context — one action's steps, no class shell, no
13
+ * sibling methods, no manifest capabilities. Empirically on
14
+ * idle-meta sonnet, that produced 29 of 94 actions as throw-stubs
15
+ * because the LLM correctly refused to invent imports it couldn't
16
+ * see were available. Per-owner restores the holistic context.
17
+ *
18
+ * Same `<Owner>.ai.ts` output shape (exported async functions per
19
+ * action) → no consumer-interface change. The downstream controller
20
+ * still does `import * as aiBehaviors from '../behaviors/X.ai.js'`.
21
+ */
22
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
23
+ import { dirname, join } from 'path';
24
+ import { collectActions, buildAvailableClientsByOwner, } from './per-action-runner.js';
25
+ /**
26
+ * Run per-owner LLM emission across every controller / service the
27
+ * spec declares. For each owner:
28
+ * 1. Collect its actions and resolve per-step matcher results.
29
+ * 2. Call the perOwnerEmit hook with the whole owner's context.
30
+ * 3. Write the returned file contents to disk (or fall back to a
31
+ * placeholder file containing one γ stub per action when emit
32
+ * returned null).
33
+ */
34
+ export async function runPerOwnerEmission(opts) {
35
+ const collected = collectActions(opts.spec);
36
+ const ownerGroups = groupByOwner(collected);
37
+ const owners = [];
38
+ const filesWritten = [];
39
+ const totals = {
40
+ ownerCount: 0,
41
+ actionCount: 0,
42
+ ownersEmittedByLLM: 0,
43
+ ownersFellBack: 0,
44
+ };
45
+ // Matcher must be supplied by the caller — the libs/ step-matching
46
+ // module sits OUTSIDE engines/src/'s tsconfig rootDir and can't be
47
+ // statically imported here. realize/index.ts already resolves the
48
+ // shared matcher via resolveGenPath + dynamic import and threads it
49
+ // into per-action-runner; per-owner-runner uses the same matcher.
50
+ if (!opts.matcher) {
51
+ throw new Error('runPerOwnerEmission requires `matcher` in options — the caller (realize/index.ts) ' +
52
+ 'resolves the shared step-matching module via resolveGenPath + dynamic import.');
53
+ }
54
+ const matcher = opts.matcher;
55
+ const conventions = opts.conventions ?? [];
56
+ for (const [ownerName, actions] of ownerGroups) {
57
+ // Resolve per-step matches for every action on this owner.
58
+ const collectedOwnerActions = actions.map((action) => {
59
+ const ctx = {
60
+ componentName: ownerName,
61
+ modelName: action.modelName,
62
+ matcher,
63
+ conventions,
64
+ };
65
+ const perStepMatches = matchSteps(action.spec, ctx, matcher, conventions);
66
+ return {
67
+ actionName: action.actionName,
68
+ spec: action.spec,
69
+ perStepMatches,
70
+ };
71
+ });
72
+ // Owner-level spec block — re-derive from the spec for
73
+ // self-contained prompt context. Best-effort; missing → empty obj.
74
+ const ownerSpec = lookupOwnerSpec(opts.spec, ownerName, actions[0]?.ownerKind);
75
+ // Isolate per-owner emission failures so a single owner's throw
76
+ // (e.g. structural-validator rejection because the LLM dropped a
77
+ // pre-baked snippet) doesn't kill emission for the other 27
78
+ // owners. The 2026-05-11 trial run hit this: HealthController
79
+ // failed structural-preservation, the throw bubbled out to
80
+ // realize/index.ts's outer catch, and 25 owners that hadn't run
81
+ // yet got skipped. Each owner's success is independent — catch
82
+ // here, fall back to the deterministic placeholder file, log to
83
+ // stderr (gated by SPECVERSE_VERBOSE), and keep walking.
84
+ let fileContents = null;
85
+ try {
86
+ fileContents = await opts.perOwnerEmit({
87
+ ownerName,
88
+ ownerKind: actions[0]?.ownerKind ?? 'model',
89
+ ownerSpec,
90
+ actions: collectedOwnerActions,
91
+ availableClients: opts.availableClientsByOwner?.get(ownerName),
92
+ availableCapabilities: opts.availableCapabilities,
93
+ processContext: opts.processContextByOwner?.get(ownerName),
94
+ });
95
+ }
96
+ catch (e) {
97
+ if (process.env.SPECVERSE_VERBOSE) {
98
+ const cls = (e && e.constructor && e.constructor.name) || 'Error';
99
+ const msg = (e && e.message) || String(e);
100
+ const head = String(msg).slice(0, 240).replace(/\s+/g, ' ');
101
+ console.error(` ✗ per-owner emit threw for ${ownerName} [${cls}]: ${head}`);
102
+ }
103
+ fileContents = null;
104
+ }
105
+ const finalContents = fileContents ?? renderFallbackPlaceholderFile(ownerName, actions);
106
+ const llmEmitted = fileContents !== null;
107
+ owners.push({
108
+ ownerName,
109
+ actionCount: actions.length,
110
+ llmEmitted,
111
+ fileContents: finalContents,
112
+ });
113
+ totals.ownerCount += 1;
114
+ totals.actionCount += actions.length;
115
+ if (llmEmitted)
116
+ totals.ownersEmittedByLLM += 1;
117
+ else
118
+ totals.ownersFellBack += 1;
119
+ if (!opts.dryRun) {
120
+ const filePath = writeOwnerAiFile(opts.outputDir, ownerName, finalContents);
121
+ filesWritten.push(filePath);
122
+ if (!opts.silent) {
123
+ const tag = llmEmitted ? 'LLM' : 'placeholder';
124
+ console.log(` ✅ Per-owner AI behaviors: ${ownerName}.ai.ts (${actions.length} action${actions.length === 1 ? '' : 's'}, ${tag})`);
125
+ }
126
+ }
127
+ }
128
+ return { owners, filesWritten, totals };
129
+ }
130
+ // ─── Internal helpers ────────────────────────────────────────────────
131
+ /** Group collected actions by owner name. Mirrors per-action-runner. */
132
+ function groupByOwner(actions) {
133
+ const groups = new Map();
134
+ for (const a of actions) {
135
+ const list = groups.get(a.ownerName) ?? [];
136
+ list.push(a);
137
+ groups.set(a.ownerName, list);
138
+ }
139
+ return groups;
140
+ }
141
+ /** Find the owner's spec block in the inferred spec. Searches the
142
+ * flat-at-root `spec.controllers` / `spec.services` first (which
143
+ * inference + analyse pipeline both produce), falling back to
144
+ * per-component nesting. Returns an empty object if not found. */
145
+ function lookupOwnerSpec(spec, ownerName, ownerKind) {
146
+ // Flat-at-root path.
147
+ const lookups = [
148
+ spec?.controllers,
149
+ spec?.services,
150
+ ];
151
+ for (const block of lookups) {
152
+ if (!block)
153
+ continue;
154
+ if (Array.isArray(block)) {
155
+ const hit = block.find((b) => b?.name === ownerName);
156
+ if (hit)
157
+ return hit;
158
+ }
159
+ else if (typeof block === 'object') {
160
+ if (block[ownerName])
161
+ return block[ownerName];
162
+ }
163
+ }
164
+ // Per-component nested path.
165
+ const componentsList = Array.isArray(spec?.components)
166
+ ? spec.components
167
+ : Object.values(spec?.components ?? {});
168
+ for (const comp of componentsList) {
169
+ const compBlocks = [comp?.controllers, comp?.services];
170
+ for (const block of compBlocks) {
171
+ if (!block)
172
+ continue;
173
+ if (Array.isArray(block)) {
174
+ const hit = block.find((b) => b?.name === ownerName);
175
+ if (hit)
176
+ return hit;
177
+ }
178
+ else if (typeof block === 'object') {
179
+ if (block[ownerName])
180
+ return block[ownerName];
181
+ }
182
+ }
183
+ }
184
+ return {};
185
+ }
186
+ /** Run every step of an action through the matcher. Returns null per
187
+ * step when the action has no steps to dispatch. Same as
188
+ * per-action-emitter's `matchSteps` — duplicated here so the
189
+ * per-owner runner doesn't need an extra import dance through the
190
+ * per-action emitter. */
191
+ function matchSteps(action, context, matcher, conventions) {
192
+ if (!action.steps || action.steps.length === 0)
193
+ return [];
194
+ const aiArgsExpr = (inputs) => inputs.length > 0 ? `{ ${inputs.join(', ')} }` : '{}';
195
+ const declaredVars = new Set();
196
+ const parameterNames = action.parameters ? Object.keys(action.parameters) : [];
197
+ const results = [];
198
+ for (let i = 0; i < action.steps.length; i++) {
199
+ const step = action.steps[i];
200
+ const ctx = {
201
+ modelName: context.modelName,
202
+ serviceName: action.ownerName,
203
+ operationName: action.name,
204
+ stepNum: i + 1,
205
+ parameterNames,
206
+ declaredVars,
207
+ };
208
+ const result = matcher(step, ctx, conventions, aiArgsExpr);
209
+ results.push(result);
210
+ }
211
+ return results;
212
+ }
213
+ /** TS reserved words that can't appear as `export async function <name>`.
214
+ * When the spec action is named one of these (e.g. `delete`, `class`),
215
+ * we declare the implementation under a sanitized name then re-export
216
+ * via `export { sanitized as reserved }` — that's a legal re-export
217
+ * rename and `import * as aiBehaviors` continues to resolve
218
+ * `aiBehaviors.delete(...)` correctly. Subset of the full reserved-word
219
+ * list — only those plausibly used as action names. */
220
+ const TS_RESERVED_WORDS = new Set([
221
+ 'delete', 'class', 'function', 'return', 'void', 'typeof',
222
+ 'instanceof', 'new', 'this', 'throw', 'try', 'catch', 'finally',
223
+ 'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'break',
224
+ 'continue', 'default', 'var', 'let', 'const', 'in', 'of',
225
+ 'async', 'await', 'yield', 'export', 'import', 'from',
226
+ 'true', 'false', 'null', 'undefined', 'static', 'public',
227
+ 'private', 'protected', 'interface', 'type', 'enum', 'extends',
228
+ 'implements', 'super',
229
+ ]);
230
+ /** Render a deterministic placeholder file used when the LLM emit
231
+ * returns null for an entire owner. One γ-shaped exported function
232
+ * per action so the downstream `import * as aiBehaviors` continues
233
+ * to resolve — the runtime stub explains the gap.
234
+ *
235
+ * Reserved-word action names (e.g. `delete`, `class`) can't appear as
236
+ * `export async function <name>` declarations. Use a re-export rename
237
+ * in that case so consumers (`aiBehaviors.delete(...)`) still resolve.
238
+ * Caught empirically: the 2026-05-11 per-owner trial v4 produced a
239
+ * syntactically-broken placeholder for SaveGameService whose `delete`
240
+ * action name made the file fail TS parsing, which bailed tsc from
241
+ * the whole project. */
242
+ function renderFallbackPlaceholderFile(ownerName, actions) {
243
+ const parts = [];
244
+ parts.push(`/**`);
245
+ parts.push(` * ${ownerName} — Per-owner AI behaviors (placeholder)`);
246
+ parts.push(` *`);
247
+ parts.push(` * The per-owner LLM emit returned null for this owner (LLM`);
248
+ parts.push(` * declined, parse-failed twice, or rate-limited). Each action`);
249
+ parts.push(` * is stubbed individually so the consumer's`);
250
+ parts.push(` * \`import * as aiBehaviors\` continues to resolve. Inspect`);
251
+ parts.push(` * the realize log for the failure reason (set SPECVERSE_VERBOSE=1`);
252
+ parts.push(` * for diagnostic detail).`);
253
+ parts.push(` *`);
254
+ parts.push(` * Generated: ${new Date().toISOString().split('T')[0]}`);
255
+ parts.push(` */`);
256
+ parts.push('');
257
+ for (const action of actions) {
258
+ const name = action.actionName;
259
+ const isReserved = TS_RESERVED_WORDS.has(name);
260
+ parts.push(`/** Placeholder — LLM declined to emit ${name}. */`);
261
+ if (isReserved) {
262
+ // Declare under a sanitized identifier (`<name>_`) then re-export
263
+ // as the reserved-word name. Consumer `aiBehaviors.<name>(...)`
264
+ // resolves through the re-export.
265
+ const safeName = `${name}_`;
266
+ parts.push(`async function ${safeName}(input: any): Promise<any> {`);
267
+ parts.push(` throw new Error("${name}: not implemented (per-owner emit fell back)");`);
268
+ parts.push(`}`);
269
+ parts.push(`export { ${safeName} as ${name} };`);
270
+ }
271
+ else {
272
+ parts.push(`export async function ${name}(input: any): Promise<any> {`);
273
+ parts.push(` throw new Error("${name}: not implemented (per-owner emit fell back)");`);
274
+ parts.push(`}`);
275
+ }
276
+ parts.push('');
277
+ }
278
+ return parts.join('\n');
279
+ }
280
+ /** Write the owner's `.ai.ts` to disk under
281
+ * `<outputDir>/backend/src/behaviors/<Owner>.ai.ts`. Returns the
282
+ * absolute path. */
283
+ function writeOwnerAiFile(outputDir, ownerName, fileContents) {
284
+ const filePath = join(outputDir, 'backend', 'src', 'behaviors', `${ownerName}.ai.ts`);
285
+ const dir = dirname(filePath);
286
+ if (!existsSync(dir))
287
+ mkdirSync(dir, { recursive: true });
288
+ writeFileSync(filePath, fileContents, 'utf-8');
289
+ return filePath;
290
+ }
291
+ /** Build the availableCapabilities string consumed by the per-owner
292
+ * prompt's `availableCapabilities` slot. Walks the manifest's
293
+ * capabilityMappings and renders one line per mapping with a brief
294
+ * hint about what the factory provides. Exported so the realize
295
+ * caller can build it once and feed it to every owner.
296
+ *
297
+ * Format example:
298
+ * - orm.client → PrismaORM (provides Prisma's typed query API)
299
+ * - jwt.signer → JsonWebToken (jsonwebtoken.sign / verify)
300
+ * - event.bus → InMemoryEventBus (publish / subscribe)
301
+ */
302
+ export function buildAvailableCapabilitiesString(manifest) {
303
+ if (!manifest || typeof manifest !== 'object')
304
+ return '(no capabilities)';
305
+ const mappings = collectCapabilityMappings(manifest);
306
+ if (!Array.isArray(mappings) || mappings.length === 0) {
307
+ return '(none — only `input: any` is available)';
308
+ }
309
+ const lines = [];
310
+ for (const m of mappings) {
311
+ if (!m?.capability || !m?.instanceFactory)
312
+ continue;
313
+ lines.push(` - ${m.capability} → ${m.instanceFactory}`);
314
+ }
315
+ return lines.length > 0 ? lines.join('\n') : '(none — only `input: any` is available)';
316
+ }
317
+ /** Walk both root and `manifests[].capabilityMappings` shapes. */
318
+ function collectCapabilityMappings(manifest) {
319
+ if (!manifest || typeof manifest !== 'object')
320
+ return [];
321
+ if (Array.isArray(manifest.capabilityMappings))
322
+ return manifest.capabilityMappings;
323
+ if (Array.isArray(manifest.manifests)) {
324
+ const out = [];
325
+ for (const inner of manifest.manifests) {
326
+ if (Array.isArray(inner?.capabilityMappings))
327
+ out.push(...inner.capabilityMappings);
328
+ }
329
+ return out;
330
+ }
331
+ return [];
332
+ }
333
+ // Re-export buildAvailableClientsByOwner so callers that want both
334
+ // strings don't have to import from two modules.
335
+ export { buildAvailableClientsByOwner };
336
+ //# sourceMappingURL=per-owner-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-owner-runner.js","sourceRoot":"","sources":["../../src/realize/per-owner-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAyQzB;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IAEjC,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+EtE"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAyRzB;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IAEjC,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+EtE"}
@@ -166,7 +166,23 @@ function generateImportBlock(ctx, selectEntries) {
166
166
  const availableIds = new Map();
167
167
  if (resolved.source === 'local') {
168
168
  // Relative import to the provider's module in the same spec's output tree.
169
- const relativePath = resolved.localRelativePath ?? `../${toFileName(resolved.resolvedName)}`;
169
+ //
170
+ // The fallback path `../${toFileName(...)}` is a heuristic that
171
+ // assumes the provider lives one level up from the V2 client. In
172
+ // practice the realize pipeline doesn't currently emit per-component
173
+ // aggregate modules (`components/<Provider>/<from>.ts`) — providers
174
+ // are emitted directly to deterministic backend dirs (services/,
175
+ // controllers/, etc.). V2 client files end up with broken module
176
+ // references regardless of which depth we compute. The resolver's
177
+ // explicit `localRelativePath` is the authoritative form when
178
+ // available; the fallback is best-effort.
179
+ //
180
+ // We append `.js` extension when missing — NodeNext module
181
+ // resolution (the realized backend's default) requires explicit
182
+ // extensions on relative imports. Without this, the stub trial
183
+ // surfaced TS2834.
184
+ const rawPath = resolved.localRelativePath ?? `../${toFileName(resolved.resolvedName)}`;
185
+ const relativePath = /\.(m?[jt]sx?|json)$/.test(rawPath) ? rawPath : `${rawPath}.js`;
170
186
  // Group dotted entries by head (entity) — one import per head.
171
187
  const heads = new Set();
172
188
  const bareEntries = [];
@@ -1 +1 @@
1
- {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared step-matching machinery — common helpers + the canonical
3
+ * `matchAgainstConventions` walker that any ORM-specific step-conventions
4
+ * library can compose with.
5
+ *
6
+ * Each ORM library (prisma, mongodb-native) exports its own
7
+ * `STEP_CONVENTIONS` array of `{name, pattern, generateCall}` items
8
+ * describing what code to emit for matched patterns. The matcher itself
9
+ * is identical across libraries: walk the conventions in order, first
10
+ * match wins; if nothing matches, compute the AI-fallback shape
11
+ * (functionName + inputs + resultVar) deterministically.
12
+ *
13
+ * Extracted from prisma/step-conventions.ts and mongodb-native/step-conventions.ts
14
+ * so future ORM libraries can drop in just the conventions array
15
+ * without re-implementing matching logic. (#43K-D)
16
+ */
17
+ /** Camel-case a step's text into a TS identifier. Identical algorithm
18
+ * across all ORM libraries — function names emitted in `aiBehaviors.<X>(...)`
19
+ * calls must agree with the function declarations the AI-behaviors-generator
20
+ * emits. Both sides go through this. */
21
+ export declare function toMethod(words: string): string;
22
+ export declare function toVar(name: string): string;
23
+ export type { SharedStepContext, SharedConvention, MatchResult, MatcherFn, } from '@specverse/types';
24
+ import type { SharedStepContext, SharedConvention, MatchResult } from '@specverse/types';
25
+ export interface StepMatchRecord {
26
+ ownerName: string;
27
+ actionName: string;
28
+ stepOrdinal: number;
29
+ stepText: string;
30
+ matched: boolean;
31
+ helperMethod?: string;
32
+ aiFunctionName?: string;
33
+ }
34
+ export declare function setStepMatchRecorder(fn: ((r: StepMatchRecord) => void) | null): void;
35
+ /** Walk conventions in order. First match wins (with empty-string fallthrough).
36
+ * Unmatched: compute the AI-delegate call site shape so the controller and
37
+ * the AI-behaviors-generator agree on function name + inputs + resultVar. */
38
+ export declare function matchAgainstConventions<C extends SharedStepContext>(step: string, ctx: C, conventions: ReadonlyArray<SharedConvention<C>>, aiArgsExpr: (inputs: string[], paramNames: string[]) => string): MatchResult;
39
+ //# sourceMappingURL=step-matching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-matching.d.ts","sourceRoot":"","sources":["step-matching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;wCAGwC;AACxC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;AAMD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAWzF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED;;6EAE6E;AAC7E,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,iBAAiB,EACjE,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,EACN,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAC/C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,MAAM,GAC7D,WAAW,CAsDb"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Shared step-matching machinery — common helpers + the canonical
3
+ * `matchAgainstConventions` walker that any ORM-specific step-conventions
4
+ * library can compose with.
5
+ *
6
+ * Each ORM library (prisma, mongodb-native) exports its own
7
+ * `STEP_CONVENTIONS` array of `{name, pattern, generateCall}` items
8
+ * describing what code to emit for matched patterns. The matcher itself
9
+ * is identical across libraries: walk the conventions in order, first
10
+ * match wins; if nothing matches, compute the AI-fallback shape
11
+ * (functionName + inputs + resultVar) deterministically.
12
+ *
13
+ * Extracted from prisma/step-conventions.ts and mongodb-native/step-conventions.ts
14
+ * so future ORM libraries can drop in just the conventions array
15
+ * without re-implementing matching logic. (#43K-D)
16
+ */
17
+ /** Camel-case a step's text into a TS identifier. Identical algorithm
18
+ * across all ORM libraries — function names emitted in `aiBehaviors.<X>(...)`
19
+ * calls must agree with the function declarations the AI-behaviors-generator
20
+ * emits. Both sides go through this. */
21
+ export function toMethod(words) {
22
+ const cleaned = words.trim().replace(/[^A-Za-z0-9\s]+/g, ' ');
23
+ const camel = cleaned.replace(/\s+(.)/g, (_, c) => c.toUpperCase()).replace(/^\w/, (c) => c.toLowerCase());
24
+ const safe = camel.replace(/[^A-Za-z0-9_$]/g, '');
25
+ return safe || 'unnamedStep';
26
+ }
27
+ export function toVar(name) {
28
+ return name.charAt(0).toLowerCase() + name.slice(1);
29
+ }
30
+ let _stepRecorder = null;
31
+ export function setStepMatchRecorder(fn) {
32
+ _stepRecorder = fn;
33
+ }
34
+ /** Walk conventions in order. First match wins (with empty-string fallthrough).
35
+ * Unmatched: compute the AI-delegate call site shape so the controller and
36
+ * the AI-behaviors-generator agree on function name + inputs + resultVar. */
37
+ export function matchAgainstConventions(step, ctx, conventions, aiArgsExpr) {
38
+ let result = null;
39
+ for (const convention of conventions) {
40
+ const m = step.match(convention.pattern);
41
+ if (m) {
42
+ const call = convention.generateCall(m, ctx);
43
+ if (call) {
44
+ result = {
45
+ matched: true,
46
+ call,
47
+ helperMethod: convention.generateMethod?.(m, ctx),
48
+ };
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ if (!result) {
54
+ // AI fallback shape — same across all ORMs.
55
+ const functionName = toMethod(step);
56
+ const declared = Array.from(ctx.declaredVars || []);
57
+ const paramNames = ctx.parameterNames || [];
58
+ const inputs = [...paramNames, ...declared];
59
+ const resultVar = ctx.resultName || `step${ctx.stepNum}Result`;
60
+ if (ctx.declaredVars)
61
+ ctx.declaredVars.add(resultVar);
62
+ const inputObj = aiArgsExpr(inputs, paramNames);
63
+ result = {
64
+ matched: false,
65
+ call: ` // Step ${ctx.stepNum}: ${step} [AI-generated — pure transform]
66
+ const ${resultVar} = await aiBehaviors.${functionName}(${inputObj});`,
67
+ functionName,
68
+ inputs,
69
+ resultVar,
70
+ };
71
+ }
72
+ // Forward-log the decision. ctx.serviceName carries the spec owner
73
+ // (controller or service — the shared context uses one field for both).
74
+ if (_stepRecorder) {
75
+ try {
76
+ _stepRecorder({
77
+ ownerName: ctx.serviceName,
78
+ actionName: ctx.operationName,
79
+ stepOrdinal: ctx.stepNum,
80
+ stepText: step,
81
+ matched: result.matched,
82
+ helperMethod: result.helperMethod,
83
+ aiFunctionName: result.functionName,
84
+ });
85
+ }
86
+ catch { /* recorder must never break generation */ }
87
+ }
88
+ return result;
89
+ }
90
+ //# sourceMappingURL=step-matching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-matching.js","sourceRoot":"","sources":["step-matching.ts"],"names":[],"mappings":"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"}