@intentsolutions/blueprint 2.5.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/analytics/collector.d.ts +73 -0
  2. package/dist/analytics/collector.d.ts.map +1 -0
  3. package/dist/analytics/collector.js +239 -0
  4. package/dist/analytics/collector.js.map +1 -0
  5. package/dist/analytics/dashboard.d.ts +62 -0
  6. package/dist/analytics/dashboard.d.ts.map +1 -0
  7. package/dist/analytics/dashboard.js +346 -0
  8. package/dist/analytics/dashboard.js.map +1 -0
  9. package/dist/analytics/index.d.ts +75 -0
  10. package/dist/analytics/index.d.ts.map +1 -0
  11. package/dist/analytics/index.js +115 -0
  12. package/dist/analytics/index.js.map +1 -0
  13. package/dist/analytics/types.d.ts +169 -0
  14. package/dist/analytics/types.d.ts.map +1 -0
  15. package/dist/analytics/types.js +16 -0
  16. package/dist/analytics/types.js.map +1 -0
  17. package/dist/cli.js +561 -6
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/analytics.d.ts +38 -0
  20. package/dist/commands/analytics.d.ts.map +1 -0
  21. package/dist/commands/analytics.js +196 -0
  22. package/dist/commands/analytics.js.map +1 -0
  23. package/dist/commands/index.d.ts +26 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +101 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/marketplace.d.ts +52 -0
  28. package/dist/commands/marketplace.d.ts.map +1 -0
  29. package/dist/commands/marketplace.js +356 -0
  30. package/dist/commands/marketplace.js.map +1 -0
  31. package/dist/enterprise/api/index.d.ts +8 -0
  32. package/dist/enterprise/api/index.d.ts.map +1 -0
  33. package/dist/enterprise/api/index.js +8 -0
  34. package/dist/enterprise/api/index.js.map +1 -0
  35. package/dist/enterprise/api/server.d.ts +79 -0
  36. package/dist/enterprise/api/server.d.ts.map +1 -0
  37. package/dist/enterprise/api/server.js +468 -0
  38. package/dist/enterprise/api/server.js.map +1 -0
  39. package/dist/enterprise/api/types.d.ts +269 -0
  40. package/dist/enterprise/api/types.d.ts.map +1 -0
  41. package/dist/enterprise/api/types.js +6 -0
  42. package/dist/enterprise/api/types.js.map +1 -0
  43. package/dist/enterprise/api/webhooks.d.ts +214 -0
  44. package/dist/enterprise/api/webhooks.d.ts.map +1 -0
  45. package/dist/enterprise/api/webhooks.js +308 -0
  46. package/dist/enterprise/api/webhooks.js.map +1 -0
  47. package/dist/enterprise/index.d.ts +9 -0
  48. package/dist/enterprise/index.d.ts.map +1 -0
  49. package/dist/enterprise/index.js +13 -0
  50. package/dist/enterprise/index.js.map +1 -0
  51. package/dist/enterprise/models/claude.d.ts +23 -0
  52. package/dist/enterprise/models/claude.d.ts.map +1 -0
  53. package/dist/enterprise/models/claude.js +176 -0
  54. package/dist/enterprise/models/claude.js.map +1 -0
  55. package/dist/enterprise/models/gemini.d.ts +25 -0
  56. package/dist/enterprise/models/gemini.d.ts.map +1 -0
  57. package/dist/enterprise/models/gemini.js +199 -0
  58. package/dist/enterprise/models/gemini.js.map +1 -0
  59. package/dist/enterprise/models/index.d.ts +11 -0
  60. package/dist/enterprise/models/index.d.ts.map +1 -0
  61. package/dist/enterprise/models/index.js +11 -0
  62. package/dist/enterprise/models/index.js.map +1 -0
  63. package/dist/enterprise/models/ollama.d.ts +32 -0
  64. package/dist/enterprise/models/ollama.d.ts.map +1 -0
  65. package/dist/enterprise/models/ollama.js +285 -0
  66. package/dist/enterprise/models/ollama.js.map +1 -0
  67. package/dist/enterprise/models/openai.d.ts +27 -0
  68. package/dist/enterprise/models/openai.d.ts.map +1 -0
  69. package/dist/enterprise/models/openai.js +222 -0
  70. package/dist/enterprise/models/openai.js.map +1 -0
  71. package/dist/enterprise/models/registry.d.ts +101 -0
  72. package/dist/enterprise/models/registry.d.ts.map +1 -0
  73. package/dist/enterprise/models/registry.js +263 -0
  74. package/dist/enterprise/models/registry.js.map +1 -0
  75. package/dist/enterprise/models/types.d.ts +141 -0
  76. package/dist/enterprise/models/types.d.ts.map +1 -0
  77. package/dist/enterprise/models/types.js +40 -0
  78. package/dist/enterprise/models/types.js.map +1 -0
  79. package/dist/enterprise/team/audit.d.ts +153 -0
  80. package/dist/enterprise/team/audit.d.ts.map +1 -0
  81. package/dist/enterprise/team/audit.js +346 -0
  82. package/dist/enterprise/team/audit.js.map +1 -0
  83. package/dist/enterprise/team/config.d.ts +83 -0
  84. package/dist/enterprise/team/config.d.ts.map +1 -0
  85. package/dist/enterprise/team/config.js +245 -0
  86. package/dist/enterprise/team/config.js.map +1 -0
  87. package/dist/enterprise/team/index.d.ts +7 -0
  88. package/dist/enterprise/team/index.d.ts.map +1 -0
  89. package/dist/enterprise/team/index.js +7 -0
  90. package/dist/enterprise/team/index.js.map +1 -0
  91. package/dist/enterprise/templates/engine.d.ts +100 -0
  92. package/dist/enterprise/templates/engine.d.ts.map +1 -0
  93. package/dist/enterprise/templates/engine.js +429 -0
  94. package/dist/enterprise/templates/engine.js.map +1 -0
  95. package/dist/enterprise/templates/index.d.ts +8 -0
  96. package/dist/enterprise/templates/index.d.ts.map +1 -0
  97. package/dist/enterprise/templates/index.js +8 -0
  98. package/dist/enterprise/templates/index.js.map +1 -0
  99. package/dist/enterprise/templates/loader.d.ts +65 -0
  100. package/dist/enterprise/templates/loader.d.ts.map +1 -0
  101. package/dist/enterprise/templates/loader.js +269 -0
  102. package/dist/enterprise/templates/loader.js.map +1 -0
  103. package/dist/enterprise/templates/types.d.ts +212 -0
  104. package/dist/enterprise/templates/types.d.ts.map +1 -0
  105. package/dist/enterprise/templates/types.js +55 -0
  106. package/dist/enterprise/templates/types.js.map +1 -0
  107. package/dist/index.d.ts +1 -0
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +2 -0
  110. package/dist/index.js.map +1 -1
  111. package/dist/integrations/notion/client.d.ts +114 -0
  112. package/dist/integrations/notion/client.d.ts.map +1 -0
  113. package/dist/integrations/notion/client.js +413 -0
  114. package/dist/integrations/notion/client.js.map +1 -0
  115. package/dist/integrations/notion/exporter.d.ts +56 -0
  116. package/dist/integrations/notion/exporter.d.ts.map +1 -0
  117. package/dist/integrations/notion/exporter.js +278 -0
  118. package/dist/integrations/notion/exporter.js.map +1 -0
  119. package/dist/integrations/notion/index.d.ts +9 -0
  120. package/dist/integrations/notion/index.d.ts.map +1 -0
  121. package/dist/integrations/notion/index.js +8 -0
  122. package/dist/integrations/notion/index.js.map +1 -0
  123. package/dist/integrations/notion/types.d.ts +276 -0
  124. package/dist/integrations/notion/types.d.ts.map +1 -0
  125. package/dist/integrations/notion/types.js +45 -0
  126. package/dist/integrations/notion/types.js.map +1 -0
  127. package/dist/marketplace/index.d.ts +86 -0
  128. package/dist/marketplace/index.d.ts.map +1 -0
  129. package/dist/marketplace/index.js +112 -0
  130. package/dist/marketplace/index.js.map +1 -0
  131. package/dist/marketplace/manager.d.ts +81 -0
  132. package/dist/marketplace/manager.d.ts.map +1 -0
  133. package/dist/marketplace/manager.js +292 -0
  134. package/dist/marketplace/manager.js.map +1 -0
  135. package/dist/marketplace/packs/fastapi.d.ts +8 -0
  136. package/dist/marketplace/packs/fastapi.d.ts.map +1 -0
  137. package/dist/marketplace/packs/fastapi.js +728 -0
  138. package/dist/marketplace/packs/fastapi.js.map +1 -0
  139. package/dist/marketplace/packs/fintech.d.ts +8 -0
  140. package/dist/marketplace/packs/fintech.d.ts.map +1 -0
  141. package/dist/marketplace/packs/fintech.js +366 -0
  142. package/dist/marketplace/packs/fintech.js.map +1 -0
  143. package/dist/marketplace/packs/gdpr.d.ts +8 -0
  144. package/dist/marketplace/packs/gdpr.d.ts.map +1 -0
  145. package/dist/marketplace/packs/gdpr.js +637 -0
  146. package/dist/marketplace/packs/gdpr.js.map +1 -0
  147. package/dist/marketplace/packs/healthtech.d.ts +8 -0
  148. package/dist/marketplace/packs/healthtech.d.ts.map +1 -0
  149. package/dist/marketplace/packs/healthtech.js +470 -0
  150. package/dist/marketplace/packs/healthtech.js.map +1 -0
  151. package/dist/marketplace/packs/hipaa.d.ts +8 -0
  152. package/dist/marketplace/packs/hipaa.d.ts.map +1 -0
  153. package/dist/marketplace/packs/hipaa.js +473 -0
  154. package/dist/marketplace/packs/hipaa.js.map +1 -0
  155. package/dist/marketplace/packs/index.d.ts +250 -0
  156. package/dist/marketplace/packs/index.d.ts.map +1 -0
  157. package/dist/marketplace/packs/index.js +205 -0
  158. package/dist/marketplace/packs/index.js.map +1 -0
  159. package/dist/marketplace/packs/nextjs.d.ts +8 -0
  160. package/dist/marketplace/packs/nextjs.d.ts.map +1 -0
  161. package/dist/marketplace/packs/nextjs.js +532 -0
  162. package/dist/marketplace/packs/nextjs.js.map +1 -0
  163. package/dist/marketplace/packs/rails.d.ts +8 -0
  164. package/dist/marketplace/packs/rails.d.ts.map +1 -0
  165. package/dist/marketplace/packs/rails.js +866 -0
  166. package/dist/marketplace/packs/rails.js.map +1 -0
  167. package/dist/marketplace/packs/saas.d.ts +8 -0
  168. package/dist/marketplace/packs/saas.d.ts.map +1 -0
  169. package/dist/marketplace/packs/saas.js +516 -0
  170. package/dist/marketplace/packs/saas.js.map +1 -0
  171. package/dist/marketplace/packs/soc2.d.ts +8 -0
  172. package/dist/marketplace/packs/soc2.d.ts.map +1 -0
  173. package/dist/marketplace/packs/soc2.js +455 -0
  174. package/dist/marketplace/packs/soc2.js.map +1 -0
  175. package/dist/marketplace/registry.d.ts +76 -0
  176. package/dist/marketplace/registry.d.ts.map +1 -0
  177. package/dist/marketplace/registry.js +454 -0
  178. package/dist/marketplace/registry.js.map +1 -0
  179. package/dist/marketplace/types.d.ts +202 -0
  180. package/dist/marketplace/types.d.ts.map +1 -0
  181. package/dist/marketplace/types.js +61 -0
  182. package/dist/marketplace/types.js.map +1 -0
  183. package/dist/mcp/index.js +1 -1
  184. package/dist/plugins/builtin/html-formatter.d.ts +11 -0
  185. package/dist/plugins/builtin/html-formatter.d.ts.map +1 -0
  186. package/dist/plugins/builtin/html-formatter.js +214 -0
  187. package/dist/plugins/builtin/html-formatter.js.map +1 -0
  188. package/dist/plugins/builtin/index.d.ts +21 -0
  189. package/dist/plugins/builtin/index.d.ts.map +1 -0
  190. package/dist/plugins/builtin/index.js +31 -0
  191. package/dist/plugins/builtin/index.js.map +1 -0
  192. package/dist/plugins/builtin/markdown-formatter.d.ts +11 -0
  193. package/dist/plugins/builtin/markdown-formatter.d.ts.map +1 -0
  194. package/dist/plugins/builtin/markdown-formatter.js +77 -0
  195. package/dist/plugins/builtin/markdown-formatter.js.map +1 -0
  196. package/dist/plugins/builtin/quality-validator.d.ts +11 -0
  197. package/dist/plugins/builtin/quality-validator.d.ts.map +1 -0
  198. package/dist/plugins/builtin/quality-validator.js +355 -0
  199. package/dist/plugins/builtin/quality-validator.js.map +1 -0
  200. package/dist/plugins/index.d.ts +98 -0
  201. package/dist/plugins/index.d.ts.map +1 -0
  202. package/dist/plugins/index.js +187 -0
  203. package/dist/plugins/index.js.map +1 -0
  204. package/dist/plugins/manager.d.ts +122 -0
  205. package/dist/plugins/manager.d.ts.map +1 -0
  206. package/dist/plugins/manager.js +349 -0
  207. package/dist/plugins/manager.js.map +1 -0
  208. package/dist/plugins/types.d.ts +348 -0
  209. package/dist/plugins/types.d.ts.map +1 -0
  210. package/dist/plugins/types.js +13 -0
  211. package/dist/plugins/types.js.map +1 -0
  212. package/package.json +5 -4
@@ -0,0 +1,468 @@
1
+ /**
2
+ * REST API Server
3
+ * Lightweight HTTP server for programmatic access
4
+ */
5
+ import { createServer } from 'http';
6
+ import { randomUUID } from 'crypto';
7
+ import { URL } from 'url';
8
+ import { TemplateEngine } from '../templates/engine.js';
9
+ import { TemplateLoader } from '../templates/loader.js';
10
+ import { AuditTrail } from '../team/audit.js';
11
+ const DEFAULT_PORT = 3456;
12
+ const DEFAULT_HOST = 'localhost';
13
+ export class ApiServer {
14
+ config;
15
+ server = null;
16
+ startTime = Date.now();
17
+ routes = new Map();
18
+ templateEngine;
19
+ templateLoader;
20
+ auditTrail;
21
+ constructor(config = {}) {
22
+ this.config = {
23
+ port: config.port ?? DEFAULT_PORT,
24
+ host: config.host ?? DEFAULT_HOST,
25
+ apiKey: config.apiKey ?? '',
26
+ cors: config.cors ?? true,
27
+ allowedOrigins: config.allowedOrigins ?? ['*'],
28
+ rateLimit: config.rateLimit ?? 60,
29
+ logging: config.logging ?? true,
30
+ };
31
+ this.templateEngine = new TemplateEngine();
32
+ this.templateLoader = new TemplateLoader();
33
+ this.auditTrail = new AuditTrail();
34
+ this.registerRoutes();
35
+ }
36
+ /**
37
+ * Register all API routes
38
+ */
39
+ registerRoutes() {
40
+ // Health check
41
+ this.route('GET', '/health', this.handleHealth.bind(this));
42
+ this.route('GET', '/api/health', this.handleHealth.bind(this));
43
+ // Templates
44
+ this.route('GET', '/api/templates', this.handleListTemplates.bind(this));
45
+ this.route('GET', '/api/templates/:id', this.handleGetTemplate.bind(this));
46
+ this.route('POST', '/api/templates', this.handleCreateTemplate.bind(this));
47
+ // Generation
48
+ this.route('POST', '/api/generate', this.handleGenerate.bind(this));
49
+ // Audit
50
+ this.route('GET', '/api/audit', this.handleListAudit.bind(this));
51
+ this.route('GET', '/api/audit/stats', this.handleAuditStats.bind(this));
52
+ // Webhooks (placeholder endpoints)
53
+ this.route('GET', '/api/webhooks', this.handleListWebhooks.bind(this));
54
+ this.route('POST', '/api/webhooks', this.handleCreateWebhook.bind(this));
55
+ this.route('DELETE', '/api/webhooks/:id', this.handleDeleteWebhook.bind(this));
56
+ }
57
+ /**
58
+ * Register a route
59
+ */
60
+ route(method, path, handler) {
61
+ if (!this.routes.has(path)) {
62
+ this.routes.set(path, new Map());
63
+ }
64
+ this.routes.get(path).set(method, handler);
65
+ }
66
+ /**
67
+ * Start the server
68
+ */
69
+ async start() {
70
+ return new Promise((resolve) => {
71
+ this.server = createServer(this.handleRequest.bind(this));
72
+ this.server.listen(this.config.port, this.config.host, () => {
73
+ this.startTime = Date.now();
74
+ if (this.config.logging) {
75
+ console.log(`Blueprint API server started on http://${this.config.host}:${this.config.port}`);
76
+ }
77
+ resolve();
78
+ });
79
+ });
80
+ }
81
+ /**
82
+ * Stop the server
83
+ */
84
+ async stop() {
85
+ return new Promise((resolve) => {
86
+ if (this.server) {
87
+ this.server.close(() => {
88
+ if (this.config.logging) {
89
+ console.log('Blueprint API server stopped');
90
+ }
91
+ resolve();
92
+ });
93
+ }
94
+ else {
95
+ resolve();
96
+ }
97
+ });
98
+ }
99
+ /**
100
+ * Handle incoming request
101
+ */
102
+ async handleRequest(req, res) {
103
+ const startTime = Date.now();
104
+ const requestId = randomUUID();
105
+ // Parse URL
106
+ const url = new URL(req.url || '/', `http://${this.config.host}`);
107
+ const method = req.method || 'GET';
108
+ const path = url.pathname;
109
+ // CORS headers
110
+ if (this.config.cors) {
111
+ const origin = req.headers.origin || '*';
112
+ const allowedOrigin = this.config.allowedOrigins.includes('*')
113
+ ? '*'
114
+ : this.config.allowedOrigins.includes(origin)
115
+ ? origin
116
+ : '';
117
+ if (allowedOrigin) {
118
+ res.setHeader('Access-Control-Allow-Origin', allowedOrigin);
119
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
120
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-API-Key');
121
+ }
122
+ }
123
+ // Handle preflight
124
+ if (method === 'OPTIONS') {
125
+ res.writeHead(204);
126
+ res.end();
127
+ return;
128
+ }
129
+ // Create response writer
130
+ const writer = this.createResponseWriter(res, requestId, startTime);
131
+ // Authenticate
132
+ if (this.config.apiKey && !this.authenticate(req)) {
133
+ writer.status(401).json({
134
+ success: false,
135
+ error: { code: 'UNAUTHORIZED', message: 'Invalid or missing API key' },
136
+ });
137
+ return;
138
+ }
139
+ // Find route
140
+ const { handler, params } = this.findRoute(method, path);
141
+ if (!handler) {
142
+ writer.status(404).json({
143
+ success: false,
144
+ error: { code: 'NOT_FOUND', message: `Route not found: ${method} ${path}` },
145
+ });
146
+ return;
147
+ }
148
+ // Parse body
149
+ let body = {};
150
+ if (method === 'POST' || method === 'PUT' || method === 'PATCH') {
151
+ try {
152
+ body = await this.parseBody(req);
153
+ }
154
+ catch {
155
+ writer.status(400).json({
156
+ success: false,
157
+ error: { code: 'INVALID_BODY', message: 'Invalid request body' },
158
+ });
159
+ return;
160
+ }
161
+ }
162
+ // Create request object
163
+ const apiRequest = {
164
+ method,
165
+ path,
166
+ params,
167
+ query: Object.fromEntries(url.searchParams),
168
+ body,
169
+ headers: this.parseHeaders(req),
170
+ context: {
171
+ requestId,
172
+ timestamp: new Date(),
173
+ },
174
+ };
175
+ // Execute handler
176
+ try {
177
+ await handler(apiRequest, writer);
178
+ }
179
+ catch (error) {
180
+ const message = error instanceof Error ? error.message : 'Internal server error';
181
+ writer.status(500).json({
182
+ success: false,
183
+ error: { code: 'INTERNAL_ERROR', message },
184
+ });
185
+ }
186
+ // Log request
187
+ if (this.config.logging) {
188
+ const duration = Date.now() - startTime;
189
+ console.log(`[${requestId.slice(0, 8)}] ${method} ${path} - ${res.statusCode} (${duration}ms)`);
190
+ }
191
+ }
192
+ /**
193
+ * Authenticate request
194
+ */
195
+ authenticate(req) {
196
+ const apiKey = req.headers['x-api-key'] || req.headers['authorization']?.replace('Bearer ', '');
197
+ return apiKey === this.config.apiKey;
198
+ }
199
+ /**
200
+ * Find matching route
201
+ */
202
+ findRoute(method, path) {
203
+ const params = {};
204
+ // Check exact match first
205
+ const exactRoutes = this.routes.get(path);
206
+ if (exactRoutes?.has(method)) {
207
+ return { handler: exactRoutes.get(method), params };
208
+ }
209
+ // Check pattern matches
210
+ for (const [pattern, methods] of this.routes) {
211
+ const match = this.matchRoute(pattern, path);
212
+ if (match && methods.has(method)) {
213
+ return { handler: methods.get(method), params: match };
214
+ }
215
+ }
216
+ return { handler: null, params };
217
+ }
218
+ /**
219
+ * Match route pattern
220
+ */
221
+ matchRoute(pattern, path) {
222
+ const patternParts = pattern.split('/');
223
+ const pathParts = path.split('/');
224
+ if (patternParts.length !== pathParts.length)
225
+ return null;
226
+ const params = {};
227
+ for (let i = 0; i < patternParts.length; i++) {
228
+ if (patternParts[i].startsWith(':')) {
229
+ params[patternParts[i].slice(1)] = pathParts[i];
230
+ }
231
+ else if (patternParts[i] !== pathParts[i]) {
232
+ return null;
233
+ }
234
+ }
235
+ return params;
236
+ }
237
+ /**
238
+ * Parse request body
239
+ */
240
+ parseBody(req) {
241
+ return new Promise((resolve, reject) => {
242
+ let data = '';
243
+ req.on('data', chunk => data += chunk);
244
+ req.on('end', () => {
245
+ try {
246
+ resolve(data ? JSON.parse(data) : {});
247
+ }
248
+ catch (error) {
249
+ reject(error);
250
+ }
251
+ });
252
+ req.on('error', reject);
253
+ });
254
+ }
255
+ /**
256
+ * Parse headers
257
+ */
258
+ parseHeaders(req) {
259
+ const headers = {};
260
+ for (const [key, value] of Object.entries(req.headers)) {
261
+ if (typeof value === 'string') {
262
+ headers[key] = value;
263
+ }
264
+ else if (Array.isArray(value)) {
265
+ headers[key] = value[0];
266
+ }
267
+ }
268
+ return headers;
269
+ }
270
+ /**
271
+ * Create response writer
272
+ */
273
+ createResponseWriter(res, requestId, startTime) {
274
+ let statusCode = 200;
275
+ return {
276
+ status(code) {
277
+ statusCode = code;
278
+ return this;
279
+ },
280
+ json(data) {
281
+ res.writeHead(statusCode, { 'Content-Type': 'application/json' });
282
+ res.end(JSON.stringify({
283
+ ...data,
284
+ meta: {
285
+ requestId,
286
+ timestamp: new Date().toISOString(),
287
+ duration: Date.now() - startTime,
288
+ },
289
+ }));
290
+ },
291
+ send(body) {
292
+ res.writeHead(statusCode, { 'Content-Type': 'text/plain' });
293
+ res.end(body);
294
+ },
295
+ };
296
+ }
297
+ /**
298
+ * Load templates into engine
299
+ */
300
+ loadTemplates(templates) {
301
+ for (const template of templates) {
302
+ this.templateEngine.registerTemplate(template);
303
+ }
304
+ }
305
+ // Route handlers
306
+ handleHealth(_req, res) {
307
+ const response = {
308
+ status: 'healthy',
309
+ version: '2.7.0',
310
+ uptime: Date.now() - this.startTime,
311
+ checks: {
312
+ templates: true,
313
+ audit: this.auditTrail.isEnabled(),
314
+ },
315
+ };
316
+ res.json({ success: true, data: response });
317
+ }
318
+ handleListTemplates(_req, res) {
319
+ const templates = this.templateEngine.listTemplates();
320
+ const response = {
321
+ templates: templates.map(t => ({
322
+ id: t.meta.id,
323
+ name: t.meta.name,
324
+ description: t.meta.description,
325
+ version: t.meta.version,
326
+ category: t.meta.category,
327
+ scope: t.meta.scope,
328
+ author: t.meta.author,
329
+ tags: t.meta.tags,
330
+ })),
331
+ total: templates.length,
332
+ };
333
+ res.json({ success: true, data: response });
334
+ }
335
+ handleGetTemplate(req, res) {
336
+ const { id } = req.params;
337
+ const template = this.templateEngine.getTemplate(id);
338
+ if (!template) {
339
+ res.status(404).json({
340
+ success: false,
341
+ error: { code: 'NOT_FOUND', message: `Template not found: ${id}` },
342
+ });
343
+ return;
344
+ }
345
+ const response = { template };
346
+ res.json({ success: true, data: response });
347
+ }
348
+ handleCreateTemplate(req, res) {
349
+ const template = req.body;
350
+ if (!template.meta?.id) {
351
+ res.status(400).json({
352
+ success: false,
353
+ error: { code: 'INVALID_TEMPLATE', message: 'Template must have meta.id' },
354
+ });
355
+ return;
356
+ }
357
+ this.templateEngine.registerTemplate(template);
358
+ res.status(201).json({ success: true, data: { template } });
359
+ }
360
+ handleGenerate(req, res) {
361
+ const startTime = Date.now();
362
+ const { templateId, variables, format } = req.body;
363
+ const template = this.templateEngine.getTemplate(templateId);
364
+ if (!template) {
365
+ res.status(404).json({
366
+ success: false,
367
+ error: { code: 'NOT_FOUND', message: `Template not found: ${templateId}` },
368
+ });
369
+ return;
370
+ }
371
+ try {
372
+ const content = this.templateEngine.process(template, { variables });
373
+ const response = {
374
+ content: format === 'json' ? JSON.stringify({ content }) : content,
375
+ template: {
376
+ id: template.meta.id,
377
+ name: template.meta.name,
378
+ version: template.meta.version,
379
+ },
380
+ variables,
381
+ generatedAt: new Date().toISOString(),
382
+ };
383
+ // Log to audit trail
384
+ this.auditTrail.logGeneration({
385
+ user: req.context.clientId,
386
+ template: templateId,
387
+ variables,
388
+ duration: Date.now() - startTime,
389
+ success: true,
390
+ });
391
+ res.json({ success: true, data: response });
392
+ }
393
+ catch (error) {
394
+ const message = error instanceof Error ? error.message : 'Generation failed';
395
+ this.auditTrail.logGeneration({
396
+ user: req.context.clientId,
397
+ template: templateId,
398
+ variables,
399
+ duration: Date.now() - startTime,
400
+ success: false,
401
+ error: message,
402
+ });
403
+ res.status(400).json({
404
+ success: false,
405
+ error: { code: 'GENERATION_FAILED', message },
406
+ });
407
+ }
408
+ }
409
+ handleListAudit(req, res) {
410
+ const { user, template, action, startDate, endDate, page = '1', pageSize = '20', } = req.query;
411
+ let entries = this.auditTrail.readAll();
412
+ // Apply filters
413
+ if (user)
414
+ entries = entries.filter(e => e.user === user);
415
+ if (template)
416
+ entries = entries.filter(e => e.template === template);
417
+ if (action)
418
+ entries = entries.filter(e => e.action === action);
419
+ if (startDate)
420
+ entries = entries.filter(e => new Date(e.timestamp) >= new Date(startDate));
421
+ if (endDate)
422
+ entries = entries.filter(e => new Date(e.timestamp) <= new Date(endDate));
423
+ // Paginate
424
+ const pageNum = parseInt(page) || 1;
425
+ const pageSizeNum = parseInt(pageSize) || 20;
426
+ const start = (pageNum - 1) * pageSizeNum;
427
+ const paginatedEntries = entries.slice(start, start + pageSizeNum);
428
+ const response = {
429
+ entries: paginatedEntries,
430
+ total: entries.length,
431
+ page: pageNum,
432
+ pageSize: pageSizeNum,
433
+ };
434
+ res.json({ success: true, data: response });
435
+ }
436
+ handleAuditStats(_req, res) {
437
+ const stats = this.auditTrail.getStats();
438
+ const response = {
439
+ totalGenerations: stats.totalGenerations,
440
+ successfulGenerations: stats.successfulGenerations,
441
+ failedGenerations: stats.failedGenerations,
442
+ averageDuration: stats.averageDuration,
443
+ byTemplate: stats.byTemplate,
444
+ byUser: stats.byUser,
445
+ byAction: stats.byAction,
446
+ };
447
+ res.json({ success: true, data: response });
448
+ }
449
+ handleListWebhooks(_req, res) {
450
+ // Placeholder - webhooks stored elsewhere
451
+ res.json({ success: true, data: { webhooks: [], total: 0 } });
452
+ }
453
+ handleCreateWebhook(req, res) {
454
+ // Placeholder
455
+ res.status(201).json({ success: true, data: { webhook: req.body } });
456
+ }
457
+ handleDeleteWebhook(req, res) {
458
+ // Placeholder
459
+ res.json({ success: true, data: { deleted: req.params.id } });
460
+ }
461
+ }
462
+ /**
463
+ * Create an API server instance
464
+ */
465
+ export function createApiServer(config) {
466
+ return new ApiServer(config);
467
+ }
468
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/enterprise/api/server.ts"],"names":[],"mappings":"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"}