@panguard-ai/threat-cloud 1.4.1 → 1.5.5

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 (41) hide show
  1. package/LICENSE +21 -0
  2. package/dist/admin-dashboard.js +5 -5
  3. package/dist/audit-logger.d.ts +1 -1
  4. package/dist/audit-logger.d.ts.map +1 -1
  5. package/dist/audit-logger.js.map +1 -1
  6. package/dist/badge-api.d.ts +58 -0
  7. package/dist/badge-api.d.ts.map +1 -0
  8. package/dist/badge-api.js +248 -0
  9. package/dist/badge-api.js.map +1 -0
  10. package/dist/cli.js +1 -1
  11. package/dist/cli.js.map +1 -1
  12. package/dist/database.d.ts +254 -2
  13. package/dist/database.d.ts.map +1 -1
  14. package/dist/database.js +769 -72
  15. package/dist/database.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/llm-reviewer-tools.d.ts +110 -0
  21. package/dist/llm-reviewer-tools.d.ts.map +1 -0
  22. package/dist/llm-reviewer-tools.js +446 -0
  23. package/dist/llm-reviewer-tools.js.map +1 -0
  24. package/dist/llm-reviewer.d.ts +54 -0
  25. package/dist/llm-reviewer.d.ts.map +1 -1
  26. package/dist/llm-reviewer.js +708 -64
  27. package/dist/llm-reviewer.js.map +1 -1
  28. package/dist/migrations.d.ts.map +1 -1
  29. package/dist/migrations.js +215 -0
  30. package/dist/migrations.js.map +1 -1
  31. package/dist/migrator-crystallization.d.ts +80 -0
  32. package/dist/migrator-crystallization.d.ts.map +1 -0
  33. package/dist/migrator-crystallization.js +108 -0
  34. package/dist/migrator-crystallization.js.map +1 -0
  35. package/dist/server.d.ts +75 -2
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +1249 -130
  38. package/dist/server.js.map +1 -1
  39. package/dist/types.d.ts +33 -0
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +15 -12
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @module @panguard-ai/threat-cloud/database
8
8
  */
9
+ import Database from 'better-sqlite3';
9
10
  import type { AnonymizedThreatData, ThreatCloudRule, ThreatStats, ATRProposal, SkillThreatSubmission, SkillBlacklistEntry, ScanEvent, AggregatedMetrics } from './types.js';
10
11
  import { AuditLogger } from './audit-logger.js';
11
12
  /**
@@ -16,6 +17,12 @@ export declare class ThreatCloudDB {
16
17
  private readonly db;
17
18
  readonly audit: AuditLogger;
18
19
  constructor(dbPath: string);
20
+ /**
21
+ * Escape hatch for callers that need direct DB access (e.g. modules
22
+ * defined outside this class that perform table-specific queries).
23
+ * Prefer adding a typed method here when the access pattern stabilises.
24
+ */
25
+ getRawDb(): Database.Database;
19
26
  /** Create tables if they don't exist / 建立資料表 */
20
27
  private initialize;
21
28
  /** Insert anonymized threat data / 插入匿名化威脅數據 */
@@ -28,6 +35,10 @@ export declare class ThreatCloudDB {
28
35
  private extractMetadata;
29
36
  /** Insert or update a community rule / 插入或更新社群規則 */
30
37
  upsertRule(rule: ThreatCloudRule): void;
38
+ /** Delete all rules with a given source. Returns number of deleted rows. */
39
+ deleteRulesBySource(source: string): number;
40
+ /** Delete rules by a list of rule IDs. Returns number of deleted rows. */
41
+ deleteRulesByIds(ruleIds: readonly string[]): number;
31
42
  /** Fetch rules published after a given timestamp / 取得指定時間後發佈的規則 */
32
43
  getRulesSince(since: string, filters?: {
33
44
  category?: string;
@@ -63,7 +74,14 @@ export declare class ThreatCloudDB {
63
74
  avgRiskScore: number;
64
75
  maxRiskLevel: string;
65
76
  findings: string[];
77
+ /** ATR rule IDs that triggered across all reports */
78
+ atrRuleIds: string[];
66
79
  };
80
+ /** Fetch rule content by IDs. Returns the YAML detection patterns for crystallization. */
81
+ getRuleContentByIds(ruleIds: string[]): Array<{
82
+ ruleId: string;
83
+ ruleContent: string;
84
+ }>;
67
85
  /** Check if an ATR proposal already exists for a pattern hash */
68
86
  hasATRProposal(patternHash: string): boolean;
69
87
  /** Get an ATR proposal by pattern_hash, returning client_id and confirmations */
@@ -71,12 +89,52 @@ export declare class ThreatCloudDB {
71
89
  client_id: string | null;
72
90
  confirmations: number;
73
91
  } | undefined;
92
+ /**
93
+ * Look up a previously-judged payload fingerprint. Caller should call this
94
+ * BEFORE invoking the LLM drafter; on hit, skip the Anthropic call entirely
95
+ * and reuse the cached verdict.
96
+ *
97
+ * 查詢先前已判斷過的 payload fingerprint。呼叫端應在叫用 LLM drafter 之前查
98
+ * 這個表;命中時直接跳過 Anthropic 呼叫,回覆之前的結果。
99
+ */
100
+ getPayloadFingerprint(fingerprint: string): {
101
+ result: 'duplicate' | 'novel' | 'rejected';
102
+ ruleId: string | null;
103
+ patternHash: string | null;
104
+ hitCount: number;
105
+ } | null;
106
+ /**
107
+ * Insert or bump a payload fingerprint verdict. UPSERT by fingerprint:
108
+ * - First time: insert with hit_count=1
109
+ * - Repeat: increment hit_count, refresh last_seen_at
110
+ *
111
+ * 新增或累計 payload fingerprint 判斷結果。
112
+ */
113
+ recordPayloadFingerprint(fingerprint: string, result: 'duplicate' | 'novel' | 'rejected', details?: {
114
+ ruleId?: string;
115
+ patternHash?: string;
116
+ }): void;
117
+ /**
118
+ * Stats for the fingerprint cache. Surfaced in admin dashboard so you can
119
+ * see the hit rate and confirm the cost-saving is real.
120
+ * 指紋快取統計。供 admin dashboard 顯示命中率,確認省錢有效。
121
+ */
122
+ getPayloadFingerprintStats(): {
123
+ total: number;
124
+ novel: number;
125
+ duplicate: number;
126
+ rejected: number;
127
+ totalHits: number;
128
+ cacheHits: number;
129
+ };
74
130
  /** Get recent skill threats / 取得最近技能威脅 */
75
131
  getSkillThreats(limit?: number): unknown[];
76
132
  /** Get proposal statistics / 取得提案統計 */
77
133
  getProposalStats(): {
78
134
  pending: number;
79
135
  confirmed: number;
136
+ canary: number;
137
+ quarantined: number;
80
138
  rejected: number;
81
139
  total: number;
82
140
  };
@@ -93,7 +151,27 @@ export declare class ThreatCloudDB {
93
151
  count: number;
94
152
  }>;
95
153
  };
154
+ /** Record a telemetry event / 記錄遙測事件 */
155
+ recordTelemetryEvent(event: {
156
+ eventType: string;
157
+ platform: string;
158
+ skillCount: number;
159
+ findingCount: number;
160
+ severity: string;
161
+ }): void;
162
+ /** Get telemetry stats merging raw events + hourly aggregates / 取得遙測統計 */
163
+ getTelemetryStats(): {
164
+ totalEvents: number;
165
+ eventsToday: number;
166
+ byEventType: Record<string, number>;
167
+ byPlatform: Record<string, number>;
168
+ avgFindingCount: number;
169
+ };
170
+ /** Aggregate raw telemetry events into hourly buckets, then delete old raw events / 彙總遙測事件 */
171
+ cleanupTelemetryEvents(): number;
96
172
  clearAllRules(): number;
173
+ /** Get current schema version for health diagnostics */
174
+ getSchemaVersion(): number;
97
175
  getStats(): ThreatStats;
98
176
  /** Get confirmed/promoted ATR rules, optionally filtered by date / 取得已確認 ATR 規則 */
99
177
  getConfirmedATRRules(since?: string): Array<{
@@ -110,6 +188,37 @@ export declare class ThreatCloudDB {
110
188
  upsertIoC(type: string, value: string, reputation: number, source: string): void;
111
189
  /** Promote proposals to rules based on community consensus and/or LLM approval / 推廣提案為規則 */
112
190
  promoteConfirmedProposals(): number;
191
+ /**
192
+ * Self-heal: find proposals that are status='promoted' but have no
193
+ * corresponding rule in the rules table, and re-upsert them. This
194
+ * handles historical bugs where promoteCanaryRules set the status but
195
+ * the upsertRule call failed silently (e.g., during a prior schema or
196
+ * constraint mismatch). Idempotent — safe to run every promotion cycle.
197
+ * Returns the number of rules restored.
198
+ */
199
+ healOrphanedPromotedProposals(): number;
200
+ /** Canary period in milliseconds (24 hours) / Canary 觀察期(24 小時) */
201
+ private static readonly CANARY_PERIOD_MS;
202
+ /**
203
+ * Promote canary rules that have survived the 24-hour observation period
204
+ * without negative feedback. Quarantine rules with negative feedback.
205
+ * 推廣存活 24 小時且無負面回饋的 canary 規則。隔離有負面回饋的規則。
206
+ */
207
+ promoteCanaryRules(): {
208
+ promoted: number;
209
+ quarantined: number;
210
+ };
211
+ /** Get count of negative feedback for a rule / 取得規則負面回饋數 */
212
+ getNegativeFeedbackCount(ruleId: string): number;
213
+ /** Quarantine a proposal / 隔離提案 */
214
+ quarantineProposal(patternHash: string): void;
215
+ /** Get canary rules (for 10% client sampling) / 取得 canary 規則(供 10% 客戶端抽樣) */
216
+ getCanaryATRRules(): Array<{
217
+ ruleId: string;
218
+ ruleContent: string;
219
+ publishedAt: string;
220
+ source: string;
221
+ }>;
113
222
  /** Reject an ATR proposal / 拒絕 ATR 提案 */
114
223
  rejectATRProposal(patternHash: string): void;
115
224
  /** Admin: manually approve an ATR proposal and promote to rule */
@@ -127,7 +236,7 @@ export declare class ThreatCloudDB {
127
236
  /** Report a safe skill (increment confirmations, auto-confirm at 3+) / 回報安全 skill */
128
237
  reportSafeSkill(skillName: string, fingerprintHash?: string): void;
129
238
  /** Get confirmed community whitelist / 取得社群白名單 */
130
- getSkillWhitelist(): Array<{
239
+ getSkillWhitelist(since?: string): Array<{
131
240
  name: string;
132
241
  hash: string | null;
133
242
  confirmations: number;
@@ -136,7 +245,7 @@ export declare class ThreatCloudDB {
136
245
  * Get skill blacklist: skills reported by 3+ distinct clients with avg risk >= 70
137
246
  * 取得技能黑名單:3+ 不同客戶端回報且平均風險 >= 70 的技能
138
247
  */
139
- getSkillBlacklist(minReports?: number, minAvgRisk?: number): SkillBlacklistEntry[];
248
+ getSkillBlacklist(minReports?: number, minAvgRisk?: number, since?: string): SkillBlacklistEntry[];
140
249
  /** Backfill classification for rules with NULL category / 回填缺少分類的規則 */
141
250
  backfillClassification(): number;
142
251
  /**
@@ -150,6 +259,32 @@ export declare class ThreatCloudDB {
150
259
  }>;
151
260
  /** Insert scan event from any source / 插入掃描事件 */
152
261
  insertScanEvent(event: ScanEvent): void;
262
+ /** Record a one-time activation event / 記錄一次性啟動事件 */
263
+ recordActivation(activation: {
264
+ clientId: string;
265
+ platform: string;
266
+ osType: string;
267
+ panguardVersion: string;
268
+ nodeVersion: string;
269
+ }): boolean;
270
+ /** Get activation stats / 取得啟動統計 */
271
+ getActivationStats(): {
272
+ total: number;
273
+ byPlatform: Array<{
274
+ platform: string;
275
+ count: number;
276
+ }>;
277
+ byOs: Array<{
278
+ osType: string;
279
+ count: number;
280
+ }>;
281
+ recent: Array<{
282
+ activatedAt: string;
283
+ platform: string;
284
+ osType: string;
285
+ panguardVersion: string;
286
+ }>;
287
+ };
153
288
  /** Get contributor leaderboard (hashed IDs, no PII) / 取得貢獻者排行榜 */
154
289
  getContributorLeaderboard(limit?: number): Array<{
155
290
  contributorHash: string;
@@ -159,6 +294,123 @@ export declare class ThreatCloudDB {
159
294
  }>;
160
295
  /** Get aggregated metrics across all sources / 取得所有來源的聚合指標 */
161
296
  getAggregatedMetrics(): AggregatedMetrics;
297
+ /** Look up a cached verdict by content hash. Returns null if miss or expired. */
298
+ getVerdictCache(contentHash: string): {
299
+ readonly contentHash: string;
300
+ readonly skillName: string;
301
+ readonly verdict: string;
302
+ readonly scannedAt: string;
303
+ readonly scanCount: number;
304
+ } | null;
305
+ /** Insert or replace a verdict cache entry with 30-day TTL. */
306
+ insertVerdictCache(entry: {
307
+ readonly contentHash: string;
308
+ readonly skillName: string;
309
+ readonly verdict: string;
310
+ }): void;
311
+ /** Delete a specific cache entry. Returns true if a row was deleted. */
312
+ invalidateVerdictCache(contentHash: string): boolean;
313
+ /** Purge all expired cache entries. Returns count deleted. */
314
+ purgeExpiredVerdictCache(): number;
315
+ /** Get the latest (non-superseded) hash entry for a skill. */
316
+ getLatestSkillHash(skillName: string): {
317
+ readonly contentHash: string;
318
+ readonly scanVerdict: string | null;
319
+ } | null;
320
+ /** Record a skill hash observation. Creates or updates last_seen. */
321
+ recordSkillHash(entry: {
322
+ readonly skillName: string;
323
+ readonly contentHash: string;
324
+ readonly scanVerdict?: string;
325
+ readonly rugPullFlag?: boolean;
326
+ }): void;
327
+ /** Mark a previous hash as superseded by a new hash. */
328
+ markSkillHashSuperseded(skillName: string, oldHash: string, newHash: string): void;
329
+ /** Get full hash history for a skill (audit trail). */
330
+ getSkillHashHistory(skillName: string): ReadonlyArray<{
331
+ readonly contentHash: string;
332
+ readonly firstSeen: string;
333
+ readonly lastSeen: string;
334
+ readonly scanVerdict: string | null;
335
+ readonly supersededBy: string | null;
336
+ readonly rugPullFlag: boolean;
337
+ }>;
338
+ /** Create an organization / 建立組織 */
339
+ createOrg(id: string, name: string): void;
340
+ /** Get org by ID / 取得組織 */
341
+ getOrg(id: string): {
342
+ id: string;
343
+ name: string;
344
+ created_at: string;
345
+ } | undefined;
346
+ /** Upsert device heartbeat / 更新裝置心跳
347
+ * Threat Model: Fleet view (#6 Scope Escalation — org-level visibility) */
348
+ upsertDevice(data: {
349
+ deviceId: string;
350
+ orgId: string;
351
+ hostname?: string;
352
+ osType?: string;
353
+ agentCount?: number;
354
+ guardVersion?: string;
355
+ }): void;
356
+ /** List devices for an org / 列出組織下的裝置
357
+ * Threat Model: Fleet view (#6) */
358
+ getDevicesByOrg(orgId: string, limit?: number, offset?: number): ReadonlyArray<{
359
+ id: string;
360
+ hostname: string | null;
361
+ os_type: string | null;
362
+ agent_count: number;
363
+ guard_version: string | null;
364
+ last_seen: string;
365
+ created_at: string;
366
+ }>;
367
+ /** Get device count for an org / 取得組織裝置數 */
368
+ getDeviceCount(orgId: string): number;
369
+ /** Set org policy / 設定組織策略
370
+ * Threat Model: Policy engine (#1 Supply Chain, #6 Scope Escalation) */
371
+ setOrgPolicy(orgId: string, category: string, action: 'allow' | 'block'): void;
372
+ /** Get org policies / 取得組織策略 */
373
+ getOrgPolicies(orgId: string): ReadonlyArray<{
374
+ category: string;
375
+ action: string;
376
+ created_at: string;
377
+ }>;
378
+ /** Delete org policy / 刪除組織策略 */
379
+ deleteOrgPolicy(orgId: string, category: string): boolean;
380
+ /** Register a new client key. Returns the raw key (only time it's visible). */
381
+ registerClientKey(clientId: string, ipAddress: string | null): {
382
+ clientKey: string;
383
+ };
384
+ /** Validate a raw client key. Updates last_used_at on success. */
385
+ validateClientKey(rawKey: string): boolean;
386
+ /**
387
+ * Look up role + clientId for a raw client key. Returns null if invalid/revoked.
388
+ * Does NOT update last_used_at (caller should use validateClientKey for that).
389
+ * Used by L5 partner-sync endpoints to enforce role-based access.
390
+ */
391
+ getClientKeyInfo(rawKey: string): {
392
+ clientId: string;
393
+ role: string;
394
+ } | null;
395
+ /**
396
+ * Issue a partner key. Partner keys are manually issued by admin and can
397
+ * access L5 live-sync endpoints (e.g. /api/atr-rules/live). Returns the
398
+ * raw key once — caller must store it securely.
399
+ */
400
+ registerPartnerKey(partnerName: string, issuedBy: string): {
401
+ clientKey: string;
402
+ };
403
+ /** Revoke all keys for a client. Returns number of keys revoked. */
404
+ revokeClientKey(clientId: string): number;
405
+ /** List client keys (admin). Never returns raw keys. */
406
+ listClientKeys(limit?: number, offset?: number): Array<{
407
+ id: number;
408
+ clientId: string;
409
+ createdAt: string;
410
+ lastUsedAt: string | null;
411
+ revoked: boolean;
412
+ ipAddress: string | null;
413
+ }>;
162
414
  /** Close the database / 關閉資料庫 */
163
415
  close(): void;
164
416
  }
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}