@kernel.chat/kbot 3.21.0 → 3.23.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.
@@ -55,4 +55,36 @@ export declare function runDiscoveryCycle(config: DiscoveryConfig): Promise<{
55
55
  }>;
56
56
  export declare function getDiscoveryState(): DiscoveryState;
57
57
  export declare function getRecentLog(lines?: number): string;
58
+ export interface DiscoveredTool {
59
+ name: string;
60
+ source: 'npm' | 'github' | 'mcp';
61
+ description: string;
62
+ url: string;
63
+ relevance: string;
64
+ foundAt: string;
65
+ }
66
+ export interface ProposedAgent {
67
+ id: string;
68
+ name: string;
69
+ reason: string;
70
+ systemPrompt: string;
71
+ proposedAt: string;
72
+ }
73
+ export interface AcademicPaper {
74
+ title: string;
75
+ authors: string;
76
+ abstract: string;
77
+ url: string;
78
+ relevance: string;
79
+ publishedAt: string;
80
+ foundAt: string;
81
+ }
82
+ export declare function runExtendedDiscovery(config: DiscoveryConfig): Promise<{
83
+ tools: number;
84
+ agents: number;
85
+ papers: number;
86
+ }>;
87
+ export declare function getDiscoveredTools(): DiscoveredTool[];
88
+ export declare function getProposedAgents(): ProposedAgent[];
89
+ export declare function getDiscoveredPapers(): AcademicPaper[];
58
90
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,+BAA+B;IAC/B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAA;IACf,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAeD,wBAAgB,UAAU,IAAI,eAAe,GAAG,IAAI,CAGnD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAGxD;AAoQD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CAkGD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,YAAY,CAAC,KAAK,SAAK,GAAG,MAAM,CAI/C"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
package/dist/discovery.js CHANGED
@@ -361,4 +361,203 @@ export function getRecentLog(lines = 20) {
361
361
  const content = readFileSync(LOG_FILE, 'utf8');
362
362
  return content.split('\n').filter(Boolean).slice(-lines).join('\n');
363
363
  }
364
+ async function discoverTools(config) {
365
+ const tools = [];
366
+ const queries = ['mcp server', 'ai agent tool', 'cli tool ai', ...config.topics.map(t => `${t} tool`)];
367
+ // npm search
368
+ for (const q of queries.slice(0, 3)) {
369
+ try {
370
+ const data = await fetchJson(`https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(q)}&size=5`);
371
+ for (const obj of (data.objects || [])) {
372
+ const pkg = obj.package;
373
+ if (pkg.description && pkg.description.length > 10) {
374
+ tools.push({
375
+ name: pkg.name,
376
+ source: 'npm',
377
+ description: pkg.description.slice(0, 200),
378
+ url: pkg.links?.npm || `https://www.npmjs.com/package/${pkg.name}`,
379
+ relevance: q,
380
+ foundAt: new Date().toISOString(),
381
+ });
382
+ }
383
+ }
384
+ }
385
+ catch { /* skip */ }
386
+ }
387
+ // GitHub repos with "mcp-server" or "ai-agent-tool"
388
+ for (const q of ['mcp-server', 'ai-agent-tools'].slice(0, 2)) {
389
+ try {
390
+ const data = await fetchJson(`https://api.github.com/search/repositories?q=${q}+in:name&sort=updated&order=desc&per_page=5`);
391
+ for (const repo of (data.items || [])) {
392
+ if (repo.description) {
393
+ tools.push({
394
+ name: repo.full_name,
395
+ source: 'github',
396
+ description: (repo.description || '').slice(0, 200),
397
+ url: repo.html_url,
398
+ relevance: q,
399
+ foundAt: new Date().toISOString(),
400
+ });
401
+ }
402
+ }
403
+ }
404
+ catch { /* skip */ }
405
+ }
406
+ return tools;
407
+ }
408
+ async function discoverAgents(config) {
409
+ const proposals = [];
410
+ // Scan trending topics to find agent gaps
411
+ const trendingQueries = [
412
+ 'AI agent specialist 2026',
413
+ 'emerging AI use case developer',
414
+ 'new programming paradigm tool',
415
+ ];
416
+ for (const q of trendingQueries.slice(0, 2)) {
417
+ try {
418
+ const data = await fetchJson(`https://hn.algolia.com/api/v1/search?query=${encodeURIComponent(q)}&tags=story&hitsPerPage=5`);
419
+ // Use Ollama to analyze if any of these suggest a new agent type
420
+ const titles = (data.hits || []).map(h => h.title).join('\n');
421
+ if (!titles)
422
+ continue;
423
+ try {
424
+ const res = await fetch(`${config.ollamaUrl}/api/generate`, {
425
+ method: 'POST',
426
+ headers: { 'Content-Type': 'application/json' },
427
+ body: JSON.stringify({
428
+ model: config.ollamaModel,
429
+ prompt: `Given these trending HN posts about AI/tech:\n${titles}\n\nDoes any of these suggest a specialist agent type that doesn't exist yet? Existing agents: kernel, researcher, coder, writer, analyst, aesthete, guardian, curator, strategist, infrastructure, quant, investigator, oracle, chronist, sage, communicator, adapter, hacker, operator, dreamer, creative, developer, gamedev, playtester.\n\nIf yes, reply with ONLY this JSON (no markdown):\n{"id": "agent-id", "name": "Agent Name", "reason": "why this agent is needed", "prompt": "system prompt for the agent"}\n\nIf no new agent needed, reply: {"id": "none"}`,
430
+ stream: false,
431
+ options: { num_predict: 400, temperature: 0.7 },
432
+ }),
433
+ });
434
+ if (res.ok) {
435
+ const result = await res.json();
436
+ const raw = (result.response || '').replace(/<think>[\s\S]*?<\/think>/g, '').trim();
437
+ const jsonMatch = raw.match(/\{[\s\S]*\}/);
438
+ if (jsonMatch) {
439
+ const parsed = JSON.parse(jsonMatch[0]);
440
+ if (parsed.id && parsed.id !== 'none' && parsed.name) {
441
+ proposals.push({
442
+ id: parsed.id,
443
+ name: parsed.name,
444
+ reason: parsed.reason || '',
445
+ systemPrompt: parsed.prompt || '',
446
+ proposedAt: new Date().toISOString(),
447
+ });
448
+ }
449
+ }
450
+ }
451
+ }
452
+ catch { /* Ollama unavailable */ }
453
+ }
454
+ catch { /* search failed */ }
455
+ }
456
+ return proposals;
457
+ }
458
+ async function discoverPapers() {
459
+ const papers = [];
460
+ const queries = [
461
+ 'AI agent tool use',
462
+ 'autonomous coding agent',
463
+ 'cognitive architecture LLM',
464
+ 'multi-agent system benchmark',
465
+ 'local LLM inference optimization',
466
+ ];
467
+ for (const q of queries.slice(0, 3)) {
468
+ try {
469
+ const encoded = encodeURIComponent(q);
470
+ const res = await fetch(`http://export.arxiv.org/api/query?search_query=all:${encoded}&start=0&max_results=3&sortBy=submittedDate&sortOrder=descending`, { signal: AbortSignal.timeout(10000) });
471
+ if (!res.ok)
472
+ continue;
473
+ const xml = await res.text();
474
+ // Parse Atom XML entries
475
+ const entries = xml.match(/<entry>[\s\S]*?<\/entry>/g) || [];
476
+ for (const entry of entries) {
477
+ const title = entry.match(/<title>([\s\S]*?)<\/title>/)?.[1]?.trim().replace(/\n/g, ' ') || '';
478
+ const abstract = entry.match(/<summary>([\s\S]*?)<\/summary>/)?.[1]?.trim().replace(/\n/g, ' ').slice(0, 300) || '';
479
+ const url = entry.match(/<id>([\s\S]*?)<\/id>/)?.[1]?.trim() || '';
480
+ const authors = (entry.match(/<author>[\s\S]*?<name>([\s\S]*?)<\/name>/g) || [])
481
+ .map(a => a.match(/<name>([\s\S]*?)<\/name>/)?.[1]?.trim() || '')
482
+ .slice(0, 3)
483
+ .join(', ');
484
+ const published = entry.match(/<published>([\s\S]*?)<\/published>/)?.[1]?.trim() || '';
485
+ if (title && url) {
486
+ papers.push({
487
+ title,
488
+ authors,
489
+ abstract,
490
+ url,
491
+ relevance: q,
492
+ publishedAt: published,
493
+ foundAt: new Date().toISOString(),
494
+ });
495
+ }
496
+ }
497
+ }
498
+ catch { /* skip */ }
499
+ }
500
+ return papers;
501
+ }
502
+ // ══════════════════════════════════════════════════════════════════════
503
+ // Extended Discovery Cycle — tools + agents + academia
504
+ // ══════════════════════════════════════════════════════════════════════
505
+ const TOOLS_FILE = join(DISCOVERY_DIR, 'discovered-tools.json');
506
+ const AGENTS_FILE = join(DISCOVERY_DIR, 'proposed-agents.json');
507
+ const PAPERS_FILE = join(DISCOVERY_DIR, 'papers.json');
508
+ function loadJsonArray(file) {
509
+ if (!existsSync(file))
510
+ return [];
511
+ try {
512
+ return JSON.parse(readFileSync(file, 'utf8'));
513
+ }
514
+ catch {
515
+ return [];
516
+ }
517
+ }
518
+ function saveJsonArray(file, data) {
519
+ ensureDir();
520
+ writeFileSync(file, JSON.stringify(data, null, 2));
521
+ }
522
+ export async function runExtendedDiscovery(config) {
523
+ log('Extended discovery: scanning tools, agents, academia...');
524
+ // Run all three in parallel
525
+ const [toolsResult, agentsResult, papersResult] = await Promise.allSettled([
526
+ discoverTools(config),
527
+ discoverAgents(config),
528
+ discoverPapers(),
529
+ ]);
530
+ const newTools = toolsResult.status === 'fulfilled' ? toolsResult.value : [];
531
+ const newAgents = agentsResult.status === 'fulfilled' ? agentsResult.value : [];
532
+ const newPapers = papersResult.status === 'fulfilled' ? papersResult.value : [];
533
+ // Dedup and save tools
534
+ const existingTools = loadJsonArray(TOOLS_FILE);
535
+ const existingToolNames = new Set(existingTools.map(t => t.name));
536
+ const freshTools = newTools.filter(t => !existingToolNames.has(t.name));
537
+ if (freshTools.length > 0) {
538
+ saveJsonArray(TOOLS_FILE, [...existingTools, ...freshTools].slice(-100));
539
+ log(` Tools: ${freshTools.length} new (${freshTools.map(t => t.name).slice(0, 3).join(', ')}${freshTools.length > 3 ? '...' : ''})`);
540
+ }
541
+ // Save agent proposals
542
+ const existingAgents = loadJsonArray(AGENTS_FILE);
543
+ const existingAgentIds = new Set(existingAgents.map(a => a.id));
544
+ const freshAgents = newAgents.filter(a => !existingAgentIds.has(a.id));
545
+ if (freshAgents.length > 0) {
546
+ saveJsonArray(AGENTS_FILE, [...existingAgents, ...freshAgents].slice(-50));
547
+ log(` Agents: ${freshAgents.length} proposed (${freshAgents.map(a => a.name).join(', ')})`);
548
+ }
549
+ // Dedup and save papers
550
+ const existingPapers = loadJsonArray(PAPERS_FILE);
551
+ const existingPaperUrls = new Set(existingPapers.map(p => p.url));
552
+ const freshPapers = newPapers.filter(p => !existingPaperUrls.has(p.url));
553
+ if (freshPapers.length > 0) {
554
+ saveJsonArray(PAPERS_FILE, [...existingPapers, ...freshPapers].slice(-100));
555
+ log(` Papers: ${freshPapers.length} new (${freshPapers.map(p => p.title.slice(0, 50)).join('; ')}...)`);
556
+ }
557
+ log(`Extended discovery done: ${freshTools.length} tools, ${freshAgents.length} agents, ${freshPapers.length} papers`);
558
+ return { tools: freshTools.length, agents: freshAgents.length, papers: freshPapers.length };
559
+ }
560
+ export function getDiscoveredTools() { return loadJsonArray(TOOLS_FILE); }
561
+ export function getProposedAgents() { return loadJsonArray(AGENTS_FILE); }
562
+ export function getDiscoveredPapers() { return loadJsonArray(PAPERS_FILE); }
364
563
  //# sourceMappingURL=discovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export type PrivacyLevel = 'local-only' | 'local-preferred' | 'cloud-allowed';
2
+ export interface PrivacyPolicy {
3
+ /** Default routing: local-only, local-preferred, cloud-allowed */
4
+ defaultLevel: PrivacyLevel;
5
+ /** Patterns that ALWAYS force local (never sent to cloud) */
6
+ sensitivePatterns: string[];
7
+ /** Domains/hosts allowed for cloud inference */
8
+ allowedCloudHosts: string[];
9
+ /** File path patterns that are always private */
10
+ privateFilePaths: string[];
11
+ /** Whether to log routing decisions */
12
+ auditLog: boolean;
13
+ }
14
+ export interface RoutingDecision {
15
+ /** Where to send: local or cloud */
16
+ target: 'local' | 'cloud';
17
+ /** Why this decision was made */
18
+ reason: string;
19
+ /** Was sensitive content detected? */
20
+ sensitiveDetected: boolean;
21
+ /** What patterns matched (if any) */
22
+ matchedPatterns: string[];
23
+ }
24
+ declare const PRIVACY_POLICY_FILE: string;
25
+ declare const DEFAULT_POLICY: PrivacyPolicy;
26
+ /** Load privacy policy from YAML-like config, or return defaults */
27
+ export declare function loadPrivacyPolicy(): PrivacyPolicy;
28
+ /** Write the default policy file so users can customize it */
29
+ export declare function writeDefaultPolicy(): void;
30
+ /** Check if content contains sensitive patterns */
31
+ export declare function detectSensitiveContent(content: string, policy: PrivacyPolicy): {
32
+ sensitive: boolean;
33
+ matches: string[];
34
+ };
35
+ /** Check if a file path is private */
36
+ export declare function isPrivateFilePath(filePath: string, policy: PrivacyPolicy): boolean;
37
+ /**
38
+ * Decide whether a prompt/tool call should go to local or cloud.
39
+ * This is called BEFORE every inference request.
40
+ */
41
+ export declare function routeForPrivacy(content: string, policy?: PrivacyPolicy, options?: {
42
+ filePaths?: string[];
43
+ forceLocal?: boolean;
44
+ forceCloud?: boolean;
45
+ }): RoutingDecision;
46
+ export declare function logRoutingDecision(decision: RoutingDecision, prompt: string): void;
47
+ export { DEFAULT_POLICY, PRIVACY_POLICY_FILE };
48
+ //# sourceMappingURL=privacy-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-router.d.ts","sourceRoot":"","sources":["../src/privacy-router.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,iBAAiB,GAAG,eAAe,CAAA;AAE7E,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,YAAY,EAAE,YAAY,CAAA;IAC1B,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;IACzB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,qCAAqC;IACrC,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B;AAKD,QAAA,MAAM,mBAAmB,QAAmC,CAAA;AAK5D,QAAA,MAAM,cAAc,EAAE,aA6BrB,CAAA;AAQD,oEAAoE;AACpE,wBAAgB,iBAAiB,IAAI,aAAa,CA6CjD;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,IAAI,IAAI,CAkDzC;AAID,mDAAmD;AACnD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAaxH;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAalF;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7E,eAAe,CA6CjB;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAWlF;AAED,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,247 @@
1
+ // kbot Privacy Router — local-first, cloud only when explicitly allowed
2
+ //
3
+ // Inspired by NemoClaw's privacy router architecture.
4
+ // All queries go through this router BEFORE hitting any provider.
5
+ //
6
+ // Rules:
7
+ // 1. Default: everything runs local (Ollama)
8
+ // 2. Sensitive content (secrets, personal data, proprietary code) → ALWAYS local
9
+ // 3. Cloud only when: user explicitly allows via policy, AND content passes privacy check
10
+ // 4. Policy defined in ~/.kbot/policies/privacy.yaml
11
+ //
12
+ // This is the layer between the user's prompt and the provider.
13
+ // It never sends sensitive data to cloud APIs unless the user says so.
14
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
15
+ import { join } from 'node:path';
16
+ import { homedir } from 'node:os';
17
+ // ── Paths ──
18
+ const POLICY_DIR = join(homedir(), '.kbot', 'policies');
19
+ const PRIVACY_POLICY_FILE = join(POLICY_DIR, 'privacy.yaml');
20
+ const AUDIT_LOG_FILE = join(POLICY_DIR, 'privacy-audit.log');
21
+ // ── Default Policy ──
22
+ const DEFAULT_POLICY = {
23
+ defaultLevel: 'local-preferred',
24
+ sensitivePatterns: [
25
+ // Secrets & credentials
26
+ 'api[_-]?key', 'secret[_-]?key', 'password', 'token',
27
+ 'bearer\\s+[a-zA-Z0-9]', 'sk-[a-zA-Z0-9]', 'ghp_[a-zA-Z0-9]',
28
+ 'aws[_-]?access', 'aws[_-]?secret',
29
+ // Personal data
30
+ 'social\\s*security', 'ssn', 'credit\\s*card', '\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b',
31
+ 'date\\s*of\\s*birth', 'passport',
32
+ // Proprietary markers
33
+ 'confidential', 'proprietary', 'internal\\s*only', 'do\\s*not\\s*share',
34
+ // .env file contents
35
+ 'SUPABASE_SERVICE', 'DATABASE_URL', 'PRIVATE_KEY',
36
+ ],
37
+ allowedCloudHosts: [
38
+ 'api.anthropic.com',
39
+ 'api.openai.com',
40
+ 'generativelanguage.googleapis.com',
41
+ 'api.groq.com',
42
+ 'api.deepseek.com',
43
+ ],
44
+ privateFilePaths: [
45
+ '.env', '.env.local', '.env.production',
46
+ '*.pem', '*.key', '*.p12',
47
+ '**/credentials*', '**/secrets*',
48
+ '~/.ssh/*', '~/.aws/*',
49
+ ],
50
+ auditLog: true,
51
+ };
52
+ // ── Policy Loading ──
53
+ function ensureDir() {
54
+ if (!existsSync(POLICY_DIR))
55
+ mkdirSync(POLICY_DIR, { recursive: true });
56
+ }
57
+ /** Load privacy policy from YAML-like config, or return defaults */
58
+ export function loadPrivacyPolicy() {
59
+ if (!existsSync(PRIVACY_POLICY_FILE))
60
+ return DEFAULT_POLICY;
61
+ try {
62
+ const content = readFileSync(PRIVACY_POLICY_FILE, 'utf8');
63
+ // Simple YAML-like parser (no dependency needed)
64
+ const policy = { ...DEFAULT_POLICY };
65
+ const levelMatch = content.match(/defaultLevel:\s*(.+)/);
66
+ if (levelMatch)
67
+ policy.defaultLevel = levelMatch[1].trim();
68
+ const auditMatch = content.match(/auditLog:\s*(true|false)/);
69
+ if (auditMatch)
70
+ policy.auditLog = auditMatch[1] === 'true';
71
+ // Parse sensitive patterns list
72
+ const sensSection = content.match(/sensitivePatterns:\n((?:\s+-\s+.+\n?)+)/);
73
+ if (sensSection) {
74
+ policy.sensitivePatterns = sensSection[1]
75
+ .split('\n')
76
+ .map(l => l.replace(/^\s+-\s+/, '').trim())
77
+ .filter(Boolean);
78
+ }
79
+ // Parse allowed cloud hosts
80
+ const hostSection = content.match(/allowedCloudHosts:\n((?:\s+-\s+.+\n?)+)/);
81
+ if (hostSection) {
82
+ policy.allowedCloudHosts = hostSection[1]
83
+ .split('\n')
84
+ .map(l => l.replace(/^\s+-\s+/, '').trim())
85
+ .filter(Boolean);
86
+ }
87
+ // Parse private file paths
88
+ const fileSection = content.match(/privateFilePaths:\n((?:\s+-\s+.+\n?)+)/);
89
+ if (fileSection) {
90
+ policy.privateFilePaths = fileSection[1]
91
+ .split('\n')
92
+ .map(l => l.replace(/^\s+-\s+/, '').trim())
93
+ .filter(Boolean);
94
+ }
95
+ return policy;
96
+ }
97
+ catch {
98
+ return DEFAULT_POLICY;
99
+ }
100
+ }
101
+ /** Write the default policy file so users can customize it */
102
+ export function writeDefaultPolicy() {
103
+ ensureDir();
104
+ const yaml = `# kbot Privacy Policy
105
+ # Controls when data can be sent to cloud AI providers vs kept local.
106
+ # Edit this file to customize your privacy preferences.
107
+
108
+ # Options: local-only, local-preferred, cloud-allowed
109
+ defaultLevel: local-preferred
110
+
111
+ # Log all routing decisions to privacy-audit.log
112
+ auditLog: true
113
+
114
+ # Patterns that ALWAYS force local inference (regex)
115
+ # If any of these match the prompt or tool args, cloud is blocked.
116
+ sensitivePatterns:
117
+ - api[_-]?key
118
+ - secret[_-]?key
119
+ - password
120
+ - token
121
+ - bearer\\s+[a-zA-Z0-9]
122
+ - sk-[a-zA-Z0-9]
123
+ - ghp_[a-zA-Z0-9]
124
+ - aws[_-]?access
125
+ - social\\s*security
126
+ - credit\\s*card
127
+ - confidential
128
+ - proprietary
129
+ - SUPABASE_SERVICE
130
+ - DATABASE_URL
131
+ - PRIVATE_KEY
132
+
133
+ # Cloud API hosts allowed (only used when defaultLevel is cloud-allowed)
134
+ allowedCloudHosts:
135
+ - api.anthropic.com
136
+ - api.openai.com
137
+ - generativelanguage.googleapis.com
138
+ - api.groq.com
139
+ - api.deepseek.com
140
+
141
+ # File paths that are always treated as private (glob patterns)
142
+ privateFilePaths:
143
+ - .env
144
+ - .env.local
145
+ - .env.production
146
+ - "*.pem"
147
+ - "*.key"
148
+ - "**/credentials*"
149
+ - "**/secrets*"
150
+ `;
151
+ writeFileSync(PRIVACY_POLICY_FILE, yaml);
152
+ }
153
+ // ── Sensitive Content Detection ──
154
+ /** Check if content contains sensitive patterns */
155
+ export function detectSensitiveContent(content, policy) {
156
+ const matches = [];
157
+ for (const pattern of policy.sensitivePatterns) {
158
+ try {
159
+ const regex = new RegExp(pattern, 'i');
160
+ if (regex.test(content)) {
161
+ matches.push(pattern);
162
+ }
163
+ }
164
+ catch { /* invalid regex — skip */ }
165
+ }
166
+ return { sensitive: matches.length > 0, matches };
167
+ }
168
+ /** Check if a file path is private */
169
+ export function isPrivateFilePath(filePath, policy) {
170
+ const normalized = filePath.toLowerCase();
171
+ for (const pattern of policy.privateFilePaths) {
172
+ const p = pattern.toLowerCase();
173
+ if (p.startsWith('**/')) {
174
+ if (normalized.includes(p.slice(3)))
175
+ return true;
176
+ }
177
+ else if (p.startsWith('*.')) {
178
+ if (normalized.endsWith(p.slice(1)))
179
+ return true;
180
+ }
181
+ else {
182
+ if (normalized.endsWith(p) || normalized.includes(`/${p}`))
183
+ return true;
184
+ }
185
+ }
186
+ return false;
187
+ }
188
+ // ── Core: Route Decision ──
189
+ /**
190
+ * Decide whether a prompt/tool call should go to local or cloud.
191
+ * This is called BEFORE every inference request.
192
+ */
193
+ export function routeForPrivacy(content, policy, options) {
194
+ const p = policy || loadPrivacyPolicy();
195
+ // Force overrides
196
+ if (options?.forceLocal) {
197
+ return { target: 'local', reason: 'Forced local by flag', sensitiveDetected: false, matchedPatterns: [] };
198
+ }
199
+ // Local-only mode — never send anything to cloud
200
+ if (p.defaultLevel === 'local-only') {
201
+ return { target: 'local', reason: 'Policy: local-only mode', sensitiveDetected: false, matchedPatterns: [] };
202
+ }
203
+ // Check for sensitive content
204
+ const check = detectSensitiveContent(content, p);
205
+ if (check.sensitive) {
206
+ return {
207
+ target: 'local',
208
+ reason: `Sensitive content detected: ${check.matches.join(', ')}`,
209
+ sensitiveDetected: true,
210
+ matchedPatterns: check.matches,
211
+ };
212
+ }
213
+ // Check file paths
214
+ if (options?.filePaths) {
215
+ for (const fp of options.filePaths) {
216
+ if (isPrivateFilePath(fp, p)) {
217
+ return {
218
+ target: 'local',
219
+ reason: `Private file path: ${fp}`,
220
+ sensitiveDetected: true,
221
+ matchedPatterns: [fp],
222
+ };
223
+ }
224
+ }
225
+ }
226
+ // Cloud-allowed mode — cloud is ok if content passes
227
+ if (p.defaultLevel === 'cloud-allowed' || options?.forceCloud) {
228
+ return { target: 'cloud', reason: 'Content passed privacy check', sensitiveDetected: false, matchedPatterns: [] };
229
+ }
230
+ // Local-preferred — use local unless local is unavailable
231
+ return { target: 'local', reason: 'Policy: local-preferred', sensitiveDetected: false, matchedPatterns: [] };
232
+ }
233
+ // ── Audit Logging ──
234
+ export function logRoutingDecision(decision, prompt) {
235
+ const policy = loadPrivacyPolicy();
236
+ if (!policy.auditLog)
237
+ return;
238
+ ensureDir();
239
+ const entry = `[${new Date().toISOString()}] ${decision.target.toUpperCase()} | ${decision.reason} | prompt: ${prompt.slice(0, 80).replace(/\n/g, ' ')}${decision.matchedPatterns.length > 0 ? ` | matches: ${decision.matchedPatterns.join(',')}` : ''}\n`;
240
+ try {
241
+ const { appendFileSync } = require('node:fs');
242
+ appendFileSync(AUDIT_LOG_FILE, entry);
243
+ }
244
+ catch { /* non-critical */ }
245
+ }
246
+ export { DEFAULT_POLICY, PRIVACY_POLICY_FILE };
247
+ //# sourceMappingURL=privacy-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-router.js","sourceRoot":"","sources":["../src/privacy-router.ts"],"names":[],"mappings":"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"}