erosolar-cli 1.7.339 → 1.7.340

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 (323) hide show
  1. package/README.md +148 -24
  2. package/dist/alpha-zero/agentWrapper.d.ts +84 -0
  3. package/dist/alpha-zero/agentWrapper.d.ts.map +1 -0
  4. package/dist/alpha-zero/agentWrapper.js +171 -0
  5. package/dist/alpha-zero/agentWrapper.js.map +1 -0
  6. package/dist/alpha-zero/codeEvaluator.d.ts +25 -0
  7. package/dist/alpha-zero/codeEvaluator.d.ts.map +1 -0
  8. package/dist/alpha-zero/codeEvaluator.js +273 -0
  9. package/dist/alpha-zero/codeEvaluator.js.map +1 -0
  10. package/dist/alpha-zero/competitiveRunner.d.ts +66 -0
  11. package/dist/alpha-zero/competitiveRunner.d.ts.map +1 -0
  12. package/dist/alpha-zero/competitiveRunner.js +224 -0
  13. package/dist/alpha-zero/competitiveRunner.js.map +1 -0
  14. package/dist/alpha-zero/index.d.ts +67 -0
  15. package/dist/alpha-zero/index.d.ts.map +1 -0
  16. package/dist/alpha-zero/index.js +99 -0
  17. package/dist/alpha-zero/index.js.map +1 -0
  18. package/dist/alpha-zero/introspection.d.ts +128 -0
  19. package/dist/alpha-zero/introspection.d.ts.map +1 -0
  20. package/dist/alpha-zero/introspection.js +300 -0
  21. package/dist/alpha-zero/introspection.js.map +1 -0
  22. package/dist/alpha-zero/metricsTracker.d.ts +71 -0
  23. package/dist/alpha-zero/metricsTracker.d.ts.map +1 -0
  24. package/dist/{core → alpha-zero}/metricsTracker.js +5 -2
  25. package/dist/alpha-zero/metricsTracker.js.map +1 -0
  26. package/dist/alpha-zero/security/core.d.ts +125 -0
  27. package/dist/alpha-zero/security/core.d.ts.map +1 -0
  28. package/dist/alpha-zero/security/core.js +271 -0
  29. package/dist/alpha-zero/security/core.js.map +1 -0
  30. package/dist/alpha-zero/security/google.d.ts +125 -0
  31. package/dist/alpha-zero/security/google.d.ts.map +1 -0
  32. package/dist/alpha-zero/security/google.js +311 -0
  33. package/dist/alpha-zero/security/google.js.map +1 -0
  34. package/dist/alpha-zero/security/googleLoader.d.ts +17 -0
  35. package/dist/alpha-zero/security/googleLoader.d.ts.map +1 -0
  36. package/dist/alpha-zero/security/googleLoader.js +41 -0
  37. package/dist/alpha-zero/security/googleLoader.js.map +1 -0
  38. package/dist/alpha-zero/security/index.d.ts +29 -0
  39. package/dist/alpha-zero/security/index.d.ts.map +1 -0
  40. package/dist/alpha-zero/security/index.js +32 -0
  41. package/dist/alpha-zero/security/index.js.map +1 -0
  42. package/dist/alpha-zero/security/simulation.d.ts +124 -0
  43. package/dist/alpha-zero/security/simulation.d.ts.map +1 -0
  44. package/dist/alpha-zero/security/simulation.js +277 -0
  45. package/dist/alpha-zero/security/simulation.js.map +1 -0
  46. package/dist/alpha-zero/selfModification.d.ts +109 -0
  47. package/dist/alpha-zero/selfModification.d.ts.map +1 -0
  48. package/dist/alpha-zero/selfModification.js +233 -0
  49. package/dist/alpha-zero/selfModification.js.map +1 -0
  50. package/dist/alpha-zero/types.d.ts +170 -0
  51. package/dist/alpha-zero/types.d.ts.map +1 -0
  52. package/dist/alpha-zero/types.js +31 -0
  53. package/dist/alpha-zero/types.js.map +1 -0
  54. package/dist/bin/erosolar.js +21 -5
  55. package/dist/bin/erosolar.js.map +1 -1
  56. package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -1
  57. package/dist/capabilities/agentSpawningCapability.js +31 -56
  58. package/dist/capabilities/agentSpawningCapability.js.map +1 -1
  59. package/dist/capabilities/securityTestingCapability.d.ts +13 -0
  60. package/dist/capabilities/securityTestingCapability.d.ts.map +1 -0
  61. package/dist/capabilities/securityTestingCapability.js +25 -0
  62. package/dist/capabilities/securityTestingCapability.js.map +1 -0
  63. package/dist/contracts/agent-schemas.json +15 -0
  64. package/dist/contracts/tools.schema.json +9 -0
  65. package/dist/core/agent.d.ts +2 -2
  66. package/dist/core/agent.d.ts.map +1 -1
  67. package/dist/core/agent.js.map +1 -1
  68. package/dist/core/aiFlowOptimizer.d.ts +26 -0
  69. package/dist/core/aiFlowOptimizer.d.ts.map +1 -0
  70. package/dist/core/aiFlowOptimizer.js +31 -0
  71. package/dist/core/aiFlowOptimizer.js.map +1 -0
  72. package/dist/core/aiOptimizationEngine.d.ts +158 -0
  73. package/dist/core/aiOptimizationEngine.d.ts.map +1 -0
  74. package/dist/core/aiOptimizationEngine.js +428 -0
  75. package/dist/core/aiOptimizationEngine.js.map +1 -0
  76. package/dist/core/aiOptimizationIntegration.d.ts +93 -0
  77. package/dist/core/aiOptimizationIntegration.d.ts.map +1 -0
  78. package/dist/core/aiOptimizationIntegration.js +250 -0
  79. package/dist/core/aiOptimizationIntegration.js.map +1 -0
  80. package/dist/core/customCommands.d.ts +0 -1
  81. package/dist/core/customCommands.d.ts.map +1 -1
  82. package/dist/core/customCommands.js +0 -3
  83. package/dist/core/customCommands.js.map +1 -1
  84. package/dist/core/enhancedErrorRecovery.d.ts +100 -0
  85. package/dist/core/enhancedErrorRecovery.d.ts.map +1 -0
  86. package/dist/core/enhancedErrorRecovery.js +345 -0
  87. package/dist/core/enhancedErrorRecovery.js.map +1 -0
  88. package/dist/core/hooksSystem.d.ts +65 -0
  89. package/dist/core/hooksSystem.d.ts.map +1 -0
  90. package/dist/core/hooksSystem.js +273 -0
  91. package/dist/core/hooksSystem.js.map +1 -0
  92. package/dist/core/memorySystem.d.ts +48 -0
  93. package/dist/core/memorySystem.d.ts.map +1 -0
  94. package/dist/core/memorySystem.js +271 -0
  95. package/dist/core/memorySystem.js.map +1 -0
  96. package/dist/core/toolPreconditions.d.ts.map +1 -1
  97. package/dist/core/toolPreconditions.js +14 -0
  98. package/dist/core/toolPreconditions.js.map +1 -1
  99. package/dist/core/toolRuntime.d.ts +1 -22
  100. package/dist/core/toolRuntime.d.ts.map +1 -1
  101. package/dist/core/toolRuntime.js +5 -0
  102. package/dist/core/toolRuntime.js.map +1 -1
  103. package/dist/core/toolValidation.d.ts.map +1 -1
  104. package/dist/core/toolValidation.js +3 -14
  105. package/dist/core/toolValidation.js.map +1 -1
  106. package/dist/core/unified/errors.d.ts +189 -0
  107. package/dist/core/unified/errors.d.ts.map +1 -0
  108. package/dist/core/unified/errors.js +497 -0
  109. package/dist/core/unified/errors.js.map +1 -0
  110. package/dist/core/unified/index.d.ts +19 -0
  111. package/dist/core/unified/index.d.ts.map +1 -0
  112. package/dist/core/unified/index.js +68 -0
  113. package/dist/core/unified/index.js.map +1 -0
  114. package/dist/core/unified/schema.d.ts +101 -0
  115. package/dist/core/unified/schema.d.ts.map +1 -0
  116. package/dist/core/unified/schema.js +350 -0
  117. package/dist/core/unified/schema.js.map +1 -0
  118. package/dist/core/unified/toolRuntime.d.ts +179 -0
  119. package/dist/core/unified/toolRuntime.d.ts.map +1 -0
  120. package/dist/core/unified/toolRuntime.js +517 -0
  121. package/dist/core/unified/toolRuntime.js.map +1 -0
  122. package/dist/core/unified/tools.d.ts +127 -0
  123. package/dist/core/unified/tools.d.ts.map +1 -0
  124. package/dist/core/unified/tools.js +1333 -0
  125. package/dist/core/unified/tools.js.map +1 -0
  126. package/dist/core/unified/types.d.ts +352 -0
  127. package/dist/core/unified/types.d.ts.map +1 -0
  128. package/dist/core/unified/types.js +12 -0
  129. package/dist/core/unified/types.js.map +1 -0
  130. package/dist/core/unified/version.d.ts +209 -0
  131. package/dist/core/unified/version.d.ts.map +1 -0
  132. package/dist/core/unified/version.js +454 -0
  133. package/dist/core/unified/version.js.map +1 -0
  134. package/dist/core/validationRunner.d.ts +3 -1
  135. package/dist/core/validationRunner.d.ts.map +1 -1
  136. package/dist/core/validationRunner.js.map +1 -1
  137. package/dist/headless/headlessApp.d.ts.map +1 -1
  138. package/dist/headless/headlessApp.js +0 -21
  139. package/dist/headless/headlessApp.js.map +1 -1
  140. package/dist/mcp/sseClient.d.ts.map +1 -1
  141. package/dist/mcp/sseClient.js +18 -9
  142. package/dist/mcp/sseClient.js.map +1 -1
  143. package/dist/plugins/tools/build/buildPlugin.d.ts +6 -0
  144. package/dist/plugins/tools/build/buildPlugin.d.ts.map +1 -1
  145. package/dist/plugins/tools/build/buildPlugin.js +10 -4
  146. package/dist/plugins/tools/build/buildPlugin.js.map +1 -1
  147. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  148. package/dist/plugins/tools/nodeDefaults.js +2 -0
  149. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  150. package/dist/plugins/tools/security/securityPlugin.d.ts +3 -0
  151. package/dist/plugins/tools/security/securityPlugin.d.ts.map +1 -0
  152. package/dist/plugins/tools/security/securityPlugin.js +12 -0
  153. package/dist/plugins/tools/security/securityPlugin.js.map +1 -0
  154. package/dist/runtime/agentSession.d.ts +2 -2
  155. package/dist/runtime/agentSession.d.ts.map +1 -1
  156. package/dist/runtime/agentSession.js +2 -2
  157. package/dist/runtime/agentSession.js.map +1 -1
  158. package/dist/security/active-stack-security.d.ts +112 -0
  159. package/dist/security/active-stack-security.d.ts.map +1 -0
  160. package/dist/security/active-stack-security.js +296 -0
  161. package/dist/security/active-stack-security.js.map +1 -0
  162. package/dist/security/advanced-persistence-research.d.ts +92 -0
  163. package/dist/security/advanced-persistence-research.d.ts.map +1 -0
  164. package/dist/security/advanced-persistence-research.js +195 -0
  165. package/dist/security/advanced-persistence-research.js.map +1 -0
  166. package/dist/security/advanced-targeting.d.ts +119 -0
  167. package/dist/security/advanced-targeting.d.ts.map +1 -0
  168. package/dist/security/advanced-targeting.js +233 -0
  169. package/dist/security/advanced-targeting.js.map +1 -0
  170. package/dist/security/assessment/vulnerabilityAssessment.d.ts +104 -0
  171. package/dist/security/assessment/vulnerabilityAssessment.d.ts.map +1 -0
  172. package/dist/security/assessment/vulnerabilityAssessment.js +315 -0
  173. package/dist/security/assessment/vulnerabilityAssessment.js.map +1 -0
  174. package/dist/security/authorization/securityAuthorization.d.ts +88 -0
  175. package/dist/security/authorization/securityAuthorization.d.ts.map +1 -0
  176. package/dist/security/authorization/securityAuthorization.js +172 -0
  177. package/dist/security/authorization/securityAuthorization.js.map +1 -0
  178. package/dist/security/comprehensive-targeting.d.ts +85 -0
  179. package/dist/security/comprehensive-targeting.d.ts.map +1 -0
  180. package/dist/security/comprehensive-targeting.js +438 -0
  181. package/dist/security/comprehensive-targeting.js.map +1 -0
  182. package/dist/security/global-security-integration.d.ts +91 -0
  183. package/dist/security/global-security-integration.d.ts.map +1 -0
  184. package/dist/security/global-security-integration.js +218 -0
  185. package/dist/security/global-security-integration.js.map +1 -0
  186. package/dist/security/index.d.ts +38 -0
  187. package/dist/security/index.d.ts.map +1 -0
  188. package/dist/security/index.js +47 -0
  189. package/dist/security/index.js.map +1 -0
  190. package/dist/security/persistence-analyzer.d.ts +56 -0
  191. package/dist/security/persistence-analyzer.d.ts.map +1 -0
  192. package/dist/security/persistence-analyzer.js +187 -0
  193. package/dist/security/persistence-analyzer.js.map +1 -0
  194. package/dist/security/persistence-cli.d.ts +36 -0
  195. package/dist/security/persistence-cli.d.ts.map +1 -0
  196. package/dist/security/persistence-cli.js +160 -0
  197. package/dist/security/persistence-cli.js.map +1 -0
  198. package/dist/security/persistence-research.d.ts +92 -0
  199. package/dist/security/persistence-research.d.ts.map +1 -0
  200. package/dist/security/persistence-research.js +364 -0
  201. package/dist/security/persistence-research.js.map +1 -0
  202. package/dist/security/research/persistenceResearch.d.ts +97 -0
  203. package/dist/security/research/persistenceResearch.d.ts.map +1 -0
  204. package/dist/security/research/persistenceResearch.js +282 -0
  205. package/dist/security/research/persistenceResearch.js.map +1 -0
  206. package/dist/security/security-integration.d.ts +74 -0
  207. package/dist/security/security-integration.d.ts.map +1 -0
  208. package/dist/security/security-integration.js +137 -0
  209. package/dist/security/security-integration.js.map +1 -0
  210. package/dist/security/security-testing-framework.d.ts +112 -0
  211. package/dist/security/security-testing-framework.d.ts.map +1 -0
  212. package/dist/security/security-testing-framework.js +364 -0
  213. package/dist/security/security-testing-framework.js.map +1 -0
  214. package/dist/security/simulation/attackSimulation.d.ts +93 -0
  215. package/dist/security/simulation/attackSimulation.d.ts.map +1 -0
  216. package/dist/security/simulation/attackSimulation.js +341 -0
  217. package/dist/security/simulation/attackSimulation.js.map +1 -0
  218. package/dist/security/strategic-operations.d.ts +100 -0
  219. package/dist/security/strategic-operations.d.ts.map +1 -0
  220. package/dist/security/strategic-operations.js +276 -0
  221. package/dist/security/strategic-operations.js.map +1 -0
  222. package/dist/security/tool-security-wrapper.d.ts +58 -0
  223. package/dist/security/tool-security-wrapper.d.ts.map +1 -0
  224. package/dist/security/tool-security-wrapper.js +156 -0
  225. package/dist/security/tool-security-wrapper.js.map +1 -0
  226. package/dist/shell/claudeCodeStreamHandler.d.ts +145 -0
  227. package/dist/shell/claudeCodeStreamHandler.d.ts.map +1 -0
  228. package/dist/shell/claudeCodeStreamHandler.js +322 -0
  229. package/dist/shell/claudeCodeStreamHandler.js.map +1 -0
  230. package/dist/shell/inputQueueManager.d.ts +144 -0
  231. package/dist/shell/inputQueueManager.d.ts.map +1 -0
  232. package/dist/shell/inputQueueManager.js +290 -0
  233. package/dist/shell/inputQueueManager.js.map +1 -0
  234. package/dist/shell/interactiveShell.d.ts +7 -16
  235. package/dist/shell/interactiveShell.d.ts.map +1 -1
  236. package/dist/shell/interactiveShell.js +166 -235
  237. package/dist/shell/interactiveShell.js.map +1 -1
  238. package/dist/shell/metricsTracker.d.ts +60 -0
  239. package/dist/shell/metricsTracker.d.ts.map +1 -0
  240. package/dist/shell/metricsTracker.js +119 -0
  241. package/dist/shell/metricsTracker.js.map +1 -0
  242. package/dist/shell/shellApp.d.ts +0 -2
  243. package/dist/shell/shellApp.d.ts.map +1 -1
  244. package/dist/shell/shellApp.js +9 -40
  245. package/dist/shell/shellApp.js.map +1 -1
  246. package/dist/shell/streamingOutputManager.d.ts +115 -0
  247. package/dist/shell/streamingOutputManager.d.ts.map +1 -0
  248. package/dist/shell/streamingOutputManager.js +225 -0
  249. package/dist/shell/streamingOutputManager.js.map +1 -0
  250. package/dist/shell/systemPrompt.d.ts.map +1 -1
  251. package/dist/shell/systemPrompt.js +4 -1
  252. package/dist/shell/systemPrompt.js.map +1 -1
  253. package/dist/shell/terminalInput.d.ts +119 -149
  254. package/dist/shell/terminalInput.d.ts.map +1 -1
  255. package/dist/shell/terminalInput.js +532 -639
  256. package/dist/shell/terminalInput.js.map +1 -1
  257. package/dist/shell/terminalInputAdapter.d.ts +21 -79
  258. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  259. package/dist/shell/terminalInputAdapter.js +30 -99
  260. package/dist/shell/terminalInputAdapter.js.map +1 -1
  261. package/dist/subagents/taskRunner.d.ts +1 -7
  262. package/dist/subagents/taskRunner.d.ts.map +1 -1
  263. package/dist/subagents/taskRunner.js +47 -180
  264. package/dist/subagents/taskRunner.js.map +1 -1
  265. package/dist/tools/securityTools.d.ts +22 -0
  266. package/dist/tools/securityTools.d.ts.map +1 -0
  267. package/dist/tools/securityTools.js +448 -0
  268. package/dist/tools/securityTools.js.map +1 -0
  269. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  270. package/dist/ui/ShellUIAdapter.js +12 -13
  271. package/dist/ui/ShellUIAdapter.js.map +1 -1
  272. package/dist/ui/display.d.ts +45 -24
  273. package/dist/ui/display.d.ts.map +1 -1
  274. package/dist/ui/display.js +259 -140
  275. package/dist/ui/display.js.map +1 -1
  276. package/dist/ui/persistentPrompt.d.ts +50 -0
  277. package/dist/ui/persistentPrompt.d.ts.map +1 -0
  278. package/dist/ui/persistentPrompt.js +92 -0
  279. package/dist/ui/persistentPrompt.js.map +1 -0
  280. package/dist/ui/terminalUISchema.d.ts +195 -0
  281. package/dist/ui/terminalUISchema.d.ts.map +1 -0
  282. package/dist/ui/terminalUISchema.js +113 -0
  283. package/dist/ui/terminalUISchema.js.map +1 -0
  284. package/dist/ui/theme.d.ts.map +1 -1
  285. package/dist/ui/theme.js +8 -6
  286. package/dist/ui/theme.js.map +1 -1
  287. package/dist/ui/toolDisplay.d.ts +158 -0
  288. package/dist/ui/toolDisplay.d.ts.map +1 -1
  289. package/dist/ui/toolDisplay.js +348 -0
  290. package/dist/ui/toolDisplay.js.map +1 -1
  291. package/dist/ui/unified/layout.d.ts +0 -1
  292. package/dist/ui/unified/layout.d.ts.map +1 -1
  293. package/dist/ui/unified/layout.js +25 -15
  294. package/dist/ui/unified/layout.js.map +1 -1
  295. package/package.json +4 -4
  296. package/scripts/deploy-security-capabilities.js +178 -0
  297. package/dist/core/hooks.d.ts +0 -113
  298. package/dist/core/hooks.d.ts.map +0 -1
  299. package/dist/core/hooks.js +0 -267
  300. package/dist/core/hooks.js.map +0 -1
  301. package/dist/core/metricsTracker.d.ts +0 -122
  302. package/dist/core/metricsTracker.d.ts.map +0 -1
  303. package/dist/core/metricsTracker.js.map +0 -1
  304. package/dist/core/securityAssessment.d.ts +0 -91
  305. package/dist/core/securityAssessment.d.ts.map +0 -1
  306. package/dist/core/securityAssessment.js +0 -580
  307. package/dist/core/securityAssessment.js.map +0 -1
  308. package/dist/core/verification.d.ts +0 -137
  309. package/dist/core/verification.d.ts.map +0 -1
  310. package/dist/core/verification.js +0 -323
  311. package/dist/core/verification.js.map +0 -1
  312. package/dist/subagents/agentConfig.d.ts +0 -27
  313. package/dist/subagents/agentConfig.d.ts.map +0 -1
  314. package/dist/subagents/agentConfig.js +0 -89
  315. package/dist/subagents/agentConfig.js.map +0 -1
  316. package/dist/subagents/agentRegistry.d.ts +0 -33
  317. package/dist/subagents/agentRegistry.d.ts.map +0 -1
  318. package/dist/subagents/agentRegistry.js +0 -162
  319. package/dist/subagents/agentRegistry.js.map +0 -1
  320. package/dist/utils/frontmatter.d.ts +0 -10
  321. package/dist/utils/frontmatter.d.ts.map +0 -1
  322. package/dist/utils/frontmatter.js +0 -78
  323. package/dist/utils/frontmatter.js.map +0 -1
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Persistence Research CLI
4
+ *
5
+ * Command-line interface for security research on persistence mechanisms
6
+ * across Windows, Linux, and cross-platform environments.
7
+ */
8
+ import { PersistenceAnalyzer } from './persistence-analyzer.js';
9
+ class PersistenceCLI {
10
+ analyzer;
11
+ constructor() {
12
+ this.analyzer = new PersistenceAnalyzer();
13
+ }
14
+ /**
15
+ * Parse command line arguments
16
+ */
17
+ parseArguments(args) {
18
+ const parsed = {};
19
+ for (let i = 0; i < args.length; i++) {
20
+ const arg = args[i];
21
+ switch (arg) {
22
+ case '--platform':
23
+ case '-p':
24
+ parsed.platform = args[++i];
25
+ break;
26
+ case '--output':
27
+ case '-o':
28
+ parsed.output = args[++i];
29
+ break;
30
+ case '--include-remediation':
31
+ case '-r':
32
+ parsed.includeRemediation = true;
33
+ break;
34
+ case '--risk-threshold':
35
+ case '-t':
36
+ parsed.riskThreshold = args[++i];
37
+ break;
38
+ case '--generate-rules':
39
+ case '-g':
40
+ const rules = args[++i]?.split(',');
41
+ if (rules) {
42
+ parsed.generateRules = rules;
43
+ }
44
+ break;
45
+ case '--test-cases':
46
+ parsed.testCases = true;
47
+ break;
48
+ case '--simulate-detection':
49
+ parsed.simulateDetection = true;
50
+ break;
51
+ case '--assessment':
52
+ parsed.assessment = true;
53
+ break;
54
+ case '--help':
55
+ case '-h':
56
+ parsed.help = true;
57
+ break;
58
+ }
59
+ }
60
+ return parsed;
61
+ }
62
+ /**
63
+ * Display help information
64
+ */
65
+ showHelp() {
66
+ console.log(`
67
+ Persistence Research CLI
68
+
69
+ Usage:
70
+ node persistence-cli.js [options]
71
+
72
+ Options:
73
+ --platform, -p <platform> Target platform (windows, linux, cross-platform)
74
+ --output, -o <format> Output format (text, json, csv) [default: text]
75
+ --include-remediation, -r Include remediation steps in output
76
+ --risk-threshold, -t <level> Filter by risk level (low, medium, high, critical) [default: medium]
77
+ --generate-rules, -g <ids> Generate detection rules for specific techniques (comma-separated)
78
+ --test-cases Generate test cases for security validation
79
+ --simulate-detection Simulate detection of persistence techniques
80
+ --assessment Generate comprehensive security assessment report
81
+ --help, -h Show this help message
82
+
83
+ Examples:
84
+ # Analyze Windows persistence techniques
85
+ node persistence-cli.js --platform windows
86
+
87
+ # Generate JSON output with remediation steps
88
+ node persistence-cli.js --platform linux --output json --include-remediation
89
+
90
+ # Generate detection rules for specific techniques
91
+ node persistence-cli.js --generate-rules win-registry-run,linux-cron
92
+
93
+ # Generate security assessment report
94
+ node persistence-cli.js --platform windows --assessment
95
+
96
+ # Generate test cases for Linux
97
+ node persistence-cli.js --platform linux --test-cases
98
+ `);
99
+ }
100
+ /**
101
+ * Execute the CLI with provided arguments
102
+ */
103
+ async execute(args) {
104
+ const parsedArgs = this.parseArguments(args);
105
+ if (parsedArgs.help || args.length === 0) {
106
+ this.showHelp();
107
+ return;
108
+ }
109
+ try {
110
+ if (parsedArgs.generateRules) {
111
+ const rules = this.analyzer.generateDetectionRules(parsedArgs.generateRules);
112
+ console.log(rules);
113
+ return;
114
+ }
115
+ if (parsedArgs.testCases && parsedArgs.platform) {
116
+ const testCases = this.analyzer.generateTestCases(parsedArgs.platform);
117
+ console.log(testCases);
118
+ return;
119
+ }
120
+ if (parsedArgs.simulateDetection && parsedArgs.platform) {
121
+ const detected = this.analyzer.simulateDetection(parsedArgs.platform);
122
+ console.log('Simulated Detection Results:');
123
+ console.log(JSON.stringify(detected, null, 2));
124
+ return;
125
+ }
126
+ if (parsedArgs.assessment && parsedArgs.platform) {
127
+ const report = this.analyzer.generateAssessmentReport(parsedArgs.platform);
128
+ console.log(report);
129
+ return;
130
+ }
131
+ if (parsedArgs.platform) {
132
+ const options = {
133
+ platform: parsedArgs.platform,
134
+ outputFormat: parsedArgs.output || 'text',
135
+ includeRemediation: parsedArgs.includeRemediation || false,
136
+ riskThreshold: parsedArgs.riskThreshold || 'medium'
137
+ };
138
+ const analysis = this.analyzer.analyzePlatform(options);
139
+ console.log(analysis);
140
+ return;
141
+ }
142
+ console.error('Error: Platform argument required for analysis');
143
+ this.showHelp();
144
+ }
145
+ catch (error) {
146
+ console.error('Error executing persistence analysis:', error);
147
+ process.exit(1);
148
+ }
149
+ }
150
+ }
151
+ // CLI entry point
152
+ if (import.meta.url === `file://${process.argv[1]}`) {
153
+ const cli = new PersistenceCLI();
154
+ cli.execute(process.argv.slice(2)).catch(error => {
155
+ console.error('Fatal error:', error);
156
+ process.exit(1);
157
+ });
158
+ }
159
+ export { PersistenceCLI };
160
+ //# sourceMappingURL=persistence-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence-cli.js","sourceRoot":"","sources":["../../src/security/persistence-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Persistence Research Toolkit
3
+ *
4
+ * Comprehensive analysis of persistence mechanisms across operating systems
5
+ * for legitimate security research and testing purposes.
6
+ *
7
+ * This module provides tools for:
8
+ * - Analyzing Windows persistence techniques
9
+ * - Analyzing Linux persistence techniques
10
+ * - Detecting persistence mechanisms
11
+ * - Generating test cases for security validation
12
+ *
13
+ * @license MIT
14
+ * @author Bo Shang
15
+ */
16
+ export interface PersistenceTechnique {
17
+ id: string;
18
+ name: string;
19
+ platform: 'windows' | 'linux' | 'macos' | 'cross-platform';
20
+ mitreId?: string;
21
+ description: string;
22
+ detectionMethods: string[];
23
+ remediationSteps: string[];
24
+ riskLevel: 'low' | 'medium' | 'high' | 'critical';
25
+ }
26
+ export interface PersistenceAnalysis {
27
+ systemInfo: SystemInfo;
28
+ detectedTechniques: DetectedTechnique[];
29
+ recommendations: string[];
30
+ riskScore: number;
31
+ }
32
+ export interface SystemInfo {
33
+ platform: string;
34
+ architecture: string;
35
+ version: string;
36
+ user: string;
37
+ privileges: string[];
38
+ }
39
+ export interface DetectedTechnique {
40
+ technique: PersistenceTechnique;
41
+ evidence: string;
42
+ confidence: 'low' | 'medium' | 'high';
43
+ location: string;
44
+ }
45
+ /**
46
+ * Windows Persistence Techniques Database
47
+ */
48
+ export declare const WINDOWS_PERSISTENCE_TECHNIQUES: PersistenceTechnique[];
49
+ /**
50
+ * Linux Persistence Techniques Database
51
+ */
52
+ export declare const LINUX_PERSISTENCE_TECHNIQUES: PersistenceTechnique[];
53
+ /**
54
+ * Cross-platform Persistence Techniques
55
+ */
56
+ export declare const CROSS_PLATFORM_PERSISTENCE_TECHNIQUES: PersistenceTechnique[];
57
+ /**
58
+ * Persistence Research Toolkit Class
59
+ */
60
+ export declare class PersistenceResearchToolkit {
61
+ private allTechniques;
62
+ constructor();
63
+ /**
64
+ * Get all persistence techniques for a specific platform
65
+ */
66
+ getTechniquesByPlatform(platform: string): PersistenceTechnique[];
67
+ /**
68
+ * Search techniques by MITRE ATT&CK ID
69
+ */
70
+ getTechniquesByMitreId(mitreId: string): PersistenceTechnique[];
71
+ /**
72
+ * Generate detection rules for a specific technique
73
+ */
74
+ generateDetectionRules(techniqueId: string): string[];
75
+ /**
76
+ * Generate Windows-specific detection rules
77
+ */
78
+ private generateWindowsDetectionRules;
79
+ /**
80
+ * Generate Linux-specific detection rules
81
+ */
82
+ private generateLinuxDetectionRules;
83
+ /**
84
+ * Generate test cases for security validation
85
+ */
86
+ generateTestCases(platform: string): string[];
87
+ /**
88
+ * Get remediation guidance for detected techniques
89
+ */
90
+ getRemediationGuidance(detectedTechniques: DetectedTechnique[]): string[];
91
+ }
92
+ //# sourceMappingURL=persistence-research.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence-research.d.ts","sourceRoot":"","sources":["../../src/security/persistence-research.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,gBAAgB,CAAC;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,oBAAoB,EA2FhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,oBAAoB,EA2F9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qCAAqC,EAAE,oBAAoB,EAmCvE,CAAC;AAEF;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,aAAa,CAAyB;;IAU9C;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAMjE;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAI/D;;OAEG;IACH,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBrD;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAmCrC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAmCnC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAe7C;;OAEG;IACH,sBAAsB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE;CAgB1E"}
@@ -0,0 +1,364 @@
1
+ /**
2
+ * Persistence Research Toolkit
3
+ *
4
+ * Comprehensive analysis of persistence mechanisms across operating systems
5
+ * for legitimate security research and testing purposes.
6
+ *
7
+ * This module provides tools for:
8
+ * - Analyzing Windows persistence techniques
9
+ * - Analyzing Linux persistence techniques
10
+ * - Detecting persistence mechanisms
11
+ * - Generating test cases for security validation
12
+ *
13
+ * @license MIT
14
+ * @author Bo Shang
15
+ */
16
+ /**
17
+ * Windows Persistence Techniques Database
18
+ */
19
+ export const WINDOWS_PERSISTENCE_TECHNIQUES = [
20
+ {
21
+ id: 'win-registry-run',
22
+ name: 'Registry Run Keys',
23
+ platform: 'windows',
24
+ mitreId: 'T1547.001',
25
+ description: 'Malware adds entries to registry run keys to execute on system startup',
26
+ detectionMethods: [
27
+ 'Monitor registry changes in HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run',
28
+ 'Monitor registry changes in HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run',
29
+ 'Check for suspicious executable paths in run keys'
30
+ ],
31
+ remediationSteps: [
32
+ 'Remove suspicious entries from registry run keys',
33
+ 'Scan for associated malware',
34
+ 'Monitor for registry modifications'
35
+ ],
36
+ riskLevel: 'high'
37
+ },
38
+ {
39
+ id: 'win-scheduled-tasks',
40
+ name: 'Scheduled Tasks',
41
+ platform: 'windows',
42
+ mitreId: 'T1053.005',
43
+ description: 'Creates scheduled tasks to execute malicious code at specific times or events',
44
+ detectionMethods: [
45
+ 'Review scheduled tasks using schtasks command',
46
+ 'Monitor Task Scheduler service events',
47
+ 'Check for tasks with suspicious actions or triggers'
48
+ ],
49
+ remediationSteps: [
50
+ 'Delete malicious scheduled tasks',
51
+ 'Monitor Task Scheduler service',
52
+ 'Implement application whitelisting'
53
+ ],
54
+ riskLevel: 'high'
55
+ },
56
+ {
57
+ id: 'win-services',
58
+ name: 'Windows Services',
59
+ platform: 'windows',
60
+ mitreId: 'T1543.003',
61
+ description: 'Creates or modifies Windows services to run malicious code',
62
+ detectionMethods: [
63
+ 'Review services using sc query or Get-Service',
64
+ 'Monitor service creation/modification events',
65
+ 'Check for services with suspicious image paths'
66
+ ],
67
+ remediationSteps: [
68
+ 'Stop and remove malicious services',
69
+ 'Monitor service creation events',
70
+ 'Implement service execution policies'
71
+ ],
72
+ riskLevel: 'critical'
73
+ },
74
+ {
75
+ id: 'win-dll-hijacking',
76
+ name: 'DLL Hijacking',
77
+ platform: 'windows',
78
+ mitreId: 'T1574.001',
79
+ description: 'Places malicious DLLs in application search paths to hijack legitimate processes',
80
+ detectionMethods: [
81
+ 'Monitor DLL loading from unusual locations',
82
+ 'Check for DLLs in application directories with weak permissions',
83
+ 'Use process monitoring tools'
84
+ ],
85
+ remediationSteps: [
86
+ 'Remove malicious DLLs',
87
+ 'Secure application directories',
88
+ 'Implement DLL search order hardening'
89
+ ],
90
+ riskLevel: 'medium'
91
+ },
92
+ {
93
+ id: 'win-wmi',
94
+ name: 'WMI Event Subscription',
95
+ platform: 'windows',
96
+ mitreId: 'T1546.003',
97
+ description: 'Uses WMI event subscriptions to trigger malicious code execution',
98
+ detectionMethods: [
99
+ 'Query WMI event subscriptions',
100
+ 'Monitor WMI event consumer creation',
101
+ 'Check for suspicious WMI filters and consumers'
102
+ ],
103
+ remediationSteps: [
104
+ 'Remove malicious WMI event subscriptions',
105
+ 'Monitor WMI activity',
106
+ 'Restrict WMI permissions'
107
+ ],
108
+ riskLevel: 'high'
109
+ }
110
+ ];
111
+ /**
112
+ * Linux Persistence Techniques Database
113
+ */
114
+ export const LINUX_PERSISTENCE_TECHNIQUES = [
115
+ {
116
+ id: 'linux-cron',
117
+ name: 'Cron Jobs',
118
+ platform: 'linux',
119
+ mitreId: 'T1053.003',
120
+ description: 'Adds malicious cron jobs to execute at scheduled intervals',
121
+ detectionMethods: [
122
+ 'Review crontab files for all users',
123
+ 'Monitor /etc/cron.* directories',
124
+ 'Check for cron jobs with suspicious commands'
125
+ ],
126
+ remediationSteps: [
127
+ 'Remove malicious cron entries',
128
+ 'Monitor cron job creation',
129
+ 'Implement cron access controls'
130
+ ],
131
+ riskLevel: 'high'
132
+ },
133
+ {
134
+ id: 'linux-systemd',
135
+ name: 'Systemd Services',
136
+ platform: 'linux',
137
+ mitreId: 'T1543.002',
138
+ description: 'Creates or modifies systemd services for persistence',
139
+ detectionMethods: [
140
+ 'Review systemd service files in /etc/systemd/system/',
141
+ 'Monitor service unit file creation',
142
+ 'Check for services with suspicious ExecStart commands'
143
+ ],
144
+ remediationSteps: [
145
+ 'Stop and remove malicious services',
146
+ 'Monitor systemd service creation',
147
+ 'Implement service validation'
148
+ ],
149
+ riskLevel: 'critical'
150
+ },
151
+ {
152
+ id: 'linux-ssh-keys',
153
+ name: 'SSH Authorized Keys',
154
+ platform: 'linux',
155
+ mitreId: 'T1098.004',
156
+ description: 'Adds backdoor SSH keys to authorized_keys files',
157
+ detectionMethods: [
158
+ 'Review ~/.ssh/authorized_keys files',
159
+ 'Monitor SSH key additions',
160
+ 'Check for unknown public keys'
161
+ ],
162
+ remediationSteps: [
163
+ 'Remove unauthorized SSH keys',
164
+ 'Monitor authorized_keys modifications',
165
+ 'Implement SSH key management'
166
+ ],
167
+ riskLevel: 'high'
168
+ },
169
+ {
170
+ id: 'linux-shell-config',
171
+ name: 'Shell Configuration Files',
172
+ platform: 'linux',
173
+ mitreId: 'T1546.004',
174
+ description: 'Modifies shell configuration files (.bashrc, .profile, etc.) to execute malicious code',
175
+ detectionMethods: [
176
+ 'Review shell configuration files',
177
+ 'Monitor modifications to .bashrc, .profile, etc.',
178
+ 'Check for suspicious commands in shell startup files'
179
+ ],
180
+ remediationSteps: [
181
+ 'Remove malicious shell configurations',
182
+ 'Monitor shell configuration changes',
183
+ 'Implement file integrity monitoring'
184
+ ],
185
+ riskLevel: 'medium'
186
+ },
187
+ {
188
+ id: 'linux-ld-so-preload',
189
+ name: 'LD_PRELOAD Hijacking',
190
+ platform: 'linux',
191
+ mitreId: 'T1574.006',
192
+ description: 'Uses LD_PRELOAD environment variable to load malicious libraries',
193
+ detectionMethods: [
194
+ 'Check LD_PRELOAD environment variable',
195
+ 'Monitor /etc/ld.so.preload file',
196
+ 'Review shell environment variables'
197
+ ],
198
+ remediationSteps: [
199
+ 'Remove malicious LD_PRELOAD settings',
200
+ 'Monitor environment variable changes',
201
+ 'Implement library validation'
202
+ ],
203
+ riskLevel: 'medium'
204
+ }
205
+ ];
206
+ /**
207
+ * Cross-platform Persistence Techniques
208
+ */
209
+ export const CROSS_PLATFORM_PERSISTENCE_TECHNIQUES = [
210
+ {
211
+ id: 'cross-browser-extensions',
212
+ name: 'Browser Extensions',
213
+ platform: 'cross-platform',
214
+ description: 'Installs malicious browser extensions for persistence',
215
+ detectionMethods: [
216
+ 'Review installed browser extensions',
217
+ 'Monitor extension installation events',
218
+ 'Check for suspicious extension permissions'
219
+ ],
220
+ remediationSteps: [
221
+ 'Remove malicious browser extensions',
222
+ 'Monitor extension installations',
223
+ 'Implement browser security policies'
224
+ ],
225
+ riskLevel: 'medium'
226
+ },
227
+ {
228
+ id: 'cross-startup-items',
229
+ name: 'Startup Items/Applications',
230
+ platform: 'cross-platform',
231
+ description: 'Adds items to user or system startup locations',
232
+ detectionMethods: [
233
+ 'Review startup directories and registry keys',
234
+ 'Monitor startup item creation',
235
+ 'Check for suspicious startup applications'
236
+ ],
237
+ remediationSteps: [
238
+ 'Remove malicious startup items',
239
+ 'Monitor startup locations',
240
+ 'Implement application whitelisting'
241
+ ],
242
+ riskLevel: 'high'
243
+ }
244
+ ];
245
+ /**
246
+ * Persistence Research Toolkit Class
247
+ */
248
+ export class PersistenceResearchToolkit {
249
+ allTechniques;
250
+ constructor() {
251
+ this.allTechniques = [
252
+ ...WINDOWS_PERSISTENCE_TECHNIQUES,
253
+ ...LINUX_PERSISTENCE_TECHNIQUES,
254
+ ...CROSS_PLATFORM_PERSISTENCE_TECHNIQUES
255
+ ];
256
+ }
257
+ /**
258
+ * Get all persistence techniques for a specific platform
259
+ */
260
+ getTechniquesByPlatform(platform) {
261
+ return this.allTechniques.filter(tech => tech.platform === platform || tech.platform === 'cross-platform');
262
+ }
263
+ /**
264
+ * Search techniques by MITRE ATT&CK ID
265
+ */
266
+ getTechniquesByMitreId(mitreId) {
267
+ return this.allTechniques.filter(tech => tech.mitreId === mitreId);
268
+ }
269
+ /**
270
+ * Generate detection rules for a specific technique
271
+ */
272
+ generateDetectionRules(techniqueId) {
273
+ const technique = this.allTechniques.find(t => t.id === techniqueId);
274
+ if (!technique) {
275
+ return ['Technique not found'];
276
+ }
277
+ const rules = [];
278
+ // Generate platform-specific detection rules
279
+ switch (technique.platform) {
280
+ case 'windows':
281
+ rules.push(...this.generateWindowsDetectionRules(technique));
282
+ break;
283
+ case 'linux':
284
+ rules.push(...this.generateLinuxDetectionRules(technique));
285
+ break;
286
+ default:
287
+ rules.push(...technique.detectionMethods);
288
+ }
289
+ return rules;
290
+ }
291
+ /**
292
+ * Generate Windows-specific detection rules
293
+ */
294
+ generateWindowsDetectionRules(technique) {
295
+ const rules = [];
296
+ switch (technique.id) {
297
+ case 'win-registry-run':
298
+ rules.push('Monitor registry key: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run', 'Monitor registry key: HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run', 'Use Sysmon Event ID 13 (Registry value set) for monitoring', 'Check for executables in user temp directories or unusual locations');
299
+ break;
300
+ case 'win-scheduled-tasks':
301
+ rules.push('Monitor Task Scheduler events (Event ID 106, 140)', 'Use schtasks /query to list all tasks', 'Check for tasks with SYSTEM privileges', 'Monitor XML task files in C:\\Windows\\System32\\Tasks');
302
+ break;
303
+ case 'win-services':
304
+ rules.push('Monitor Service Control Manager events (Event ID 7045)', 'Use sc query to list services', 'Check for services with unusual image paths', 'Monitor service creation via WMI');
305
+ break;
306
+ default:
307
+ rules.push(...technique.detectionMethods);
308
+ }
309
+ return rules;
310
+ }
311
+ /**
312
+ * Generate Linux-specific detection rules
313
+ */
314
+ generateLinuxDetectionRules(technique) {
315
+ const rules = [];
316
+ switch (technique.id) {
317
+ case 'linux-cron':
318
+ rules.push('Monitor /var/spool/cron/crontabs/', 'Check /etc/crontab and /etc/cron.d/*', 'Use auditd to monitor cron job creation', 'Review system logs for cron execution');
319
+ break;
320
+ case 'linux-systemd':
321
+ rules.push('Monitor /etc/systemd/system/ directory', 'Use systemctl list-unit-files to check services', 'Check for services in /usr/lib/systemd/system/', 'Monitor journalctl for service activity');
322
+ break;
323
+ case 'linux-ssh-keys':
324
+ rules.push('Monitor ~/.ssh/authorized_keys file modifications', 'Check /etc/ssh/sshd_config for authorized keys settings', 'Use auditd to monitor SSH key additions', 'Review SSH authentication logs');
325
+ break;
326
+ default:
327
+ rules.push(...technique.detectionMethods);
328
+ }
329
+ return rules;
330
+ }
331
+ /**
332
+ * Generate test cases for security validation
333
+ */
334
+ generateTestCases(platform) {
335
+ const techniques = this.getTechniquesByPlatform(platform);
336
+ const testCases = [];
337
+ techniques.forEach(technique => {
338
+ testCases.push(`Test: ${technique.name} (${technique.mitreId || 'N/A'})`);
339
+ testCases.push(`- Description: ${technique.description}`);
340
+ testCases.push(`- Detection Methods: ${technique.detectionMethods.join(', ')}`);
341
+ testCases.push(`- Risk Level: ${technique.riskLevel}`);
342
+ testCases.push('');
343
+ });
344
+ return testCases;
345
+ }
346
+ /**
347
+ * Get remediation guidance for detected techniques
348
+ */
349
+ getRemediationGuidance(detectedTechniques) {
350
+ const guidance = [];
351
+ detectedTechniques.forEach(detected => {
352
+ guidance.push(`Technique: ${detected.technique.name}`);
353
+ guidance.push(`Confidence: ${detected.confidence}`);
354
+ guidance.push(`Location: ${detected.location}`);
355
+ guidance.push('Remediation Steps:');
356
+ detected.technique.remediationSteps.forEach(step => {
357
+ guidance.push(` - ${step}`);
358
+ });
359
+ guidance.push('');
360
+ });
361
+ return guidance;
362
+ }
363
+ }
364
+ //# sourceMappingURL=persistence-research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence-research.js","sourceRoot":"","sources":["../../src/security/persistence-research.ts"],"names":[],"mappings":"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"}