@specverse/engines 6.27.14 → 6.29.5

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 (35) 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 +119 -60
  4. package/dist/ai/analyse-runner.js.map +1 -1
  5. package/dist/ai/behaviours-runner.d.ts +49 -0
  6. package/dist/ai/behaviours-runner.d.ts.map +1 -0
  7. package/dist/ai/behaviours-runner.js +177 -0
  8. package/dist/ai/behaviours-runner.js.map +1 -0
  9. package/dist/ai/deployment-emitter.d.ts +86 -0
  10. package/dist/ai/deployment-emitter.d.ts.map +1 -0
  11. package/dist/ai/deployment-emitter.js +201 -0
  12. package/dist/ai/deployment-emitter.js.map +1 -0
  13. package/dist/ai/index.d.ts +2 -0
  14. package/dist/ai/index.d.ts.map +1 -1
  15. package/dist/ai/index.js +5 -0
  16. package/dist/ai/index.js.map +1 -1
  17. package/dist/ai/manifest-emitter.d.ts +60 -0
  18. package/dist/ai/manifest-emitter.d.ts.map +1 -0
  19. package/dist/ai/manifest-emitter.js +126 -0
  20. package/dist/ai/manifest-emitter.js.map +1 -0
  21. package/dist/ai/skeleton-emitter.d.ts +11 -1
  22. package/dist/ai/skeleton-emitter.d.ts.map +1 -1
  23. package/dist/ai/skeleton-emitter.js +73 -2
  24. package/dist/ai/skeleton-emitter.js.map +1 -1
  25. package/dist/analyse-prepass/adapters/react-views.d.ts +59 -0
  26. package/dist/analyse-prepass/adapters/react-views.d.ts.map +1 -0
  27. package/dist/analyse-prepass/adapters/react-views.js +314 -0
  28. package/dist/analyse-prepass/adapters/react-views.js.map +1 -0
  29. package/dist/analyse-prepass/index.d.ts +15 -0
  30. package/dist/analyse-prepass/index.d.ts.map +1 -1
  31. package/dist/analyse-prepass/index.js +94 -0
  32. package/dist/analyse-prepass/index.js.map +1 -1
  33. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +51 -4
  34. package/libs/instance-factories/cli/templates/commander/command-generator.ts +70 -5
  35. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behaviours-runner.js","sourceRoot":"","sources":["../../src/ai/behaviours-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Deployment-emitter — engines 6.28.0+.
3
+ *
4
+ * After the analyse pipeline assembles the final spec (skeleton + filled
5
+ * action bodies), this emits a deterministic `deployments:` block based
6
+ * on what was extracted. One production environment with one instance
7
+ * per detected controller / service / entity / view.
8
+ *
9
+ * Why this lives in analyse (not in `spv infer`): the inference-engine
10
+ * deployment rules in `entities/src/core/deployments/inference/` are
11
+ * for the from-scratch authoring path. They expand a minimal spec to
12
+ * convention defaults. Analyse is the OPPOSITE — produces a faithful
13
+ * mirror of the codebase. But the analysed spec WITHOUT a deployments
14
+ * block is incomplete in a user-visible way (Dom Williams 2026-05-06:
15
+ * "where does it say I'll have one of these and two of those and wire
16
+ * them up"). This emitter closes that gap with a minimal mechanical
17
+ * mapping users can hand-edit.
18
+ *
19
+ * Output shape (matches `entities/src/core/deployments/schema/`):
20
+ *
21
+ * deployments:
22
+ * production:
23
+ * version: "1.0.0"
24
+ * description: "Default deployment topology emitted by spv analyse..."
25
+ * environment: production
26
+ * instances:
27
+ * controllers:
28
+ * authController:
29
+ * component: "ComponentName"
30
+ * services:
31
+ * authService:
32
+ * component: "ComponentName"
33
+ * storage:
34
+ * userStorage:
35
+ * component: "ComponentName"
36
+ * type: "document"
37
+ * persistence: "durable"
38
+ * views:
39
+ * gamePicker:
40
+ * component: "ComponentName"
41
+ *
42
+ * V1 keeps it minimal: no rateLimit / cache / retry / autoscaling /
43
+ * resource-limits / monitoring / security / infrastructure. Those are
44
+ * meaningful defaults but require manifest-aware decisions; emitting
45
+ * them as `enabled: false` or with arbitrary defaults adds noise without
46
+ * value. The user can layer those in via spec edits or via `spv infer`.
47
+ */
48
+ import type { SpecVerseFacts } from '../analyse-prepass/index.js';
49
+ export interface DeploymentEmissionInput {
50
+ /** Specverse facts produced by the prepass — entities, views, etc. */
51
+ facts: SpecVerseFacts;
52
+ /**
53
+ * Per-component detected classes (controllers + services). The
54
+ * skeleton-emitter computed these via `classesByComponent`; pass them
55
+ * through here so we attribute instances to the right component.
56
+ * The shape mirrors the analyse-runner's bookkeeping.
57
+ */
58
+ classesByComponent: Map<string, Array<{
59
+ entityName: string;
60
+ filePath: string;
61
+ }>>;
62
+ /**
63
+ * Map from facts.entities[].name → owning component spec name (the
64
+ * skeleton-emitter computes this in `entityHome`). Used to attribute
65
+ * storage instances to the right component.
66
+ */
67
+ entityHome: Map<string, string>;
68
+ }
69
+ export interface DeploymentEmissionResult {
70
+ /** The emitted `deployments:` yaml block (no trailing newline). */
71
+ deploymentsYaml: string;
72
+ /** Per-instance count, useful for telemetry/REPORT. */
73
+ counts: {
74
+ controllers: number;
75
+ services: number;
76
+ storage: number;
77
+ views: number;
78
+ };
79
+ }
80
+ /**
81
+ * Emit a deterministic `deployments:` block from extracted facts.
82
+ * The output is a complete top-level YAML fragment that can be appended
83
+ * to a spec body.
84
+ */
85
+ export declare function emitDefaultDeployments(input: DeploymentEmissionInput): DeploymentEmissionResult;
86
+ //# sourceMappingURL=deployment-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-emitter.d.ts","sourceRoot":"","sources":["../../src/ai/deployment-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACjF;;;;OAIG;IACH,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAeD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAsI/F"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Deployment-emitter — engines 6.28.0+.
3
+ *
4
+ * After the analyse pipeline assembles the final spec (skeleton + filled
5
+ * action bodies), this emits a deterministic `deployments:` block based
6
+ * on what was extracted. One production environment with one instance
7
+ * per detected controller / service / entity / view.
8
+ *
9
+ * Why this lives in analyse (not in `spv infer`): the inference-engine
10
+ * deployment rules in `entities/src/core/deployments/inference/` are
11
+ * for the from-scratch authoring path. They expand a minimal spec to
12
+ * convention defaults. Analyse is the OPPOSITE — produces a faithful
13
+ * mirror of the codebase. But the analysed spec WITHOUT a deployments
14
+ * block is incomplete in a user-visible way (Dom Williams 2026-05-06:
15
+ * "where does it say I'll have one of these and two of those and wire
16
+ * them up"). This emitter closes that gap with a minimal mechanical
17
+ * mapping users can hand-edit.
18
+ *
19
+ * Output shape (matches `entities/src/core/deployments/schema/`):
20
+ *
21
+ * deployments:
22
+ * production:
23
+ * version: "1.0.0"
24
+ * description: "Default deployment topology emitted by spv analyse..."
25
+ * environment: production
26
+ * instances:
27
+ * controllers:
28
+ * authController:
29
+ * component: "ComponentName"
30
+ * services:
31
+ * authService:
32
+ * component: "ComponentName"
33
+ * storage:
34
+ * userStorage:
35
+ * component: "ComponentName"
36
+ * type: "document"
37
+ * persistence: "durable"
38
+ * views:
39
+ * gamePicker:
40
+ * component: "ComponentName"
41
+ *
42
+ * V1 keeps it minimal: no rateLimit / cache / retry / autoscaling /
43
+ * resource-limits / monitoring / security / infrastructure. Those are
44
+ * meaningful defaults but require manifest-aware decisions; emitting
45
+ * them as `enabled: false` or with arbitrary defaults adds noise without
46
+ * value. The user can layer those in via spec edits or via `spv infer`.
47
+ */
48
+ /**
49
+ * Convert a PascalCase class/entity/view name to a lowercase-first
50
+ * identifier suitable as a deployment-instance key.
51
+ * AuthController → authController
52
+ * GamePicker → gamePicker
53
+ * PaymentService → paymentService
54
+ * GameScreen → gameScreen
55
+ */
56
+ function toInstanceName(pascalName) {
57
+ if (!pascalName)
58
+ return pascalName;
59
+ return pascalName.charAt(0).toLowerCase() + pascalName.slice(1);
60
+ }
61
+ /**
62
+ * Emit a deterministic `deployments:` block from extracted facts.
63
+ * The output is a complete top-level YAML fragment that can be appended
64
+ * to a spec body.
65
+ */
66
+ export function emitDefaultDeployments(input) {
67
+ const { facts, classesByComponent, entityHome } = input;
68
+ // Buckets: component name → instances, keyed by instance name.
69
+ const controllers = [];
70
+ const services = [];
71
+ const storage = [];
72
+ const views = [];
73
+ // Controllers + services from per-component class lists.
74
+ // The skeleton-emitter splits classes into controllers (Controller suffix)
75
+ // vs services (everything else); replicate that here so the deployment
76
+ // instances match the spec's logical layout.
77
+ //
78
+ // GLOBAL dedup of instance names (engines 6.29.4+). Earlier we deduped
79
+ // per-component, but instance names are at the deployment-instances
80
+ // namespace level (top of `instances.controllers`/`instances.services`
81
+ // map keys), so two `GameService` classes in different components would
82
+ // both emit `gameService:` keys — yaml-loads as a duplicated mapping key
83
+ // and validate fails. First-name-wins; the loser is silently dropped
84
+ // (the lost class is still in its component's services block in the
85
+ // spec — only the deployment instance is suppressed).
86
+ const seenGlobalControllerNames = new Set();
87
+ const seenGlobalServiceNames = new Set();
88
+ for (const [bucketKey, classes] of classesByComponent) {
89
+ // Map bucket key → component spec name. The bucket keys may be
90
+ // `_unassigned` (catch-all) or component-suggested names. We use the
91
+ // entityHome map's values to find the canonical spec name; fall
92
+ // back to bucketKey for non-`_unassigned` keys.
93
+ const specName = bucketKey === '_unassigned' ? 'Application' : bucketKey;
94
+ for (const cls of classes) {
95
+ // Skip entries that are also entities — the skeleton-emitter's
96
+ // owner-vs-model dedup keeps only one (model wins), and we mirror
97
+ // that here. Otherwise we'd emit a controller instance for a
98
+ // model that the spec doesn't declare as a controller.
99
+ if (entityHome.has(cls.entityName))
100
+ continue;
101
+ const instanceName = toInstanceName(cls.entityName);
102
+ if (/Controller$/.test(cls.entityName)) {
103
+ if (seenGlobalControllerNames.has(instanceName))
104
+ continue;
105
+ seenGlobalControllerNames.add(instanceName);
106
+ controllers.push({ instanceName, component: specName });
107
+ }
108
+ else {
109
+ if (seenGlobalServiceNames.has(instanceName))
110
+ continue;
111
+ seenGlobalServiceNames.add(instanceName);
112
+ services.push({ instanceName, component: specName });
113
+ }
114
+ }
115
+ }
116
+ // Storage from entities — one instance per entity, attributed to its
117
+ // owning component.
118
+ const seenStorageNames = new Set();
119
+ for (const ent of facts.entities ?? []) {
120
+ const owner = entityHome.get(ent.name);
121
+ if (!owner)
122
+ continue;
123
+ // Convention: <entity>Storage. Matches Dom's reference loosely
124
+ // (`mongoUsers`-style names depend on manifest knowledge we don't
125
+ // have at analyse-time; `userStorage` is the manifest-agnostic shape).
126
+ const instanceName = `${toInstanceName(ent.name)}Storage`;
127
+ if (seenStorageNames.has(instanceName))
128
+ continue;
129
+ seenStorageNames.add(instanceName);
130
+ storage.push({ instanceName, component: owner, entityName: ent.name });
131
+ }
132
+ // Views — one instance per detected view, attributed by source-tree
133
+ // topology. The skeleton-emitter has already done the attribution in
134
+ // its component bodies; we replicate the same logic here. Without a
135
+ // structural sourceDir, we fall back to `Application`.
136
+ const seenViewNames = new Set();
137
+ for (const v of facts.views ?? []) {
138
+ const instanceName = toInstanceName(v.name);
139
+ if (seenViewNames.has(instanceName))
140
+ continue;
141
+ seenViewNames.add(instanceName);
142
+ // Find the component whose structural.sourceDir is a prefix of v.filePath.
143
+ let owner = 'Application';
144
+ for (const c of facts.suggestedComponents ?? []) {
145
+ const sd = c.structural?.sourceDir;
146
+ if (sd && v.filePath.startsWith(sd)) {
147
+ owner = c.suggestedName;
148
+ break;
149
+ }
150
+ }
151
+ views.push({ instanceName, component: owner });
152
+ }
153
+ // Build the YAML. Indented to be appendable to a top-level spec body.
154
+ const lines = [];
155
+ lines.push('deployments:');
156
+ lines.push(' production:');
157
+ lines.push(' version: "1.0.0"');
158
+ lines.push(' description: "Default deployment topology emitted by `spv ai analyse`. One instance per detected controller / service / entity / view. Hand-edit policies (rateLimit, cache, retry, autoscaling) and infrastructure-specific instances (security, monitoring) as needed."');
159
+ lines.push(' environment: production');
160
+ lines.push(' instances:');
161
+ if (controllers.length > 0) {
162
+ lines.push(' controllers:');
163
+ for (const c of controllers) {
164
+ lines.push(` ${c.instanceName}:`);
165
+ lines.push(` component: "${c.component}"`);
166
+ }
167
+ }
168
+ if (services.length > 0) {
169
+ lines.push(' services:');
170
+ for (const s of services) {
171
+ lines.push(` ${s.instanceName}:`);
172
+ lines.push(` component: "${s.component}"`);
173
+ }
174
+ }
175
+ if (storage.length > 0) {
176
+ lines.push(' storage:');
177
+ for (const s of storage) {
178
+ lines.push(` ${s.instanceName}:`);
179
+ lines.push(` component: "${s.component}"`);
180
+ lines.push(' type: "document"');
181
+ lines.push(' persistence: "durable"');
182
+ }
183
+ }
184
+ if (views.length > 0) {
185
+ lines.push(' views:');
186
+ for (const v of views) {
187
+ lines.push(` ${v.instanceName}:`);
188
+ lines.push(` component: "${v.component}"`);
189
+ }
190
+ }
191
+ return {
192
+ deploymentsYaml: lines.join('\n'),
193
+ counts: {
194
+ controllers: controllers.length,
195
+ services: services.length,
196
+ storage: storage.length,
197
+ views: views.length,
198
+ },
199
+ };
200
+ }
201
+ //# sourceMappingURL=deployment-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-emitter.js","sourceRoot":"","sources":["../../src/ai/deployment-emitter.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export { loadPrompt, substitute, assembleSystem, assembleUser, buildRunModel, ru
37
37
  export type { PromptYaml, BuildRunModelOptions, RunPromptOptions, RunPromptResult, } from './prompt-runner.js';
38
38
  export { runAnalyse } from './analyse-runner.js';
39
39
  export type { RunAnalyseOptions, RunAnalyseResult } from './analyse-runner.js';
40
+ export { runBehaviours } from './behaviours-runner.js';
41
+ export type { RunBehavioursOptions, RunBehavioursResult } from './behaviours-runner.js';
40
42
  export { runCreate } from './create-runner.js';
41
43
  export type { RunCreateOptions, RunCreateResult } from './create-runner.js';
42
44
  export { buildRunFolder, caseRunPath, ensureSubdirs, inputDir, factsDir, promptsDir, llmOutputDir, specsDir, projectDir, writeStageSpec, writeProjectReadme, writeManifest, writeScore, writeReadme, SUBDIRS, } from './run-paths.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,cAAc,qBAAqB,CAAC;AAIpC,cAAc,oCAAoC,CAAC;AAGnD,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAIlG,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK3E,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKhD,OAAO,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM/E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAKxF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK5E,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,UAAU,GACX,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGpE,MAAM,WAAW,QAAS,SAAQ,eAAe;IAC/C,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,yEAAyE;IACzE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,cAAM,iBAAkB,YAAW,QAAQ;IACzC,IAAI,SAAQ;IACZ,OAAO,SAAW;IAClB,YAAY,WAAoE;IAEhF,OAAO,CAAC,OAAO,CAAa;IAEtB,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,OAAO,IAAI,UAAU;IAIf,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IA+F1D,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAK3D;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBnF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;CAgClE;AAED,eAAO,MAAM,MAAM,mBAA0B,CAAC;AAC9C,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/ai/index.js CHANGED
@@ -50,6 +50,11 @@ export { loadPrompt, substitute, assembleSystem, assembleUser, buildRunModel, ru
50
50
  // source dir, runs the LLM workflow (facts → analyse → validate → verify
51
51
  // → validate → optional realize), writes the structured run output.
52
52
  export { runAnalyse } from './analyse-runner.js';
53
+ // Behaviours runner — engines 6.29.0+. The LLM-heavy second phase of the
54
+ // analyse/behaviours split. Reads an analysed-spec dir + facts sidecars
55
+ // produced by `runAnalyse({withBehaviours: false})` and fills action
56
+ // bodies via per-action LLM micro-calls. Used by `spv ai behaviours`.
57
+ export { runBehaviours } from './behaviours-runner.js';
53
58
  // Create runner — high-level orchestrator for `spv ai create`. Takes a
54
59
  // natural-language request, runs the LLM workflow (create → validate →
55
60
  // verify-create → validate → optional realize), writes structured output.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Manifest-emitter — engines 6.29.0+.
3
+ *
4
+ * Deterministic replacement for the LLM-driven manifest call in the
5
+ * analyse pipeline. The previous `runManifestCall` shipped detected
6
+ * adapters + a stub `importsList` to an LLM and asked it to pattern-
7
+ * match-and-lookup factory names — a job that doesn't need a model.
8
+ * The LLM was unreliable (output had to be normalized for `specVersion`,
9
+ * occasionally hallucinated factory names that don't exist), and one
10
+ * more LLM call adds latency and cost without any decision quality the
11
+ * source signals don't already give us.
12
+ *
13
+ * What `analyse` knows after prepass:
14
+ * - `meta.adaptersRun` — which detection adapters fired
15
+ * - `entities[].sourceFramework` — per-entity framework signal
16
+ * - `views[]` — presence of React/JSX
17
+ *
18
+ * What the realize engine needs:
19
+ * - A mapping from logical capability names (`api.rest`, `storage.X`,
20
+ * `ui.framework`, `auth.jwt`) to factory names from the engines
21
+ * instance-factory registry.
22
+ *
23
+ * The mapping IS a lookup table. This module IS that lookup table.
24
+ *
25
+ * V1 covers the common cases observed in the corpus:
26
+ * - Express routing → ExpressAPI
27
+ * - NestJS decorators → NestJSAPI
28
+ * - Prisma schema → PrismaDriver
29
+ * - Mongoose / mongodb-native → MongoDBDriver
30
+ * - React Native screens → ReactNativeApp
31
+ * - React DOM → ReactRuntime
32
+ * Edge cases (drizzle, knex, raw pg without prisma, vue, svelte, etc.)
33
+ * fall through to defaults that the user hand-edits. Better than
34
+ * an LLM hallucinating a nonexistent factory name.
35
+ */
36
+ import type { SpecVerseFacts } from '../analyse-prepass/index.js';
37
+ export interface ManifestEmissionInput {
38
+ /** Specverse facts produced by the prepass. */
39
+ facts: SpecVerseFacts;
40
+ /**
41
+ * Optional spec name for the `name:` field. Defaults to a generic
42
+ * placeholder; callers (analyse-runner) typically pass the case name.
43
+ */
44
+ specName?: string;
45
+ }
46
+ export interface ManifestEmissionResult {
47
+ /** The emitted manifest yaml — a complete document including specVersion. */
48
+ manifestYaml: string;
49
+ /** Factory choice per capability — useful for telemetry/REPORT. */
50
+ factoryChoices: Record<string, string>;
51
+ /** Per-choice rationale: which signal drove the pick. Forward-logged. */
52
+ rationale: Record<string, string>;
53
+ }
54
+ /**
55
+ * Emit a deterministic manifest from prepass facts. The output is a
56
+ * complete top-level YAML document (with specVersion) suitable for
57
+ * writing to `manifests/implementation.yaml`.
58
+ */
59
+ export declare function emitManifest(input: ManifestEmissionInput): ManifestEmissionResult;
60
+ //# sourceMappingURL=manifest-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-emitter.d.ts","sourceRoot":"","sources":["../../src/ai/manifest-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,KAAK,EAAE,cAAc,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAwFjF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Manifest-emitter — engines 6.29.0+.
3
+ *
4
+ * Deterministic replacement for the LLM-driven manifest call in the
5
+ * analyse pipeline. The previous `runManifestCall` shipped detected
6
+ * adapters + a stub `importsList` to an LLM and asked it to pattern-
7
+ * match-and-lookup factory names — a job that doesn't need a model.
8
+ * The LLM was unreliable (output had to be normalized for `specVersion`,
9
+ * occasionally hallucinated factory names that don't exist), and one
10
+ * more LLM call adds latency and cost without any decision quality the
11
+ * source signals don't already give us.
12
+ *
13
+ * What `analyse` knows after prepass:
14
+ * - `meta.adaptersRun` — which detection adapters fired
15
+ * - `entities[].sourceFramework` — per-entity framework signal
16
+ * - `views[]` — presence of React/JSX
17
+ *
18
+ * What the realize engine needs:
19
+ * - A mapping from logical capability names (`api.rest`, `storage.X`,
20
+ * `ui.framework`, `auth.jwt`) to factory names from the engines
21
+ * instance-factory registry.
22
+ *
23
+ * The mapping IS a lookup table. This module IS that lookup table.
24
+ *
25
+ * V1 covers the common cases observed in the corpus:
26
+ * - Express routing → ExpressAPI
27
+ * - NestJS decorators → NestJSAPI
28
+ * - Prisma schema → PrismaDriver
29
+ * - Mongoose / mongodb-native → MongoDBDriver
30
+ * - React Native screens → ReactNativeApp
31
+ * - React DOM → ReactRuntime
32
+ * Edge cases (drizzle, knex, raw pg without prisma, vue, svelte, etc.)
33
+ * fall through to defaults that the user hand-edits. Better than
34
+ * an LLM hallucinating a nonexistent factory name.
35
+ */
36
+ /**
37
+ * Emit a deterministic manifest from prepass facts. The output is a
38
+ * complete top-level YAML document (with specVersion) suitable for
39
+ * writing to `manifests/implementation.yaml`.
40
+ */
41
+ export function emitManifest(input) {
42
+ const adapters = new Set(input.facts.meta?.adaptersRun ?? []);
43
+ const entities = input.facts.entities ?? [];
44
+ const views = input.facts.views ?? [];
45
+ const choices = {};
46
+ const rationale = {};
47
+ // ── api.rest — HTTP framework ─────────────────────────────────────
48
+ if (adapters.has('express-routes')) {
49
+ choices['api.rest'] = 'ExpressAPI';
50
+ rationale['api.rest'] = 'express-routes adapter detected Router() + verb calls';
51
+ }
52
+ else if (adapters.has('typescript-decorators')) {
53
+ // Decorator-rich codebases are most likely NestJS in our corpus.
54
+ // (TypeORM-only entities with no controller decorators wouldn't run
55
+ // this path, but if they did, NestJSAPI is still a reasonable default
56
+ // since it ships off NestJS conventions.)
57
+ choices['api.rest'] = 'NestJSAPI';
58
+ rationale['api.rest'] = 'typescript-decorators adapter — NestJS is the dominant decorator-based REST framework in the corpus';
59
+ }
60
+ else {
61
+ // Default — most analyse targets are HTTP services. Express is the
62
+ // most common low-friction choice.
63
+ choices['api.rest'] = 'ExpressAPI';
64
+ rationale['api.rest'] = 'no framework signal detected; defaulting to ExpressAPI (most common in the corpus)';
65
+ }
66
+ // ── storage — relational vs document ──────────────────────────────
67
+ if (adapters.has('typescript-prisma')) {
68
+ choices['storage.relational'] = 'PrismaDriver';
69
+ rationale['storage.relational'] = 'typescript-prisma adapter detected schema.prisma';
70
+ }
71
+ else {
72
+ // Without a Prisma signal, document storage is the analyse-time
73
+ // default. Codebases extracted via TS interfaces typically use
74
+ // mongoose / mongodb-native. The user can hand-edit to PostgresNativeDriver
75
+ // or others if the actual storage differs.
76
+ choices['storage.documents'] = 'MongoDBDriver';
77
+ rationale['storage.documents'] = 'no prisma schema detected; defaulting to document-store (MongoDBDriver)';
78
+ }
79
+ // ── ui.framework — React vs React Native vs none ──────────────────
80
+ if (adapters.has('react-views')) {
81
+ // RN signal: any view file path contains `react-native` or has
82
+ // `Screen` in the name (the screen convention).
83
+ const isReactNative = views.some((v) => v.filePath.includes('react-native') || v.filePath.includes('-mobile') || v.isScreen);
84
+ if (isReactNative) {
85
+ choices['ui.framework'] = 'ReactNativeApp';
86
+ rationale['ui.framework'] = 'react-views adapter detected RN screens or mobile-app structure';
87
+ }
88
+ else {
89
+ choices['ui.framework'] = 'ReactRuntime';
90
+ rationale['ui.framework'] = 'react-views adapter detected JSX components without RN signals';
91
+ }
92
+ }
93
+ // ── auth.jwt — JWT auth presence ──────────────────────────────────
94
+ // Heuristic: any RefreshToken or AuthService entity → JWT path.
95
+ // This is a weak signal but better than asking an LLM to guess.
96
+ const entityNames = new Set(entities.map((e) => e.name.toLowerCase()));
97
+ const hasJwtSignal = entityNames.has('refreshtoken')
98
+ || entityNames.has('authsession')
99
+ || entityNames.has('authservice')
100
+ || entityNames.has('apitoken');
101
+ if (hasJwtSignal) {
102
+ // JWT auth in idle-meta-style monorepos uses jsonwebtoken with
103
+ // express middleware. The api.rest factory (ExpressAPI / NestJSAPI)
104
+ // also handles auth.jwt by default. We still emit the mapping so
105
+ // the realize engine doesn't have to guess.
106
+ choices['auth.jwt'] = choices['api.rest'] ?? 'ExpressAPI';
107
+ rationale['auth.jwt'] = 'detected RefreshToken/AuthSession entity — using api.rest factory for JWT path';
108
+ }
109
+ // Build the yaml document.
110
+ const lines = [];
111
+ lines.push('specVersion: "1.0"');
112
+ lines.push(`name: ${input.specName ?? 'AnalysedSpec'}`);
113
+ lines.push('');
114
+ lines.push('capabilityMappings:');
115
+ // Stable ordering — sort keys for reproducibility.
116
+ for (const cap of Object.keys(choices).sort()) {
117
+ lines.push(` ${cap}: ${choices[cap]}`);
118
+ }
119
+ lines.push('');
120
+ return {
121
+ manifestYaml: lines.join('\n'),
122
+ factoryChoices: choices,
123
+ rationale,
124
+ };
125
+ }
126
+ //# sourceMappingURL=manifest-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-emitter.js","sourceRoot":"","sources":["../../src/ai/manifest-emitter.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export interface SkeletonEmissionDecision {
34
34
  /** Free-form note for human readers. */
35
35
  note?: string;
36
36
  }
37
- export type SkeletonEmissionRule = 'header-component-from-suggested' | 'header-component-default-when-none-suggested' | 'model-from-detected-entity' | 'model-attribute-from-detected-attribute' | 'model-relationship-from-detected-relationship' | 'model-lifecycle-from-detected-lifecycle' | 'model-lifecycle-transition-from-detected-transition' | 'controller-from-walked-class' | 'service-from-walked-class' | 'cured-op-from-level1-curved-method' | 'action-stub-from-business-method' | 'event-from-detected-emit' | 'comment-skeleton-marker';
37
+ export type SkeletonEmissionRule = 'header-component-from-suggested' | 'header-component-default-when-none-suggested' | 'model-from-detected-entity' | 'model-attribute-from-detected-attribute' | 'model-relationship-from-detected-relationship' | 'model-lifecycle-from-detected-lifecycle' | 'model-lifecycle-transition-from-detected-transition' | 'controller-from-walked-class' | 'service-from-walked-class' | 'cured-op-from-level1-curved-method' | 'action-stub-from-business-method' | 'event-from-detected-emit' | 'view-from-react-component' | 'view-description-from-react-kind' | 'comment-skeleton-marker';
38
38
  export interface SkeletonProvenance {
39
39
  schemaVersion: '1.0';
40
40
  /** When the skeleton was emitted (ISO timestamp). */
@@ -90,5 +90,15 @@ export interface SkeletonProvenance {
90
90
  export declare function emitFaithfulSkeleton(facts: SpecVerseFacts): {
91
91
  skeleton: string;
92
92
  provenance: SkeletonProvenance;
93
+ /**
94
+ * Side products from skeleton emission that downstream emitters
95
+ * (deployment-emitter, future enhance pass) can reuse instead of
96
+ * recomputing the attribution logic. Returned at engines 6.28.0+.
97
+ */
98
+ classesByComponent: Map<string, Array<{
99
+ entityName: string;
100
+ filePath: string;
101
+ }>>;
102
+ entityHome: Map<string, string>;
93
103
  };
94
104
  //# sourceMappingURL=skeleton-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-emitter.d.ts","sourceRoot":"","sources":["../../src/ai/skeleton-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,cAAc,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACnE,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAC5B,iCAAiC,GACjC,8CAA8C,GAC9C,4BAA4B,GAC5B,yCAAyC,GACzC,+CAA+C,GAC/C,yCAAyC,GACzC,qDAAqD,GACrD,8BAA8B,GAC9B,2BAA2B,GAC3B,oCAAoC,GACpC,kCAAkC,GAClC,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,KAAK,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,mDAAmD;IACnD,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC;;sDAEkD;IAClD,WAAW,EAAE,KAAK,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;QAClE,sEAAsE;QACtE,kBAAkB,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/D,4EAA4E;QAC5E,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,mBAAmB,GAAG,UAAU,CAAC;QACzC,6BAA6B,CAAC,EAAE,MAAM,CAAC;KACxC,CAAC,CAAC;CACJ;AAmID;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;CAChC,CAoFA"}
1
+ {"version":3,"file":"skeleton-emitter.d.ts","sourceRoot":"","sources":["../../src/ai/skeleton-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,cAAc,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACnE,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAC5B,iCAAiC,GACjC,8CAA8C,GAC9C,4BAA4B,GAC5B,yCAAyC,GACzC,+CAA+C,GAC/C,yCAAyC,GACzC,qDAAqD,GACrD,8BAA8B,GAC9B,2BAA2B,GAC3B,oCAAoC,GACpC,kCAAkC,GAClC,0BAA0B,GAC1B,2BAA2B,GAC3B,kCAAkC,GAClC,yBAAyB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,KAAK,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,mDAAmD;IACnD,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC;;sDAEkD;IAClD,WAAW,EAAE,KAAK,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;QAClE,sEAAsE;QACtE,kBAAkB,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/D,4EAA4E;QAC5E,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,mBAAmB,GAAG,UAAU,CAAC;QACzC,6BAA6B,CAAC,EAAE,MAAM,CAAC;KACxC,CAAC,CAAC;CACJ;AAmID;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;IAC/B;;;;OAIG;IACH,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACjF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAkHA"}