@panguard-ai/panguard 1.4.14 → 1.4.16

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 (44) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cli/commands/scan.d.ts.map +1 -1
  3. package/dist/cli/commands/scan.js +56 -1
  4. package/dist/cli/commands/scan.js.map +1 -1
  5. package/dist/cli/commands/setup.d.ts.map +1 -1
  6. package/dist/cli/commands/setup.js +15 -2
  7. package/dist/cli/commands/setup.js.map +1 -1
  8. package/dist/cli/commands/up.d.ts.map +1 -1
  9. package/dist/cli/commands/up.js +180 -24
  10. package/dist/cli/commands/up.js.map +1 -1
  11. package/dist/cli/index.js +0 -0
  12. package/package.json +1 -1
  13. package/dist/cli/commands/admin.d.ts +0 -9
  14. package/dist/cli/commands/admin.d.ts.map +0 -1
  15. package/dist/cli/commands/admin.js +0 -130
  16. package/dist/cli/commands/admin.js.map +0 -1
  17. package/dist/cli/commands/manager.d.ts +0 -7
  18. package/dist/cli/commands/manager.d.ts.map +0 -1
  19. package/dist/cli/commands/manager.js +0 -113
  20. package/dist/cli/commands/manager.js.map +0 -1
  21. package/dist/cli/commands/serve-admin.d.ts +0 -11
  22. package/dist/cli/commands/serve-admin.d.ts.map +0 -1
  23. package/dist/cli/commands/serve-admin.js +0 -302
  24. package/dist/cli/commands/serve-admin.js.map +0 -1
  25. package/dist/cli/commands/serve-auth.d.ts +0 -11
  26. package/dist/cli/commands/serve-auth.d.ts.map +0 -1
  27. package/dist/cli/commands/serve-auth.js +0 -119
  28. package/dist/cli/commands/serve-auth.js.map +0 -1
  29. package/dist/cli/commands/serve-core.d.ts +0 -25
  30. package/dist/cli/commands/serve-core.d.ts.map +0 -1
  31. package/dist/cli/commands/serve-core.js +0 -215
  32. package/dist/cli/commands/serve-core.js.map +0 -1
  33. package/dist/cli/commands/serve-tc.d.ts +0 -12
  34. package/dist/cli/commands/serve-tc.d.ts.map +0 -1
  35. package/dist/cli/commands/serve-tc.js +0 -287
  36. package/dist/cli/commands/serve-tc.js.map +0 -1
  37. package/dist/cli/commands/serve-types.d.ts +0 -38
  38. package/dist/cli/commands/serve-types.d.ts.map +0 -1
  39. package/dist/cli/commands/serve-types.js +0 -108
  40. package/dist/cli/commands/serve-types.js.map +0 -1
  41. package/dist/cli/commands/serve.d.ts +0 -14
  42. package/dist/cli/commands/serve.d.ts.map +0 -1
  43. package/dist/cli/commands/serve.js +0 -383
  44. package/dist/cli/commands/serve.js.map +0 -1
@@ -1,302 +0,0 @@
1
- /**
2
- * Admin and Manager proxy route handlers for panguard serve.
3
- */
4
- import { sendJson } from './serve-types.js';
5
- /**
6
- * Handle admin API routes (/api/admin/*, /api/manager/*).
7
- * Returns true if the route was handled, false otherwise.
8
- */
9
- export async function handleAdminRoutes(req, res, url, pathname, ctx) {
10
- const { handlers, managerProxy, threatDb } = ctx;
11
- // ── Admin API routes ─────────────────────────────────────────
12
- if (pathname === '/api/admin/dashboard') {
13
- handlers.handleAdminDashboard(req, res);
14
- return true;
15
- }
16
- if (pathname === '/api/admin/users/search') {
17
- handlers.handleAdminUsersSearch(req, res);
18
- return true;
19
- }
20
- if (pathname === '/api/admin/users') {
21
- handlers.handleAdminUsers(req, res);
22
- return true;
23
- }
24
- if (pathname === '/api/admin/stats') {
25
- handlers.handleAdminStats(req, res);
26
- return true;
27
- }
28
- if (pathname === '/api/admin/sessions') {
29
- if (req.method === 'GET') {
30
- handlers.handleAdminSessions(req, res);
31
- }
32
- else {
33
- sendJson(res, 405, { ok: false, error: 'Method not allowed' });
34
- }
35
- return true;
36
- }
37
- if (pathname === '/api/admin/activity') {
38
- handlers.handleAdminActivity(req, res);
39
- return true;
40
- }
41
- if (pathname === '/api/admin/audit/actions') {
42
- handlers.handleAdminAuditActions(req, res);
43
- return true;
44
- }
45
- if (pathname === '/api/admin/audit') {
46
- handlers.handleAdminAuditLog(req, res);
47
- return true;
48
- }
49
- if (pathname === '/api/admin/usage') {
50
- handlers.handleAdminUsageOverview(req, res);
51
- return true;
52
- }
53
- if (pathname === '/api/admin/users/bulk-action') {
54
- await handlers.handleAdminBulkAction(req, res);
55
- return true;
56
- }
57
- // /api/admin/sessions/:id (DELETE)
58
- const sessionRevokeMatch = pathname.match(/^\/api\/admin\/sessions\/(\d+)$/);
59
- if (sessionRevokeMatch) {
60
- handlers.handleAdminSessionRevoke(req, res, sessionRevokeMatch[1]);
61
- return true;
62
- }
63
- // /api/admin/users/:id/tier
64
- const tierMatch = pathname.match(/^\/api\/admin\/users\/(\d+)\/tier$/);
65
- if (tierMatch) {
66
- await handlers.handleAdminUpdateTier(req, res, tierMatch[1]);
67
- return true;
68
- }
69
- // /api/admin/users/:id/role
70
- const roleMatch = pathname.match(/^\/api\/admin\/users\/(\d+)\/role$/);
71
- if (roleMatch) {
72
- await handlers.handleAdminUpdateRole(req, res, roleMatch[1]);
73
- return true;
74
- }
75
- // /api/admin/waitlist/:id/approve
76
- const approveMatch = pathname.match(/^\/api\/admin\/waitlist\/(\d+)\/approve$/);
77
- if (approveMatch) {
78
- await handlers.handleAdminWaitlistApprove(req, res, approveMatch[1]);
79
- return true;
80
- }
81
- // /api/admin/waitlist/:id/reject
82
- const rejectMatch = pathname.match(/^\/api\/admin\/waitlist\/(\d+)\/reject$/);
83
- if (rejectMatch) {
84
- await handlers.handleAdminWaitlistReject(req, res, rejectMatch[1]);
85
- return true;
86
- }
87
- // /api/admin/users/:id/suspend
88
- const suspendMatch = pathname.match(/^\/api\/admin\/users\/(\d+)\/suspend$/);
89
- if (suspendMatch) {
90
- await handlers.handleAdminUserSuspend(req, res, suspendMatch[1]);
91
- return true;
92
- }
93
- // /api/admin/usage/:userId
94
- const usageUserMatch = pathname.match(/^\/api\/admin\/usage\/(\d+)$/);
95
- if (usageUserMatch) {
96
- handlers.handleAdminUsageUser(req, res, usageUserMatch[1]);
97
- return true;
98
- }
99
- // /api/admin/users/:id (GET -- user detail)
100
- const userDetailMatch = pathname.match(/^\/api\/admin\/users\/(\d+)$/);
101
- if (userDetailMatch && req.method === 'GET') {
102
- handlers.handleAdminUserDetail(req, res, userDetailMatch[1]);
103
- return true;
104
- }
105
- // /api/admin/settings (GET -- environment config status)
106
- if (pathname === '/api/admin/settings' && req.method === 'GET') {
107
- sendJson(res, 200, {
108
- ok: true,
109
- data: {
110
- oauth: {
111
- google: !!process.env['GOOGLE_CLIENT_ID'],
112
- },
113
- email: {
114
- resend: !!process.env['RESEND_API_KEY'],
115
- smtp: !!process.env['SMTP_HOST'],
116
- },
117
- security: {
118
- totpEnabled: true,
119
- },
120
- threatCloud: {
121
- endpoint: process.env['THREAT_CLOUD_ENDPOINT'] || null,
122
- apiKey: !!process.env['TC_API_KEY'],
123
- },
124
- notifications: {
125
- telegram: !!process.env['TELEGRAM_BOT_TOKEN'],
126
- slack: !!process.env['SLACK_WEBHOOK_URL'],
127
- email: !!process.env['RESEND_API_KEY'] || !!process.env['SMTP_HOST'],
128
- },
129
- manager: {
130
- key: !!process.env['PANGUARD_MANAGER_KEY'],
131
- corsOrigins: process.env['MANAGER_CORS_ORIGINS'] || '',
132
- },
133
- },
134
- });
135
- return true;
136
- }
137
- // Detailed health (admin-only) -- includes memory, services, threat stats
138
- if (pathname === '/api/admin/health' && req.method === 'GET') {
139
- const mem = process.memoryUsage();
140
- const services = {
141
- email: !!(process.env['RESEND_API_KEY'] || process.env['SMTP_HOST']),
142
- oauth: !!process.env['GOOGLE_CLIENT_ID'],
143
- errorTracking: !!process.env['SENTRY_DSN'],
144
- threatCloud: !!threatDb,
145
- tcApiKey: !!process.env['TC_API_KEY'],
146
- };
147
- let threatStats = null;
148
- if (threatDb) {
149
- try {
150
- const s = threatDb.getStats();
151
- threatStats = { rules: s.totalRules, threats: s.totalThreats };
152
- }
153
- catch {
154
- /* ignore */
155
- }
156
- }
157
- sendJson(res, 200, {
158
- ok: true,
159
- data: {
160
- status: 'healthy',
161
- version: process.env['npm_package_version'] ?? '0.0.0',
162
- uptime: Math.round(process.uptime()),
163
- db: 'connected',
164
- threatStats,
165
- memory: {
166
- rss: Math.round(mem.rss / 1024 / 1024),
167
- heapUsed: Math.round(mem.heapUsed / 1024 / 1024),
168
- },
169
- services,
170
- },
171
- });
172
- return true;
173
- }
174
- // ── Manager Proxy Routes ─────────────────────────────────────
175
- if (pathname === '/api/manager/api/overview' && req.method === 'GET') {
176
- const result = await managerProxy.getOverview();
177
- if (result.ok) {
178
- sendJson(res, 200, result.data);
179
- }
180
- else {
181
- sendJson(res, 503, { ok: false, error: result.error });
182
- }
183
- return true;
184
- }
185
- if (pathname === '/api/manager/api/agents' && req.method === 'GET') {
186
- const result = await managerProxy.getAgents();
187
- if (result.ok) {
188
- sendJson(res, 200, result.data);
189
- }
190
- else {
191
- sendJson(res, 503, { ok: false, error: result.error });
192
- }
193
- return true;
194
- }
195
- const managerAgentMatch = pathname.match(/^\/api\/manager\/api\/agents\/([^/]+)$/);
196
- if (managerAgentMatch && req.method === 'GET') {
197
- const result = await managerProxy.getAgent(managerAgentMatch[1]);
198
- if (result.ok) {
199
- sendJson(res, 200, result.data);
200
- }
201
- else {
202
- const status = result.error === 'Manager service unavailable' ? 503 : 404;
203
- sendJson(res, status, { ok: false, error: result.error });
204
- }
205
- return true;
206
- }
207
- if (pathname === '/api/manager/api/events' && req.method === 'GET') {
208
- const urlObj = new URL(url, `http://${req.headers.host ?? 'localhost'}`);
209
- const limit = parseInt(urlObj.searchParams.get('limit') ?? '50', 10) || 50;
210
- const offset = parseInt(urlObj.searchParams.get('offset') ?? '0', 10) || 0;
211
- const since = urlObj.searchParams.get('since') ?? undefined;
212
- const result = await managerProxy.getEvents({ limit, offset, since });
213
- if (result.ok) {
214
- sendJson(res, 200, result.data);
215
- }
216
- else {
217
- sendJson(res, 503, { ok: false, error: result.error });
218
- }
219
- return true;
220
- }
221
- if (pathname === '/api/manager/api/threats/summary' && req.method === 'GET') {
222
- const result = await managerProxy.getThreatSummary();
223
- if (result.ok) {
224
- sendJson(res, 200, result.data);
225
- }
226
- else {
227
- sendJson(res, 503, { ok: false, error: result.error });
228
- }
229
- return true;
230
- }
231
- if (pathname === '/api/manager/api/threats' && req.method === 'GET') {
232
- const urlObj = new URL(url, `http://${req.headers.host ?? 'localhost'}`);
233
- const since = urlObj.searchParams.get('since') ?? undefined;
234
- const result = await managerProxy.getEvents({ since });
235
- if (result.ok) {
236
- sendJson(res, 200, result.data);
237
- }
238
- else {
239
- sendJson(res, 503, { ok: false, error: result.error });
240
- }
241
- return true;
242
- }
243
- // ── Additional Admin Proxy Routes (without /api/manager prefix) ──
244
- if (pathname === '/api/admin/agents' && req.method === 'GET') {
245
- const result = await managerProxy.getAgents();
246
- if (result.ok) {
247
- sendJson(res, 200, { ok: true, data: result.data });
248
- }
249
- else {
250
- sendJson(res, 503, { ok: false, error: result.error });
251
- }
252
- return true;
253
- }
254
- const adminAgentMatch = pathname.match(/^\/api\/admin\/agents\/([^/]+)$/);
255
- if (adminAgentMatch && req.method === 'GET') {
256
- const result = await managerProxy.getAgent(adminAgentMatch[1]);
257
- if (result.ok) {
258
- sendJson(res, 200, { ok: true, data: result.data });
259
- }
260
- else {
261
- const status = result.error === 'Manager service unavailable' ? 503 : 404;
262
- sendJson(res, status, { ok: false, error: result.error });
263
- }
264
- return true;
265
- }
266
- if (pathname === '/api/admin/events' && req.method === 'GET') {
267
- const urlObj = new URL(url, `http://${req.headers.host ?? 'localhost'}`);
268
- const limit = parseInt(urlObj.searchParams.get('limit') ?? '50', 10) || 50;
269
- const offset = parseInt(urlObj.searchParams.get('offset') ?? '0', 10) || 0;
270
- const since = urlObj.searchParams.get('since') ?? undefined;
271
- const result = await managerProxy.getEvents({ limit, offset, since });
272
- if (result.ok) {
273
- sendJson(res, 200, { ok: true, data: result.data });
274
- }
275
- else {
276
- sendJson(res, 503, { ok: false, error: result.error });
277
- }
278
- return true;
279
- }
280
- if (pathname === '/api/admin/threats' && req.method === 'GET') {
281
- const result = await managerProxy.getThreatSummary();
282
- if (result.ok) {
283
- sendJson(res, 200, { ok: true, data: result.data });
284
- }
285
- else {
286
- sendJson(res, 503, { ok: false, error: result.error });
287
- }
288
- return true;
289
- }
290
- if (pathname === '/api/admin/overview' && req.method === 'GET') {
291
- const result = await managerProxy.getOverview();
292
- if (result.ok) {
293
- sendJson(res, 200, { ok: true, data: result.data });
294
- }
295
- else {
296
- sendJson(res, 503, { ok: false, error: result.error });
297
- }
298
- return true;
299
- }
300
- return false;
301
- }
302
- //# sourceMappingURL=serve-admin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve-admin.js","sourceRoot":"","sources":["../../../src/cli/commands/serve-admin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAoB,EACpB,GAAmB,EACnB,GAAW,EACX,QAAgB,EAChB,GAAiB;IAEjB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEjD,gEAAgE;IAEhE,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;QACxC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,yBAAyB,EAAE,CAAC;QAC3C,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,0BAA0B,EAAE,CAAC;QAC5C,QAAQ,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,QAAQ,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,8BAA8B,EAAE,CAAC;QAChD,MAAM,QAAQ,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC7E,IAAI,kBAAkB,EAAE,CAAC;QACvB,QAAQ,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACvE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,QAAQ,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACvE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,QAAQ,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAE,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iCAAiC;IACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC9E,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,QAAQ,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7E,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACtE,IAAI,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACvE,IAAI,eAAe,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5C,QAAQ,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yDAAyD;IACzD,IAAI,QAAQ,KAAK,qBAAqB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC/D,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;iBAC1C;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;oBACvC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;iBACjC;gBACD,QAAQ,EAAE;oBACR,WAAW,EAAE,IAAI;iBAClB;gBACD,WAAW,EAAE;oBACX,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,IAAI;oBACtD,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;iBACpC;gBACD,aAAa,EAAE;oBACb,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;oBAC7C,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;oBACzC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;iBACrE;gBACD,OAAO,EAAE;oBACP,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBAC1C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE;iBACvD;aACF;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,IAAI,QAAQ,KAAK,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACxC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1C,WAAW,EAAE,CAAC,CAAC,QAAQ;YACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;SACtC,CAAC;QACF,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC9B,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE;gBACJ,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,OAAO;gBACtD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpC,EAAE,EAAE,WAAW;gBACf,WAAW;gBACX,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;oBACtC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;iBACjD;gBACD,QAAQ;aACT;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAEhE,IAAI,QAAQ,KAAK,2BAA2B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,yBAAyB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACnF,IAAI,iBAAiB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,6BAA6B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,yBAAyB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,kCAAkC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,0BAA0B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IAEpE,IAAI,QAAQ,KAAK,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC1E,IAAI,eAAe,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,6BAA6B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,oBAAoB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,qBAAqB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Auth, waitlist, and usage route handlers for panguard serve.
3
- */
4
- import type { IncomingMessage, ServerResponse } from 'node:http';
5
- import type { RouteContext } from './serve-types.js';
6
- /**
7
- * Handle auth API routes (/api/auth/*, /api/waitlist/*, /api/usage/*).
8
- * Returns true if the route was handled, false otherwise.
9
- */
10
- export declare function handleAuthRoutes(req: IncomingMessage, res: ServerResponse, url: string, pathname: string, ctx: RouteContext): Promise<boolean>;
11
- //# sourceMappingURL=serve-auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve-auth.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,CAqHlB"}
@@ -1,119 +0,0 @@
1
- /**
2
- * Auth, waitlist, and usage route handlers for panguard serve.
3
- */
4
- /**
5
- * Handle auth API routes (/api/auth/*, /api/waitlist/*, /api/usage/*).
6
- * Returns true if the route was handled, false otherwise.
7
- */
8
- export async function handleAuthRoutes(req, res, url, pathname, ctx) {
9
- const { handlers } = ctx;
10
- // ── Auth API routes ──────────────────────────────────────────
11
- if (pathname === '/api/auth/register') {
12
- await handlers.handleRegister(req, res);
13
- return true;
14
- }
15
- if (pathname === '/api/auth/login') {
16
- await handlers.handleLogin(req, res);
17
- return true;
18
- }
19
- if (pathname === '/api/auth/logout') {
20
- handlers.handleLogout(req, res);
21
- return true;
22
- }
23
- if (pathname === '/api/auth/me') {
24
- handlers.handleMe(req, res);
25
- return true;
26
- }
27
- if (pathname === '/api/auth/delete-account') {
28
- await handlers.handleDeleteAccount(req, res);
29
- return true;
30
- }
31
- if (pathname === '/api/auth/export-data') {
32
- handlers.handleExportData(req, res);
33
- return true;
34
- }
35
- if (pathname === '/api/auth/totp/setup') {
36
- handlers.handleTotpSetup(req, res);
37
- return true;
38
- }
39
- if (pathname === '/api/auth/totp/verify') {
40
- await handlers.handleTotpVerify(req, res);
41
- return true;
42
- }
43
- if (pathname === '/api/auth/totp/disable') {
44
- await handlers.handleTotpDisable(req, res);
45
- return true;
46
- }
47
- if (pathname === '/api/auth/totp/status') {
48
- handlers.handleTotpStatus(req, res);
49
- return true;
50
- }
51
- if (pathname === '/api/auth/forgot-password') {
52
- await handlers.handleForgotPassword(req, res);
53
- return true;
54
- }
55
- if (pathname === '/api/auth/reset-password') {
56
- await handlers.handleResetPassword(req, res);
57
- return true;
58
- }
59
- if (pathname === '/api/auth/google') {
60
- handlers.handleGoogleAuth(req, res);
61
- return true;
62
- }
63
- if (pathname.startsWith('/api/auth/google/callback')) {
64
- const urlObj = new URL(url, `http://${req.headers.host ?? 'localhost'}`);
65
- const code = urlObj.searchParams.get('code') ?? '';
66
- const state = urlObj.searchParams.get('state');
67
- await handlers.handleGoogleCallback(req, res, code, state);
68
- return true;
69
- }
70
- if (pathname === '/api/auth/oauth/exchange') {
71
- await handlers.handleOAuthExchange(req, res);
72
- return true;
73
- }
74
- if (pathname === '/api/auth/cli') {
75
- handlers.handleCliAuth(req, res);
76
- return true;
77
- }
78
- if (pathname === '/api/auth/cli/exchange') {
79
- await handlers.handleCliExchange(req, res);
80
- return true;
81
- }
82
- // ── Waitlist API routes ──────────────────────────────────────
83
- if (pathname === '/api/waitlist/join') {
84
- await handlers.handleWaitlistJoin(req, res);
85
- return true;
86
- }
87
- if (pathname.startsWith('/api/waitlist/verify/')) {
88
- const token = pathname.split('/api/waitlist/verify/')[1];
89
- handlers.handleWaitlistVerify(req, res, token ?? '');
90
- return true;
91
- }
92
- if (pathname === '/api/waitlist/stats') {
93
- handlers.handleWaitlistStats(req, res);
94
- return true;
95
- }
96
- if (pathname === '/api/waitlist/list') {
97
- handlers.handleWaitlistList(req, res);
98
- return true;
99
- }
100
- // ── Usage / Quota API routes ─────────────────────────────────
101
- if (pathname === '/api/usage') {
102
- handlers.handleUsageSummary(req, res);
103
- return true;
104
- }
105
- if (pathname === '/api/usage/limits') {
106
- handlers.handleUsageLimits(req, res);
107
- return true;
108
- }
109
- if (pathname === '/api/usage/check') {
110
- await handlers.handleUsageCheck(req, res);
111
- return true;
112
- }
113
- if (pathname === '/api/usage/record') {
114
- await handlers.handleUsageRecord(req, res);
115
- return true;
116
- }
117
- return false;
118
- }
119
- //# sourceMappingURL=serve-auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve-auth.js","sourceRoot":"","sources":["../../../src/cli/commands/serve-auth.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Core middleware, health check, static file serving, and rule seeding
3
- * for panguard serve.
4
- */
5
- import type { IncomingMessage, ServerResponse } from 'node:http';
6
- import type { ThreatCloudDBInstance } from './serve-types.js';
7
- /**
8
- * Apply security headers and CORS to every response.
9
- * Returns true if the request was fully handled (OPTIONS preflight).
10
- */
11
- export declare function applyMiddleware(req: IncomingMessage, res: ServerResponse): boolean;
12
- /**
13
- * Handle core routes: /health, /openapi.json, /docs/api, /admin/*.
14
- * Returns true if the route was handled, false otherwise.
15
- */
16
- export declare function handleCoreRoutes(req: IncomingMessage, res: ServerResponse, pathname: string, db: {
17
- healthCheck(): void;
18
- }, threatDb: ThreatCloudDBInstance, adminDir: string | undefined): boolean;
19
- /**
20
- * Seed rules from bundled config/ directory into Threat Cloud DB.
21
- * Reads ATR YAML files.
22
- * Returns count of rules seeded.
23
- */
24
- export declare function seedRulesFromBundled(threatDb: ThreatCloudDBInstance): Promise<number>;
25
- //# sourceMappingURL=serve-core.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve-core.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve-core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAK9D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CA8BlF;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE;IAAE,WAAW,IAAI,IAAI,CAAA;CAAE,EAC3B,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAgDT;AA2DD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqF3F"}