erosolar-cli 2.1.249 → 2.1.252

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 (467) hide show
  1. package/agents/general.rules.json +10 -133
  2. package/agents/general.rules.json.bak +278 -0
  3. package/agents/general.rules.json.bak2 +306 -0
  4. package/dist/bin/erosolar.js +9 -5
  5. package/dist/bin/erosolar.js.map +1 -1
  6. package/dist/capabilities/bidirectionalAuditCapability.d.ts +26 -0
  7. package/dist/capabilities/bidirectionalAuditCapability.d.ts.map +1 -0
  8. package/dist/capabilities/bidirectionalAuditCapability.js +44 -0
  9. package/dist/capabilities/bidirectionalAuditCapability.js.map +1 -0
  10. package/dist/capabilities/globCapability.d.ts +3 -6
  11. package/dist/capabilities/globCapability.d.ts.map +1 -1
  12. package/dist/capabilities/globCapability.js +6 -10
  13. package/dist/capabilities/globCapability.js.map +1 -1
  14. package/dist/capabilities/index.d.ts +1 -18
  15. package/dist/capabilities/index.d.ts.map +1 -1
  16. package/dist/capabilities/index.js +1 -18
  17. package/dist/capabilities/index.js.map +1 -1
  18. package/dist/capabilities/orchestrationCapability.d.ts +2 -0
  19. package/dist/capabilities/orchestrationCapability.d.ts.map +1 -1
  20. package/dist/capabilities/orchestrationCapability.js +980 -2
  21. package/dist/capabilities/orchestrationCapability.js.map +1 -1
  22. package/dist/capabilities/searchCapability.d.ts +8 -2
  23. package/dist/capabilities/searchCapability.d.ts.map +1 -1
  24. package/dist/capabilities/searchCapability.js +11 -6
  25. package/dist/capabilities/searchCapability.js.map +1 -1
  26. package/dist/contracts/tools.schema.json +9 -133
  27. package/dist/core/aiErrorFixer.d.ts +1 -14
  28. package/dist/core/aiErrorFixer.d.ts.map +1 -1
  29. package/dist/core/aiErrorFixer.js +51 -239
  30. package/dist/core/aiErrorFixer.js.map +1 -1
  31. package/dist/core/alphaZeroEngine.d.ts +16 -256
  32. package/dist/core/alphaZeroEngine.d.ts.map +1 -1
  33. package/dist/core/alphaZeroEngine.js +22 -513
  34. package/dist/core/alphaZeroEngine.js.map +1 -1
  35. package/dist/core/completeAttackOrchestrator.d.ts +102 -0
  36. package/dist/core/completeAttackOrchestrator.d.ts.map +1 -0
  37. package/dist/core/completeAttackOrchestrator.js +293 -0
  38. package/dist/core/completeAttackOrchestrator.js.map +1 -0
  39. package/dist/core/defensiveSecurityToolkit.d.ts +373 -0
  40. package/dist/core/defensiveSecurityToolkit.d.ts.map +1 -0
  41. package/dist/core/defensiveSecurityToolkit.js +1304 -0
  42. package/dist/core/defensiveSecurityToolkit.js.map +1 -0
  43. package/dist/core/errors/errorTypes.d.ts +30 -57
  44. package/dist/core/errors/errorTypes.d.ts.map +1 -1
  45. package/dist/core/errors/errorTypes.js +51 -228
  46. package/dist/core/errors/errorTypes.js.map +1 -1
  47. package/dist/core/errors/safetyValidator.d.ts +19 -3
  48. package/dist/core/errors/safetyValidator.d.ts.map +1 -1
  49. package/dist/core/errors/safetyValidator.js +33 -71
  50. package/dist/core/errors/safetyValidator.js.map +1 -1
  51. package/dist/core/failureRecovery.d.ts +4 -100
  52. package/dist/core/failureRecovery.d.ts.map +1 -1
  53. package/dist/core/failureRecovery.js +16 -440
  54. package/dist/core/failureRecovery.js.map +1 -1
  55. package/dist/core/intelligentTargetResearcher.d.ts +142 -0
  56. package/dist/core/intelligentTargetResearcher.d.ts.map +1 -0
  57. package/dist/core/intelligentTargetResearcher.js +367 -0
  58. package/dist/core/intelligentTargetResearcher.js.map +1 -0
  59. package/dist/core/intelligentTestFlows.d.ts +26 -107
  60. package/dist/core/intelligentTestFlows.d.ts.map +1 -1
  61. package/dist/core/intelligentTestFlows.js +15 -659
  62. package/dist/core/intelligentTestFlows.js.map +1 -1
  63. package/dist/core/learningPersistence.d.ts +45 -132
  64. package/dist/core/learningPersistence.d.ts.map +1 -1
  65. package/dist/core/learningPersistence.js +32 -463
  66. package/dist/core/learningPersistence.js.map +1 -1
  67. package/dist/core/metricsTracker.d.ts +22 -139
  68. package/dist/core/metricsTracker.d.ts.map +1 -1
  69. package/dist/core/metricsTracker.js +51 -241
  70. package/dist/core/metricsTracker.js.map +1 -1
  71. package/dist/core/performanceMonitor.d.ts +15 -109
  72. package/dist/core/performanceMonitor.d.ts.map +1 -1
  73. package/dist/core/performanceMonitor.js +27 -184
  74. package/dist/core/performanceMonitor.js.map +1 -1
  75. package/dist/core/resultVerification.d.ts +6 -100
  76. package/dist/core/resultVerification.d.ts.map +1 -1
  77. package/dist/core/resultVerification.js +31 -400
  78. package/dist/core/resultVerification.js.map +1 -1
  79. package/dist/core/selfEvolution.d.ts +32 -126
  80. package/dist/core/selfEvolution.d.ts.map +1 -1
  81. package/dist/core/selfEvolution.js +24 -967
  82. package/dist/core/selfEvolution.js.map +1 -1
  83. package/dist/core/selfImprovement.d.ts +50 -109
  84. package/dist/core/selfImprovement.d.ts.map +1 -1
  85. package/dist/core/selfImprovement.js +14 -689
  86. package/dist/core/selfImprovement.js.map +1 -1
  87. package/dist/core/sourceCodeManager.d.ts +89 -0
  88. package/dist/core/sourceCodeManager.d.ts.map +1 -0
  89. package/dist/core/sourceCodeManager.js +332 -0
  90. package/dist/core/sourceCodeManager.js.map +1 -0
  91. package/dist/core/unifiedOrchestrator.d.ts +88 -0
  92. package/dist/core/unifiedOrchestrator.d.ts.map +1 -0
  93. package/dist/core/unifiedOrchestrator.js +284 -0
  94. package/dist/core/unifiedOrchestrator.js.map +1 -0
  95. package/dist/core/userDefenseOrchestrator.d.ts +202 -0
  96. package/dist/core/userDefenseOrchestrator.d.ts.map +1 -0
  97. package/dist/core/userDefenseOrchestrator.js +1006 -0
  98. package/dist/core/userDefenseOrchestrator.js.map +1 -0
  99. package/dist/plugins/index.d.ts +1 -1
  100. package/dist/plugins/index.d.ts.map +1 -1
  101. package/dist/plugins/index.js +36 -26
  102. package/dist/plugins/index.js.map +1 -1
  103. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.d.ts +8 -0
  104. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.d.ts.map +1 -0
  105. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.js +17 -0
  106. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.js.map +1 -0
  107. package/dist/plugins/tools/nodeDefaults.d.ts +14 -0
  108. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  109. package/dist/plugins/tools/nodeDefaults.js +17 -54
  110. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  111. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts +9 -0
  112. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts.map +1 -0
  113. package/dist/plugins/tools/orchestration/orchestrationPlugin.js +18 -0
  114. package/dist/plugins/tools/orchestration/orchestrationPlugin.js.map +1 -0
  115. package/dist/shell/interactiveShell.d.ts +97 -2
  116. package/dist/shell/interactiveShell.d.ts.map +1 -1
  117. package/dist/shell/interactiveShell.js +1001 -6
  118. package/dist/shell/interactiveShell.js.map +1 -1
  119. package/dist/tools/appleExposureTools.d.ts +108 -0
  120. package/dist/tools/appleExposureTools.d.ts.map +1 -0
  121. package/dist/tools/appleExposureTools.js +850 -0
  122. package/dist/tools/appleExposureTools.js.map +1 -0
  123. package/dist/tools/bidirectionalAuditTools.d.ts +104 -0
  124. package/dist/tools/bidirectionalAuditTools.d.ts.map +1 -0
  125. package/dist/tools/bidirectionalAuditTools.js +1280 -0
  126. package/dist/tools/bidirectionalAuditTools.js.map +1 -0
  127. package/dist/tools/defensiveSecurityTools.d.ts +152 -0
  128. package/dist/tools/defensiveSecurityTools.d.ts.map +1 -0
  129. package/dist/tools/defensiveSecurityTools.js +576 -0
  130. package/dist/tools/defensiveSecurityTools.js.map +1 -0
  131. package/dist/tools/forwardAttackChainTracer.d.ts +73 -0
  132. package/dist/tools/forwardAttackChainTracer.d.ts.map +1 -0
  133. package/dist/tools/forwardAttackChainTracer.js +604 -0
  134. package/dist/tools/forwardAttackChainTracer.js.map +1 -0
  135. package/dist/tools/localExplore.d.ts +12 -199
  136. package/dist/tools/localExplore.d.ts.map +1 -1
  137. package/dist/tools/localExplore.js +18 -1352
  138. package/dist/tools/localExplore.js.map +1 -1
  139. package/dist/tools/offensiveTransparencyTools.d.ts +188 -0
  140. package/dist/tools/offensiveTransparencyTools.d.ts.map +1 -0
  141. package/dist/tools/offensiveTransparencyTools.js +890 -0
  142. package/dist/tools/offensiveTransparencyTools.js.map +1 -0
  143. package/dist/tools/planningTools.d.ts +8 -17
  144. package/dist/tools/planningTools.d.ts.map +1 -1
  145. package/dist/tools/planningTools.js +31 -141
  146. package/dist/tools/planningTools.js.map +1 -1
  147. package/dist/tools/searchTools.d.ts +9 -0
  148. package/dist/tools/searchTools.d.ts.map +1 -1
  149. package/dist/tools/searchTools.js +305 -189
  150. package/dist/tools/searchTools.js.map +1 -1
  151. package/dist/tools/skillTools.d.ts +7 -5
  152. package/dist/tools/skillTools.d.ts.map +1 -1
  153. package/dist/tools/skillTools.js +13 -155
  154. package/dist/tools/skillTools.js.map +1 -1
  155. package/dist/tools/threatIntelligenceTools.d.ts +128 -0
  156. package/dist/tools/threatIntelligenceTools.d.ts.map +1 -0
  157. package/dist/tools/threatIntelligenceTools.js +712 -0
  158. package/dist/tools/threatIntelligenceTools.js.map +1 -0
  159. package/dist/ui/PromptController.d.ts +4 -0
  160. package/dist/ui/PromptController.d.ts.map +1 -1
  161. package/dist/ui/PromptController.js +32 -11
  162. package/dist/ui/PromptController.js.map +1 -1
  163. package/dist/ui/UnifiedUIRenderer.d.ts +20 -0
  164. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  165. package/dist/ui/UnifiedUIRenderer.js +235 -28
  166. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  167. package/dist/ui/animatedStatus.d.ts +2 -0
  168. package/dist/ui/animatedStatus.d.ts.map +1 -1
  169. package/dist/ui/animatedStatus.js +36 -2
  170. package/dist/ui/animatedStatus.js.map +1 -1
  171. package/dist/ui/orchestration/StatusOrchestrator.d.ts +10 -0
  172. package/dist/ui/orchestration/StatusOrchestrator.d.ts.map +1 -1
  173. package/dist/ui/orchestration/StatusOrchestrator.js +36 -4
  174. package/dist/ui/orchestration/StatusOrchestrator.js.map +1 -1
  175. package/package.json +1 -1
  176. package/dist/capabilities/advancedTestGenerationCapability.d.ts +0 -17
  177. package/dist/capabilities/advancedTestGenerationCapability.d.ts.map +0 -1
  178. package/dist/capabilities/advancedTestGenerationCapability.js +0 -28
  179. package/dist/capabilities/advancedTestGenerationCapability.js.map +0 -1
  180. package/dist/capabilities/browserAutomationCapability.d.ts +0 -37
  181. package/dist/capabilities/browserAutomationCapability.d.ts.map +0 -1
  182. package/dist/capabilities/browserAutomationCapability.js +0 -49
  183. package/dist/capabilities/browserAutomationCapability.js.map +0 -1
  184. package/dist/capabilities/buildCapability.d.ts +0 -24
  185. package/dist/capabilities/buildCapability.d.ts.map +0 -1
  186. package/dist/capabilities/buildCapability.js +0 -25
  187. package/dist/capabilities/buildCapability.js.map +0 -1
  188. package/dist/capabilities/cloudCapability.d.ts +0 -13
  189. package/dist/capabilities/cloudCapability.d.ts.map +0 -1
  190. package/dist/capabilities/cloudCapability.js +0 -38
  191. package/dist/capabilities/cloudCapability.js.map +0 -1
  192. package/dist/capabilities/codeAnalysisCapability.d.ts +0 -13
  193. package/dist/capabilities/codeAnalysisCapability.d.ts.map +0 -1
  194. package/dist/capabilities/codeAnalysisCapability.js +0 -24
  195. package/dist/capabilities/codeAnalysisCapability.js.map +0 -1
  196. package/dist/capabilities/codeQualityCapability.d.ts +0 -13
  197. package/dist/capabilities/codeQualityCapability.d.ts.map +0 -1
  198. package/dist/capabilities/codeQualityCapability.js +0 -25
  199. package/dist/capabilities/codeQualityCapability.js.map +0 -1
  200. package/dist/capabilities/dependencySecurityCapability.d.ts +0 -13
  201. package/dist/capabilities/dependencySecurityCapability.d.ts.map +0 -1
  202. package/dist/capabilities/dependencySecurityCapability.js +0 -24
  203. package/dist/capabilities/dependencySecurityCapability.js.map +0 -1
  204. package/dist/capabilities/devCapability.d.ts +0 -13
  205. package/dist/capabilities/devCapability.d.ts.map +0 -1
  206. package/dist/capabilities/devCapability.js +0 -24
  207. package/dist/capabilities/devCapability.js.map +0 -1
  208. package/dist/capabilities/emailCapability.d.ts +0 -12
  209. package/dist/capabilities/emailCapability.d.ts.map +0 -1
  210. package/dist/capabilities/emailCapability.js +0 -22
  211. package/dist/capabilities/emailCapability.js.map +0 -1
  212. package/dist/capabilities/enhancedAnalysisCapability.d.ts +0 -13
  213. package/dist/capabilities/enhancedAnalysisCapability.d.ts.map +0 -1
  214. package/dist/capabilities/enhancedAnalysisCapability.js +0 -20
  215. package/dist/capabilities/enhancedAnalysisCapability.js.map +0 -1
  216. package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts +0 -17
  217. package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts.map +0 -1
  218. package/dist/capabilities/enhancedCodeIntelligenceCapability.js +0 -28
  219. package/dist/capabilities/enhancedCodeIntelligenceCapability.js.map +0 -1
  220. package/dist/capabilities/enhancedDevWorkflowCapability.d.ts +0 -17
  221. package/dist/capabilities/enhancedDevWorkflowCapability.d.ts.map +0 -1
  222. package/dist/capabilities/enhancedDevWorkflowCapability.js +0 -28
  223. package/dist/capabilities/enhancedDevWorkflowCapability.js.map +0 -1
  224. package/dist/capabilities/frontendTestingCapability.d.ts +0 -13
  225. package/dist/capabilities/frontendTestingCapability.d.ts.map +0 -1
  226. package/dist/capabilities/frontendTestingCapability.js +0 -28
  227. package/dist/capabilities/frontendTestingCapability.js.map +0 -1
  228. package/dist/capabilities/interactionCapability.d.ts +0 -12
  229. package/dist/capabilities/interactionCapability.d.ts.map +0 -1
  230. package/dist/capabilities/interactionCapability.js +0 -22
  231. package/dist/capabilities/interactionCapability.js.map +0 -1
  232. package/dist/capabilities/learnCapability.d.ts +0 -22
  233. package/dist/capabilities/learnCapability.d.ts.map +0 -1
  234. package/dist/capabilities/learnCapability.js +0 -37
  235. package/dist/capabilities/learnCapability.js.map +0 -1
  236. package/dist/capabilities/notebookCapability.d.ts +0 -17
  237. package/dist/capabilities/notebookCapability.d.ts.map +0 -1
  238. package/dist/capabilities/notebookCapability.js +0 -27
  239. package/dist/capabilities/notebookCapability.js.map +0 -1
  240. package/dist/capabilities/planningCapability.d.ts +0 -16
  241. package/dist/capabilities/planningCapability.d.ts.map +0 -1
  242. package/dist/capabilities/planningCapability.js +0 -26
  243. package/dist/capabilities/planningCapability.js.map +0 -1
  244. package/dist/capabilities/refactoringCapability.d.ts +0 -13
  245. package/dist/capabilities/refactoringCapability.d.ts.map +0 -1
  246. package/dist/capabilities/refactoringCapability.js +0 -25
  247. package/dist/capabilities/refactoringCapability.js.map +0 -1
  248. package/dist/capabilities/repoChecksCapability.d.ts +0 -10
  249. package/dist/capabilities/repoChecksCapability.d.ts.map +0 -1
  250. package/dist/capabilities/repoChecksCapability.js +0 -24
  251. package/dist/capabilities/repoChecksCapability.js.map +0 -1
  252. package/dist/capabilities/taskManagementCapability.d.ts +0 -12
  253. package/dist/capabilities/taskManagementCapability.d.ts.map +0 -1
  254. package/dist/capabilities/taskManagementCapability.js +0 -22
  255. package/dist/capabilities/taskManagementCapability.js.map +0 -1
  256. package/dist/capabilities/testingCapability.d.ts +0 -13
  257. package/dist/capabilities/testingCapability.d.ts.map +0 -1
  258. package/dist/capabilities/testingCapability.js +0 -25
  259. package/dist/capabilities/testingCapability.js.map +0 -1
  260. package/dist/capabilities/validationCapability.d.ts +0 -13
  261. package/dist/capabilities/validationCapability.d.ts.map +0 -1
  262. package/dist/capabilities/validationCapability.js +0 -24
  263. package/dist/capabilities/validationCapability.js.map +0 -1
  264. package/dist/capabilities/webCapability.d.ts +0 -12
  265. package/dist/capabilities/webCapability.d.ts.map +0 -1
  266. package/dist/capabilities/webCapability.js +0 -22
  267. package/dist/capabilities/webCapability.js.map +0 -1
  268. package/dist/core/deepBugAnalyzer.d.ts +0 -128
  269. package/dist/core/deepBugAnalyzer.d.ts.map +0 -1
  270. package/dist/core/deepBugAnalyzer.js +0 -406
  271. package/dist/core/deepBugAnalyzer.js.map +0 -1
  272. package/dist/core/hypothesisEngine.d.ts +0 -113
  273. package/dist/core/hypothesisEngine.d.ts.map +0 -1
  274. package/dist/core/hypothesisEngine.js +0 -264
  275. package/dist/core/hypothesisEngine.js.map +0 -1
  276. package/dist/core/productTestHarness.d.ts +0 -113
  277. package/dist/core/productTestHarness.d.ts.map +0 -1
  278. package/dist/core/productTestHarness.js +0 -351
  279. package/dist/core/productTestHarness.js.map +0 -1
  280. package/dist/core/validationRunner.d.ts +0 -106
  281. package/dist/core/validationRunner.d.ts.map +0 -1
  282. package/dist/core/validationRunner.js +0 -892
  283. package/dist/core/validationRunner.js.map +0 -1
  284. package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts +0 -14
  285. package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts.map +0 -1
  286. package/dist/plugins/tools/browser/browserAutomationPlugin.js +0 -26
  287. package/dist/plugins/tools/browser/browserAutomationPlugin.js.map +0 -1
  288. package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts +0 -3
  289. package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts.map +0 -1
  290. package/dist/plugins/tools/checks/localRepoChecksPlugin.js +0 -14
  291. package/dist/plugins/tools/checks/localRepoChecksPlugin.js.map +0 -1
  292. package/dist/plugins/tools/cloud/cloudPlugin.d.ts +0 -3
  293. package/dist/plugins/tools/cloud/cloudPlugin.d.ts.map +0 -1
  294. package/dist/plugins/tools/cloud/cloudPlugin.js +0 -14
  295. package/dist/plugins/tools/cloud/cloudPlugin.js.map +0 -1
  296. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts +0 -3
  297. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts.map +0 -1
  298. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js +0 -14
  299. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js.map +0 -1
  300. package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts +0 -3
  301. package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts.map +0 -1
  302. package/dist/plugins/tools/codeQuality/codeQualityPlugin.js +0 -14
  303. package/dist/plugins/tools/codeQuality/codeQualityPlugin.js.map +0 -1
  304. package/dist/plugins/tools/dependency/dependencyPlugin.d.ts +0 -3
  305. package/dist/plugins/tools/dependency/dependencyPlugin.d.ts.map +0 -1
  306. package/dist/plugins/tools/dependency/dependencyPlugin.js +0 -12
  307. package/dist/plugins/tools/dependency/dependencyPlugin.js.map +0 -1
  308. package/dist/plugins/tools/development/devPlugin.d.ts +0 -3
  309. package/dist/plugins/tools/development/devPlugin.d.ts.map +0 -1
  310. package/dist/plugins/tools/development/devPlugin.js +0 -14
  311. package/dist/plugins/tools/development/devPlugin.js.map +0 -1
  312. package/dist/plugins/tools/email/emailPlugin.d.ts +0 -3
  313. package/dist/plugins/tools/email/emailPlugin.d.ts.map +0 -1
  314. package/dist/plugins/tools/email/emailPlugin.js +0 -12
  315. package/dist/plugins/tools/email/emailPlugin.js.map +0 -1
  316. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts +0 -3
  317. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts.map +0 -1
  318. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js +0 -14
  319. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js.map +0 -1
  320. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts +0 -3
  321. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts.map +0 -1
  322. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js +0 -12
  323. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js.map +0 -1
  324. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts +0 -3
  325. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts.map +0 -1
  326. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js +0 -12
  327. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js.map +0 -1
  328. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts +0 -3
  329. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts.map +0 -1
  330. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js +0 -14
  331. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js.map +0 -1
  332. package/dist/plugins/tools/interaction/interactionPlugin.d.ts +0 -3
  333. package/dist/plugins/tools/interaction/interactionPlugin.d.ts.map +0 -1
  334. package/dist/plugins/tools/interaction/interactionPlugin.js +0 -12
  335. package/dist/plugins/tools/interaction/interactionPlugin.js.map +0 -1
  336. package/dist/plugins/tools/learn/learnPlugin.d.ts +0 -3
  337. package/dist/plugins/tools/learn/learnPlugin.d.ts.map +0 -1
  338. package/dist/plugins/tools/learn/learnPlugin.js +0 -14
  339. package/dist/plugins/tools/learn/learnPlugin.js.map +0 -1
  340. package/dist/plugins/tools/notebook/notebookPlugin.d.ts +0 -9
  341. package/dist/plugins/tools/notebook/notebookPlugin.d.ts.map +0 -1
  342. package/dist/plugins/tools/notebook/notebookPlugin.js +0 -15
  343. package/dist/plugins/tools/notebook/notebookPlugin.js.map +0 -1
  344. package/dist/plugins/tools/planning/planningPlugin.d.ts +0 -9
  345. package/dist/plugins/tools/planning/planningPlugin.d.ts.map +0 -1
  346. package/dist/plugins/tools/planning/planningPlugin.js +0 -15
  347. package/dist/plugins/tools/planning/planningPlugin.js.map +0 -1
  348. package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts +0 -3
  349. package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts.map +0 -1
  350. package/dist/plugins/tools/refactoring/refactoringPlugin.js +0 -12
  351. package/dist/plugins/tools/refactoring/refactoringPlugin.js.map +0 -1
  352. package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts +0 -3
  353. package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts.map +0 -1
  354. package/dist/plugins/tools/taskManagement/taskManagementPlugin.js +0 -12
  355. package/dist/plugins/tools/taskManagement/taskManagementPlugin.js.map +0 -1
  356. package/dist/plugins/tools/testing/testingPlugin.d.ts +0 -3
  357. package/dist/plugins/tools/testing/testingPlugin.d.ts.map +0 -1
  358. package/dist/plugins/tools/testing/testingPlugin.js +0 -12
  359. package/dist/plugins/tools/testing/testingPlugin.js.map +0 -1
  360. package/dist/plugins/tools/validation/validationPlugin.d.ts +0 -3
  361. package/dist/plugins/tools/validation/validationPlugin.d.ts.map +0 -1
  362. package/dist/plugins/tools/validation/validationPlugin.js +0 -14
  363. package/dist/plugins/tools/validation/validationPlugin.js.map +0 -1
  364. package/dist/plugins/tools/web/webPlugin.d.ts +0 -3
  365. package/dist/plugins/tools/web/webPlugin.d.ts.map +0 -1
  366. package/dist/plugins/tools/web/webPlugin.js +0 -12
  367. package/dist/plugins/tools/web/webPlugin.js.map +0 -1
  368. package/dist/tools/advancedTestGenerationTools.d.ts +0 -21
  369. package/dist/tools/advancedTestGenerationTools.d.ts.map +0 -1
  370. package/dist/tools/advancedTestGenerationTools.js +0 -304
  371. package/dist/tools/advancedTestGenerationTools.js.map +0 -1
  372. package/dist/tools/browserAutomationTools.d.ts +0 -23
  373. package/dist/tools/browserAutomationTools.d.ts.map +0 -1
  374. package/dist/tools/browserAutomationTools.js +0 -916
  375. package/dist/tools/browserAutomationTools.js.map +0 -1
  376. package/dist/tools/buildTools.d.ts +0 -9
  377. package/dist/tools/buildTools.d.ts.map +0 -1
  378. package/dist/tools/buildTools.js +0 -346
  379. package/dist/tools/buildTools.js.map +0 -1
  380. package/dist/tools/cloudTools.d.ts +0 -49
  381. package/dist/tools/cloudTools.d.ts.map +0 -1
  382. package/dist/tools/cloudTools.js +0 -1258
  383. package/dist/tools/cloudTools.js.map +0 -1
  384. package/dist/tools/codeAnalysisTools.d.ts +0 -74
  385. package/dist/tools/codeAnalysisTools.d.ts.map +0 -1
  386. package/dist/tools/codeAnalysisTools.js +0 -664
  387. package/dist/tools/codeAnalysisTools.js.map +0 -1
  388. package/dist/tools/codeGenerationTools.d.ts +0 -3
  389. package/dist/tools/codeGenerationTools.d.ts.map +0 -1
  390. package/dist/tools/codeGenerationTools.js +0 -439
  391. package/dist/tools/codeGenerationTools.js.map +0 -1
  392. package/dist/tools/codeQualityTools.d.ts +0 -3
  393. package/dist/tools/codeQualityTools.d.ts.map +0 -1
  394. package/dist/tools/codeQualityTools.js +0 -297
  395. package/dist/tools/codeQualityTools.js.map +0 -1
  396. package/dist/tools/dependencyTools.d.ts +0 -3
  397. package/dist/tools/dependencyTools.d.ts.map +0 -1
  398. package/dist/tools/dependencyTools.js +0 -284
  399. package/dist/tools/dependencyTools.js.map +0 -1
  400. package/dist/tools/devTools.d.ts +0 -10
  401. package/dist/tools/devTools.d.ts.map +0 -1
  402. package/dist/tools/devTools.js +0 -2126
  403. package/dist/tools/devTools.js.map +0 -1
  404. package/dist/tools/emailTools.d.ts +0 -21
  405. package/dist/tools/emailTools.d.ts.map +0 -1
  406. package/dist/tools/emailTools.js +0 -449
  407. package/dist/tools/emailTools.js.map +0 -1
  408. package/dist/tools/enhancedAnalysisTools.d.ts +0 -9
  409. package/dist/tools/enhancedAnalysisTools.d.ts.map +0 -1
  410. package/dist/tools/enhancedAnalysisTools.js +0 -370
  411. package/dist/tools/enhancedAnalysisTools.js.map +0 -1
  412. package/dist/tools/enhancedCodeIntelligenceTools.d.ts +0 -7
  413. package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +0 -1
  414. package/dist/tools/enhancedCodeIntelligenceTools.js +0 -540
  415. package/dist/tools/enhancedCodeIntelligenceTools.js.map +0 -1
  416. package/dist/tools/enhancedDevWorkflowTools.d.ts +0 -7
  417. package/dist/tools/enhancedDevWorkflowTools.d.ts.map +0 -1
  418. package/dist/tools/enhancedDevWorkflowTools.js +0 -432
  419. package/dist/tools/enhancedDevWorkflowTools.js.map +0 -1
  420. package/dist/tools/frontendTestingTools.d.ts +0 -35
  421. package/dist/tools/frontendTestingTools.d.ts.map +0 -1
  422. package/dist/tools/frontendTestingTools.js +0 -1258
  423. package/dist/tools/frontendTestingTools.js.map +0 -1
  424. package/dist/tools/globTools.d.ts +0 -15
  425. package/dist/tools/globTools.d.ts.map +0 -1
  426. package/dist/tools/globTools.js +0 -174
  427. package/dist/tools/globTools.js.map +0 -1
  428. package/dist/tools/grepTools.d.ts +0 -19
  429. package/dist/tools/grepTools.d.ts.map +0 -1
  430. package/dist/tools/grepTools.js +0 -411
  431. package/dist/tools/grepTools.js.map +0 -1
  432. package/dist/tools/interactionTools.d.ts +0 -6
  433. package/dist/tools/interactionTools.d.ts.map +0 -1
  434. package/dist/tools/interactionTools.js +0 -209
  435. package/dist/tools/interactionTools.js.map +0 -1
  436. package/dist/tools/learnTools.d.ts +0 -164
  437. package/dist/tools/learnTools.d.ts.map +0 -1
  438. package/dist/tools/learnTools.js +0 -2098
  439. package/dist/tools/learnTools.js.map +0 -1
  440. package/dist/tools/notebookEditTools.d.ts +0 -15
  441. package/dist/tools/notebookEditTools.d.ts.map +0 -1
  442. package/dist/tools/notebookEditTools.js +0 -197
  443. package/dist/tools/notebookEditTools.js.map +0 -1
  444. package/dist/tools/refactoringTools.d.ts +0 -3
  445. package/dist/tools/refactoringTools.d.ts.map +0 -1
  446. package/dist/tools/refactoringTools.js +0 -294
  447. package/dist/tools/refactoringTools.js.map +0 -1
  448. package/dist/tools/repoChecksTools.d.ts +0 -3
  449. package/dist/tools/repoChecksTools.d.ts.map +0 -1
  450. package/dist/tools/repoChecksTools.js +0 -276
  451. package/dist/tools/repoChecksTools.js.map +0 -1
  452. package/dist/tools/taskManagementTools.d.ts +0 -10
  453. package/dist/tools/taskManagementTools.d.ts.map +0 -1
  454. package/dist/tools/taskManagementTools.js +0 -133
  455. package/dist/tools/taskManagementTools.js.map +0 -1
  456. package/dist/tools/testingTools.d.ts +0 -3
  457. package/dist/tools/testingTools.d.ts.map +0 -1
  458. package/dist/tools/testingTools.js +0 -237
  459. package/dist/tools/testingTools.js.map +0 -1
  460. package/dist/tools/validationTools.d.ts +0 -7
  461. package/dist/tools/validationTools.d.ts.map +0 -1
  462. package/dist/tools/validationTools.js +0 -344
  463. package/dist/tools/validationTools.js.map +0 -1
  464. package/dist/tools/webTools.d.ts +0 -3
  465. package/dist/tools/webTools.d.ts.map +0 -1
  466. package/dist/tools/webTools.js +0 -502
  467. package/dist/tools/webTools.js.map +0 -1
@@ -0,0 +1,576 @@
1
+ /**
2
+ * Defensive Security Tools
3
+ *
4
+ * Legitimate security capabilities for:
5
+ * - Intrusion detection on YOUR OWN device
6
+ * - Evidence collection and preservation
7
+ * - Forensic documentation for legal/LE submission
8
+ * - Security hardening recommendations
9
+ *
10
+ * These tools are DEFENSIVE ONLY - they help detect and document
11
+ * attacks against YOUR systems, not launch attacks against others.
12
+ */
13
+ import { execSync } from 'node:child_process';
14
+ import * as fs from 'node:fs';
15
+ import * as path from 'node:path';
16
+ import * as crypto from 'node:crypto';
17
+ // ═══════════════════════════════════════════════════════════════════════════════
18
+ // INTRUSION DETECTION (YOUR OWN DEVICE)
19
+ // ═══════════════════════════════════════════════════════════════════════════════
20
+ export class IntrusionDetector {
21
+ indicators = [];
22
+ /**
23
+ * Scan for suspicious processes on YOUR device
24
+ */
25
+ async scanProcesses() {
26
+ const found = [];
27
+ // Check for processes running from unusual locations
28
+ const ps = this.exec('ps aux 2>/dev/null');
29
+ const lines = ps.split('\n');
30
+ for (const line of lines) {
31
+ // Check for processes running from /tmp or hidden directories
32
+ if (line.includes('/tmp/') || line.includes('/.')) {
33
+ found.push({
34
+ id: `proc_${Date.now()}_${Math.random().toString(36).substring(7)}`,
35
+ category: 'process',
36
+ severity: 'high',
37
+ description: 'Process running from suspicious location',
38
+ evidence: line.trim().slice(0, 200),
39
+ timestamp: new Date().toISOString(),
40
+ mitreTactic: 'Execution',
41
+ mitreId: 'T1059',
42
+ recommendation: 'Investigate process origin and terminate if unauthorized',
43
+ });
44
+ }
45
+ }
46
+ // Check for processes with suspicious names
47
+ const suspiciousPatterns = [
48
+ /cryptominer/i, /xmrig/i, /coinhive/i, // Cryptominers
49
+ /reverse.*shell/i, /nc.*-e/i, // Reverse shells
50
+ /\.hidden/i, /\.\s+$/, // Hidden processes
51
+ ];
52
+ for (const line of lines) {
53
+ for (const pattern of suspiciousPatterns) {
54
+ if (pattern.test(line)) {
55
+ found.push({
56
+ id: `proc_${Date.now()}_${Math.random().toString(36).substring(7)}`,
57
+ category: 'process',
58
+ severity: 'critical',
59
+ description: 'Potentially malicious process detected',
60
+ evidence: line.trim().slice(0, 200),
61
+ timestamp: new Date().toISOString(),
62
+ mitreTactic: 'Execution',
63
+ mitreId: 'T1059',
64
+ recommendation: 'Immediately investigate and consider incident response',
65
+ });
66
+ }
67
+ }
68
+ }
69
+ this.indicators.push(...found);
70
+ return found;
71
+ }
72
+ /**
73
+ * Scan for suspicious network connections on YOUR device
74
+ */
75
+ async scanNetwork() {
76
+ const found = [];
77
+ // Get established connections
78
+ const netstat = this.exec('netstat -an 2>/dev/null | grep ESTABLISHED');
79
+ const lsof = this.exec('lsof -i -n -P 2>/dev/null | grep ESTABLISHED');
80
+ // Check for connections to known malicious port ranges
81
+ const suspiciousPorts = [4444, 5555, 6666, 31337, 12345, 54321]; // Common backdoor ports
82
+ for (const line of netstat.split('\n')) {
83
+ for (const port of suspiciousPorts) {
84
+ if (line.includes(`:${port}`) || line.includes(`.${port}`)) {
85
+ found.push({
86
+ id: `net_${Date.now()}_${Math.random().toString(36).substring(7)}`,
87
+ category: 'network',
88
+ severity: 'high',
89
+ description: `Connection to suspicious port ${port}`,
90
+ evidence: line.trim(),
91
+ timestamp: new Date().toISOString(),
92
+ mitreTactic: 'Command and Control',
93
+ mitreId: 'T1571',
94
+ recommendation: 'Investigate connection and block if unauthorized',
95
+ });
96
+ }
97
+ }
98
+ }
99
+ // Check for unusual outbound connections
100
+ const unusualDestinations = this.exec('netstat -an | grep ESTABLISHED | grep -v "127.0.0.1" | grep -v "::1"');
101
+ const connectionCount = unusualDestinations.split('\n').filter(l => l.trim()).length;
102
+ if (connectionCount > 50) {
103
+ found.push({
104
+ id: `net_${Date.now()}_${Math.random().toString(36).substring(7)}`,
105
+ category: 'network',
106
+ severity: 'medium',
107
+ description: `High number of established connections: ${connectionCount}`,
108
+ evidence: `${connectionCount} active connections`,
109
+ timestamp: new Date().toISOString(),
110
+ mitreTactic: 'Exfiltration',
111
+ mitreId: 'T1041',
112
+ recommendation: 'Review connections for data exfiltration attempts',
113
+ });
114
+ }
115
+ this.indicators.push(...found);
116
+ return found;
117
+ }
118
+ /**
119
+ * Scan for persistence mechanisms on YOUR device
120
+ */
121
+ async scanPersistence() {
122
+ const found = [];
123
+ // Check LaunchAgents and LaunchDaemons
124
+ const launchPaths = [
125
+ '~/Library/LaunchAgents',
126
+ '/Library/LaunchAgents',
127
+ '/Library/LaunchDaemons',
128
+ '/System/Library/LaunchAgents',
129
+ '/System/Library/LaunchDaemons',
130
+ ];
131
+ for (const launchPath of launchPaths) {
132
+ const expandedPath = launchPath.replace('~', process.env['HOME'] || '');
133
+ if (fs.existsSync(expandedPath)) {
134
+ try {
135
+ const files = fs.readdirSync(expandedPath);
136
+ for (const file of files) {
137
+ // Check for non-Apple plists in system directories
138
+ if (!file.startsWith('com.apple.') && launchPath.includes('/System/')) {
139
+ found.push({
140
+ id: `persist_${Date.now()}_${Math.random().toString(36).substring(7)}`,
141
+ category: 'persistence',
142
+ severity: 'critical',
143
+ description: 'Non-Apple persistence in system directory',
144
+ evidence: path.join(expandedPath, file),
145
+ timestamp: new Date().toISOString(),
146
+ mitreTactic: 'Persistence',
147
+ mitreId: 'T1543.001',
148
+ recommendation: 'Investigate plist file for unauthorized persistence',
149
+ });
150
+ }
151
+ // Check for recently modified plists
152
+ const filePath = path.join(expandedPath, file);
153
+ try {
154
+ const stats = fs.statSync(filePath);
155
+ const dayAgo = Date.now() - 24 * 60 * 60 * 1000;
156
+ if (stats.mtimeMs > dayAgo && !file.startsWith('com.apple.')) {
157
+ found.push({
158
+ id: `persist_${Date.now()}_${Math.random().toString(36).substring(7)}`,
159
+ category: 'persistence',
160
+ severity: 'medium',
161
+ description: 'Recently modified LaunchAgent/Daemon',
162
+ evidence: `${filePath} modified ${stats.mtime.toISOString()}`,
163
+ timestamp: new Date().toISOString(),
164
+ mitreTactic: 'Persistence',
165
+ mitreId: 'T1543.001',
166
+ recommendation: 'Verify if modification was authorized',
167
+ });
168
+ }
169
+ }
170
+ catch { }
171
+ }
172
+ }
173
+ catch { }
174
+ }
175
+ }
176
+ // Check cron jobs
177
+ const crontab = this.exec('crontab -l 2>/dev/null');
178
+ if (crontab.trim()) {
179
+ found.push({
180
+ id: `persist_${Date.now()}_${Math.random().toString(36).substring(7)}`,
181
+ category: 'persistence',
182
+ severity: 'low',
183
+ description: 'Crontab entries found',
184
+ evidence: crontab.slice(0, 500),
185
+ timestamp: new Date().toISOString(),
186
+ mitreTactic: 'Persistence',
187
+ mitreId: 'T1053.003',
188
+ recommendation: 'Review crontab entries for unauthorized jobs',
189
+ });
190
+ }
191
+ this.indicators.push(...found);
192
+ return found;
193
+ }
194
+ /**
195
+ * Check security hardening status
196
+ */
197
+ async checkHardening() {
198
+ const status = {
199
+ firewall: { enabled: false, details: '' },
200
+ sip: { enabled: false, details: '' },
201
+ filevault: { enabled: false, details: '' },
202
+ gatekeeper: { enabled: false, details: '' },
203
+ xprotect: { enabled: false, details: '' },
204
+ automaticUpdates: { enabled: false, details: '' },
205
+ };
206
+ // Check firewall
207
+ const fwStatus = this.exec('/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate 2>/dev/null');
208
+ status.firewall.enabled = fwStatus.includes('enabled');
209
+ status.firewall.details = fwStatus.trim();
210
+ // Check SIP
211
+ const sipStatus = this.exec('csrutil status 2>/dev/null');
212
+ status.sip.enabled = sipStatus.includes('enabled');
213
+ status.sip.details = sipStatus.trim();
214
+ // Check FileVault
215
+ const fvStatus = this.exec('fdesetup status 2>/dev/null');
216
+ status.filevault.enabled = fvStatus.includes('On');
217
+ status.filevault.details = fvStatus.trim();
218
+ // Check Gatekeeper
219
+ const gkStatus = this.exec('spctl --status 2>/dev/null');
220
+ status.gatekeeper.enabled = gkStatus.includes('enabled');
221
+ status.gatekeeper.details = gkStatus.trim();
222
+ // Check XProtect
223
+ const xpVersion = this.exec('system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A3 "XProtect"');
224
+ status.xprotect.enabled = xpVersion.length > 0;
225
+ status.xprotect.details = xpVersion.trim().slice(0, 200) || 'Version check failed';
226
+ // Check automatic updates
227
+ const autoUpdate = this.exec('defaults read /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled 2>/dev/null');
228
+ status.automaticUpdates.enabled = autoUpdate.trim() === '1';
229
+ status.automaticUpdates.details = autoUpdate.trim() === '1' ? 'Enabled' : 'Disabled';
230
+ return status;
231
+ }
232
+ /**
233
+ * Generate security recommendations based on findings
234
+ */
235
+ generateRecommendations(hardening) {
236
+ const recommendations = [];
237
+ let priority = 1;
238
+ if (!hardening.sip.enabled) {
239
+ recommendations.push({
240
+ priority: priority++,
241
+ category: 'System Integrity',
242
+ action: 'Enable System Integrity Protection (SIP)',
243
+ rationale: 'SIP prevents modifications to protected system files and processes',
244
+ command: 'csrutil enable (requires Recovery Mode)',
245
+ });
246
+ }
247
+ if (!hardening.firewall.enabled) {
248
+ recommendations.push({
249
+ priority: priority++,
250
+ category: 'Network Security',
251
+ action: 'Enable Application Firewall',
252
+ rationale: 'Firewall blocks unauthorized incoming connections',
253
+ command: 'sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on',
254
+ });
255
+ }
256
+ if (!hardening.filevault.enabled) {
257
+ recommendations.push({
258
+ priority: priority++,
259
+ category: 'Data Protection',
260
+ action: 'Enable FileVault disk encryption',
261
+ rationale: 'Protects data if device is lost or stolen',
262
+ command: 'sudo fdesetup enable',
263
+ });
264
+ }
265
+ if (!hardening.gatekeeper.enabled) {
266
+ recommendations.push({
267
+ priority: priority++,
268
+ category: 'Application Security',
269
+ action: 'Enable Gatekeeper',
270
+ rationale: 'Prevents running of unsigned/malicious applications',
271
+ command: 'sudo spctl --master-enable',
272
+ });
273
+ }
274
+ if (!hardening.automaticUpdates.enabled) {
275
+ recommendations.push({
276
+ priority: priority++,
277
+ category: 'Patch Management',
278
+ action: 'Enable automatic security updates',
279
+ rationale: 'Ensures timely patching of security vulnerabilities',
280
+ command: 'sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true',
281
+ });
282
+ }
283
+ return recommendations;
284
+ }
285
+ getIndicators() {
286
+ return this.indicators;
287
+ }
288
+ exec(cmd) {
289
+ try {
290
+ return execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
291
+ }
292
+ catch {
293
+ return '';
294
+ }
295
+ }
296
+ }
297
+ // ═══════════════════════════════════════════════════════════════════════════════
298
+ // EVIDENCE COLLECTION & CHAIN OF CUSTODY
299
+ // ═══════════════════════════════════════════════════════════════════════════════
300
+ export class ForensicCollector {
301
+ evidenceDir;
302
+ artifacts = [];
303
+ caseId;
304
+ constructor(evidenceDir, caseId) {
305
+ this.evidenceDir = evidenceDir;
306
+ this.caseId = caseId || `CASE-${Date.now()}-${Math.random().toString(36).substring(7)}`;
307
+ if (!fs.existsSync(evidenceDir)) {
308
+ fs.mkdirSync(evidenceDir, { recursive: true });
309
+ }
310
+ }
311
+ /**
312
+ * Collect a file as forensic evidence with chain of custody
313
+ */
314
+ collectFile(filePath, notes = '') {
315
+ if (!fs.existsSync(filePath)) {
316
+ return null;
317
+ }
318
+ const content = fs.readFileSync(filePath);
319
+ const sha256 = crypto.createHash('sha256').update(content).digest('hex');
320
+ const md5 = crypto.createHash('md5').update(content).digest('hex');
321
+ const stats = fs.statSync(filePath);
322
+ const artifact = {
323
+ id: `artifact_${Date.now()}_${Math.random().toString(36).substring(7)}`,
324
+ type: 'file',
325
+ path: filePath,
326
+ hash: { sha256, md5 },
327
+ metadata: {
328
+ size: stats.size,
329
+ created: stats.birthtime.toISOString(),
330
+ modified: stats.mtime.toISOString(),
331
+ accessed: stats.atime.toISOString(),
332
+ mode: stats.mode.toString(8),
333
+ },
334
+ collectedAt: new Date().toISOString(),
335
+ chainOfCustody: [{
336
+ timestamp: new Date().toISOString(),
337
+ action: 'collected',
338
+ actor: process.env['USER'] || 'unknown',
339
+ notes: notes || `Collected from ${filePath}`,
340
+ hash: sha256,
341
+ }],
342
+ };
343
+ // Copy to evidence directory
344
+ const evidencePath = path.join(this.evidenceDir, `${artifact.id}_${path.basename(filePath)}`);
345
+ fs.copyFileSync(filePath, evidencePath);
346
+ // Write metadata
347
+ fs.writeFileSync(`${evidencePath}.meta.json`, JSON.stringify(artifact, null, 2));
348
+ this.artifacts.push(artifact);
349
+ return artifact;
350
+ }
351
+ /**
352
+ * Collect system logs as evidence
353
+ */
354
+ collectSystemLogs() {
355
+ const collected = [];
356
+ const logPaths = [
357
+ '/var/log/system.log',
358
+ '/var/log/install.log',
359
+ `${process.env['HOME']}/Library/Logs/DiagnosticReports`,
360
+ ];
361
+ for (const logPath of logPaths) {
362
+ if (fs.existsSync(logPath)) {
363
+ const artifact = this.collectFile(logPath, 'System log collection');
364
+ if (artifact) {
365
+ collected.push(artifact);
366
+ }
367
+ }
368
+ }
369
+ // Collect recent unified log
370
+ const unifiedLog = this.exec('log show --last 1h --style compact 2>/dev/null');
371
+ if (unifiedLog) {
372
+ const logPath = path.join(this.evidenceDir, 'unified_log_1h.txt');
373
+ fs.writeFileSync(logPath, unifiedLog);
374
+ const artifact = this.collectFile(logPath, 'Unified log last hour');
375
+ if (artifact) {
376
+ collected.push(artifact);
377
+ }
378
+ }
379
+ return collected;
380
+ }
381
+ /**
382
+ * Generate complete evidence package for legal/LE submission
383
+ */
384
+ generateEvidencePackage(indicators, purpose) {
385
+ // Build timeline from indicators
386
+ const timeline = indicators
387
+ .sort((a, b) => a.timestamp.localeCompare(b.timestamp))
388
+ .map(ind => ({
389
+ timestamp: ind.timestamp,
390
+ event: ind.description,
391
+ source: ind.category,
392
+ details: ind.evidence,
393
+ indicator: ind.id,
394
+ }));
395
+ const pkg = {
396
+ caseId: this.caseId,
397
+ createdAt: new Date().toISOString(),
398
+ collector: process.env['USER'] || 'unknown',
399
+ purpose,
400
+ artifacts: this.artifacts,
401
+ indicators,
402
+ timeline,
403
+ masterHash: '',
404
+ legalNotice: `
405
+ EVIDENCE PACKAGE - ${this.caseId}
406
+ ================================
407
+
408
+ This evidence package was collected for: ${purpose}
409
+
410
+ LEGAL NOTICE:
411
+ - All evidence was collected from systems owned/operated by the collector
412
+ - Chain of custody has been maintained for all artifacts
413
+ - SHA-256 hashes verify integrity of all collected materials
414
+ - This package is intended for submission to law enforcement or legal counsel
415
+
416
+ COLLECTION METHODOLOGY:
417
+ - Automated forensic collection tools were used
418
+ - No evidence was modified during collection
419
+ - All timestamps are in UTC/ISO-8601 format
420
+
421
+ CONTACT INFORMATION:
422
+ Collector: ${process.env['USER'] || 'unknown'}
423
+ Collection Time: ${new Date().toISOString()}
424
+ System: ${this.exec('hostname').trim()}
425
+ `.trim(),
426
+ };
427
+ // Calculate master hash of entire package
428
+ const packageJson = JSON.stringify(pkg, null, 2);
429
+ pkg.masterHash = crypto.createHash('sha256').update(packageJson).digest('hex');
430
+ // Save package
431
+ const packagePath = path.join(this.evidenceDir, `evidence_package_${this.caseId}.json`);
432
+ fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2));
433
+ // Generate human-readable report
434
+ this.generateReport(pkg);
435
+ return pkg;
436
+ }
437
+ /**
438
+ * Generate human-readable forensic report
439
+ */
440
+ generateReport(pkg) {
441
+ const lines = [];
442
+ lines.push('═'.repeat(80));
443
+ lines.push(' FORENSIC EVIDENCE REPORT');
444
+ lines.push('═'.repeat(80));
445
+ lines.push('');
446
+ lines.push(`Case ID: ${pkg.caseId}`);
447
+ lines.push(`Generated: ${pkg.createdAt}`);
448
+ lines.push(`Collector: ${pkg.collector}`);
449
+ lines.push(`Purpose: ${pkg.purpose}`);
450
+ lines.push(`Master Hash: ${pkg.masterHash}`);
451
+ lines.push('');
452
+ lines.push('═'.repeat(80));
453
+ lines.push(' INTRUSION INDICATORS');
454
+ lines.push('═'.repeat(80));
455
+ lines.push('');
456
+ const bySeverity = {
457
+ critical: pkg.indicators.filter(i => i.severity === 'critical'),
458
+ high: pkg.indicators.filter(i => i.severity === 'high'),
459
+ medium: pkg.indicators.filter(i => i.severity === 'medium'),
460
+ low: pkg.indicators.filter(i => i.severity === 'low'),
461
+ info: pkg.indicators.filter(i => i.severity === 'info'),
462
+ };
463
+ for (const [severity, indicators] of Object.entries(bySeverity)) {
464
+ if (indicators.length === 0)
465
+ continue;
466
+ lines.push(`[${severity.toUpperCase()}] (${indicators.length} indicators)`);
467
+ lines.push('-'.repeat(40));
468
+ for (const ind of indicators) {
469
+ lines.push(` • ${ind.description}`);
470
+ lines.push(` Category: ${ind.category}`);
471
+ if (ind.mitreId)
472
+ lines.push(` MITRE ATT&CK: ${ind.mitreId} (${ind.mitreTactic})`);
473
+ lines.push(` Evidence: ${ind.evidence.slice(0, 100)}`);
474
+ lines.push(` Recommendation: ${ind.recommendation}`);
475
+ lines.push('');
476
+ }
477
+ }
478
+ lines.push('═'.repeat(80));
479
+ lines.push(' COLLECTED ARTIFACTS');
480
+ lines.push('═'.repeat(80));
481
+ lines.push('');
482
+ for (const artifact of pkg.artifacts) {
483
+ lines.push(`• ${artifact.path}`);
484
+ lines.push(` Type: ${artifact.type}`);
485
+ lines.push(` SHA-256: ${artifact.hash.sha256}`);
486
+ lines.push(` Collected: ${artifact.collectedAt}`);
487
+ lines.push('');
488
+ }
489
+ lines.push('═'.repeat(80));
490
+ lines.push(' EVENT TIMELINE');
491
+ lines.push('═'.repeat(80));
492
+ lines.push('');
493
+ for (const event of pkg.timeline) {
494
+ lines.push(`[${event.timestamp}] ${event.event}`);
495
+ lines.push(` Source: ${event.source}`);
496
+ lines.push('');
497
+ }
498
+ lines.push('═'.repeat(80));
499
+ lines.push(' LEGAL NOTICE');
500
+ lines.push('═'.repeat(80));
501
+ lines.push('');
502
+ lines.push(pkg.legalNotice);
503
+ lines.push('');
504
+ lines.push('═'.repeat(80));
505
+ lines.push(' END OF REPORT');
506
+ lines.push('═'.repeat(80));
507
+ const reportPath = path.join(this.evidenceDir, `FORENSIC_REPORT_${pkg.caseId}.txt`);
508
+ fs.writeFileSync(reportPath, lines.join('\n'));
509
+ }
510
+ exec(cmd) {
511
+ try {
512
+ return execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
513
+ }
514
+ catch {
515
+ return '';
516
+ }
517
+ }
518
+ }
519
+ // ═══════════════════════════════════════════════════════════════════════════════
520
+ // MAIN RUNNER
521
+ // ═══════════════════════════════════════════════════════════════════════════════
522
+ export async function runDefensiveScan(evidenceDir, purpose) {
523
+ console.log('═══════════════════════════════════════════════════════════════════════════════');
524
+ console.log(' DEFENSIVE SECURITY SCAN');
525
+ console.log('═══════════════════════════════════════════════════════════════════════════════');
526
+ console.log('');
527
+ console.log('Scanning YOUR device for intrusion indicators...');
528
+ console.log('');
529
+ const detector = new IntrusionDetector();
530
+ const collector = new ForensicCollector(evidenceDir);
531
+ // Run scans
532
+ console.log('[1/5] Scanning processes...');
533
+ await detector.scanProcesses();
534
+ console.log('[2/5] Scanning network connections...');
535
+ await detector.scanNetwork();
536
+ console.log('[3/5] Scanning persistence mechanisms...');
537
+ await detector.scanPersistence();
538
+ console.log('[4/5] Checking security hardening...');
539
+ const hardening = await detector.checkHardening();
540
+ console.log('[5/5] Collecting system logs...');
541
+ collector.collectSystemLogs();
542
+ // Generate recommendations
543
+ const recommendations = detector.generateRecommendations(hardening);
544
+ const indicators = detector.getIndicators();
545
+ // Calculate overall risk
546
+ const criticalCount = indicators.filter(i => i.severity === 'critical').length;
547
+ const highCount = indicators.filter(i => i.severity === 'high').length;
548
+ let overallRisk = 'low';
549
+ if (criticalCount > 0)
550
+ overallRisk = 'critical';
551
+ else if (highCount > 2)
552
+ overallRisk = 'high';
553
+ else if (highCount > 0 || indicators.length > 5)
554
+ overallRisk = 'medium';
555
+ const posture = {
556
+ overallRisk,
557
+ indicators,
558
+ recommendations,
559
+ hardening,
560
+ };
561
+ // Generate evidence package
562
+ const pkg = collector.generateEvidencePackage(indicators, purpose);
563
+ console.log('');
564
+ console.log('═══════════════════════════════════════════════════════════════════════════════');
565
+ console.log(' SCAN COMPLETE');
566
+ console.log('═══════════════════════════════════════════════════════════════════════════════');
567
+ console.log('');
568
+ console.log(`Overall Risk: ${overallRisk.toUpperCase()}`);
569
+ console.log(`Indicators Found: ${indicators.length}`);
570
+ console.log(`Recommendations: ${recommendations.length}`);
571
+ console.log(`Evidence Package: ${pkg.caseId}`);
572
+ console.log(`Master Hash: ${pkg.masterHash}`);
573
+ console.log('');
574
+ return { posture, package: pkg };
575
+ }
576
+ //# sourceMappingURL=defensiveSecurityTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defensiveSecurityTools.js","sourceRoot":"","sources":["../../src/tools/defensiveSecurityTools.ts"],"names":[],"mappings":"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"}