@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.
Files changed (48) hide show
  1. package/assets/prompts/core/standard/v9/behavior.prompt.yaml +120 -0
  2. package/dist/ai/behavior-ai-service.d.ts +63 -0
  3. package/dist/ai/behavior-ai-service.d.ts.map +1 -0
  4. package/dist/ai/behavior-ai-service.js +203 -0
  5. package/dist/ai/behavior-ai-service.js.map +1 -0
  6. package/dist/ai/index.d.ts +27 -0
  7. package/dist/ai/index.d.ts.map +1 -1
  8. package/dist/ai/index.js +30 -0
  9. package/dist/ai/index.js.map +1 -1
  10. package/dist/inference/index.d.ts.map +1 -1
  11. package/dist/inference/index.js +1 -0
  12. package/dist/inference/index.js.map +1 -1
  13. package/dist/inference/logical/logical-engine.d.ts.map +1 -1
  14. package/dist/inference/logical/logical-engine.js +3 -0
  15. package/dist/inference/logical/logical-engine.js.map +1 -1
  16. package/dist/libs/instance-factories/cli/templates/commander/cli-entry-generator.js +12 -11
  17. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +21 -5
  18. package/dist/libs/instance-factories/communication/templates/eventemitter/bus-generator.js +31 -30
  19. package/dist/libs/instance-factories/communication/templates/eventemitter/types-generator.js +79 -0
  20. package/dist/libs/instance-factories/communication/templates/eventemitter/websocket-bridge-generator.js +96 -0
  21. package/dist/libs/instance-factories/controllers/templates/fastify/routes-generator.js +25 -9
  22. package/dist/libs/instance-factories/controllers/templates/fastify/server-generator.js +20 -2
  23. package/dist/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.js +141 -0
  24. package/dist/libs/instance-factories/services/templates/prisma/behavior-generator.js +62 -42
  25. package/dist/libs/instance-factories/services/templates/prisma/controller-generator.js +39 -7
  26. package/dist/libs/instance-factories/services/templates/prisma/step-conventions.js +101 -84
  27. package/dist/parser/processors/AttributeProcessor.d.ts.map +1 -1
  28. package/dist/parser/processors/AttributeProcessor.js +13 -6
  29. package/dist/parser/processors/AttributeProcessor.js.map +1 -1
  30. package/dist/parser/processors/ModelProcessor.d.ts.map +1 -1
  31. package/dist/parser/processors/ModelProcessor.js +7 -0
  32. package/dist/parser/processors/ModelProcessor.js.map +1 -1
  33. package/dist/realize/index.d.ts.map +1 -1
  34. package/dist/realize/index.js +54 -0
  35. package/dist/realize/index.js.map +1 -1
  36. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.ts +12 -11
  37. package/libs/instance-factories/cli/templates/commander/command-generator.ts +21 -5
  38. package/libs/instance-factories/communication/event-emitter.yaml +16 -12
  39. package/libs/instance-factories/communication/templates/eventemitter/bus-generator.ts +33 -35
  40. package/libs/instance-factories/communication/templates/eventemitter/types-generator.ts +95 -0
  41. package/libs/instance-factories/communication/templates/eventemitter/websocket-bridge-generator.ts +105 -0
  42. package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +32 -11
  43. package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +23 -2
  44. package/libs/instance-factories/services/templates/prisma/ai-behaviors-generator.ts +211 -0
  45. package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +86 -40
  46. package/libs/instance-factories/services/templates/prisma/controller-generator.ts +54 -8
  47. package/libs/instance-factories/services/templates/prisma/step-conventions.ts +166 -85
  48. 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 from package.json at runtime (not hardcoded)
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
- try {
33
- // Walk up to find package.json
34
- for (const rel of ['../../../package.json', '../../../../package.json', '../../../../../package.json']) {
35
- try {
36
- const pkg = JSON.parse(readFileSync(join(__dirname, rel), 'utf8'));
37
- if (pkg.version) { _version = pkg.version; break; }
38
- } catch { /* try next */ }
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 events = spec.events ? Object.keys(spec.events) : [];
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
- * In-memory event bus using EventEmitter3
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
- // Event type definitions
13
- ${events.map((event) => `export type ${event}Payload = any; // TODO: Define payload type`).join("\n")}
14
+ // Re-export types for consumers
15
+ ${hasEvents || models.length > 0 ? `export type { EventPayloads, EventName } from './event-types.js';` : ""}
14
16
 
15
- // Event names enum
16
- export enum EventName {
17
- ${events.map((event) => ` ${event} = '${event}',`).join("\n")}
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); // Configure max listeners
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 an event
47
+ * Publish a typed event
43
48
  */
44
- public publish<T = any>(event: EventName | string, payload: T): void {
45
- console.log(\`[EventBus] Publishing event: \${event}\`, payload);
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 an event
56
+ * Subscribe to a typed event
51
57
  */
52
- public subscribe<T = any>(
53
- event: EventName | string,
54
- handler: (payload: T) => void | Promise<void>
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
- * Subscribe to an event (one-time)
67
+ * Get event history
67
68
  */
68
- public subscribeOnce<T = any>(
69
- event: EventName | string,
70
- handler: (payload: T) => void | Promise<void>
71
- ): void {
72
- this.once(event, handler);
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 result = await handler.${operation}(request.body as any);
205
- return reply.send(result);
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 && endpoint.serviceOperation?.type === "custom") {
231
- const pathParts = endpoint.path.split("/").filter((p) => p);
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);