@agentlensai/server 0.13.0 → 0.14.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.
- package/dist/app.d.ts +27 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +178 -0
- package/dist/app.js.map +1 -0
- package/dist/config.d.ts +2 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -10
- package/dist/config.js.map +1 -1
- package/dist/health.d.ts +22 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +34 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +17 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -502
- package/dist/index.js.map +1 -1
- package/dist/lib/api-schema.d.ts +126 -0
- package/dist/lib/api-schema.d.ts.map +1 -0
- package/dist/lib/api-schema.js +69 -0
- package/dist/lib/api-schema.js.map +1 -0
- package/dist/lib/api-version.d.ts +21 -0
- package/dist/lib/api-version.d.ts.map +1 -0
- package/dist/lib/api-version.js +36 -0
- package/dist/lib/api-version.js.map +1 -0
- package/dist/lib/lore-client.d.ts +64 -112
- package/dist/lib/lore-client.d.ts.map +1 -1
- package/dist/lib/lore-client.js +120 -155
- package/dist/lib/lore-client.js.map +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +73 -0
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/alerts.d.ts.map +1 -1
- package/dist/routes/alerts.js +13 -36
- package/dist/routes/alerts.js.map +1 -1
- package/dist/routes/analytics.d.ts.map +1 -1
- package/dist/routes/analytics.js +93 -0
- package/dist/routes/analytics.js.map +1 -1
- package/dist/routes/api-version.d.ts +9 -0
- package/dist/routes/api-version.d.ts.map +1 -0
- package/dist/routes/api-version.js +19 -0
- package/dist/routes/api-version.js.map +1 -0
- package/dist/routes/audit-verify.d.ts +3 -2
- package/dist/routes/audit-verify.d.ts.map +1 -1
- package/dist/routes/audit-verify.js +91 -27
- package/dist/routes/audit-verify.js.map +1 -1
- package/dist/routes/cost-budgets.d.ts.map +1 -1
- package/dist/routes/cost-budgets.js +19 -36
- package/dist/routes/cost-budgets.js.map +1 -1
- package/dist/routes/guardrails.d.ts.map +1 -1
- package/dist/routes/guardrails.js +121 -37
- package/dist/routes/guardrails.js.map +1 -1
- package/dist/routes/helpers.d.ts +27 -0
- package/dist/routes/helpers.d.ts.map +1 -0
- package/dist/routes/helpers.js +46 -0
- package/dist/routes/helpers.js.map +1 -0
- package/dist/routes/lore-proxy.d.ts +8 -6
- package/dist/routes/lore-proxy.d.ts.map +1 -1
- package/dist/routes/lore-proxy.js +39 -193
- package/dist/routes/lore-proxy.js.map +1 -1
- package/dist/routes/mcp-policies.d.ts +40 -0
- package/dist/routes/mcp-policies.d.ts.map +1 -0
- package/dist/routes/mcp-policies.js +200 -0
- package/dist/routes/mcp-policies.js.map +1 -0
- package/dist/routes/optimization-advisor.d.ts +13 -0
- package/dist/routes/optimization-advisor.d.ts.map +1 -0
- package/dist/routes/optimization-advisor.js +42 -0
- package/dist/routes/optimization-advisor.js.map +1 -0
- package/dist/routes/recall.d.ts.map +1 -1
- package/dist/routes/recall.js +7 -3
- package/dist/routes/recall.js.map +1 -1
- package/dist/routes/registration.d.ts +27 -0
- package/dist/routes/registration.d.ts.map +1 -0
- package/dist/routes/registration.js +311 -0
- package/dist/routes/registration.js.map +1 -0
- package/dist/routes/replay.d.ts.map +1 -1
- package/dist/routes/replay.js +51 -0
- package/dist/routes/replay.js.map +1 -1
- package/dist/services/optimization-advisor.d.ts +37 -0
- package/dist/services/optimization-advisor.d.ts.map +1 -0
- package/dist/services/optimization-advisor.js +239 -0
- package/dist/services/optimization-advisor.js.map +1 -0
- package/package.json +1 -1
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hono app creation and middleware setup — extracted from index.ts (cq-001)
|
|
3
|
+
*/
|
|
4
|
+
import { OpenAPIHono } from '@hono/zod-openapi';
|
|
5
|
+
import type { IEventStore } from '@agentlensai/core';
|
|
6
|
+
import { type ServerConfig } from './config.js';
|
|
7
|
+
import { type AuthVariables } from './middleware/auth.js';
|
|
8
|
+
import type { SqliteDb } from './db/index.js';
|
|
9
|
+
import type { EmbeddingService } from './lib/embeddings/index.js';
|
|
10
|
+
import type { EmbeddingWorker } from './lib/embeddings/worker.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a configured Hono app with all routes and middleware.
|
|
13
|
+
*
|
|
14
|
+
* @param store - IEventStore implementation for data access
|
|
15
|
+
* @param config - Optional partial config override (defaults from env)
|
|
16
|
+
*/
|
|
17
|
+
export declare function createApp(store: IEventStore, config?: Partial<ServerConfig> & {
|
|
18
|
+
db?: SqliteDb;
|
|
19
|
+
apiKeyLookup?: import('./db/api-key-lookup.js').IApiKeyLookup;
|
|
20
|
+
embeddingService?: EmbeddingService | null;
|
|
21
|
+
embeddingWorker?: EmbeddingWorker | null;
|
|
22
|
+
pgSql?: import('postgres').Sql;
|
|
23
|
+
pgDb?: import('./db/connection.postgres.js').PostgresDb;
|
|
24
|
+
}): Promise<OpenAPIHono<{
|
|
25
|
+
Variables: AuthVariables;
|
|
26
|
+
}, {}, "/">>;
|
|
27
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAgDlE;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC/B,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,wBAAwB,EAAE,aAAa,CAAC;IAC9D,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,UAAU,EAAE,GAAG,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,6BAA6B,EAAE,UAAU,CAAC;CACzD;eAIwC,aAAa;aAmIvD"}
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hono app creation and middleware setup — extracted from index.ts (cq-001)
|
|
3
|
+
*/
|
|
4
|
+
import { OpenAPIHono } from '@hono/zod-openapi';
|
|
5
|
+
import { cors } from 'hono/cors';
|
|
6
|
+
import { logger } from 'hono/logger';
|
|
7
|
+
import { serveStatic } from '@hono/node-server/serve-static';
|
|
8
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
9
|
+
import { resolve, dirname } from 'node:path';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { BearerAuthScheme } from './schemas/common.js';
|
|
12
|
+
import { getConfig } from './config.js';
|
|
13
|
+
import { authMiddleware } from './middleware/auth.js';
|
|
14
|
+
import { unifiedAuthMiddleware } from './middleware/unified-auth.js';
|
|
15
|
+
import { requireCategory, requireMethodCategory, requireCategoryByMethod } from './middleware/rbac.js';
|
|
16
|
+
import { securityHeadersMiddleware } from './middleware/security-headers.js';
|
|
17
|
+
import { sanitizeErrorMessage, getErrorStatus } from './lib/error-sanitizer.js';
|
|
18
|
+
import { buildCorsOptions } from './middleware/cors-config.js';
|
|
19
|
+
import { authRateLimit, apiRateLimit } from './middleware/rate-limit.js';
|
|
20
|
+
import { apiBodyLimit } from './middleware/body-limit.js';
|
|
21
|
+
import { createAuditLogger } from './lib/audit.js';
|
|
22
|
+
import { auditMiddleware } from './middleware/audit.js';
|
|
23
|
+
import { registerInlineHealthCheck } from './health.js';
|
|
24
|
+
import { registerRoutes } from './routes/registration.js';
|
|
25
|
+
import { createLogger } from './lib/logger.js';
|
|
26
|
+
const log = createLogger('Server');
|
|
27
|
+
// ─── Dashboard SPA helpers ───────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the dashboard dist/ directory path.
|
|
30
|
+
*/
|
|
31
|
+
function getDashboardRoot() {
|
|
32
|
+
const candidates = [
|
|
33
|
+
resolve(dirname(fileURLToPath(import.meta.url)), '../../dashboard/dist'),
|
|
34
|
+
process.env['DASHBOARD_PATH'] ?? '',
|
|
35
|
+
].filter(Boolean);
|
|
36
|
+
for (const candidate of candidates) {
|
|
37
|
+
if (existsSync(resolve(candidate, 'index.html'))) {
|
|
38
|
+
return candidate;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read the dashboard index.html for SPA fallback (non-API routes).
|
|
45
|
+
*/
|
|
46
|
+
let cachedIndexHtml;
|
|
47
|
+
function getDashboardIndexHtml() {
|
|
48
|
+
if (cachedIndexHtml !== undefined)
|
|
49
|
+
return cachedIndexHtml;
|
|
50
|
+
const root = getDashboardRoot();
|
|
51
|
+
if (!root) {
|
|
52
|
+
cachedIndexHtml = null;
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const indexPath = resolve(root, 'index.html');
|
|
56
|
+
try {
|
|
57
|
+
cachedIndexHtml = readFileSync(indexPath, 'utf-8');
|
|
58
|
+
return cachedIndexHtml;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
cachedIndexHtml = null;
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a configured Hono app with all routes and middleware.
|
|
67
|
+
*
|
|
68
|
+
* @param store - IEventStore implementation for data access
|
|
69
|
+
* @param config - Optional partial config override (defaults from env)
|
|
70
|
+
*/
|
|
71
|
+
export async function createApp(store, config) {
|
|
72
|
+
const resolvedConfig = { ...getConfig(), ...config };
|
|
73
|
+
const app = new OpenAPIHono({
|
|
74
|
+
defaultHook: (result, c) => {
|
|
75
|
+
if (!result.success) {
|
|
76
|
+
return c.json({
|
|
77
|
+
error: 'Validation failed',
|
|
78
|
+
status: 400,
|
|
79
|
+
details: result.error.issues.map((i) => ({
|
|
80
|
+
path: i.path.map(String).join('.'),
|
|
81
|
+
message: i.message,
|
|
82
|
+
})),
|
|
83
|
+
}, 400);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
// Register Bearer auth security scheme for OpenAPI [F13-S1]
|
|
88
|
+
app.openAPIRegistry.registerComponent('securitySchemes', 'Bearer', BearerAuthScheme);
|
|
89
|
+
// ─── Security headers (position 1 — must be first) ────
|
|
90
|
+
app.use('*', securityHeadersMiddleware());
|
|
91
|
+
// ─── Global error handler ──────────────────────────────
|
|
92
|
+
app.onError((err, c) => {
|
|
93
|
+
const status = getErrorStatus(err);
|
|
94
|
+
if (status >= 500) {
|
|
95
|
+
log.error('Unhandled error', { error: err instanceof Error ? err.message : String(err) });
|
|
96
|
+
}
|
|
97
|
+
const message = sanitizeErrorMessage(err);
|
|
98
|
+
return c.json({ error: message, status }, status);
|
|
99
|
+
});
|
|
100
|
+
// ─── 404 handler — API routes return JSON, others get SPA fallback ──
|
|
101
|
+
app.notFound((c) => {
|
|
102
|
+
const path = new URL(c.req.url).pathname;
|
|
103
|
+
if (path.startsWith('/api/')) {
|
|
104
|
+
return c.json({ error: 'Not found', status: 404 }, 404);
|
|
105
|
+
}
|
|
106
|
+
if (/\.\w{1,10}$/.test(path)) {
|
|
107
|
+
return c.json({ error: 'Not found', status: 404 }, 404);
|
|
108
|
+
}
|
|
109
|
+
const indexHtml = getDashboardIndexHtml();
|
|
110
|
+
if (indexHtml) {
|
|
111
|
+
return c.html(indexHtml);
|
|
112
|
+
}
|
|
113
|
+
return c.json({ error: 'Not found', status: 404 }, 404);
|
|
114
|
+
});
|
|
115
|
+
// ─── Middleware on /api/* ──────────────────────────────
|
|
116
|
+
app.use('/api/*', cors(buildCorsOptions({
|
|
117
|
+
corsOrigins: resolvedConfig.corsOrigins ?? resolvedConfig.corsOrigin,
|
|
118
|
+
nodeEnv: process.env['NODE_ENV'],
|
|
119
|
+
})));
|
|
120
|
+
app.use('/api/*', logger());
|
|
121
|
+
// ─── SH-3: Body size limit (1MB default) ────────────────
|
|
122
|
+
app.use('/api/*', apiBodyLimit);
|
|
123
|
+
// ─── Rate limiting: API endpoints ──────────────────────
|
|
124
|
+
app.use('/api/*', apiRateLimit);
|
|
125
|
+
// ─── Health check (no auth) ────────────────────────────
|
|
126
|
+
registerInlineHealthCheck(app, resolvedConfig, config);
|
|
127
|
+
// ─── Rate limiting: auth endpoints ─────────────────────
|
|
128
|
+
app.use('/auth/*', authRateLimit);
|
|
129
|
+
// ─── Auth posture check (Feature-1: secure-by-default) ──
|
|
130
|
+
if (resolvedConfig.authDisabled && process.env['NODE_ENV'] === 'production') {
|
|
131
|
+
log.error('CRITICAL: Running with AUTH_DISABLED=true in production. All API endpoints are unprotected!');
|
|
132
|
+
}
|
|
133
|
+
// ─── Auth middleware on protected routes [F2-S3] ───────
|
|
134
|
+
const db = config?.db;
|
|
135
|
+
if (!db && !resolvedConfig.authDisabled) {
|
|
136
|
+
throw new Error('createApp() requires a `db` option when auth is enabled. ' +
|
|
137
|
+
'Either provide a database or set authDisabled: true.');
|
|
138
|
+
}
|
|
139
|
+
{
|
|
140
|
+
const authLookup = config?.apiKeyLookup ?? db ?? null;
|
|
141
|
+
const authConfig = {
|
|
142
|
+
authDisabled: resolvedConfig.authDisabled,
|
|
143
|
+
jwtSecret: process.env['JWT_SECRET'],
|
|
144
|
+
};
|
|
145
|
+
// ── Unified auth catch-all ──
|
|
146
|
+
app.use('/api/*', unifiedAuthMiddleware(authLookup, authConfig));
|
|
147
|
+
// ── RBAC enforcement per architecture §3.3 ──────────
|
|
148
|
+
const manageGuard = requireCategory('manage');
|
|
149
|
+
app.use('/api/keys/*', manageGuard);
|
|
150
|
+
app.use('/api/keys', manageGuard);
|
|
151
|
+
app.use('/api/audit/*', manageGuard);
|
|
152
|
+
app.use('/api/audit', manageGuard);
|
|
153
|
+
app.use('/api/compliance/*', manageGuard);
|
|
154
|
+
app.use('/api/compliance', manageGuard);
|
|
155
|
+
const configGuard = requireCategoryByMethod({ GET: 'read', PUT: 'manage', PATCH: 'manage' });
|
|
156
|
+
app.use('/api/config/*', configGuard);
|
|
157
|
+
app.use('/api/config', configGuard);
|
|
158
|
+
const guardrailGuard = requireCategoryByMethod({ GET: 'read', POST: 'manage', PUT: 'manage', DELETE: 'manage' });
|
|
159
|
+
app.use('/api/guardrails/*', guardrailGuard);
|
|
160
|
+
app.use('/api/guardrails', guardrailGuard);
|
|
161
|
+
// Default safety net: GET = read, mutations = write
|
|
162
|
+
app.use('/api/*', requireMethodCategory());
|
|
163
|
+
// ── Audit middleware (after auth — has access to auth context) ──
|
|
164
|
+
if (db) {
|
|
165
|
+
const auditLogger = createAuditLogger(db);
|
|
166
|
+
app.use('/api/*', auditMiddleware(auditLogger));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ─── Register all routes ──────────────────────────────
|
|
170
|
+
await registerRoutes(app, store, resolvedConfig, config);
|
|
171
|
+
// ─── Dashboard SPA static assets ──────────────────────
|
|
172
|
+
const dashboardRoot = getDashboardRoot();
|
|
173
|
+
if (dashboardRoot) {
|
|
174
|
+
app.use('/*', serveStatic({ root: dashboardRoot }));
|
|
175
|
+
}
|
|
176
|
+
return app;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -28,14 +28,10 @@ export interface ServerConfig {
|
|
|
28
28
|
meshUrl: string;
|
|
29
29
|
/** Enable Lore memory integration (default: false) */
|
|
30
30
|
loreEnabled: boolean;
|
|
31
|
-
/** Lore
|
|
32
|
-
loreMode: 'local' | 'remote';
|
|
33
|
-
/** Lore API URL (required when loreMode === 'remote' && loreEnabled) */
|
|
31
|
+
/** Lore API URL (required when loreEnabled) */
|
|
34
32
|
loreApiUrl?: string;
|
|
35
|
-
/** Lore API key (required when
|
|
33
|
+
/** Lore API key (required when loreEnabled) */
|
|
36
34
|
loreApiKey?: string;
|
|
37
|
-
/** Lore SQLite database path (optional, lore-sdk has defaults) */
|
|
38
|
-
loreDbPath?: string;
|
|
39
35
|
/** HMAC-SHA256 key for signing audit verification reports (optional) */
|
|
40
36
|
auditSigningKey?: string;
|
|
41
37
|
/** Enable strict multi-tenant mode — rejects unscoped ingestion (default: false) [F6-S13] */
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,cAAc,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,gBAAgB,EAAE,OAAO,CAAC;IAG1B,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAGhB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,cAAc,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,gBAAgB,EAAE,OAAO,CAAC;IAG1B,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAGhB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,6FAA6F;IAC7F,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,YAAY,CA+CxC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CA8BzD"}
|
package/dist/config.js
CHANGED
|
@@ -41,12 +41,10 @@ export function getConfig() {
|
|
|
41
41
|
// Mesh integration
|
|
42
42
|
meshEnabled: process.env['MESH_ENABLED'] === 'true',
|
|
43
43
|
meshUrl: process.env['MESH_URL'] ?? '',
|
|
44
|
-
// Lore integration
|
|
44
|
+
// Lore integration (v0.5.0+ — always remote, no local mode)
|
|
45
45
|
loreEnabled: process.env['LORE_ENABLED'] === 'true',
|
|
46
|
-
loreMode: (process.env['LORE_MODE'] === 'local' ? 'local' : 'remote'),
|
|
47
46
|
loreApiUrl: process.env['LORE_API_URL'] || undefined,
|
|
48
47
|
loreApiKey: process.env['LORE_API_KEY'] || undefined,
|
|
49
|
-
loreDbPath: process.env['LORE_DB_PATH'] || undefined,
|
|
50
48
|
// Audit verification signing
|
|
51
49
|
auditSigningKey: process.env['AGENTLENS_AUDIT_SIGNING_KEY'] || undefined,
|
|
52
50
|
// Multi-tenant mode [F6-S13]
|
|
@@ -58,6 +56,13 @@ export function getConfig() {
|
|
|
58
56
|
*/
|
|
59
57
|
export function validateConfig(config) {
|
|
60
58
|
if (config.authDisabled) {
|
|
59
|
+
const nodeEnv = process.env['NODE_ENV'] ?? 'development';
|
|
60
|
+
if (nodeEnv === 'production') {
|
|
61
|
+
log.error('CRITICAL: AUTH_DISABLED=true in production environment! This is a severe security risk. Set AUTH_DISABLED=false or remove it.');
|
|
62
|
+
}
|
|
63
|
+
else if (nodeEnv !== 'development') {
|
|
64
|
+
log.warn('WARNING: AUTH_DISABLED=true in non-development environment (NODE_ENV=' + nodeEnv + '). This is not recommended.');
|
|
65
|
+
}
|
|
61
66
|
log.warn('⚠️ Authentication is DISABLED. Do not use in production!');
|
|
62
67
|
}
|
|
63
68
|
if (config.corsOrigin === '*' && !config.authDisabled) {
|
|
@@ -78,13 +83,11 @@ export function validateConfig(config) {
|
|
|
78
83
|
function validateLoreConfig(config) {
|
|
79
84
|
if (!config.loreEnabled)
|
|
80
85
|
return;
|
|
81
|
-
if (config.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
throw new Error('FATAL: LORE_ENABLED=true with LORE_MODE=remote requires LORE_API_KEY to be set.');
|
|
87
|
-
}
|
|
86
|
+
if (!config.loreApiUrl) {
|
|
87
|
+
throw new Error('FATAL: LORE_ENABLED=true requires LORE_API_URL to be set.');
|
|
88
|
+
}
|
|
89
|
+
if (!config.loreApiKey) {
|
|
90
|
+
throw new Error('FATAL: LORE_ENABLED=true requires LORE_API_KEY to be set.');
|
|
88
91
|
}
|
|
89
92
|
}
|
|
90
93
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/health.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health check endpoint — extracted from index.ts (cq-001)
|
|
3
|
+
*
|
|
4
|
+
* Inline health check registered directly on the app (no auth required).
|
|
5
|
+
*/
|
|
6
|
+
import type { OpenAPIHono } from '@hono/zod-openapi';
|
|
7
|
+
import type { AuthVariables } from './middleware/auth.js';
|
|
8
|
+
import type { SqliteDb } from './db/index.js';
|
|
9
|
+
import type { ServerConfig } from './config.js';
|
|
10
|
+
/**
|
|
11
|
+
* Register the inline /api/health endpoint on the given app.
|
|
12
|
+
*
|
|
13
|
+
* This is the lightweight "is the server alive?" check that runs before
|
|
14
|
+
* auth middleware. The richer per-agent health routes live in routes/health.ts.
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerInlineHealthCheck(app: OpenAPIHono<{
|
|
17
|
+
Variables: AuthVariables;
|
|
18
|
+
}>, resolvedConfig: ServerConfig, config?: {
|
|
19
|
+
db?: SqliteDb;
|
|
20
|
+
pgSql?: import('postgres').Sql;
|
|
21
|
+
}): void;
|
|
22
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,WAAW,CAAC;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC,EAC9C,cAAc,EAAE,YAAY,EAC5B,MAAM,CAAC,EAAE;IACP,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,EAAE,GAAG,CAAC;CAChC,QAwBF"}
|
package/dist/health.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health check endpoint — extracted from index.ts (cq-001)
|
|
3
|
+
*
|
|
4
|
+
* Inline health check registered directly on the app (no auth required).
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Register the inline /api/health endpoint on the given app.
|
|
8
|
+
*
|
|
9
|
+
* This is the lightweight "is the server alive?" check that runs before
|
|
10
|
+
* auth middleware. The richer per-agent health routes live in routes/health.ts.
|
|
11
|
+
*/
|
|
12
|
+
export function registerInlineHealthCheck(app, resolvedConfig, config) {
|
|
13
|
+
app.get('/api/health', async (c) => {
|
|
14
|
+
const result = { status: 'ok', version: '0.1.0' };
|
|
15
|
+
// DB health check — works for both SQLite and Postgres
|
|
16
|
+
if (config?.pgSql) {
|
|
17
|
+
const { postgresHealthCheck } = await import('./db/index.js');
|
|
18
|
+
result.db = await postgresHealthCheck(config.pgSql);
|
|
19
|
+
}
|
|
20
|
+
else if (config?.db) {
|
|
21
|
+
// SQLite health check
|
|
22
|
+
const start = performance.now();
|
|
23
|
+
try {
|
|
24
|
+
config.db.run((await import('drizzle-orm')).sql `SELECT 1`);
|
|
25
|
+
result.db = { ok: true, latencyMs: Math.round(performance.now() - start) };
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
result.db = { ok: false, latencyMs: Math.round(performance.now() - start) };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return c.json(result);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAA8C,EAC9C,cAA4B,EAC5B,MAGC;IAED,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,MAAM,GAA4B,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAE3E,uDAAuD;QACvD,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,CAAC,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;YACtB,sBAAsB;YACtB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC;gBACF,MAAM,CAAC,EAAU,CAAC,GAAG,CACpB,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAA,UAAU,CAC5C,CAAC;gBACF,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAC7E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @agentlensai/server — Hono HTTP API server and event storage
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Thin entry point: re-exports createApp from app.ts and startServer below.
|
|
5
|
+
* The heavy lifting lives in:
|
|
6
|
+
* - app.ts — Hono app creation, middleware setup
|
|
7
|
+
* - routes/registration.ts — route mounting
|
|
8
|
+
* - health.ts — inline health check endpoint
|
|
7
9
|
*/
|
|
8
|
-
|
|
9
|
-
import type { IEventStore } from '@agentlensai/core';
|
|
10
|
-
import { type ServerConfig } from './config.js';
|
|
11
|
-
import { type AuthVariables } from './middleware/auth.js';
|
|
12
|
-
import { type SqliteDb } from './db/index.js';
|
|
13
|
-
import { EmbeddingWorker } from './lib/embeddings/worker.js';
|
|
14
|
-
import type { EmbeddingService } from './lib/embeddings/index.js';
|
|
10
|
+
export { createApp } from './app.js';
|
|
15
11
|
export { getConfig, validateConfig } from './config.js';
|
|
16
12
|
export type { ServerConfig } from './config.js';
|
|
17
13
|
export { authMiddleware, hashApiKey } from './middleware/auth.js';
|
|
@@ -51,41 +47,31 @@ export type { AuditLogger, AuditEntry, ActorType } from './lib/audit.js';
|
|
|
51
47
|
export { auditMiddleware } from './middleware/audit.js';
|
|
52
48
|
export { healthRoutes, registerHealthRoutes } from './routes/health.js';
|
|
53
49
|
export { ContextRetriever } from './lib/context/retrieval.js';
|
|
54
|
-
export { loreProxyRoutes
|
|
55
|
-
export { createLoreAdapter,
|
|
56
|
-
export type {
|
|
50
|
+
export { loreProxyRoutes } from './routes/lore-proxy.js';
|
|
51
|
+
export { createLoreAdapter, LoreReadAdapter, LoreError } from './lib/lore-client.js';
|
|
52
|
+
export type { LoreMemory, LoreStats, LoreListResponse } from './lib/lore-client.js';
|
|
57
53
|
export { meshProxyRoutes } from './routes/mesh-proxy.js';
|
|
58
54
|
export { RemoteMeshAdapter, MeshError } from './lib/mesh-client.js';
|
|
59
55
|
export type { MeshAdapter } from './lib/mesh-client.js';
|
|
60
56
|
export { otlpRoutes } from './routes/otlp.js';
|
|
61
57
|
export { guardrailRoutes } from './routes/guardrails.js';
|
|
58
|
+
export { mcpPolicyRoutes } from './routes/mcp-policies.js';
|
|
62
59
|
export { GuardrailEngine } from './lib/guardrails/engine.js';
|
|
63
60
|
export { GuardrailStore } from './db/guardrail-store.js';
|
|
64
61
|
export { BudgetEngine } from './lib/budget-engine.js';
|
|
65
62
|
export { CostAnomalyDetector } from './lib/cost-anomaly-detector.js';
|
|
66
63
|
export { CostBudgetStore } from './db/cost-budget-store.js';
|
|
67
64
|
export { costBudgetRoutes } from './routes/cost-budgets.js';
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
74
|
-
export declare function createApp(store: IEventStore, config?: Partial<ServerConfig> & {
|
|
75
|
-
db?: SqliteDb;
|
|
76
|
-
apiKeyLookup?: import('./db/api-key-lookup.js').IApiKeyLookup;
|
|
77
|
-
embeddingService?: EmbeddingService | null;
|
|
78
|
-
embeddingWorker?: EmbeddingWorker | null;
|
|
79
|
-
pgSql?: import('postgres').Sql;
|
|
80
|
-
pgDb?: import('./db/connection.postgres.js').PostgresDb;
|
|
81
|
-
}): Promise<OpenAPIHono<{
|
|
82
|
-
Variables: AuthVariables;
|
|
83
|
-
}, {}, "/">>;
|
|
65
|
+
export { apiVersionMiddleware, CURRENT_API_VERSION, SUPPORTED_API_VERSIONS } from './lib/api-version.js';
|
|
66
|
+
export { apiVersionRoutes } from './routes/api-version.js';
|
|
67
|
+
export { optimizationAdvisorRoutes } from './routes/optimization-advisor.js';
|
|
68
|
+
export { getOptimizationSuggestions, getOptimizationSummary } from './services/optimization-advisor.js';
|
|
69
|
+
export type { OptimizationSuggestion, AdvisorResult, SuggestionType } from './services/optimization-advisor.js';
|
|
84
70
|
/**
|
|
85
71
|
* Start the server as a standalone process.
|
|
86
72
|
* Creates the database, runs migrations, and starts listening.
|
|
87
73
|
*/
|
|
88
|
-
export declare function startServer(): Promise<OpenAPIHono<{
|
|
89
|
-
Variables: AuthVariables;
|
|
74
|
+
export declare function startServer(): Promise<import("@hono/zod-openapi").OpenAPIHono<{
|
|
75
|
+
Variables: import("./middleware/auth.js").AuthVariables;
|
|
90
76
|
}, {}, "/">>;
|
|
91
77
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|