@specverse/engines 4.1.12 → 4.1.14
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/assets/prompts/core/standard/v9/behavior.prompt.yaml +120 -0
- package/dist/ai/behavior-ai-service.d.ts +63 -0
- package/dist/ai/behavior-ai-service.d.ts.map +1 -0
- package/dist/ai/behavior-ai-service.js +203 -0
- package/dist/ai/behavior-ai-service.js.map +1 -0
- package/dist/ai/index.d.ts +27 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +30 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/inference/index.d.ts.map +1 -1
- package/dist/inference/index.js +1 -0
- package/dist/inference/index.js.map +1 -1
- package/dist/inference/logical/logical-engine.d.ts.map +1 -1
- package/dist/inference/logical/logical-engine.js +3 -0
- package/dist/inference/logical/logical-engine.js.map +1 -1
- package/dist/libs/instance-factories/cli/templates/commander/cli-entry-generator.js +12 -11
- package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +21 -5
- package/dist/libs/instance-factories/communication/templates/eventemitter/bus-generator.js +31 -30
- package/dist/libs/instance-factories/communication/templates/eventemitter/types-generator.js +79 -0
- package/dist/libs/instance-factories/communication/templates/eventemitter/websocket-bridge-generator.js +96 -0
- package/dist/libs/instance-factories/controllers/templates/fastify/routes-generator.js +25 -9
- package/dist/libs/instance-factories/controllers/templates/fastify/server-generator.js +20 -2
- package/dist/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.js +141 -0
- package/dist/libs/instance-factories/services/templates/prisma/behavior-generator.js +62 -42
- package/dist/libs/instance-factories/services/templates/prisma/controller-generator.js +39 -7
- package/dist/libs/instance-factories/services/templates/prisma/step-conventions.js +101 -84
- package/dist/parser/processors/AttributeProcessor.d.ts.map +1 -1
- package/dist/parser/processors/AttributeProcessor.js +13 -6
- package/dist/parser/processors/AttributeProcessor.js.map +1 -1
- package/dist/parser/processors/ModelProcessor.d.ts.map +1 -1
- package/dist/parser/processors/ModelProcessor.js +7 -0
- package/dist/parser/processors/ModelProcessor.js.map +1 -1
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +54 -0
- package/dist/realize/index.js.map +1 -1
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.ts +12 -11
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +21 -5
- package/libs/instance-factories/communication/event-emitter.yaml +16 -12
- package/libs/instance-factories/communication/templates/eventemitter/bus-generator.ts +33 -35
- package/libs/instance-factories/communication/templates/eventemitter/types-generator.ts +95 -0
- package/libs/instance-factories/communication/templates/eventemitter/websocket-bridge-generator.ts +105 -0
- package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +32 -11
- package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +23 -2
- package/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.ts +211 -0
- package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +86 -40
- package/libs/instance-factories/services/templates/prisma/controller-generator.ts +54 -8
- package/libs/instance-factories/services/templates/prisma/step-conventions.ts +166 -85
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logical-engine.js","sourceRoot":"","sources":["../../../src/inference/logical/logical-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logical-engine.js","sourceRoot":"","sources":["../../../src/inference/logical/logical-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,19 +25,20 @@ import { fileURLToPath } from 'url';
|
|
|
25
25
|
import { dirname, join } from 'path';
|
|
26
26
|
${imports}
|
|
27
27
|
|
|
28
|
-
// Read version
|
|
28
|
+
// Read version: env var (set by bin entry point) or walk up to find package.json
|
|
29
29
|
const __filename = fileURLToPath(import.meta.url);
|
|
30
30
|
const __dirname = dirname(__filename);
|
|
31
|
-
let _version = '${version}';
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} catch { /* use fallback */ }
|
|
31
|
+
let _version = process.env.SPECVERSE_VERSION || '${version}';
|
|
32
|
+
if (_version === '${version}') {
|
|
33
|
+
try {
|
|
34
|
+
for (const rel of ['../../package.json', '../../../package.json', '../../../../package.json', '../../../../../package.json']) {
|
|
35
|
+
try {
|
|
36
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, rel), 'utf8'));
|
|
37
|
+
if (pkg.name === '@specverse/self' && pkg.version) { _version = pkg.version; break; }
|
|
38
|
+
} catch { /* try next */ }
|
|
39
|
+
}
|
|
40
|
+
} catch { /* use fallback */ }
|
|
41
|
+
}
|
|
41
42
|
|
|
42
43
|
const program = new Command();
|
|
43
44
|
|
|
@@ -227,6 +227,22 @@ import type { ParserEngine, InferenceEngine, RealizeEngine } from '@specverse/ty
|
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
+
// Merge custom actions from original spec controllers into inferred controllers
|
|
231
|
+
// Inference generates standard CURED; custom actions (openPoll, castVote) come from the spec
|
|
232
|
+
const origControllers = Array.isArray((origComponent as any).controllers)
|
|
233
|
+
? (origComponent as any).controllers
|
|
234
|
+
: Object.values((origComponent as any).controllers || {});
|
|
235
|
+
const inferredControllers = componentData.controllers || {};
|
|
236
|
+
for (const origCtrl of origControllers) {
|
|
237
|
+
const ctrlName = (origCtrl as any).name;
|
|
238
|
+
if (ctrlName && (origCtrl as any).actions) {
|
|
239
|
+
const inferredCtrl = inferredControllers[ctrlName];
|
|
240
|
+
if (inferredCtrl) {
|
|
241
|
+
inferredCtrl.actions = { ...(inferredCtrl.actions || {}), ...(origCtrl as any).actions };
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
230
246
|
// Inject key as name into entity maps, and expand convention-format attributes
|
|
231
247
|
// Iterate all object-valued sections (not hardcoded \u2014 covers any entity type)
|
|
232
248
|
const entitySections = Object.keys(componentData).filter(k =>
|
|
@@ -267,7 +283,7 @@ import type { ParserEngine, InferenceEngine, RealizeEngine } from '@specverse/ty
|
|
|
267
283
|
const inferredSpec = { ...componentData, componentName, components: inferredYaml?.components || {} };
|
|
268
284
|
|
|
269
285
|
// Realize \u2014 let the realize engine handle its own library
|
|
270
|
-
const manifestPath = options.manifest || resolve(process.cwd(), 'manifests/implementation.yaml');
|
|
286
|
+
const manifestPath = options.manifest || resolve((process.env.SPECVERSE_USER_CWD || process.cwd()), 'manifests/implementation.yaml');
|
|
271
287
|
if (!existsSync(manifestPath)) {
|
|
272
288
|
console.error('Manifest not found:', manifestPath);
|
|
273
289
|
process.exit(1);
|
|
@@ -293,9 +309,9 @@ import type { ParserEngine, InferenceEngine, RealizeEngine } from '@specverse/ty
|
|
|
293
309
|
|
|
294
310
|
const realizeEngine = registry.getEngineForCapability('realize') as RealizeEngine;
|
|
295
311
|
if (!realizeEngine) { console.error('No realize engine found.'); process.exit(1); }
|
|
296
|
-
await realizeEngine.initialize({ manifestPath: effectiveManifestPath, workingDir: process.cwd() });
|
|
312
|
+
await realizeEngine.initialize({ manifestPath: effectiveManifestPath, workingDir: (process.env.SPECVERSE_USER_CWD || process.cwd()) });
|
|
297
313
|
|
|
298
|
-
const outputDir = options.output || resolve(process.cwd(), 'generated/code');
|
|
314
|
+
const outputDir = options.output || resolve((process.env.SPECVERSE_USER_CWD || process.cwd()), 'generated/code');
|
|
299
315
|
console.log('Realizing ' + type + ' from ' + file + '...');
|
|
300
316
|
await (realizeEngine as any).realizeAll(inferredSpec, outputDir);
|
|
301
317
|
|
|
@@ -370,7 +386,7 @@ import { fileURLToPath } from 'url';`,
|
|
|
370
386
|
process.exit(1);
|
|
371
387
|
}
|
|
372
388
|
|
|
373
|
-
const destDir = resolve(process.cwd(), projectName);
|
|
389
|
+
const destDir = resolve((process.env.SPECVERSE_USER_CWD || process.cwd()), projectName);
|
|
374
390
|
if (existsSync(destDir)) {
|
|
375
391
|
console.error('Directory already exists: ' + destDir);
|
|
376
392
|
process.exit(1);
|
|
@@ -603,7 +619,7 @@ import type { ParserEngine } from '@specverse/types';`,
|
|
|
603
619
|
|
|
604
620
|
// Access ImportResolver cache via parser
|
|
605
621
|
const resolverModule = await import('@specverse/engines/parser');
|
|
606
|
-
const resolver = new resolverModule.ImportResolver({ basePath: process.cwd() });
|
|
622
|
+
const resolver = new resolverModule.ImportResolver({ basePath: (process.env.SPECVERSE_USER_CWD || process.cwd()) });
|
|
607
623
|
|
|
608
624
|
const cacheDir = (resolver as any).getCacheDir ? (resolver as any).getCacheDir() : null;
|
|
609
625
|
if (options.stats) {
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
function generateEventBus(context) {
|
|
2
2
|
const { spec } = context;
|
|
3
|
-
const
|
|
3
|
+
const hasEvents = spec.events && Object.keys(spec.events).length > 0;
|
|
4
|
+
const models = spec.models ? Object.keys(spec.models) : [];
|
|
4
5
|
return `/**
|
|
5
6
|
* Event Bus
|
|
6
|
-
*
|
|
7
|
+
* Typed in-memory event bus using EventEmitter3
|
|
7
8
|
* Generated from SpecVerse specification
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
import EventEmitter from 'eventemitter3';
|
|
12
|
+
${hasEvents || models.length > 0 ? `import type { EventPayloads, EventName } from './event-types.js';` : ""}
|
|
11
13
|
|
|
12
|
-
//
|
|
13
|
-
${
|
|
14
|
+
// Re-export types for consumers
|
|
15
|
+
${hasEvents || models.length > 0 ? `export type { EventPayloads, EventName } from './event-types.js';` : ""}
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Event history entry
|
|
19
|
+
*/
|
|
20
|
+
interface EventHistoryEntry {
|
|
21
|
+
event: string;
|
|
22
|
+
payload: any;
|
|
23
|
+
timestamp: Date;
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
/**
|
|
@@ -22,15 +28,14 @@ ${events.map((event) => ` ${event} = '${event}',`).join("\n")}
|
|
|
22
28
|
*/
|
|
23
29
|
class EventBus extends EventEmitter {
|
|
24
30
|
private static instance: EventBus;
|
|
31
|
+
private history: EventHistoryEntry[] = [];
|
|
32
|
+
private maxHistory = 1000;
|
|
25
33
|
|
|
26
34
|
private constructor() {
|
|
27
35
|
super();
|
|
28
|
-
this.setMaxListeners(100);
|
|
36
|
+
this.setMaxListeners(100);
|
|
29
37
|
}
|
|
30
38
|
|
|
31
|
-
/**
|
|
32
|
-
* Get singleton instance
|
|
33
|
-
*/
|
|
34
39
|
public static getInstance(): EventBus {
|
|
35
40
|
if (!EventBus.instance) {
|
|
36
41
|
EventBus.instance = new EventBus();
|
|
@@ -39,37 +44,33 @@ class EventBus extends EventEmitter {
|
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
/**
|
|
42
|
-
* Publish
|
|
47
|
+
* Publish a typed event
|
|
43
48
|
*/
|
|
44
|
-
public publish<
|
|
45
|
-
|
|
49
|
+
public publish<K extends string>(event: K, payload: K extends keyof EventPayloads ? EventPayloads[K] : any): void {
|
|
50
|
+
this.history.push({ event, payload, timestamp: new Date() });
|
|
51
|
+
if (this.history.length > this.maxHistory) this.history.shift();
|
|
46
52
|
this.emit(event, payload);
|
|
47
53
|
}
|
|
48
54
|
|
|
49
55
|
/**
|
|
50
|
-
* Subscribe to
|
|
56
|
+
* Subscribe to a typed event
|
|
51
57
|
*/
|
|
52
|
-
public subscribe<
|
|
53
|
-
event:
|
|
54
|
-
handler: (payload:
|
|
58
|
+
public subscribe<K extends string>(
|
|
59
|
+
event: K,
|
|
60
|
+
handler: (payload: K extends keyof EventPayloads ? EventPayloads[K] : any) => void | Promise<void>
|
|
55
61
|
): () => void {
|
|
56
|
-
console.log(\`[EventBus] Subscribing to event: \${event}\`);
|
|
57
62
|
this.on(event, handler);
|
|
58
|
-
|
|
59
|
-
// Return unsubscribe function
|
|
60
|
-
return () => {
|
|
61
|
-
this.off(event, handler);
|
|
62
|
-
};
|
|
63
|
+
return () => { this.off(event, handler); };
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
/**
|
|
66
|
-
*
|
|
67
|
+
* Get event history
|
|
67
68
|
*/
|
|
68
|
-
public
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
public getHistory(eventName?: string, limit = 50): EventHistoryEntry[] {
|
|
70
|
+
const filtered = eventName
|
|
71
|
+
? this.history.filter(e => e.event === eventName)
|
|
72
|
+
: this.history;
|
|
73
|
+
return filtered.slice(-limit);
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
function tsType(specType) {
|
|
2
|
+
const map = {
|
|
3
|
+
String: "string",
|
|
4
|
+
Text: "string",
|
|
5
|
+
Email: "string",
|
|
6
|
+
URL: "string",
|
|
7
|
+
Integer: "number",
|
|
8
|
+
Float: "number",
|
|
9
|
+
Number: "number",
|
|
10
|
+
Decimal: "number",
|
|
11
|
+
Money: "number",
|
|
12
|
+
Boolean: "boolean",
|
|
13
|
+
Date: "string",
|
|
14
|
+
DateTime: "string",
|
|
15
|
+
Timestamp: "string",
|
|
16
|
+
UUID: "string",
|
|
17
|
+
Object: "Record<string, any>",
|
|
18
|
+
Array: "any[]"
|
|
19
|
+
};
|
|
20
|
+
return map[specType] || "any";
|
|
21
|
+
}
|
|
22
|
+
function generateEventTypes(context) {
|
|
23
|
+
const { spec } = context;
|
|
24
|
+
const events = spec.events && typeof spec.events === "object" ? Object.entries(spec.events) : [];
|
|
25
|
+
if (events.length === 0) {
|
|
26
|
+
return `/**
|
|
27
|
+
* Event Types \u2014 no events defined in specification
|
|
28
|
+
*/
|
|
29
|
+
export type EventPayloads = Record<string, any>;
|
|
30
|
+
`;
|
|
31
|
+
}
|
|
32
|
+
const interfaces = [];
|
|
33
|
+
const payloadMapEntries = [];
|
|
34
|
+
for (const [eventName, eventDef] of events) {
|
|
35
|
+
const def = eventDef;
|
|
36
|
+
const attrs = def.attributes || def.payload || {};
|
|
37
|
+
const attrEntries = Array.isArray(attrs) ? attrs.map((a) => [a.name, a]) : Object.entries(attrs);
|
|
38
|
+
const fields = attrEntries.map(([name, attrDef]) => {
|
|
39
|
+
const type = typeof attrDef === "string" ? tsType(attrDef.split(" ")[0]) : tsType(attrDef?.type || "String");
|
|
40
|
+
const required = typeof attrDef === "string" ? attrDef.includes("required") : attrDef?.required;
|
|
41
|
+
return ` ${name}${required ? "" : "?"}: ${type};`;
|
|
42
|
+
});
|
|
43
|
+
interfaces.push(`export interface ${eventName}Payload {
|
|
44
|
+
${fields.join("\n")}
|
|
45
|
+
}`);
|
|
46
|
+
payloadMapEntries.push(` ${eventName}: ${eventName}Payload;`);
|
|
47
|
+
}
|
|
48
|
+
const models = spec.models ? Object.keys(spec.models) : [];
|
|
49
|
+
for (const model of models) {
|
|
50
|
+
for (const suffix of ["Created", "Updated", "Deleted", "Evolved"]) {
|
|
51
|
+
const name = `${model}${suffix}`;
|
|
52
|
+
if (!payloadMapEntries.some((e) => e.includes(name))) {
|
|
53
|
+
payloadMapEntries.push(` ${name}: { id: string; timestamp: string; [key: string]: any };`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return `/**
|
|
58
|
+
* Event Payload Types
|
|
59
|
+
* Generated from SpecVerse specification
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
${interfaces.join("\n\n")}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Map of all event names to their payload types
|
|
66
|
+
*/
|
|
67
|
+
export type EventPayloads = {
|
|
68
|
+
${payloadMapEntries.join("\n")}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* All known event names
|
|
73
|
+
*/
|
|
74
|
+
export type EventName = keyof EventPayloads;
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
export {
|
|
78
|
+
generateEventTypes as default
|
|
79
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
function generateWebSocketBridge(context) {
|
|
2
|
+
const { spec } = context;
|
|
3
|
+
const models = spec.models ? Object.keys(spec.models) : [];
|
|
4
|
+
const specEvents = spec.events ? Object.keys(spec.events) : [];
|
|
5
|
+
const curedEvents = models.flatMap(
|
|
6
|
+
(m) => ["Created", "Updated", "Deleted", "Evolved"].map((s) => `${m}${s}`)
|
|
7
|
+
);
|
|
8
|
+
const allEvents = [.../* @__PURE__ */ new Set([...specEvents, ...curedEvents])];
|
|
9
|
+
return `/**
|
|
10
|
+
* WebSocket Bridge
|
|
11
|
+
* Bridges the event bus to frontend clients for real-time updates.
|
|
12
|
+
* Generated from SpecVerse specification
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { FastifyInstance } from 'fastify';
|
|
16
|
+
import type { WebSocket } from '@fastify/websocket';
|
|
17
|
+
import { eventBus } from './eventBus.js';
|
|
18
|
+
|
|
19
|
+
interface ClientSubscription {
|
|
20
|
+
ws: WebSocket;
|
|
21
|
+
events: Set<string>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const clients = new Map<WebSocket, ClientSubscription>();
|
|
25
|
+
|
|
26
|
+
// All events this bridge knows about
|
|
27
|
+
const ALL_EVENTS = ${JSON.stringify(allEvents, null, 2)};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Register WebSocket bridge with Fastify
|
|
31
|
+
*/
|
|
32
|
+
export async function registerWebSocketBridge(fastify: FastifyInstance): Promise<void> {
|
|
33
|
+
// Register @fastify/websocket plugin
|
|
34
|
+
const websocketPlugin = await import('@fastify/websocket');
|
|
35
|
+
await fastify.register(websocketPlugin.default || websocketPlugin);
|
|
36
|
+
|
|
37
|
+
// WebSocket route
|
|
38
|
+
fastify.get('/ws', { websocket: true }, (socket: WebSocket) => {
|
|
39
|
+
const subscription: ClientSubscription = { ws: socket, events: new Set() };
|
|
40
|
+
clients.set(socket, subscription);
|
|
41
|
+
|
|
42
|
+
socket.on('message', (raw: Buffer) => {
|
|
43
|
+
try {
|
|
44
|
+
const msg = JSON.parse(raw.toString());
|
|
45
|
+
|
|
46
|
+
if (msg.type === 'subscribe' && msg.event) {
|
|
47
|
+
subscription.events.add(msg.event);
|
|
48
|
+
socket.send(JSON.stringify({ type: 'subscribed', event: msg.event }));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (msg.type === 'unsubscribe' && msg.event) {
|
|
52
|
+
subscription.events.delete(msg.event);
|
|
53
|
+
socket.send(JSON.stringify({ type: 'unsubscribed', event: msg.event }));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (msg.type === 'subscribe-all') {
|
|
57
|
+
ALL_EVENTS.forEach(e => subscription.events.add(e));
|
|
58
|
+
socket.send(JSON.stringify({ type: 'subscribed-all', events: ALL_EVENTS }));
|
|
59
|
+
}
|
|
60
|
+
} catch { /* ignore malformed messages */ }
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
socket.on('close', () => {
|
|
64
|
+
clients.delete(socket);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Send initial connection confirmation
|
|
68
|
+
socket.send(JSON.stringify({
|
|
69
|
+
type: 'connected',
|
|
70
|
+
availableEvents: ALL_EVENTS,
|
|
71
|
+
}));
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Subscribe to all events and broadcast to interested clients
|
|
75
|
+
for (const eventName of ALL_EVENTS) {
|
|
76
|
+
eventBus.subscribe(eventName, (payload: any) => {
|
|
77
|
+
const message = JSON.stringify({
|
|
78
|
+
type: 'event',
|
|
79
|
+
event: eventName,
|
|
80
|
+
payload,
|
|
81
|
+
timestamp: new Date().toISOString(),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
for (const [ws, sub] of clients) {
|
|
85
|
+
if (sub.events.has(eventName) && ws.readyState === 1) {
|
|
86
|
+
try { ws.send(message); } catch { /* client disconnected */ }
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
`;
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
generateWebSocketBridge as default
|
|
96
|
+
};
|
|
@@ -16,6 +16,20 @@ function generateFastifyRoutes(context) {
|
|
|
16
16
|
endpoints = curedToEndpoints(controller.cured, modelName);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
if (controller.actions) {
|
|
20
|
+
if (!endpoints) endpoints = [];
|
|
21
|
+
for (const [actionName, action] of Object.entries(controller.actions)) {
|
|
22
|
+
const params = action.parameters || {};
|
|
23
|
+
const hasIdParam = Object.keys(params).some((p) => p === "id" || p === `${modelName?.charAt(0).toLowerCase()}${modelName?.slice(1)}Id`);
|
|
24
|
+
endpoints.push({
|
|
25
|
+
operation: actionName,
|
|
26
|
+
method: "POST",
|
|
27
|
+
path: hasIdParam ? `/:id/${actionName}` : `/${actionName}`,
|
|
28
|
+
parameters: params,
|
|
29
|
+
description: action.description || `Custom action: ${actionName}`
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
19
33
|
if (!endpoints || endpoints.length === 0) {
|
|
20
34
|
console.warn(`Warning: Controller ${controllerName} has no endpoints. Generating empty routes file.`);
|
|
21
35
|
}
|
|
@@ -76,7 +90,7 @@ function generateRouteHandler(endpoint, modelName, handlerName, isModelControlle
|
|
|
76
90
|
}
|
|
77
91
|
const method = endpoint.method?.toLowerCase() || inferHttpMethod(operation);
|
|
78
92
|
const path = inferPath(operation, endpoint);
|
|
79
|
-
const handler = generateHandlerBody(operation, modelName, handlerName, isModelController, implType);
|
|
93
|
+
const handler = generateHandlerBody(operation, modelName, handlerName, isModelController, implType, endpoint);
|
|
80
94
|
let route = `// ${operation} ${modelName}
|
|
81
95
|
`;
|
|
82
96
|
route += `fastify.${method}('${path}', {
|
|
@@ -111,7 +125,7 @@ function generateRouteHandler(endpoint, modelName, handlerName, isModelControlle
|
|
|
111
125
|
route += `});`;
|
|
112
126
|
return route;
|
|
113
127
|
}
|
|
114
|
-
function generateHandlerBody(operation, modelName, handlerName, isModelController, implType) {
|
|
128
|
+
function generateHandlerBody(operation, modelName, handlerName, isModelController, implType, endpoint) {
|
|
115
129
|
const rawLowerModel = modelName?.toLowerCase() || "item";
|
|
116
130
|
const RESERVED_WORDS = /* @__PURE__ */ new Set(["import", "export", "default", "class", "function", "return", "delete", "new", "this", "switch", "case", "break", "continue", "for", "while", "do", "if", "else", "try", "catch", "finally", "throw", "typeof", "instanceof", "in", "of", "let", "const", "var", "void", "with", "yield", "async", "await", "enum", "implements", "interface", "package", "private", "protected", "public", "static", "super", "extends"]);
|
|
117
131
|
const lowerModel = RESERVED_WORDS.has(rawLowerModel) ? `${rawLowerModel}Item` : rawLowerModel;
|
|
@@ -199,16 +213,20 @@ function generateHandlerBody(operation, modelName, handlerName, isModelControlle
|
|
|
199
213
|
message: error instanceof Error ? error.message : String(error)
|
|
200
214
|
});
|
|
201
215
|
}`;
|
|
202
|
-
default:
|
|
216
|
+
default: {
|
|
217
|
+
const paramNames = endpoint?.parameters ? Object.keys(endpoint.parameters) : [];
|
|
218
|
+
const callArgs = paramNames.length > 0 ? paramNames.map((p) => `body.${p}`).join(", ") : "body";
|
|
203
219
|
return `try {
|
|
204
|
-
const
|
|
205
|
-
|
|
220
|
+
const body = (request.body || {}) as Record<string, any>;
|
|
221
|
+
const result = await handler.${operation}(${callArgs});
|
|
222
|
+
return reply.send(result || { success: true });
|
|
206
223
|
} catch (error) {
|
|
207
224
|
return reply.status(400).send({
|
|
208
225
|
error: 'Failed to execute ${operation}',
|
|
209
226
|
message: error instanceof Error ? error.message : String(error)
|
|
210
227
|
});
|
|
211
228
|
}`;
|
|
229
|
+
}
|
|
212
230
|
}
|
|
213
231
|
}
|
|
214
232
|
function inferOperationFromMethodAndPath(method, path) {
|
|
@@ -227,10 +245,8 @@ function inferHttpMethod(operation) {
|
|
|
227
245
|
return sharedInferHttpMethod(operation);
|
|
228
246
|
}
|
|
229
247
|
function inferPath(operation, endpoint) {
|
|
230
|
-
if (endpoint?.path
|
|
231
|
-
|
|
232
|
-
const lastPart = pathParts[pathParts.length - 1];
|
|
233
|
-
return `/${lastPart}`;
|
|
248
|
+
if (endpoint?.path) {
|
|
249
|
+
return endpoint.path;
|
|
234
250
|
}
|
|
235
251
|
return sharedInferPath(operation);
|
|
236
252
|
}
|
|
@@ -10,6 +10,12 @@ function generateFastifyServer(context) {
|
|
|
10
10
|
const path = deriveBasePath(name);
|
|
11
11
|
return ` await fastify.register(${name}Routes, { prefix: '${path}', controllers: { ${name}Controller: new (await import('./controllers/${name}Controller.js')).${name}Controller() } });`;
|
|
12
12
|
}).join("\n");
|
|
13
|
+
const specEvents = spec.events ? Object.keys(spec.events) : [];
|
|
14
|
+
const hasEvents = specEvents.length > 0 || modelNames.length > 0;
|
|
15
|
+
const servicesList = spec.services ? Object.keys(spec.services) : [];
|
|
16
|
+
const serviceImports = servicesList.map(
|
|
17
|
+
(name) => `import './${name.charAt(0).toLowerCase() + name.slice(1)}.js'; // Initialize ${name} event subscriptions`
|
|
18
|
+
);
|
|
13
19
|
return `/**
|
|
14
20
|
* Fastify Server
|
|
15
21
|
* Generated from SpecVerse specification
|
|
@@ -18,6 +24,8 @@ function generateFastifyServer(context) {
|
|
|
18
24
|
import Fastify from 'fastify';
|
|
19
25
|
import cors from '@fastify/cors';
|
|
20
26
|
import { PrismaClient } from '@prisma/client';
|
|
27
|
+
${hasEvents ? `import { eventBus } from './events/eventBus.js';
|
|
28
|
+
import { registerWebSocketBridge } from './events/websocket-bridge.js';` : ""}
|
|
21
29
|
|
|
22
30
|
// Initialize Prisma
|
|
23
31
|
export const prisma = new PrismaClient();
|
|
@@ -42,13 +50,19 @@ fastify.get('/api/spec', async () => embeddedSpec);
|
|
|
42
50
|
fastify.get('/api/runtime/info', async () => ({
|
|
43
51
|
controllers: ${JSON.stringify(modelNames.map((n) => `${n}Controller`))},
|
|
44
52
|
models: ${JSON.stringify(modelNames)},
|
|
45
|
-
events:
|
|
46
|
-
services:
|
|
53
|
+
events: ${JSON.stringify(specEvents)},
|
|
54
|
+
services: ${JSON.stringify(servicesList)}
|
|
47
55
|
}));
|
|
48
56
|
|
|
57
|
+
${hasEvents ? `// Event history endpoint
|
|
58
|
+
fastify.get('/api/events', async () => eventBus.getHistory());` : ""}
|
|
59
|
+
|
|
49
60
|
// Register routes
|
|
50
61
|
${routeImports}
|
|
51
62
|
|
|
63
|
+
${serviceImports.length > 0 ? `// Initialize services (registers event subscriptions)
|
|
64
|
+
${serviceImports.join("\n")}` : ""}
|
|
65
|
+
|
|
52
66
|
async function registerRoutes() {
|
|
53
67
|
${routeRegistrations}
|
|
54
68
|
}
|
|
@@ -57,10 +71,14 @@ ${routeRegistrations}
|
|
|
57
71
|
const start = async () => {
|
|
58
72
|
try {
|
|
59
73
|
await registerRoutes();
|
|
74
|
+
${hasEvents ? ` // Register WebSocket bridge for real-time frontend events
|
|
75
|
+
await registerWebSocketBridge(fastify);` : ""}
|
|
60
76
|
const port = parseInt(process.env.PORT || '3000');
|
|
61
77
|
await fastify.listen({ port, host: '0.0.0.0' });
|
|
62
78
|
console.log(\`Server running at http://localhost:\${port}\`);
|
|
63
79
|
console.log(\`API endpoints: ${modelNames.map((n) => `/api/${n.toLowerCase()}s`).join(", ")}\`);
|
|
80
|
+
${hasEvents ? ` console.log(\`WebSocket: ws://localhost:\${port}/ws\`);
|
|
81
|
+
console.log(\`Events: ${specEvents.join(", ")}\`);` : ""}
|
|
64
82
|
} catch (err) {
|
|
65
83
|
fastify.log.error(err);
|
|
66
84
|
process.exit(1);
|