@agentlensai/server 0.7.0 → 0.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 (44) hide show
  1. package/dist/db/guardrail-store.d.ts +34 -0
  2. package/dist/db/guardrail-store.d.ts.map +1 -0
  3. package/dist/db/guardrail-store.js +221 -0
  4. package/dist/db/guardrail-store.js.map +1 -0
  5. package/dist/db/migrate.d.ts.map +1 -1
  6. package/dist/db/migrate.js +64 -0
  7. package/dist/db/migrate.js.map +1 -1
  8. package/dist/db/schema.sqlite.d.ts +58 -1
  9. package/dist/db/schema.sqlite.d.ts.map +1 -1
  10. package/dist/db/schema.sqlite.js +6 -0
  11. package/dist/db/schema.sqlite.js.map +1 -1
  12. package/dist/db/sqlite-store.d.ts +12 -0
  13. package/dist/db/sqlite-store.d.ts.map +1 -1
  14. package/dist/db/sqlite-store.js +47 -0
  15. package/dist/db/sqlite-store.js.map +1 -1
  16. package/dist/db/tenant-scoped-store.d.ts +1 -0
  17. package/dist/db/tenant-scoped-store.d.ts.map +1 -1
  18. package/dist/db/tenant-scoped-store.js +3 -0
  19. package/dist/db/tenant-scoped-store.js.map +1 -1
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +20 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib/guardrails/actions.d.ts +28 -0
  25. package/dist/lib/guardrails/actions.d.ts.map +1 -0
  26. package/dist/lib/guardrails/actions.js +126 -0
  27. package/dist/lib/guardrails/actions.js.map +1 -0
  28. package/dist/lib/guardrails/conditions.d.ts +13 -0
  29. package/dist/lib/guardrails/conditions.d.ts.map +1 -0
  30. package/dist/lib/guardrails/conditions.js +188 -0
  31. package/dist/lib/guardrails/conditions.js.map +1 -0
  32. package/dist/lib/guardrails/engine.d.ts +24 -0
  33. package/dist/lib/guardrails/engine.d.ts.map +1 -0
  34. package/dist/lib/guardrails/engine.js +122 -0
  35. package/dist/lib/guardrails/engine.js.map +1 -0
  36. package/dist/routes/agents.d.ts +4 -3
  37. package/dist/routes/agents.d.ts.map +1 -1
  38. package/dist/routes/agents.js +37 -12
  39. package/dist/routes/agents.js.map +1 -1
  40. package/dist/routes/guardrails.d.ts +18 -0
  41. package/dist/routes/guardrails.d.ts.map +1 -0
  42. package/dist/routes/guardrails.js +184 -0
  43. package/dist/routes/guardrails.js.map +1 -0
  44. package/package.json +2 -2
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Guardrail REST API Routes (v0.8.0 — Stories 2.1, 2.2)
3
+ *
4
+ * POST /api/guardrails — Create rule
5
+ * GET /api/guardrails — List rules
6
+ * GET /api/guardrails/:id — Get rule
7
+ * PUT /api/guardrails/:id — Update rule
8
+ * DELETE /api/guardrails/:id — Delete rule
9
+ * GET /api/guardrails/:id/status — Get rule status + recent triggers
10
+ * GET /api/guardrails/history — List trigger history
11
+ */
12
+ import { Hono } from 'hono';
13
+ import { ulid } from 'ulid';
14
+ import { CreateGuardrailRuleSchema, UpdateGuardrailRuleSchema } from '@agentlensai/core';
15
+ /**
16
+ * Validate that conditionConfig contains required fields for the given condition type.
17
+ * Returns an error message string if invalid, or null if valid.
18
+ */
19
+ function validateConditionConfig(conditionType, config) {
20
+ switch (conditionType) {
21
+ case 'error_rate_threshold':
22
+ if (config.threshold !== undefined && (typeof config.threshold !== 'number' || config.threshold < 0 || config.threshold > 100)) {
23
+ return 'error_rate_threshold requires threshold to be a number between 0 and 100';
24
+ }
25
+ break;
26
+ case 'cost_limit':
27
+ if (config.maxCostUsd !== undefined && (typeof config.maxCostUsd !== 'number' || config.maxCostUsd < 0)) {
28
+ return 'cost_limit requires maxCostUsd to be a non-negative number';
29
+ }
30
+ if (config.scope !== undefined && config.scope !== 'session' && config.scope !== 'daily') {
31
+ return 'cost_limit scope must be "session" or "daily"';
32
+ }
33
+ break;
34
+ case 'health_score_threshold':
35
+ if (config.minScore !== undefined && (typeof config.minScore !== 'number' || config.minScore < 0 || config.minScore > 100)) {
36
+ return 'health_score_threshold requires minScore to be a number between 0 and 100';
37
+ }
38
+ break;
39
+ case 'custom_metric':
40
+ if (config.operator !== undefined) {
41
+ const validOps = ['gt', 'gte', 'lt', 'lte', 'eq'];
42
+ if (!validOps.includes(config.operator)) {
43
+ return `custom_metric operator must be one of: ${validOps.join(', ')}`;
44
+ }
45
+ }
46
+ break;
47
+ }
48
+ return null;
49
+ }
50
+ export function guardrailRoutes(guardrailStore) {
51
+ const app = new Hono();
52
+ // Helper to get tenant ID from auth
53
+ function getTenantId(c) {
54
+ const apiKeyInfo = c.get('apiKey');
55
+ return apiKeyInfo?.tenantId ?? 'default';
56
+ }
57
+ // POST / — Create guardrail rule
58
+ app.post('/', async (c) => {
59
+ const tenantId = getTenantId(c);
60
+ const rawBody = await c.req.json().catch(() => null);
61
+ if (!rawBody) {
62
+ return c.json({ error: 'Invalid JSON body', status: 400 }, 400);
63
+ }
64
+ const result = CreateGuardrailRuleSchema.safeParse(rawBody);
65
+ if (!result.success) {
66
+ return c.json({
67
+ error: 'Validation failed',
68
+ status: 400,
69
+ details: result.error.issues.map((i) => ({ path: i.path.join('.'), message: i.message })),
70
+ }, 400);
71
+ }
72
+ // H4: Validate that conditionConfig has required fields for the condition type
73
+ const configError = validateConditionConfig(result.data.conditionType, result.data.conditionConfig);
74
+ if (configError) {
75
+ return c.json({ error: 'Validation failed', status: 400, details: [{ path: 'conditionConfig', message: configError }] }, 400);
76
+ }
77
+ // H2: Validate webhook URL if action is notify_webhook
78
+ if (result.data.actionType === 'notify_webhook') {
79
+ const url = result.data.actionConfig?.url;
80
+ if (typeof url === 'string' && !/^https?:\/\//.test(url)) {
81
+ return c.json({ error: 'Validation failed', status: 400, details: [{ path: 'actionConfig.url', message: 'Webhook URL must start with http:// or https://' }] }, 400);
82
+ }
83
+ }
84
+ const now = new Date().toISOString();
85
+ const rule = {
86
+ id: ulid(),
87
+ tenantId,
88
+ ...result.data,
89
+ createdAt: now,
90
+ updatedAt: now,
91
+ };
92
+ guardrailStore.createRule(rule);
93
+ return c.json(rule, 201);
94
+ });
95
+ // GET / — List guardrail rules
96
+ app.get('/', async (c) => {
97
+ const tenantId = getTenantId(c);
98
+ const agentId = c.req.query('agentId');
99
+ const rules = guardrailStore.listRules(tenantId, agentId || undefined);
100
+ return c.json({ rules });
101
+ });
102
+ // GET /history — List trigger history (BEFORE :id routes to avoid route conflict)
103
+ app.get('/history', async (c) => {
104
+ const tenantId = getTenantId(c);
105
+ const ruleId = c.req.query('ruleId');
106
+ const limit = parseInt(c.req.query('limit') ?? '50', 10);
107
+ const offset = parseInt(c.req.query('offset') ?? '0', 10);
108
+ const { triggers, total } = guardrailStore.listTriggerHistory(tenantId, {
109
+ ruleId: ruleId || undefined,
110
+ limit: Math.min(Math.max(1, limit), 200),
111
+ offset: Math.max(0, offset),
112
+ });
113
+ return c.json({ triggers, total });
114
+ });
115
+ // GET /:id — Get single rule
116
+ app.get('/:id', async (c) => {
117
+ const tenantId = getTenantId(c);
118
+ const ruleId = c.req.param('id');
119
+ const rule = guardrailStore.getRule(tenantId, ruleId);
120
+ if (!rule) {
121
+ return c.json({ error: 'Guardrail rule not found', status: 404 }, 404);
122
+ }
123
+ return c.json(rule);
124
+ });
125
+ // PUT /:id — Update rule
126
+ app.put('/:id', async (c) => {
127
+ const tenantId = getTenantId(c);
128
+ const ruleId = c.req.param('id');
129
+ const rawBody = await c.req.json().catch(() => null);
130
+ if (!rawBody) {
131
+ return c.json({ error: 'Invalid JSON body', status: 400 }, 400);
132
+ }
133
+ const result = UpdateGuardrailRuleSchema.safeParse(rawBody);
134
+ if (!result.success) {
135
+ return c.json({
136
+ error: 'Validation failed',
137
+ status: 400,
138
+ details: result.error.issues.map((i) => ({ path: i.path.join('.'), message: i.message })),
139
+ }, 400);
140
+ }
141
+ // H2: Validate webhook URL if action is notify_webhook
142
+ if (result.data.actionType === 'notify_webhook') {
143
+ const url = result.data.actionConfig?.url;
144
+ if (typeof url === 'string' && !/^https?:\/\//.test(url)) {
145
+ return c.json({ error: 'Validation failed', status: 400, details: [{ path: 'actionConfig.url', message: 'Webhook URL must start with http:// or https://' }] }, 400);
146
+ }
147
+ }
148
+ // Handle null agentId (clearing scope)
149
+ const updates = { ...result.data };
150
+ if (updates.agentId === null) {
151
+ updates.agentId = undefined;
152
+ }
153
+ const updated = guardrailStore.updateRule(tenantId, ruleId, updates);
154
+ if (!updated) {
155
+ return c.json({ error: 'Guardrail rule not found', status: 404 }, 404);
156
+ }
157
+ const rule = guardrailStore.getRule(tenantId, ruleId);
158
+ return c.json(rule);
159
+ });
160
+ // DELETE /:id — Delete rule
161
+ app.delete('/:id', async (c) => {
162
+ const tenantId = getTenantId(c);
163
+ const ruleId = c.req.param('id');
164
+ const deleted = guardrailStore.deleteRule(tenantId, ruleId);
165
+ if (!deleted) {
166
+ return c.json({ error: 'Guardrail rule not found', status: 404 }, 404);
167
+ }
168
+ return c.json({ ok: true });
169
+ });
170
+ // GET /:id/status — Get rule status + recent triggers
171
+ app.get('/:id/status', async (c) => {
172
+ const tenantId = getTenantId(c);
173
+ const ruleId = c.req.param('id');
174
+ const rule = guardrailStore.getRule(tenantId, ruleId);
175
+ if (!rule) {
176
+ return c.json({ error: 'Guardrail rule not found', status: 404 }, 404);
177
+ }
178
+ const state = guardrailStore.getState(tenantId, ruleId);
179
+ const recentTriggers = guardrailStore.getRecentTriggers(tenantId, ruleId, 10);
180
+ return c.json({ rule, state, recentTriggers });
181
+ });
182
+ return app;
183
+ }
184
+ //# sourceMappingURL=guardrails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/routes/guardrails.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentlensai/server",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "AgentLens API server — event ingestion, querying, dashboard, and alerting for AI agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -45,7 +45,7 @@
45
45
  "dev": "tsx watch src/index.ts"
46
46
  },
47
47
  "dependencies": {
48
- "@agentlensai/core": "^0.7.0",
48
+ "@agentlensai/core": "^0.8.0",
49
49
  "drizzle-orm": "^0.44.2",
50
50
  "better-sqlite3": "^11.9.1",
51
51
  "hono": "^4.7.10",