@panguard-ai/core 0.1.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 (233) hide show
  1. package/dist/adapters/adapter-registry.d.ts +150 -0
  2. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  3. package/dist/adapters/adapter-registry.js +271 -0
  4. package/dist/adapters/adapter-registry.js.map +1 -0
  5. package/dist/adapters/base-adapter.d.ts +101 -0
  6. package/dist/adapters/base-adapter.d.ts.map +1 -0
  7. package/dist/adapters/base-adapter.js +160 -0
  8. package/dist/adapters/base-adapter.js.map +1 -0
  9. package/dist/adapters/defender-adapter.d.ts +90 -0
  10. package/dist/adapters/defender-adapter.d.ts.map +1 -0
  11. package/dist/adapters/defender-adapter.js +227 -0
  12. package/dist/adapters/defender-adapter.js.map +1 -0
  13. package/dist/adapters/index.d.ts +22 -0
  14. package/dist/adapters/index.d.ts.map +1 -0
  15. package/dist/adapters/index.js +23 -0
  16. package/dist/adapters/index.js.map +1 -0
  17. package/dist/adapters/syslog-adapter.d.ts +207 -0
  18. package/dist/adapters/syslog-adapter.d.ts.map +1 -0
  19. package/dist/adapters/syslog-adapter.js +432 -0
  20. package/dist/adapters/syslog-adapter.js.map +1 -0
  21. package/dist/adapters/types.d.ts +135 -0
  22. package/dist/adapters/types.d.ts.map +1 -0
  23. package/dist/adapters/types.js +13 -0
  24. package/dist/adapters/types.js.map +1 -0
  25. package/dist/adapters/wazuh-adapter.d.ts +120 -0
  26. package/dist/adapters/wazuh-adapter.d.ts.map +1 -0
  27. package/dist/adapters/wazuh-adapter.js +266 -0
  28. package/dist/adapters/wazuh-adapter.js.map +1 -0
  29. package/dist/ai/claude-provider.d.ts +66 -0
  30. package/dist/ai/claude-provider.d.ts.map +1 -0
  31. package/dist/ai/claude-provider.js +166 -0
  32. package/dist/ai/claude-provider.js.map +1 -0
  33. package/dist/ai/funnel-router.d.ts +75 -0
  34. package/dist/ai/funnel-router.d.ts.map +1 -0
  35. package/dist/ai/funnel-router.js +173 -0
  36. package/dist/ai/funnel-router.js.map +1 -0
  37. package/dist/ai/index.d.ts +77 -0
  38. package/dist/ai/index.d.ts.map +1 -0
  39. package/dist/ai/index.js +95 -0
  40. package/dist/ai/index.js.map +1 -0
  41. package/dist/ai/ollama-provider.d.ts +73 -0
  42. package/dist/ai/ollama-provider.d.ts.map +1 -0
  43. package/dist/ai/ollama-provider.js +200 -0
  44. package/dist/ai/ollama-provider.js.map +1 -0
  45. package/dist/ai/openai-provider.d.ts +70 -0
  46. package/dist/ai/openai-provider.d.ts.map +1 -0
  47. package/dist/ai/openai-provider.js +175 -0
  48. package/dist/ai/openai-provider.js.map +1 -0
  49. package/dist/ai/prompts/event-classifier.d.ts +25 -0
  50. package/dist/ai/prompts/event-classifier.d.ts.map +1 -0
  51. package/dist/ai/prompts/event-classifier.js +94 -0
  52. package/dist/ai/prompts/event-classifier.js.map +1 -0
  53. package/dist/ai/prompts/index.d.ts +13 -0
  54. package/dist/ai/prompts/index.d.ts.map +1 -0
  55. package/dist/ai/prompts/index.js +13 -0
  56. package/dist/ai/prompts/index.js.map +1 -0
  57. package/dist/ai/prompts/report-generator.d.ts +25 -0
  58. package/dist/ai/prompts/report-generator.d.ts.map +1 -0
  59. package/dist/ai/prompts/report-generator.js +131 -0
  60. package/dist/ai/prompts/report-generator.js.map +1 -0
  61. package/dist/ai/prompts/threat-analyzer.d.ts +26 -0
  62. package/dist/ai/prompts/threat-analyzer.d.ts.map +1 -0
  63. package/dist/ai/prompts/threat-analyzer.js +75 -0
  64. package/dist/ai/prompts/threat-analyzer.js.map +1 -0
  65. package/dist/ai/provider-base.d.ts +100 -0
  66. package/dist/ai/provider-base.d.ts.map +1 -0
  67. package/dist/ai/provider-base.js +166 -0
  68. package/dist/ai/provider-base.js.map +1 -0
  69. package/dist/ai/response-parser.d.ts +36 -0
  70. package/dist/ai/response-parser.d.ts.map +1 -0
  71. package/dist/ai/response-parser.js +195 -0
  72. package/dist/ai/response-parser.js.map +1 -0
  73. package/dist/ai/token-tracker.d.ts +72 -0
  74. package/dist/ai/token-tracker.d.ts.map +1 -0
  75. package/dist/ai/token-tracker.js +145 -0
  76. package/dist/ai/token-tracker.js.map +1 -0
  77. package/dist/ai/types.d.ts +138 -0
  78. package/dist/ai/types.d.ts.map +1 -0
  79. package/dist/ai/types.js +12 -0
  80. package/dist/ai/types.js.map +1 -0
  81. package/dist/cli/index.d.ts +146 -0
  82. package/dist/cli/index.d.ts.map +1 -0
  83. package/dist/cli/index.js +515 -0
  84. package/dist/cli/index.js.map +1 -0
  85. package/dist/cli/prompts.d.ts +58 -0
  86. package/dist/cli/prompts.d.ts.map +1 -0
  87. package/dist/cli/prompts.js +327 -0
  88. package/dist/cli/prompts.js.map +1 -0
  89. package/dist/cli/wizard.d.ts +58 -0
  90. package/dist/cli/wizard.d.ts.map +1 -0
  91. package/dist/cli/wizard.js +200 -0
  92. package/dist/cli/wizard.js.map +1 -0
  93. package/dist/discovery/firewall-checker.d.ts +28 -0
  94. package/dist/discovery/firewall-checker.d.ts.map +1 -0
  95. package/dist/discovery/firewall-checker.js +379 -0
  96. package/dist/discovery/firewall-checker.js.map +1 -0
  97. package/dist/discovery/index.d.ts +23 -0
  98. package/dist/discovery/index.d.ts.map +1 -0
  99. package/dist/discovery/index.js +29 -0
  100. package/dist/discovery/index.js.map +1 -0
  101. package/dist/discovery/network-scanner.d.ts +60 -0
  102. package/dist/discovery/network-scanner.d.ts.map +1 -0
  103. package/dist/discovery/network-scanner.js +640 -0
  104. package/dist/discovery/network-scanner.js.map +1 -0
  105. package/dist/discovery/os-detector.d.ts +24 -0
  106. package/dist/discovery/os-detector.d.ts.map +1 -0
  107. package/dist/discovery/os-detector.js +253 -0
  108. package/dist/discovery/os-detector.js.map +1 -0
  109. package/dist/discovery/osquery-provider.d.ts +127 -0
  110. package/dist/discovery/osquery-provider.d.ts.map +1 -0
  111. package/dist/discovery/osquery-provider.js +214 -0
  112. package/dist/discovery/osquery-provider.js.map +1 -0
  113. package/dist/discovery/risk-scorer.d.ts +66 -0
  114. package/dist/discovery/risk-scorer.d.ts.map +1 -0
  115. package/dist/discovery/risk-scorer.js +294 -0
  116. package/dist/discovery/risk-scorer.js.map +1 -0
  117. package/dist/discovery/security-tools.d.ts +31 -0
  118. package/dist/discovery/security-tools.d.ts.map +1 -0
  119. package/dist/discovery/security-tools.js +346 -0
  120. package/dist/discovery/security-tools.js.map +1 -0
  121. package/dist/discovery/service-detector.d.ts +28 -0
  122. package/dist/discovery/service-detector.d.ts.map +1 -0
  123. package/dist/discovery/service-detector.js +300 -0
  124. package/dist/discovery/service-detector.js.map +1 -0
  125. package/dist/discovery/types.d.ts +502 -0
  126. package/dist/discovery/types.d.ts.map +1 -0
  127. package/dist/discovery/types.js +12 -0
  128. package/dist/discovery/types.js.map +1 -0
  129. package/dist/discovery/user-auditor.d.ts +28 -0
  130. package/dist/discovery/user-auditor.d.ts.map +1 -0
  131. package/dist/discovery/user-auditor.js +385 -0
  132. package/dist/discovery/user-auditor.js.map +1 -0
  133. package/dist/i18n/config.d.ts +45 -0
  134. package/dist/i18n/config.d.ts.map +1 -0
  135. package/dist/i18n/config.js +135 -0
  136. package/dist/i18n/config.js.map +1 -0
  137. package/dist/i18n/index.d.ts +8 -0
  138. package/dist/i18n/index.d.ts.map +1 -0
  139. package/dist/i18n/index.js +8 -0
  140. package/dist/i18n/index.js.map +1 -0
  141. package/dist/index.d.ts +31 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +31 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/monitor/event-normalizer.d.ts +102 -0
  146. package/dist/monitor/event-normalizer.d.ts.map +1 -0
  147. package/dist/monitor/event-normalizer.js +195 -0
  148. package/dist/monitor/event-normalizer.js.map +1 -0
  149. package/dist/monitor/file-monitor.d.ts +90 -0
  150. package/dist/monitor/file-monitor.d.ts.map +1 -0
  151. package/dist/monitor/file-monitor.js +222 -0
  152. package/dist/monitor/file-monitor.js.map +1 -0
  153. package/dist/monitor/index.d.ts +147 -0
  154. package/dist/monitor/index.d.ts.map +1 -0
  155. package/dist/monitor/index.js +293 -0
  156. package/dist/monitor/index.js.map +1 -0
  157. package/dist/monitor/log-monitor.d.ts +102 -0
  158. package/dist/monitor/log-monitor.d.ts.map +1 -0
  159. package/dist/monitor/log-monitor.js +245 -0
  160. package/dist/monitor/log-monitor.js.map +1 -0
  161. package/dist/monitor/network-monitor.d.ts +103 -0
  162. package/dist/monitor/network-monitor.d.ts.map +1 -0
  163. package/dist/monitor/network-monitor.js +336 -0
  164. package/dist/monitor/network-monitor.js.map +1 -0
  165. package/dist/monitor/process-monitor.d.ts +108 -0
  166. package/dist/monitor/process-monitor.d.ts.map +1 -0
  167. package/dist/monitor/process-monitor.js +245 -0
  168. package/dist/monitor/process-monitor.js.map +1 -0
  169. package/dist/monitor/threat-intel-feeds.d.ts +141 -0
  170. package/dist/monitor/threat-intel-feeds.d.ts.map +1 -0
  171. package/dist/monitor/threat-intel-feeds.js +430 -0
  172. package/dist/monitor/threat-intel-feeds.js.map +1 -0
  173. package/dist/monitor/threat-intel.d.ts +83 -0
  174. package/dist/monitor/threat-intel.d.ts.map +1 -0
  175. package/dist/monitor/threat-intel.js +215 -0
  176. package/dist/monitor/threat-intel.js.map +1 -0
  177. package/dist/monitor/types.d.ts +65 -0
  178. package/dist/monitor/types.d.ts.map +1 -0
  179. package/dist/monitor/types.js +20 -0
  180. package/dist/monitor/types.js.map +1 -0
  181. package/dist/rules/index.d.ts +115 -0
  182. package/dist/rules/index.d.ts.map +1 -0
  183. package/dist/rules/index.js +244 -0
  184. package/dist/rules/index.js.map +1 -0
  185. package/dist/rules/rule-loader.d.ts +54 -0
  186. package/dist/rules/rule-loader.d.ts.map +1 -0
  187. package/dist/rules/rule-loader.js +167 -0
  188. package/dist/rules/rule-loader.js.map +1 -0
  189. package/dist/rules/sigma-matcher.d.ts +40 -0
  190. package/dist/rules/sigma-matcher.d.ts.map +1 -0
  191. package/dist/rules/sigma-matcher.js +447 -0
  192. package/dist/rules/sigma-matcher.js.map +1 -0
  193. package/dist/rules/sigma-parser.d.ts +36 -0
  194. package/dist/rules/sigma-parser.d.ts.map +1 -0
  195. package/dist/rules/sigma-parser.js +180 -0
  196. package/dist/rules/sigma-parser.js.map +1 -0
  197. package/dist/rules/types.d.ts +112 -0
  198. package/dist/rules/types.d.ts.map +1 -0
  199. package/dist/rules/types.js +11 -0
  200. package/dist/rules/types.js.map +1 -0
  201. package/dist/rules/yara-scanner.d.ts +103 -0
  202. package/dist/rules/yara-scanner.d.ts.map +1 -0
  203. package/dist/rules/yara-scanner.js +421 -0
  204. package/dist/rules/yara-scanner.js.map +1 -0
  205. package/dist/scoring/achievements.d.ts +76 -0
  206. package/dist/scoring/achievements.d.ts.map +1 -0
  207. package/dist/scoring/achievements.js +211 -0
  208. package/dist/scoring/achievements.js.map +1 -0
  209. package/dist/scoring/index.d.ts +3 -0
  210. package/dist/scoring/index.d.ts.map +1 -0
  211. package/dist/scoring/index.js +3 -0
  212. package/dist/scoring/index.js.map +1 -0
  213. package/dist/scoring/security-score.d.ts +60 -0
  214. package/dist/scoring/security-score.d.ts.map +1 -0
  215. package/dist/scoring/security-score.js +211 -0
  216. package/dist/scoring/security-score.js.map +1 -0
  217. package/dist/types.d.ts +71 -0
  218. package/dist/types.d.ts.map +1 -0
  219. package/dist/types.js +8 -0
  220. package/dist/types.js.map +1 -0
  221. package/dist/utils/index.d.ts +10 -0
  222. package/dist/utils/index.d.ts.map +1 -0
  223. package/dist/utils/index.js +9 -0
  224. package/dist/utils/index.js.map +1 -0
  225. package/dist/utils/logger.d.ts +38 -0
  226. package/dist/utils/logger.d.ts.map +1 -0
  227. package/dist/utils/logger.js +71 -0
  228. package/dist/utils/logger.js.map +1 -0
  229. package/dist/utils/validation.d.ts +35 -0
  230. package/dist/utils/validation.d.ts.map +1 -0
  231. package/dist/utils/validation.js +56 -0
  232. package/dist/utils/validation.js.map +1 -0
  233. package/package.json +60 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Security adapter registry for auto-detection and management
3
+ * 安全對接器註冊表,用於自動偵測和管理
4
+ *
5
+ * Provides centralized management of security tool adapters, including
6
+ * manual registration, auto-detection from discovery results, and
7
+ * unified alert collection across all registered adapters.
8
+ * 提供安全工具對接器的集中管理,包括手動註冊、從偵察結果自動偵測,
9
+ * 以及跨所有已註冊對接器的統一告警收集。
10
+ *
11
+ * @module @panguard-ai/core/adapters/adapter-registry
12
+ */
13
+ import type { SecurityEvent } from '../types.js';
14
+ import type { DiscoveryResult } from '../discovery/types.js';
15
+ import type { SecurityAdapter } from './types.js';
16
+ /**
17
+ * Centralized registry for security tool adapters
18
+ * 安全工具對接器的集中註冊表
19
+ *
20
+ * The AdapterRegistry manages the lifecycle of security adapters:
21
+ * - Manual registration of custom adapters
22
+ * - Auto-detection of available adapters based on environment discovery
23
+ * - Unified alert collection from all registered adapters
24
+ * - Conversion of all alerts to the standardized SecurityEvent format
25
+ *
26
+ * AdapterRegistry 管理安全對接器的生命週期:
27
+ * - 手動註冊自訂對接器
28
+ * - 基於環境偵察的可用對接器自動偵測
29
+ * - 從所有已註冊對接器統一收集告警
30
+ * - 將所有告警轉換為標準化的 SecurityEvent 格式
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const registry = new AdapterRegistry();
35
+ *
36
+ * // Auto-detect adapters from discovery results / 從偵察結果自動偵測對接器
37
+ * await registry.autoDetect(discoveryResult);
38
+ *
39
+ * // Or register manually / 或手動註冊
40
+ * registry.register(new WazuhAdapter({ enabled: true, endpoint: 'https://wazuh:55000' }));
41
+ *
42
+ * // Collect alerts from all adapters / 從所有對接器收集告警
43
+ * const events = await registry.collectAlerts(new Date(Date.now() - 3600000));
44
+ * ```
45
+ */
46
+ export declare class AdapterRegistry {
47
+ /**
48
+ * Map of registered adapters keyed by adapter name
49
+ * 以對接器名稱為鍵的已註冊對接器映射
50
+ */
51
+ private adapters;
52
+ /**
53
+ * Create a new AdapterRegistry instance
54
+ * 建立新的 AdapterRegistry 實例
55
+ */
56
+ constructor();
57
+ /**
58
+ * Register an adapter manually
59
+ * 手動註冊對接器
60
+ *
61
+ * Adds the adapter to the registry. If an adapter with the same name
62
+ * is already registered, it will be replaced.
63
+ * 將對接器新增到註冊表。若已有同名對接器,則會被取代。
64
+ *
65
+ * @param adapter - Security adapter to register / 要註冊的安全對接器
66
+ */
67
+ register(adapter: SecurityAdapter): void;
68
+ /**
69
+ * Remove a registered adapter by name
70
+ * 依名稱移除已註冊的對接器
71
+ *
72
+ * @param name - Adapter name to remove / 要移除的對接器名稱
73
+ * @returns True if the adapter was removed / 若對接器已移除則回傳 true
74
+ */
75
+ unregister(name: string): boolean;
76
+ /**
77
+ * Auto-detect and register available security adapters
78
+ * 自動偵測並註冊可用的安全對接器
79
+ *
80
+ * Creates adapter instances based on detected security tools from
81
+ * the discovery result. Each adapter is checked for availability
82
+ * before being registered.
83
+ *
84
+ * Default adapters checked:
85
+ * - Windows Defender (on Windows systems)
86
+ * - Wazuh (if detected in discovery results)
87
+ * - Syslog Receiver (always available as a generic receiver)
88
+ *
89
+ * 根據偵察結果中偵測到的安全工具建立對接器實例。
90
+ * 每個對接器在註冊前都會檢查可用性。
91
+ *
92
+ * 檢查的預設對接器:
93
+ * - Windows Defender(在 Windows 系統上)
94
+ * - Wazuh(若在偵察結果中偵測到)
95
+ * - Syslog 接收器(作為通用接收器始終可用)
96
+ *
97
+ * @param discoveryResult - Optional discovery result for context-aware detection / 可選的偵察結果,用於上下文感知偵測
98
+ */
99
+ autoDetect(discoveryResult?: DiscoveryResult): Promise<void>;
100
+ /**
101
+ * Get a registered adapter by name
102
+ * 依名稱取得已註冊的對接器
103
+ *
104
+ * @param name - Adapter name / 對接器名稱
105
+ * @returns The adapter instance, or undefined if not found / 對接器實例,若找不到則為 undefined
106
+ */
107
+ getAdapter(name: string): SecurityAdapter | undefined;
108
+ /**
109
+ * Get all registered (available) adapters
110
+ * 取得所有已註冊(可用)的對接器
111
+ *
112
+ * @returns Array of registered security adapters / 已註冊的安全對接器陣列
113
+ */
114
+ getAvailableAdapters(): SecurityAdapter[];
115
+ /**
116
+ * Get the names of all registered adapters
117
+ * 取得所有已註冊對接器的名稱
118
+ *
119
+ * @returns Array of adapter names / 對接器名稱陣列
120
+ */
121
+ getAdapterNames(): string[];
122
+ /**
123
+ * Get the number of registered adapters
124
+ * 取得已註冊對接器的數量
125
+ *
126
+ * @returns Number of registered adapters / 已註冊對接器的數量
127
+ */
128
+ get size(): number;
129
+ /**
130
+ * Collect alerts from all registered adapters and convert to SecurityEvents
131
+ * 從所有已註冊對接器收集告警並轉換為 SecurityEvent
132
+ *
133
+ * Iterates over all registered adapters, retrieves their alerts,
134
+ * converts them to the standardized SecurityEvent format, and
135
+ * returns a merged array. Errors from individual adapters are
136
+ * logged and do not prevent collection from other adapters.
137
+ * 遍歷所有已註冊對接器,取得其告警,轉換為標準化的 SecurityEvent 格式,
138
+ * 並回傳合併的陣列。個別對接器的錯誤會被記錄,不會阻止從其他對接器收集。
139
+ *
140
+ * @param since - Optional cutoff date for all adapters / 所有對接器的可選截止日期
141
+ * @returns Merged array of SecurityEvents from all adapters / 來自所有對接器的合併 SecurityEvent 陣列
142
+ */
143
+ collectAlerts(since?: Date): Promise<SecurityEvent[]>;
144
+ /**
145
+ * Clear all registered adapters
146
+ * 清除所有已註冊的對接器
147
+ */
148
+ clear(): void;
149
+ }
150
+ //# sourceMappingURL=adapter-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-registry.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,eAAe;IAC1B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAA2C;IAE3D;;;OAGG;;IAKH;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAWxC;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUjC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,UAAU,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkElE;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIrD;;;;;OAKG;IACH,oBAAoB,IAAI,eAAe,EAAE;IAIzC;;;;;OAKG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;;;;OAKG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;;;;;OAaG;IACG,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA6C3D;;;OAGG;IACH,KAAK,IAAI,IAAI;CAKd"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Security adapter registry for auto-detection and management
3
+ * 安全對接器註冊表,用於自動偵測和管理
4
+ *
5
+ * Provides centralized management of security tool adapters, including
6
+ * manual registration, auto-detection from discovery results, and
7
+ * unified alert collection across all registered adapters.
8
+ * 提供安全工具對接器的集中管理,包括手動註冊、從偵察結果自動偵測,
9
+ * 以及跨所有已註冊對接器的統一告警收集。
10
+ *
11
+ * @module @panguard-ai/core/adapters/adapter-registry
12
+ */
13
+ import { createLogger } from '../utils/logger.js';
14
+ import { DefenderAdapter } from './defender-adapter.js';
15
+ import { WazuhAdapter } from './wazuh-adapter.js';
16
+ import { SyslogAdapter } from './syslog-adapter.js';
17
+ const logger = createLogger('adapter-registry');
18
+ /**
19
+ * Centralized registry for security tool adapters
20
+ * 安全工具對接器的集中註冊表
21
+ *
22
+ * The AdapterRegistry manages the lifecycle of security adapters:
23
+ * - Manual registration of custom adapters
24
+ * - Auto-detection of available adapters based on environment discovery
25
+ * - Unified alert collection from all registered adapters
26
+ * - Conversion of all alerts to the standardized SecurityEvent format
27
+ *
28
+ * AdapterRegistry 管理安全對接器的生命週期:
29
+ * - 手動註冊自訂對接器
30
+ * - 基於環境偵察的可用對接器自動偵測
31
+ * - 從所有已註冊對接器統一收集告警
32
+ * - 將所有告警轉換為標準化的 SecurityEvent 格式
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const registry = new AdapterRegistry();
37
+ *
38
+ * // Auto-detect adapters from discovery results / 從偵察結果自動偵測對接器
39
+ * await registry.autoDetect(discoveryResult);
40
+ *
41
+ * // Or register manually / 或手動註冊
42
+ * registry.register(new WazuhAdapter({ enabled: true, endpoint: 'https://wazuh:55000' }));
43
+ *
44
+ * // Collect alerts from all adapters / 從所有對接器收集告警
45
+ * const events = await registry.collectAlerts(new Date(Date.now() - 3600000));
46
+ * ```
47
+ */
48
+ export class AdapterRegistry {
49
+ /**
50
+ * Map of registered adapters keyed by adapter name
51
+ * 以對接器名稱為鍵的已註冊對接器映射
52
+ */
53
+ adapters = new Map();
54
+ /**
55
+ * Create a new AdapterRegistry instance
56
+ * 建立新的 AdapterRegistry 實例
57
+ */
58
+ constructor() {
59
+ logger.info('AdapterRegistry initialized');
60
+ }
61
+ /**
62
+ * Register an adapter manually
63
+ * 手動註冊對接器
64
+ *
65
+ * Adds the adapter to the registry. If an adapter with the same name
66
+ * is already registered, it will be replaced.
67
+ * 將對接器新增到註冊表。若已有同名對接器,則會被取代。
68
+ *
69
+ * @param adapter - Security adapter to register / 要註冊的安全對接器
70
+ */
71
+ register(adapter) {
72
+ const existing = this.adapters.has(adapter.name);
73
+ this.adapters.set(adapter.name, adapter);
74
+ if (existing) {
75
+ logger.info(`Replaced existing adapter: ${adapter.name}`, { type: adapter.type });
76
+ }
77
+ else {
78
+ logger.info(`Registered adapter: ${adapter.name}`, { type: adapter.type });
79
+ }
80
+ }
81
+ /**
82
+ * Remove a registered adapter by name
83
+ * 依名稱移除已註冊的對接器
84
+ *
85
+ * @param name - Adapter name to remove / 要移除的對接器名稱
86
+ * @returns True if the adapter was removed / 若對接器已移除則回傳 true
87
+ */
88
+ unregister(name) {
89
+ const removed = this.adapters.delete(name);
90
+ if (removed) {
91
+ logger.info(`Unregistered adapter: ${name}`);
92
+ }
93
+ else {
94
+ logger.warn(`Adapter not found for removal: ${name}`);
95
+ }
96
+ return removed;
97
+ }
98
+ /**
99
+ * Auto-detect and register available security adapters
100
+ * 自動偵測並註冊可用的安全對接器
101
+ *
102
+ * Creates adapter instances based on detected security tools from
103
+ * the discovery result. Each adapter is checked for availability
104
+ * before being registered.
105
+ *
106
+ * Default adapters checked:
107
+ * - Windows Defender (on Windows systems)
108
+ * - Wazuh (if detected in discovery results)
109
+ * - Syslog Receiver (always available as a generic receiver)
110
+ *
111
+ * 根據偵察結果中偵測到的安全工具建立對接器實例。
112
+ * 每個對接器在註冊前都會檢查可用性。
113
+ *
114
+ * 檢查的預設對接器:
115
+ * - Windows Defender(在 Windows 系統上)
116
+ * - Wazuh(若在偵察結果中偵測到)
117
+ * - Syslog 接收器(作為通用接收器始終可用)
118
+ *
119
+ * @param discoveryResult - Optional discovery result for context-aware detection / 可選的偵察結果,用於上下文感知偵測
120
+ */
121
+ async autoDetect(discoveryResult) {
122
+ logger.info('Starting adapter auto-detection');
123
+ const candidates = [];
124
+ // Always try Windows Defender / 總是嘗試 Windows Defender
125
+ candidates.push(new DefenderAdapter({ enabled: true }));
126
+ // Check discovery results for known security tools
127
+ // 檢查偵察結果中的已知安全工具
128
+ if (discoveryResult) {
129
+ const tools = discoveryResult.security.existingTools;
130
+ // Look for Wazuh in detected tools / 在偵測到的工具中尋找 Wazuh
131
+ const wazuhTool = tools.find((tool) => tool.name.toLowerCase().includes('wazuh') || tool.vendor.toLowerCase().includes('wazuh'));
132
+ if (wazuhTool) {
133
+ logger.info('Wazuh detected in discovery results, adding adapter');
134
+ candidates.push(new WazuhAdapter({ enabled: true }));
135
+ }
136
+ // Look for SIEM tools that might expose syslog
137
+ // 尋找可能暴露 syslog 的 SIEM 工具
138
+ const syslogCapable = tools.some((tool) => tool.type === 'siem' ||
139
+ tool.type === 'ids' ||
140
+ tool.name.toLowerCase().includes('syslog') ||
141
+ tool.name.toLowerCase().includes('rsyslog') ||
142
+ tool.name.toLowerCase().includes('syslog-ng'));
143
+ if (syslogCapable) {
144
+ logger.info('Syslog-capable tool detected, adding syslog adapter');
145
+ candidates.push(new SyslogAdapter({ enabled: true }));
146
+ }
147
+ }
148
+ // Check availability for each candidate and register if available
149
+ // 檢查每個候選者的可用性,若可用則註冊
150
+ let registered = 0;
151
+ for (const candidate of candidates) {
152
+ try {
153
+ const available = await candidate.isAvailable();
154
+ if (available) {
155
+ this.register(candidate);
156
+ registered++;
157
+ }
158
+ else {
159
+ logger.debug(`Adapter not available: ${candidate.name}`);
160
+ }
161
+ }
162
+ catch (err) {
163
+ logger.warn(`Error checking adapter availability: ${candidate.name}`, {
164
+ error: err instanceof Error ? err.message : String(err),
165
+ });
166
+ }
167
+ }
168
+ logger.info(`Auto-detection complete: ${registered} adapters registered`, {
169
+ candidates: candidates.length,
170
+ registered,
171
+ });
172
+ }
173
+ /**
174
+ * Get a registered adapter by name
175
+ * 依名稱取得已註冊的對接器
176
+ *
177
+ * @param name - Adapter name / 對接器名稱
178
+ * @returns The adapter instance, or undefined if not found / 對接器實例,若找不到則為 undefined
179
+ */
180
+ getAdapter(name) {
181
+ return this.adapters.get(name);
182
+ }
183
+ /**
184
+ * Get all registered (available) adapters
185
+ * 取得所有已註冊(可用)的對接器
186
+ *
187
+ * @returns Array of registered security adapters / 已註冊的安全對接器陣列
188
+ */
189
+ getAvailableAdapters() {
190
+ return Array.from(this.adapters.values());
191
+ }
192
+ /**
193
+ * Get the names of all registered adapters
194
+ * 取得所有已註冊對接器的名稱
195
+ *
196
+ * @returns Array of adapter names / 對接器名稱陣列
197
+ */
198
+ getAdapterNames() {
199
+ return Array.from(this.adapters.keys());
200
+ }
201
+ /**
202
+ * Get the number of registered adapters
203
+ * 取得已註冊對接器的數量
204
+ *
205
+ * @returns Number of registered adapters / 已註冊對接器的數量
206
+ */
207
+ get size() {
208
+ return this.adapters.size;
209
+ }
210
+ /**
211
+ * Collect alerts from all registered adapters and convert to SecurityEvents
212
+ * 從所有已註冊對接器收集告警並轉換為 SecurityEvent
213
+ *
214
+ * Iterates over all registered adapters, retrieves their alerts,
215
+ * converts them to the standardized SecurityEvent format, and
216
+ * returns a merged array. Errors from individual adapters are
217
+ * logged and do not prevent collection from other adapters.
218
+ * 遍歷所有已註冊對接器,取得其告警,轉換為標準化的 SecurityEvent 格式,
219
+ * 並回傳合併的陣列。個別對接器的錯誤會被記錄,不會阻止從其他對接器收集。
220
+ *
221
+ * @param since - Optional cutoff date for all adapters / 所有對接器的可選截止日期
222
+ * @returns Merged array of SecurityEvents from all adapters / 來自所有對接器的合併 SecurityEvent 陣列
223
+ */
224
+ async collectAlerts(since) {
225
+ const allEvents = [];
226
+ const adapterNames = this.getAdapterNames();
227
+ if (adapterNames.length === 0) {
228
+ logger.debug('No adapters registered, no alerts to collect');
229
+ return allEvents;
230
+ }
231
+ logger.info(`Collecting alerts from ${adapterNames.length} adapters`, {
232
+ adapters: adapterNames,
233
+ since: since?.toISOString(),
234
+ });
235
+ // Collect from all adapters in parallel for efficiency
236
+ // 為了效率,同時從所有對接器收集
237
+ const results = await Promise.allSettled(Array.from(this.adapters.entries()).map(async ([name, adapter]) => {
238
+ try {
239
+ const alerts = await adapter.getAlerts(since);
240
+ const events = adapter.toSecurityEvents(alerts);
241
+ logger.debug(`Collected ${events.length} events from ${name}`);
242
+ return events;
243
+ }
244
+ catch (err) {
245
+ logger.error(`Failed to collect alerts from ${name}`, {
246
+ error: err instanceof Error ? err.message : String(err),
247
+ });
248
+ return [];
249
+ }
250
+ }));
251
+ for (const result of results) {
252
+ if (result.status === 'fulfilled') {
253
+ allEvents.push(...result.value);
254
+ }
255
+ // Rejected promises are already handled in the catch above
256
+ // 被拒絕的 Promise 已在上面的 catch 中處理
257
+ }
258
+ logger.info(`Collected ${allEvents.length} total events from all adapters`);
259
+ return allEvents;
260
+ }
261
+ /**
262
+ * Clear all registered adapters
263
+ * 清除所有已註冊的對接器
264
+ */
265
+ clear() {
266
+ const count = this.adapters.size;
267
+ this.adapters.clear();
268
+ logger.info(`Cleared ${count} adapters from registry`);
269
+ }
270
+ }
271
+ //# sourceMappingURL=adapter-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-registry.js","sourceRoot":"","sources":["../../src/adapters/adapter-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Abstract base class for security tool adapters
3
+ * 安全工具對接器抽象基底類別
4
+ *
5
+ * Provides shared functionality for all adapters including configuration
6
+ * management, logging, and standard alert-to-SecurityEvent conversion.
7
+ * 為所有對接器提供共用功能,包括配置管理、日誌記錄和標準
8
+ * 告警到 SecurityEvent 的轉換。
9
+ *
10
+ * @module @panguard-ai/core/adapters/base-adapter
11
+ */
12
+ import type { Logger } from '../utils/logger.js';
13
+ import type { SecurityEvent, Severity, EventSource } from '../types.js';
14
+ import type { AdapterConfig, AdapterAlert, SecurityAdapter } from './types.js';
15
+ /**
16
+ * Map a severity string to the standard Severity type
17
+ * 將嚴重等級字串映射為標準 Severity 型別
18
+ *
19
+ * Handles common severity labels from various security tools and normalizes
20
+ * them into the five-level Severity scale used throughout Panguard.
21
+ * 處理來自各種安全工具的常見嚴重等級標籤,並將其正規化為
22
+ * Panguard 中使用的五級 Severity 量表。
23
+ *
24
+ * @param severity - Raw severity string from the adapter / 來自對接器的原始嚴重等級字串
25
+ * @returns Normalized Severity value / 正規化的 Severity 值
26
+ */
27
+ export declare function mapSeverity(severity: string): Severity;
28
+ /**
29
+ * Map an adapter source string to the standard EventSource type
30
+ * 將對接器來源字串映射為標準 EventSource 型別
31
+ *
32
+ * @param source - Raw source string from the adapter / 來自對接器的原始來源字串
33
+ * @returns Normalized EventSource value / 正規化的 EventSource 值
34
+ */
35
+ export declare function mapEventSource(source: string): EventSource;
36
+ /**
37
+ * Abstract base adapter providing shared implementation for security adapters
38
+ * 提供安全對接器共用實作的抽象基底對接器
39
+ *
40
+ * Subclasses must implement:
41
+ * - `isAvailable()`: Check if the underlying tool is reachable
42
+ * - `getAlerts(since?)`: Retrieve alerts from the underlying tool
43
+ *
44
+ * 子類別必須實作:
45
+ * - `isAvailable()`:檢查底層工具是否可連線
46
+ * - `getAlerts(since?)`:從底層工具取得告警
47
+ */
48
+ export declare abstract class BaseAdapter implements SecurityAdapter {
49
+ /**
50
+ * Human-readable adapter name
51
+ * 人類可讀的對接器名稱
52
+ */
53
+ abstract readonly name: string;
54
+ /**
55
+ * Adapter type identifier
56
+ * 對接器類型識別碼
57
+ */
58
+ abstract readonly type: string;
59
+ /**
60
+ * Logger instance scoped to this adapter
61
+ * 範圍限定於此對接器的日誌記錄器實例
62
+ */
63
+ protected readonly logger: Logger;
64
+ /**
65
+ * Adapter configuration
66
+ * 對接器配置
67
+ */
68
+ protected readonly config: AdapterConfig;
69
+ /**
70
+ * Create a new BaseAdapter instance
71
+ * 建立新的 BaseAdapter 實例
72
+ *
73
+ * @param moduleName - Logger module name / 日誌記錄器模組名稱
74
+ * @param config - Adapter configuration / 對接器配置
75
+ */
76
+ constructor(moduleName: string, config: AdapterConfig);
77
+ /**
78
+ * Check if the underlying security tool is available
79
+ * 檢查底層安全工具是否可用
80
+ */
81
+ abstract isAvailable(): Promise<boolean>;
82
+ /**
83
+ * Retrieve alerts from the security tool
84
+ * 從安全工具取得告警
85
+ */
86
+ abstract getAlerts(since?: Date): Promise<AdapterAlert[]>;
87
+ /**
88
+ * Convert adapter alerts to standardized SecurityEvent format
89
+ * 將對接器告警轉換為標準化的 SecurityEvent 格式
90
+ *
91
+ * Uses shared mapping logic for severity and event source normalization.
92
+ * The host field defaults to the current system hostname.
93
+ * 使用共用映射邏輯進行嚴重等級和事件來源正規化。
94
+ * host 欄位預設為目前系統主機名稱。
95
+ *
96
+ * @param alerts - Array of adapter alerts to convert / 要轉換的對接器告警陣列
97
+ * @returns Array of SecurityEvent instances / SecurityEvent 實例陣列
98
+ */
99
+ toSecurityEvents(alerts: AdapterAlert[]): SecurityEvent[];
100
+ }
101
+ //# sourceMappingURL=base-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAuCtD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA4B1D;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,WAAY,YAAW,eAAe;IAC1D;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAEzC;;;;;;OAMG;gBACS,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAKrD;;;OAGG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAEzD;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE;CAkB1D"}