palaryn 0.4.6 → 0.4.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"saas-routes-crud.test.js","sourceRoot":"","sources":["../../../tests/unit/saas-routes-crud.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"saas-routes-crud.test.js","sourceRoot":"","sources":["../../../tests/unit/saas-routes-crud.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palaryn",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "Palaryn - Model-agnostic infrastructure layer for AI agent I/O security, cost control, and observability",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -466,7 +466,7 @@ export function createAuthMiddleware(config: AuthConfig, userApiKeyStore?: UserA
466
466
  const token = apiKeyHeader || bearerToken;
467
467
 
468
468
  if (!token) {
469
- recordAuthFailure(clientIp);
469
+ // Do not count missing tokens toward brute-force (unauthenticated, not an attack)
470
470
  sendError(res, 401, ErrorCode.AUTH_REQUIRED, 'Missing API key. Provide X-API-Key header or Bearer token.', {
471
471
  hint: 'Provide X-API-Key header or Authorization: Bearer <token>',
472
472
  });
@@ -15,6 +15,8 @@ import { SessionReplayEngine } from '../replay/engine';
15
15
  import { PlanEnforcer } from '../billing/plan-enforcer';
16
16
  import { PlanTier } from '../types/subscription';
17
17
  import { MODEL_PRICING, resolveModelPricing } from '../budget/model-pricing';
18
+ import { PolicyEngine } from '../policy/engine';
19
+ import { ToolCall } from '../types/tool-call';
18
20
 
19
21
  /** Strip HTML tags from user-provided display strings to prevent stored XSS. */
20
22
  function stripHtmlTags(input: string): string {
@@ -1048,6 +1050,72 @@ export function createSaaSRouter(deps: SaaSRouteDeps): Router {
1048
1050
  res.json(validation);
1049
1051
  });
1050
1052
 
1053
+ router.post('/workspaces/:id/policies/evaluate-test', (req: Request, res: Response) => {
1054
+ if (!requireSession(req, res)) return;
1055
+ const user = (req as any).sessionUser;
1056
+ const workspaceId = param(req, 'id');
1057
+
1058
+ const membership = workspaceMemberStore.getByWorkspaceAndUser(workspaceId, user.id);
1059
+ if (!membership) {
1060
+ res.status(403).json({ error: 'Not a member of this workspace' });
1061
+ return;
1062
+ }
1063
+
1064
+ const { policy, tool_call } = req.body;
1065
+ if (!policy || !tool_call) {
1066
+ res.status(400).json({ error: 'policy and tool_call are required' });
1067
+ return;
1068
+ }
1069
+
1070
+ // Validate the policy
1071
+ const validation = PolicyEngine.validate(policy);
1072
+ if (!validation.valid) {
1073
+ res.status(400).json({ error: 'Invalid policy', details: validation.errors });
1074
+ return;
1075
+ }
1076
+
1077
+ // Extract domain from url if present
1078
+ let domain: string | undefined;
1079
+ if (tool_call.url) {
1080
+ try {
1081
+ domain = new URL(tool_call.url).hostname;
1082
+ } catch {
1083
+ // not a valid URL, skip domain extraction
1084
+ }
1085
+ }
1086
+
1087
+ // Construct full ToolCall from simplified input
1088
+ const fullToolCall: ToolCall = {
1089
+ tool_call_id: `test-${Date.now()}`,
1090
+ task_id: 'test',
1091
+ workspace_id: workspaceId,
1092
+ actor: {
1093
+ type: tool_call.actor_type || 'agent',
1094
+ id: tool_call.actor_id || 'test-actor',
1095
+ },
1096
+ source: {
1097
+ platform: tool_call.platform || 'test',
1098
+ },
1099
+ tool: {
1100
+ name: tool_call.tool_name || 'unknown',
1101
+ capability: tool_call.capability || 'read',
1102
+ },
1103
+ args: {
1104
+ method: tool_call.method,
1105
+ url: tool_call.url,
1106
+ ...(domain ? { domain } : {}),
1107
+ },
1108
+ context: {
1109
+ labels: tool_call.labels,
1110
+ },
1111
+ timestamp: new Date().toISOString(),
1112
+ };
1113
+
1114
+ const engine = PolicyEngine.fromPack(policy);
1115
+ const result = engine.evaluate(fullToolCall);
1116
+ res.json({ result });
1117
+ });
1118
+
1051
1119
  // ---------------------------------------------------------------------------
1052
1120
  // Policy Rule Generation (LLM-powered)
1053
1121
  // ---------------------------------------------------------------------------
@@ -1263,6 +1331,285 @@ Output: [{"name":"allow-get-example","description":"Allow GET requests to exampl
1263
1331
  }
1264
1332
  });
1265
1333
 
1334
+ // ---------------------------------------------------------------------------
1335
+ // Policy Chat (LLM-powered, SSE streaming)
1336
+ // ---------------------------------------------------------------------------
1337
+
1338
+ const LLM_CHAT_RATE_LIMIT_MAX = 30;
1339
+ const LLM_CHAT_RATE_LIMIT_WINDOW_MS = 60 * 60 * 1000; // 1 hour
1340
+ const llmChatRateLimitHits = new Map<string, number[]>();
1341
+
1342
+ // Periodic cleanup to prevent memory leaks
1343
+ setInterval(() => {
1344
+ const now = Date.now();
1345
+ for (const [userId, timestamps] of llmChatRateLimitHits) {
1346
+ const valid = timestamps.filter(t => now - t < LLM_CHAT_RATE_LIMIT_WINDOW_MS);
1347
+ if (valid.length === 0) {
1348
+ llmChatRateLimitHits.delete(userId);
1349
+ } else {
1350
+ llmChatRateLimitHits.set(userId, valid);
1351
+ }
1352
+ }
1353
+ }, LLM_CHAT_RATE_LIMIT_WINDOW_MS).unref();
1354
+
1355
+ router.post('/workspaces/:id/policies/chat', async (req: Request, res: Response) => {
1356
+ if (!requireSession(req, res)) return;
1357
+ const user = (req as any).sessionUser;
1358
+ const workspaceId = param(req, 'id');
1359
+
1360
+ const membership = workspaceMemberStore.getByWorkspaceAndUser(workspaceId, user.id);
1361
+ if (!membership) {
1362
+ res.status(403).json({ error: 'Not a member of this workspace' });
1363
+ return;
1364
+ }
1365
+
1366
+ const apiKey = process.env.PALARYN_LLM_API_KEY;
1367
+ if (!apiKey) {
1368
+ res.status(503).json({ error: 'AI policy chat is not configured. Set PALARYN_LLM_API_KEY environment variable.' });
1369
+ return;
1370
+ }
1371
+
1372
+ const { messages, current_policy } = req.body;
1373
+ if (!messages || !Array.isArray(messages) || messages.length === 0) {
1374
+ res.status(400).json({ error: 'messages array is required and must not be empty' });
1375
+ return;
1376
+ }
1377
+
1378
+ // Per-user rate limit check
1379
+ const now = Date.now();
1380
+ const userTimestamps = llmChatRateLimitHits.get(user.id) || [];
1381
+ const windowStart = now - LLM_CHAT_RATE_LIMIT_WINDOW_MS;
1382
+ const validTimestamps = userTimestamps.filter(t => t > windowStart);
1383
+
1384
+ if (validTimestamps.length >= LLM_CHAT_RATE_LIMIT_MAX) {
1385
+ const retryAfterMs = LLM_CHAT_RATE_LIMIT_WINDOW_MS - (now - validTimestamps[0]);
1386
+ res.status(429).json({
1387
+ error: `You've reached the limit of ${LLM_CHAT_RATE_LIMIT_MAX} AI chat messages per hour. Please try again later.`,
1388
+ retry_after_ms: retryAfterMs,
1389
+ });
1390
+ return;
1391
+ }
1392
+
1393
+ validTimestamps.push(now);
1394
+ llmChatRateLimitHits.set(user.id, validTimestamps);
1395
+
1396
+ const chatSystemPrompt = `You are a policy advisor for Palaryn, an AI agent gateway. You help users create, understand, and refine security policies that control what AI agents can do.
1397
+
1398
+ You respond conversationally, explaining your reasoning and the implications of the policy you propose.
1399
+
1400
+ Your response MUST include:
1401
+
1402
+ 1. A brief explanation of what the policy does and why
1403
+ 2. A "Policy Proposal" section with bullet points summarizing the key rules
1404
+ 3. Example scenarios showing how the policy would behave, e.g.:
1405
+ - "If agent X tries to DELETE /api/users -> DENIED by rule block-delete-ops"
1406
+ - "If agent Y sends a GET to api.github.com -> ALLOWED by rule allow-github-read"
1407
+ 4. The complete PolicyPack JSON between <policy> and </policy> tags at the end
1408
+
1409
+ The PolicyPack JSON schema:
1410
+ {
1411
+ "name": string, // Short kebab-case name
1412
+ "version": string, // Semver, e.g. "1.0.0"
1413
+ "description": string, // Human-readable description
1414
+ "default_effect": "ALLOW" | "DENY", // What happens when no rule matches
1415
+ "domain_allowlist": string[], // Optional: only these domains allowed
1416
+ "domain_blocklist": string[], // Optional: these domains blocked
1417
+ "rules": [
1418
+ {
1419
+ "name": string,
1420
+ "description": string,
1421
+ "effect": "ALLOW" | "DENY" | "REQUIRE_APPROVAL" | "TRANSFORM",
1422
+ "priority": number, // Lower = higher precedence (1-100)
1423
+ "conditions": {
1424
+ "tools": string[], // e.g. "http.request", "slack.post_message"
1425
+ "tool_match": string, // Regex pattern for tool name matching
1426
+ "capabilities": string[], // "read", "write", "delete", "admin"
1427
+ "actors": string[], // Actor/agent IDs
1428
+ "actor_types": string[], // "agent", "user", "system"
1429
+ "domains": string[], // "api.github.com", "*.googleapis.com"
1430
+ "domain_blocklist": string[],// Blocked domains
1431
+ "methods": string[], // "GET", "POST", "PUT", "DELETE", "PATCH"
1432
+ "labels": string[], // Context labels
1433
+ "dlp_pattern_names": string[],// "secret-detected", "pii-detected"
1434
+ "platforms": string[] // "langgraph", "claude_code", "n8n"
1435
+ },
1436
+ "approval": { // Only for REQUIRE_APPROVAL effect
1437
+ "scope": string,
1438
+ "ttl_seconds": number,
1439
+ "reason": string
1440
+ }
1441
+ }
1442
+ ]
1443
+ }
1444
+
1445
+ Important guidelines:
1446
+ - Only include condition fields that are relevant. Omit empty arrays.
1447
+ - Use "DENY" for blocking, "ALLOW" for permitting, "REQUIRE_APPROVAL" for human-in-the-loop.
1448
+ - Always pair capabilities with matching methods: read -> ["GET","HEAD","OPTIONS"], write -> ["POST","PUT","PATCH"], delete -> ["DELETE"].
1449
+ - For domain wildcards use "*.example.com" format.
1450
+ - The JSON between <policy> tags must be valid JSON (no trailing commas, no comments).
1451
+ ${current_policy ? `\nThe user has an existing policy. Refine it based on their latest message. Here is the current policy:\n${JSON.stringify(current_policy, null, 2)}` : ''}`;
1452
+
1453
+ // Set up SSE response
1454
+ res.setHeader('Content-Type', 'text/event-stream');
1455
+ res.setHeader('Cache-Control', 'no-cache');
1456
+ res.setHeader('Connection', 'keep-alive');
1457
+ res.flushHeaders();
1458
+
1459
+ try {
1460
+ const isOpenAI = apiKey.startsWith('sk-proj-') || apiKey.startsWith('sk-');
1461
+ const llmUrl = isOpenAI
1462
+ ? 'https://api.openai.com/v1/chat/completions'
1463
+ : 'https://api.anthropic.com/v1/messages';
1464
+ const llmHeaders: Record<string, string> = isOpenAI
1465
+ ? { 'Content-Type': 'application/json', 'Authorization': `Bearer ${apiKey}` }
1466
+ : { 'Content-Type': 'application/json', 'x-api-key': apiKey, 'anthropic-version': '2023-06-01' };
1467
+
1468
+ // Build message array for multi-turn context
1469
+ const chatMessages = messages.map((m: { role: string; content: string }) => ({
1470
+ role: m.role,
1471
+ content: m.content.slice(0, 2000),
1472
+ }));
1473
+
1474
+ const llmBody = isOpenAI
1475
+ ? JSON.stringify({
1476
+ model: 'gpt-4.1-mini',
1477
+ max_tokens: 2048,
1478
+ stream: true,
1479
+ messages: [
1480
+ { role: 'system', content: chatSystemPrompt },
1481
+ ...chatMessages,
1482
+ ],
1483
+ })
1484
+ : JSON.stringify({
1485
+ model: 'claude-sonnet-4-5-20250514',
1486
+ max_tokens: 2048,
1487
+ stream: true,
1488
+ system: chatSystemPrompt,
1489
+ messages: chatMessages,
1490
+ });
1491
+
1492
+ const controller = new AbortController();
1493
+ const timeout = setTimeout(() => controller.abort(), 60000);
1494
+
1495
+ // Handle client disconnect
1496
+ req.on('close', () => {
1497
+ controller.abort();
1498
+ clearTimeout(timeout);
1499
+ });
1500
+
1501
+ const llmRes = await fetch(llmUrl, {
1502
+ method: 'POST',
1503
+ headers: llmHeaders,
1504
+ body: llmBody,
1505
+ signal: controller.signal,
1506
+ });
1507
+
1508
+ clearTimeout(timeout);
1509
+
1510
+ if (!llmRes.ok) {
1511
+ const errBody = await llmRes.text();
1512
+ console.error('[policy-chat] LLM API error:', llmRes.status, errBody);
1513
+ res.write(`event: error\ndata: ${JSON.stringify({ error: 'LLM API returned an error.' })}\n\n`);
1514
+ res.end();
1515
+ return;
1516
+ }
1517
+
1518
+ if (!llmRes.body) {
1519
+ res.write(`event: error\ndata: ${JSON.stringify({ error: 'No response stream from LLM.' })}\n\n`);
1520
+ res.end();
1521
+ return;
1522
+ }
1523
+
1524
+ let fullText = '';
1525
+ const reader = llmRes.body as AsyncIterable<Uint8Array>;
1526
+ const decoder = new TextDecoder();
1527
+ let buffer = '';
1528
+
1529
+ for await (const chunk of reader) {
1530
+ buffer += decoder.decode(chunk, { stream: true });
1531
+ const lines = buffer.split('\n');
1532
+ buffer = lines.pop() || '';
1533
+
1534
+ for (const line of lines) {
1535
+ if (!line.startsWith('data: ')) continue;
1536
+ const data = line.slice(6).trim();
1537
+ if (data === '[DONE]') continue;
1538
+
1539
+ try {
1540
+ const parsed = JSON.parse(data);
1541
+ let text = '';
1542
+
1543
+ if (isOpenAI) {
1544
+ text = parsed.choices?.[0]?.delta?.content || '';
1545
+ } else {
1546
+ // Anthropic streaming events
1547
+ if (parsed.type === 'content_block_delta') {
1548
+ text = parsed.delta?.text || '';
1549
+ }
1550
+ }
1551
+
1552
+ if (text) {
1553
+ fullText += text;
1554
+ res.write(`event: text\ndata: ${JSON.stringify(text)}\n\n`);
1555
+ }
1556
+ } catch {
1557
+ // Skip unparseable SSE data lines
1558
+ }
1559
+ }
1560
+ }
1561
+
1562
+ // Process any remaining buffer
1563
+ if (buffer.trim()) {
1564
+ const remaining = buffer.trim();
1565
+ if (remaining.startsWith('data: ') && remaining.slice(6).trim() !== '[DONE]') {
1566
+ try {
1567
+ const parsed = JSON.parse(remaining.slice(6).trim());
1568
+ let text = '';
1569
+ if (isOpenAI) {
1570
+ text = parsed.choices?.[0]?.delta?.content || '';
1571
+ } else if (parsed.type === 'content_block_delta') {
1572
+ text = parsed.delta?.text || '';
1573
+ }
1574
+ if (text) {
1575
+ fullText += text;
1576
+ res.write(`event: text\ndata: ${JSON.stringify(text)}\n\n`);
1577
+ }
1578
+ } catch {
1579
+ // Skip
1580
+ }
1581
+ }
1582
+ }
1583
+
1584
+ // Extract policy JSON from <policy>...</policy> tags
1585
+ const policyMatch = fullText.match(/<policy>([\s\S]*?)<\/policy>/);
1586
+ if (policyMatch) {
1587
+ try {
1588
+ const policyJson = JSON.parse(policyMatch[1].trim());
1589
+ const validation = PolicyEngine.validate(policyJson);
1590
+ if (validation.valid) {
1591
+ res.write(`event: policy\ndata: ${JSON.stringify(policyJson)}\n\n`);
1592
+ } else {
1593
+ res.write(`event: policy\ndata: ${JSON.stringify({ ...policyJson, _validation_errors: validation.errors })}\n\n`);
1594
+ }
1595
+ } catch {
1596
+ console.error('[policy-chat] Failed to parse policy JSON from LLM output');
1597
+ }
1598
+ }
1599
+
1600
+ res.write(`event: done\ndata: {}\n\n`);
1601
+ res.end();
1602
+ } catch (err) {
1603
+ if ((err as Error).name === 'AbortError') {
1604
+ res.write(`event: error\ndata: ${JSON.stringify({ error: 'Request timed out or was cancelled.' })}\n\n`);
1605
+ } else {
1606
+ console.error('[policy-chat] Unexpected error:', err);
1607
+ res.write(`event: error\ndata: ${JSON.stringify({ error: 'An unexpected error occurred.' })}\n\n`);
1608
+ }
1609
+ res.end();
1610
+ }
1611
+ });
1612
+
1266
1613
  // ---------------------------------------------------------------------------
1267
1614
  // Security (DLP detections dashboard)
1268
1615
  // ---------------------------------------------------------------------------