erosolar-cli 1.5.2 → 1.5.4

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 (346) hide show
  1. package/config/security-deployment.json +54 -0
  2. package/dist/bin/adapters/node/index.js +33 -0
  3. package/dist/bin/adapters/types.js +1 -0
  4. package/dist/bin/alpha-zero/agentWrapper.js +165 -0
  5. package/dist/bin/alpha-zero/codeEvaluator.js +272 -0
  6. package/dist/bin/alpha-zero/competitiveRunner.js +219 -0
  7. package/dist/bin/alpha-zero/index.js +98 -0
  8. package/dist/bin/alpha-zero/introspection.js +298 -0
  9. package/dist/bin/alpha-zero/metricsTracker.js +207 -0
  10. package/dist/bin/alpha-zero/security/core.js +269 -0
  11. package/dist/bin/alpha-zero/security/google.js +308 -0
  12. package/dist/bin/alpha-zero/security/googleLoader.js +40 -0
  13. package/dist/bin/alpha-zero/security/index.js +31 -0
  14. package/dist/bin/alpha-zero/security/simulation.js +274 -0
  15. package/dist/bin/alpha-zero/selfModification.js +231 -0
  16. package/dist/bin/alpha-zero/types.js +30 -0
  17. package/dist/bin/bin/erosolar-optimized.js +205 -0
  18. package/dist/bin/capabilities/agentSpawningCapability.js +116 -0
  19. package/dist/bin/capabilities/bashCapability.js +22 -0
  20. package/dist/bin/capabilities/cloudCapability.js +36 -0
  21. package/dist/bin/capabilities/codeAnalysisCapability.js +22 -0
  22. package/dist/bin/capabilities/codeQualityCapability.js +23 -0
  23. package/dist/bin/capabilities/dependencySecurityCapability.js +22 -0
  24. package/dist/bin/capabilities/devCapability.js +22 -0
  25. package/dist/bin/capabilities/editCapability.js +28 -0
  26. package/dist/bin/capabilities/emailCapability.js +20 -0
  27. package/dist/bin/capabilities/enhancedGitCapability.js +221 -0
  28. package/dist/bin/capabilities/filesystemCapability.js +22 -0
  29. package/dist/bin/capabilities/globCapability.js +28 -0
  30. package/dist/bin/capabilities/interactionCapability.js +20 -0
  31. package/dist/bin/capabilities/learnCapability.js +22 -0
  32. package/dist/bin/capabilities/mcpCapability.js +20 -0
  33. package/dist/bin/capabilities/notebookCapability.js +28 -0
  34. package/dist/bin/capabilities/planningCapability.js +27 -0
  35. package/dist/bin/capabilities/refactoringCapability.js +23 -0
  36. package/dist/bin/capabilities/repoChecksCapability.js +22 -0
  37. package/dist/bin/capabilities/searchCapability.js +22 -0
  38. package/dist/bin/capabilities/skillCapability.js +76 -0
  39. package/dist/bin/capabilities/taskManagementCapability.js +20 -0
  40. package/dist/bin/capabilities/testingCapability.js +23 -0
  41. package/dist/bin/capabilities/toolManifest.js +159 -0
  42. package/dist/bin/capabilities/toolRegistry.js +114 -0
  43. package/dist/bin/capabilities/webCapability.js +20 -0
  44. package/dist/bin/config.js +139 -0
  45. package/dist/bin/contracts/v1/agent.js +7 -0
  46. package/dist/bin/contracts/v1/agentProfileManifest.js +8 -0
  47. package/dist/bin/contracts/v1/agentRules.js +9 -0
  48. package/dist/bin/contracts/v1/toolAccess.js +8 -0
  49. package/dist/bin/core/agent.js +362 -0
  50. package/dist/bin/core/agentProfileManifest.js +187 -0
  51. package/dist/bin/core/agentProfiles.js +34 -0
  52. package/dist/bin/core/agentRulebook.js +135 -0
  53. package/dist/bin/core/agentSchemaLoader.js +233 -0
  54. package/dist/bin/core/contextManager.js +412 -0
  55. package/dist/bin/core/contextWindow.js +122 -0
  56. package/dist/bin/core/customCommands.js +80 -0
  57. package/dist/bin/core/errors/apiKeyErrors.js +114 -0
  58. package/dist/bin/core/errors/errorTypes.js +340 -0
  59. package/dist/bin/core/errors/safetyValidator.js +304 -0
  60. package/dist/bin/core/errors.js +32 -0
  61. package/dist/bin/core/modelDiscovery.js +755 -0
  62. package/dist/bin/core/preferences.js +224 -0
  63. package/dist/bin/core/schemaValidator.js +92 -0
  64. package/dist/bin/core/secretStore.js +199 -0
  65. package/dist/bin/core/sessionStore.js +187 -0
  66. package/dist/bin/core/toolRuntime.js +290 -0
  67. package/dist/bin/core/types.js +1 -0
  68. package/dist/bin/erosolar-optimized.d.ts +12 -0
  69. package/dist/bin/erosolar-optimized.d.ts.map +1 -0
  70. package/dist/bin/erosolar-optimized.js +239 -0
  71. package/dist/bin/erosolar-optimized.js.map +1 -0
  72. package/dist/bin/erosolar.js +14 -0
  73. package/dist/bin/erosolar.js.map +1 -1
  74. package/dist/bin/headless/headlessApp.js +172 -0
  75. package/dist/bin/mcp/config.js +202 -0
  76. package/dist/bin/mcp/stdioClient.js +172 -0
  77. package/dist/bin/mcp/toolBridge.js +104 -0
  78. package/dist/bin/mcp/types.js +1 -0
  79. package/dist/bin/plugins/index.js +113 -0
  80. package/dist/bin/plugins/providers/anthropic/index.js +25 -0
  81. package/dist/bin/plugins/providers/deepseek/index.js +24 -0
  82. package/dist/bin/plugins/providers/google/index.js +26 -0
  83. package/dist/bin/plugins/providers/index.js +19 -0
  84. package/dist/bin/plugins/providers/ollama/index.js +59 -0
  85. package/dist/bin/plugins/providers/openai/index.js +26 -0
  86. package/dist/bin/plugins/providers/xai/index.js +24 -0
  87. package/dist/bin/plugins/tools/agentSpawning/agentSpawningPlugin.js +8 -0
  88. package/dist/bin/plugins/tools/bash/localBashPlugin.js +13 -0
  89. package/dist/bin/plugins/tools/checks/localRepoChecksPlugin.js +13 -0
  90. package/dist/bin/plugins/tools/cloud/cloudPlugin.js +13 -0
  91. package/dist/bin/plugins/tools/codeAnalysis/codeAnalysisPlugin.js +13 -0
  92. package/dist/bin/plugins/tools/codeQuality/codeQualityPlugin.js +13 -0
  93. package/dist/bin/plugins/tools/dependency/dependencyPlugin.js +11 -0
  94. package/dist/bin/plugins/tools/development/devPlugin.js +13 -0
  95. package/dist/bin/plugins/tools/edit/editPlugin.js +14 -0
  96. package/dist/bin/plugins/tools/email/emailPlugin.js +11 -0
  97. package/dist/bin/plugins/tools/enhancedGit/enhancedGitPlugin.js +8 -0
  98. package/dist/bin/plugins/tools/filesystem/localFilesystemPlugin.js +13 -0
  99. package/dist/bin/plugins/tools/glob/globPlugin.js +14 -0
  100. package/dist/bin/plugins/tools/index.js +2 -0
  101. package/dist/bin/plugins/tools/interaction/interactionPlugin.js +11 -0
  102. package/dist/bin/plugins/tools/learn/learnPlugin.js +13 -0
  103. package/dist/bin/plugins/tools/mcp/mcpPlugin.js +8 -0
  104. package/dist/bin/plugins/tools/nodeDefaults.js +56 -0
  105. package/dist/bin/plugins/tools/notebook/notebookPlugin.js +14 -0
  106. package/dist/bin/plugins/tools/planning/planningPlugin.js +14 -0
  107. package/dist/bin/plugins/tools/refactoring/refactoringPlugin.js +11 -0
  108. package/dist/bin/plugins/tools/registry.js +57 -0
  109. package/dist/bin/plugins/tools/search/localSearchPlugin.js +13 -0
  110. package/dist/bin/plugins/tools/skills/skillPlugin.js +8 -0
  111. package/dist/bin/plugins/tools/taskManagement/taskManagementPlugin.js +11 -0
  112. package/dist/bin/plugins/tools/testing/testingPlugin.js +11 -0
  113. package/dist/bin/plugins/tools/web/webPlugin.js +11 -0
  114. package/dist/bin/providers/anthropicProvider.js +329 -0
  115. package/dist/bin/providers/googleProvider.js +203 -0
  116. package/dist/bin/providers/openaiChatCompletionsProvider.js +208 -0
  117. package/dist/bin/providers/openaiResponsesProvider.js +249 -0
  118. package/dist/bin/providers/providerFactory.js +24 -0
  119. package/dist/bin/runtime/agentController.js +321 -0
  120. package/dist/bin/runtime/agentHost.js +153 -0
  121. package/dist/bin/runtime/agentSession.js +195 -0
  122. package/dist/bin/runtime/node.js +10 -0
  123. package/dist/bin/runtime/universal.js +28 -0
  124. package/dist/bin/shell/bracketedPasteManager.js +350 -0
  125. package/dist/bin/shell/fileChangeTracker.js +65 -0
  126. package/dist/bin/shell/interactiveShell.js +2908 -0
  127. package/dist/bin/shell/liveStatus.js +78 -0
  128. package/dist/bin/shell/shellApp.js +290 -0
  129. package/dist/bin/shell/systemPrompt.js +60 -0
  130. package/dist/bin/shell/updateManager.js +108 -0
  131. package/dist/bin/skills/skillRepository.js +236 -0
  132. package/dist/bin/skills/types.js +1 -0
  133. package/dist/bin/subagents/taskRunner.js +269 -0
  134. package/dist/bin/tools/backgroundBashTools.js +211 -0
  135. package/dist/bin/tools/bashTools.js +159 -0
  136. package/dist/bin/tools/cloudTools.js +864 -0
  137. package/dist/bin/tools/codeAnalysisTools.js +641 -0
  138. package/dist/bin/tools/codeQualityTools.js +294 -0
  139. package/dist/bin/tools/dependencyTools.js +282 -0
  140. package/dist/bin/tools/devTools.js +238 -0
  141. package/dist/bin/tools/diffUtils.js +137 -0
  142. package/dist/bin/tools/editTools.js +134 -0
  143. package/dist/bin/tools/emailTools.js +448 -0
  144. package/dist/bin/tools/fileTools.js +282 -0
  145. package/dist/bin/tools/globTools.js +173 -0
  146. package/dist/bin/tools/grepTools.js +332 -0
  147. package/dist/bin/tools/interactionTools.js +170 -0
  148. package/dist/bin/tools/learnTools.js +1818 -0
  149. package/dist/bin/tools/notebookEditTools.js +196 -0
  150. package/dist/bin/tools/planningTools.js +46 -0
  151. package/dist/bin/tools/refactoringTools.js +293 -0
  152. package/dist/bin/tools/repoChecksTools.js +160 -0
  153. package/dist/bin/tools/searchTools.js +206 -0
  154. package/dist/bin/tools/skillTools.js +177 -0
  155. package/dist/bin/tools/taskManagementTools.js +156 -0
  156. package/dist/bin/tools/testingTools.js +232 -0
  157. package/dist/bin/tools/webTools.js +480 -0
  158. package/dist/bin/ui/ShellUIAdapter.js +459 -0
  159. package/dist/bin/ui/UnifiedUIController.js +183 -0
  160. package/dist/bin/ui/animation/AnimationScheduler.js +430 -0
  161. package/dist/bin/ui/codeHighlighter.js +854 -0
  162. package/dist/bin/ui/designSystem.js +121 -0
  163. package/dist/bin/ui/display.js +1222 -0
  164. package/dist/bin/ui/interrupts/InterruptManager.js +437 -0
  165. package/dist/bin/ui/layout.js +139 -0
  166. package/dist/bin/ui/orchestration/StatusOrchestrator.js +403 -0
  167. package/dist/bin/ui/outputMode.js +38 -0
  168. package/dist/bin/ui/persistentPrompt.js +183 -0
  169. package/dist/bin/ui/richText.js +338 -0
  170. package/dist/bin/ui/shortcutsHelp.js +87 -0
  171. package/dist/bin/ui/telemetry/UITelemetry.js +443 -0
  172. package/dist/bin/ui/textHighlighter.js +210 -0
  173. package/dist/bin/ui/theme.js +116 -0
  174. package/dist/bin/ui/toolDisplay.js +423 -0
  175. package/dist/bin/ui/toolDisplayAdapter.js +357 -0
  176. package/dist/bin/workspace.js +106 -0
  177. package/dist/bin/workspace.validator.js +213 -0
  178. package/dist/capabilities/cloudCapability.d.ts +13 -0
  179. package/dist/capabilities/cloudCapability.d.ts.map +1 -0
  180. package/dist/capabilities/cloudCapability.js +38 -0
  181. package/dist/capabilities/cloudCapability.js.map +1 -0
  182. package/dist/capabilities/index.d.ts +1 -0
  183. package/dist/capabilities/index.d.ts.map +1 -1
  184. package/dist/capabilities/index.js +1 -0
  185. package/dist/capabilities/index.js.map +1 -1
  186. package/dist/capabilities/offensiveSecurityCapability.d.ts +26 -0
  187. package/dist/capabilities/offensiveSecurityCapability.d.ts.map +1 -0
  188. package/dist/capabilities/offensiveSecurityCapability.js +58 -0
  189. package/dist/capabilities/offensiveSecurityCapability.js.map +1 -0
  190. package/dist/capabilities/realSecurityCapability.d.ts +26 -0
  191. package/dist/capabilities/realSecurityCapability.d.ts.map +1 -0
  192. package/dist/capabilities/realSecurityCapability.js +53 -0
  193. package/dist/capabilities/realSecurityCapability.js.map +1 -0
  194. package/dist/capabilities/securityCapability.d.ts +32 -0
  195. package/dist/capabilities/securityCapability.d.ts.map +1 -0
  196. package/dist/capabilities/securityCapability.js +57 -0
  197. package/dist/capabilities/securityCapability.js.map +1 -0
  198. package/dist/capabilities/ultimateSecurityCapability.d.ts +42 -0
  199. package/dist/capabilities/ultimateSecurityCapability.d.ts.map +1 -0
  200. package/dist/capabilities/ultimateSecurityCapability.js +96 -0
  201. package/dist/capabilities/ultimateSecurityCapability.js.map +1 -0
  202. package/dist/core/LazyLoader.d.ts +129 -0
  203. package/dist/core/LazyLoader.d.ts.map +1 -0
  204. package/dist/core/LazyLoader.js +240 -0
  205. package/dist/core/LazyLoader.js.map +1 -0
  206. package/dist/core/intelligenceTools.d.ts +19 -0
  207. package/dist/core/intelligenceTools.d.ts.map +1 -0
  208. package/dist/core/intelligenceTools.js +453 -0
  209. package/dist/core/intelligenceTools.js.map +1 -0
  210. package/dist/core/operationalTools.d.ts +19 -0
  211. package/dist/core/operationalTools.d.ts.map +1 -0
  212. package/dist/core/operationalTools.js +467 -0
  213. package/dist/core/operationalTools.js.map +1 -0
  214. package/dist/offensive/core/offensive-engine.d.ts +171 -0
  215. package/dist/offensive/core/offensive-engine.d.ts.map +1 -0
  216. package/dist/offensive/core/offensive-engine.js +345 -0
  217. package/dist/offensive/core/offensive-engine.js.map +1 -0
  218. package/dist/offensive/core/offensive-integration.d.ts +129 -0
  219. package/dist/offensive/core/offensive-integration.d.ts.map +1 -0
  220. package/dist/offensive/core/offensive-integration.js +364 -0
  221. package/dist/offensive/core/offensive-integration.js.map +1 -0
  222. package/dist/offensive/core/offensive-tools.d.ts +55 -0
  223. package/dist/offensive/core/offensive-tools.d.ts.map +1 -0
  224. package/dist/offensive/core/offensive-tools.js +438 -0
  225. package/dist/offensive/core/offensive-tools.js.map +1 -0
  226. package/dist/offensive/offensive-cli.d.ts +48 -0
  227. package/dist/offensive/offensive-cli.d.ts.map +1 -0
  228. package/dist/offensive/offensive-cli.js +233 -0
  229. package/dist/offensive/offensive-cli.js.map +1 -0
  230. package/dist/plugins/index.d.ts +1 -1
  231. package/dist/plugins/index.d.ts.map +1 -1
  232. package/dist/plugins/index.js +2 -0
  233. package/dist/plugins/index.js.map +1 -1
  234. package/dist/plugins/tools/cloud/cloudPlugin.d.ts +3 -0
  235. package/dist/plugins/tools/cloud/cloudPlugin.d.ts.map +1 -0
  236. package/dist/plugins/tools/cloud/cloudPlugin.js +14 -0
  237. package/dist/plugins/tools/cloud/cloudPlugin.js.map +1 -0
  238. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  239. package/dist/plugins/tools/nodeDefaults.js +2 -0
  240. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  241. package/dist/security/advanced-persistence-research.d.ts +92 -0
  242. package/dist/security/advanced-persistence-research.d.ts.map +1 -0
  243. package/dist/security/advanced-persistence-research.js +195 -0
  244. package/dist/security/advanced-persistence-research.js.map +1 -0
  245. package/dist/security/apt-simulation-cli.d.ts +57 -0
  246. package/dist/security/apt-simulation-cli.d.ts.map +1 -0
  247. package/dist/security/apt-simulation-cli.js +278 -0
  248. package/dist/security/apt-simulation-cli.js.map +1 -0
  249. package/dist/security/apt-simulation-engine-complete.d.ts +97 -0
  250. package/dist/security/apt-simulation-engine-complete.d.ts.map +1 -0
  251. package/dist/security/apt-simulation-engine-complete.js +441 -0
  252. package/dist/security/apt-simulation-engine-complete.js.map +1 -0
  253. package/dist/security/apt-simulation-engine.d.ts +97 -0
  254. package/dist/security/apt-simulation-engine.d.ts.map +1 -0
  255. package/dist/security/apt-simulation-engine.js +441 -0
  256. package/dist/security/apt-simulation-engine.js.map +1 -0
  257. package/dist/security/assessment/vulnerabilityAssessment.d.ts +104 -0
  258. package/dist/security/assessment/vulnerabilityAssessment.d.ts.map +1 -0
  259. package/dist/security/assessment/vulnerabilityAssessment.js +315 -0
  260. package/dist/security/assessment/vulnerabilityAssessment.js.map +1 -0
  261. package/dist/security/authorization/securityAuthorization.d.ts +88 -0
  262. package/dist/security/authorization/securityAuthorization.d.ts.map +1 -0
  263. package/dist/security/authorization/securityAuthorization.js +172 -0
  264. package/dist/security/authorization/securityAuthorization.js.map +1 -0
  265. package/dist/security/authorization.d.ts +45 -0
  266. package/dist/security/authorization.d.ts.map +1 -0
  267. package/dist/security/authorization.js +128 -0
  268. package/dist/security/authorization.js.map +1 -0
  269. package/dist/security/comprehensive-security-research.d.ts +84 -0
  270. package/dist/security/comprehensive-security-research.d.ts.map +1 -0
  271. package/dist/security/comprehensive-security-research.js +211 -0
  272. package/dist/security/comprehensive-security-research.js.map +1 -0
  273. package/dist/security/offensive/exploitationEngine.d.ts +54 -0
  274. package/dist/security/offensive/exploitationEngine.d.ts.map +1 -0
  275. package/dist/security/offensive/exploitationEngine.js +263 -0
  276. package/dist/security/offensive/exploitationEngine.js.map +1 -0
  277. package/dist/security/persistence-analyzer.d.ts +56 -0
  278. package/dist/security/persistence-analyzer.d.ts.map +1 -0
  279. package/dist/security/persistence-analyzer.js +187 -0
  280. package/dist/security/persistence-analyzer.js.map +1 -0
  281. package/dist/security/persistence-cli.d.ts +36 -0
  282. package/dist/security/persistence-cli.d.ts.map +1 -0
  283. package/dist/security/persistence-cli.js +160 -0
  284. package/dist/security/persistence-cli.js.map +1 -0
  285. package/dist/security/persistence-research.d.ts +100 -0
  286. package/dist/security/persistence-research.d.ts.map +1 -0
  287. package/dist/security/persistence-research.js +372 -0
  288. package/dist/security/persistence-research.js.map +1 -0
  289. package/dist/security/real/networkExploitation.d.ts +92 -0
  290. package/dist/security/real/networkExploitation.d.ts.map +1 -0
  291. package/dist/security/real/networkExploitation.js +316 -0
  292. package/dist/security/real/networkExploitation.js.map +1 -0
  293. package/dist/security/real/persistenceImplementation.d.ts +62 -0
  294. package/dist/security/real/persistenceImplementation.d.ts.map +1 -0
  295. package/dist/security/real/persistenceImplementation.js +323 -0
  296. package/dist/security/real/persistenceImplementation.js.map +1 -0
  297. package/dist/security/real/vulnerabilityScanner.d.ts +73 -0
  298. package/dist/security/real/vulnerabilityScanner.d.ts.map +1 -0
  299. package/dist/security/real/vulnerabilityScanner.js +341 -0
  300. package/dist/security/real/vulnerabilityScanner.js.map +1 -0
  301. package/dist/security/research/persistenceResearch.d.ts +97 -0
  302. package/dist/security/research/persistenceResearch.d.ts.map +1 -0
  303. package/dist/security/research/persistenceResearch.js +282 -0
  304. package/dist/security/research/persistenceResearch.js.map +1 -0
  305. package/dist/security/security-testing-framework.d.ts +120 -0
  306. package/dist/security/security-testing-framework.d.ts.map +1 -0
  307. package/dist/security/security-testing-framework.js +372 -0
  308. package/dist/security/security-testing-framework.js.map +1 -0
  309. package/dist/security/simulation/attackSimulation.d.ts +93 -0
  310. package/dist/security/simulation/attackSimulation.d.ts.map +1 -0
  311. package/dist/security/simulation/attackSimulation.js +341 -0
  312. package/dist/security/simulation/attackSimulation.js.map +1 -0
  313. package/dist/shell/bracketedPasteManager.d.ts +76 -0
  314. package/dist/shell/bracketedPasteManager.d.ts.map +1 -1
  315. package/dist/shell/bracketedPasteManager.js +267 -9
  316. package/dist/shell/bracketedPasteManager.js.map +1 -1
  317. package/dist/shell/interactiveShell.d.ts +34 -1
  318. package/dist/shell/interactiveShell.d.ts.map +1 -1
  319. package/dist/shell/interactiveShell.js +304 -24
  320. package/dist/shell/interactiveShell.js.map +1 -1
  321. package/dist/shell/taskCompletionDetector.d.ts +101 -0
  322. package/dist/shell/taskCompletionDetector.d.ts.map +1 -0
  323. package/dist/shell/taskCompletionDetector.js +343 -0
  324. package/dist/shell/taskCompletionDetector.js.map +1 -0
  325. package/dist/tools/cloudTools.d.ts +57 -0
  326. package/dist/tools/cloudTools.d.ts.map +1 -0
  327. package/dist/tools/cloudTools.js +865 -0
  328. package/dist/tools/cloudTools.js.map +1 -0
  329. package/dist/tools/enhancedSecurityTools.d.ts +19 -0
  330. package/dist/tools/enhancedSecurityTools.d.ts.map +1 -0
  331. package/dist/tools/enhancedSecurityTools.js +215 -0
  332. package/dist/tools/enhancedSecurityTools.js.map +1 -0
  333. package/dist/tools/offensiveSecurityTools.d.ts +16 -0
  334. package/dist/tools/offensiveSecurityTools.d.ts.map +1 -0
  335. package/dist/tools/offensiveSecurityTools.js +285 -0
  336. package/dist/tools/offensiveSecurityTools.js.map +1 -0
  337. package/dist/tools/realSecurityTools.d.ts +18 -0
  338. package/dist/tools/realSecurityTools.d.ts.map +1 -0
  339. package/dist/tools/realSecurityTools.js +468 -0
  340. package/dist/tools/realSecurityTools.js.map +1 -0
  341. package/dist/tools/securityTools.d.ts +20 -0
  342. package/dist/tools/securityTools.d.ts.map +1 -0
  343. package/dist/tools/securityTools.js +449 -0
  344. package/dist/tools/securityTools.js.map +1 -0
  345. package/package.json +27 -12
  346. package/scripts/deploy-security-capabilities.js +178 -0
@@ -0,0 +1,114 @@
1
+ import { MissingSecretError, getSecretDefinitionForProvider, } from '../secretStore.js';
2
+ export function detectApiKeyError(error, provider) {
3
+ if (error instanceof MissingSecretError) {
4
+ const primaryProvider = error.secret.providers[0] ?? null;
5
+ return {
6
+ type: 'missing',
7
+ provider: provider ?? primaryProvider,
8
+ secret: error.secret,
9
+ message: error.message,
10
+ };
11
+ }
12
+ if (isUnauthorizedError(error)) {
13
+ const labelProvider = provider ?? extractProviderFromError(error);
14
+ const secret = labelProvider ? getSecretDefinitionForProvider(labelProvider) : null;
15
+ return {
16
+ type: 'invalid',
17
+ provider: labelProvider,
18
+ secret,
19
+ message: extractErrorMessage(error),
20
+ };
21
+ }
22
+ return null;
23
+ }
24
+ function isUnauthorizedError(error) {
25
+ const status = extractStatus(error);
26
+ if (status === 401 || status === 403) {
27
+ return true;
28
+ }
29
+ const payload = extractStructuredError(error);
30
+ if (payload) {
31
+ const normalizedType = normalize(payload.type) || normalize(payload.code);
32
+ if (normalizedType && containsAuthKeyword(normalizedType)) {
33
+ return true;
34
+ }
35
+ if (payload.message && containsAuthKeyword(normalize(payload.message))) {
36
+ return true;
37
+ }
38
+ }
39
+ const message = normalize(extractErrorMessage(error));
40
+ if (!message) {
41
+ return false;
42
+ }
43
+ return containsAuthKeyword(message);
44
+ }
45
+ function extractStatus(error) {
46
+ if (!error || typeof error !== 'object') {
47
+ return null;
48
+ }
49
+ const directStatus = error.status;
50
+ if (typeof directStatus === 'number') {
51
+ return directStatus;
52
+ }
53
+ const response = error.response;
54
+ if (response && typeof response.status === 'number') {
55
+ return response.status;
56
+ }
57
+ return null;
58
+ }
59
+ function extractStructuredError(error) {
60
+ if (!error || typeof error !== 'object') {
61
+ return null;
62
+ }
63
+ if ('error' in error) {
64
+ const candidate = error.error;
65
+ if (candidate && typeof candidate === 'object') {
66
+ return candidate;
67
+ }
68
+ }
69
+ return null;
70
+ }
71
+ function extractProviderFromError(error) {
72
+ if (!error || typeof error !== 'object') {
73
+ return null;
74
+ }
75
+ const provider = error.provider;
76
+ if (typeof provider === 'string' && provider.trim()) {
77
+ return provider.trim();
78
+ }
79
+ return null;
80
+ }
81
+ function extractErrorMessage(error) {
82
+ if (typeof error === 'string') {
83
+ return error;
84
+ }
85
+ if (error instanceof Error) {
86
+ return error.message ?? '';
87
+ }
88
+ if (error && typeof error === 'object') {
89
+ const payload = extractStructuredError(error);
90
+ if (payload?.message) {
91
+ return payload.message;
92
+ }
93
+ if ('message' in error && typeof error.message === 'string') {
94
+ return error.message;
95
+ }
96
+ }
97
+ return '';
98
+ }
99
+ function containsAuthKeyword(value) {
100
+ if (!value) {
101
+ return false;
102
+ }
103
+ return (value.includes('api key') ||
104
+ value.includes('apikey') ||
105
+ value.includes('api-key') ||
106
+ value.includes('authentication') ||
107
+ value.includes('unauthorized'));
108
+ }
109
+ function normalize(value) {
110
+ if (!value) {
111
+ return null;
112
+ }
113
+ return value.toLowerCase();
114
+ }
@@ -0,0 +1,340 @@
1
+ /**
2
+ * Comprehensive Error Classification System
3
+ *
4
+ * Provides structured error handling with:
5
+ * - Error categorization (dangerous, blocked, invalid, etc.)
6
+ * - Severity levels (critical, error, warning, info)
7
+ * - Auto-fixing suggestions
8
+ * - Recovery strategies
9
+ */
10
+ export var ErrorSeverity;
11
+ (function (ErrorSeverity) {
12
+ ErrorSeverity["CRITICAL"] = "critical";
13
+ ErrorSeverity["ERROR"] = "error";
14
+ ErrorSeverity["WARNING"] = "warning";
15
+ ErrorSeverity["INFO"] = "info";
16
+ })(ErrorSeverity || (ErrorSeverity = {}));
17
+ export var ErrorCategory;
18
+ (function (ErrorCategory) {
19
+ ErrorCategory["DANGEROUS"] = "dangerous";
20
+ ErrorCategory["BLOCKED"] = "blocked";
21
+ ErrorCategory["INVALID"] = "invalid";
22
+ ErrorCategory["PERMISSION"] = "permission";
23
+ ErrorCategory["RESOURCE"] = "resource";
24
+ ErrorCategory["NETWORK"] = "network";
25
+ ErrorCategory["TIMEOUT"] = "timeout";
26
+ ErrorCategory["VALIDATION"] = "validation";
27
+ ErrorCategory["CONTEXT_OVERFLOW"] = "context_overflow";
28
+ ErrorCategory["NOT_FOUND"] = "not_found";
29
+ ErrorCategory["UNKNOWN"] = "unknown";
30
+ })(ErrorCategory || (ErrorCategory = {}));
31
+ /**
32
+ * Base class for all structured errors
33
+ */
34
+ export class StructuredError extends Error {
35
+ constructor(details) {
36
+ super(details.message);
37
+ this.name = this.constructor.name;
38
+ this.severity = details.severity;
39
+ this.category = details.category;
40
+ this.suggestions = details.suggestions;
41
+ this.originalInput = details.originalInput;
42
+ this.metadata = details.metadata;
43
+ this.timestamp = details.timestamp;
44
+ this.recoverable = details.recoverable;
45
+ // Maintain proper stack trace
46
+ Error.captureStackTrace(this, this.constructor);
47
+ }
48
+ /**
49
+ * Format error for display with suggestions
50
+ */
51
+ toDisplayString() {
52
+ const parts = [
53
+ `[${this.severity.toUpperCase()}] ${this.message}`,
54
+ ];
55
+ if (this.originalInput) {
56
+ parts.push(` Input: ${this.originalInput}`);
57
+ }
58
+ if (this.suggestions.length > 0) {
59
+ parts.push('\nSuggestions:');
60
+ for (const suggestion of this.suggestions) {
61
+ parts.push(` • ${suggestion.action}`);
62
+ if (suggestion.example) {
63
+ parts.push(` Example: ${suggestion.example}`);
64
+ }
65
+ if (suggestion.autoFixable) {
66
+ parts.push(` [Auto-fixable]`);
67
+ }
68
+ }
69
+ }
70
+ return parts.join('\n');
71
+ }
72
+ /**
73
+ * Convert to JSON for logging/telemetry
74
+ */
75
+ toJSON() {
76
+ return {
77
+ name: this.name,
78
+ severity: this.severity,
79
+ category: this.category,
80
+ message: this.message,
81
+ originalInput: this.originalInput,
82
+ suggestions: this.suggestions.map(s => ({
83
+ action: s.action,
84
+ example: s.example,
85
+ autoFixable: s.autoFixable,
86
+ })),
87
+ metadata: this.metadata,
88
+ timestamp: this.timestamp,
89
+ recoverable: this.recoverable,
90
+ stack: this.stack,
91
+ };
92
+ }
93
+ /**
94
+ * Try to auto-fix the error if possible
95
+ */
96
+ tryAutoFix() {
97
+ for (const suggestion of this.suggestions) {
98
+ if (suggestion.autoFixable && suggestion.autoFix) {
99
+ try {
100
+ const result = suggestion.autoFix();
101
+ return { fixed: true, result };
102
+ }
103
+ catch {
104
+ // Continue to next suggestion
105
+ }
106
+ }
107
+ }
108
+ return { fixed: false };
109
+ }
110
+ }
111
+ /**
112
+ * Dangerous operation error - operation could harm the system
113
+ */
114
+ export class DangerousOperationError extends StructuredError {
115
+ constructor(operation, reason, safeAlternative) {
116
+ const suggestions = [];
117
+ if (safeAlternative) {
118
+ suggestions.push({
119
+ action: `Use safer alternative: ${safeAlternative}`,
120
+ example: safeAlternative,
121
+ autoFixable: true,
122
+ autoFix: () => safeAlternative,
123
+ });
124
+ }
125
+ else {
126
+ suggestions.push({
127
+ action: 'Review operation for safety before retrying',
128
+ autoFixable: false,
129
+ });
130
+ }
131
+ super({
132
+ severity: ErrorSeverity.CRITICAL,
133
+ category: ErrorCategory.DANGEROUS,
134
+ message: `Dangerous operation blocked: ${operation}. Reason: ${reason}`,
135
+ originalInput: operation,
136
+ suggestions,
137
+ recoverable: safeAlternative !== undefined,
138
+ timestamp: new Date().toISOString(),
139
+ });
140
+ }
141
+ }
142
+ /**
143
+ * Blocked operation error - explicitly forbidden by policy
144
+ */
145
+ export class BlockedOperationError extends StructuredError {
146
+ constructor(operation, policy, allowedAlternatives) {
147
+ const suggestions = [];
148
+ if (allowedAlternatives && allowedAlternatives.length > 0) {
149
+ for (const alt of allowedAlternatives) {
150
+ suggestions.push({
151
+ action: `Try allowed alternative: ${alt}`,
152
+ example: alt,
153
+ autoFixable: true,
154
+ autoFix: () => alt,
155
+ });
156
+ }
157
+ }
158
+ else {
159
+ suggestions.push({
160
+ action: 'This operation is not permitted by policy',
161
+ autoFixable: false,
162
+ });
163
+ }
164
+ super({
165
+ severity: ErrorSeverity.ERROR,
166
+ category: ErrorCategory.BLOCKED,
167
+ message: `Operation blocked by policy "${policy}": ${operation}`,
168
+ originalInput: operation,
169
+ suggestions,
170
+ recoverable: allowedAlternatives !== undefined && allowedAlternatives.length > 0,
171
+ timestamp: new Date().toISOString(),
172
+ metadata: { policy, allowedAlternatives },
173
+ });
174
+ }
175
+ }
176
+ /**
177
+ * Context overflow error - token/character limits exceeded
178
+ */
179
+ export class ContextOverflowError extends StructuredError {
180
+ constructor(actual, limit, unit, truncatable = true) {
181
+ const percentage = Math.round((actual / limit) * 100);
182
+ const suggestions = [];
183
+ if (truncatable) {
184
+ suggestions.push({
185
+ action: `Auto-truncate to ${limit} ${unit}`,
186
+ example: `Content will be reduced from ${actual} to ${limit} ${unit}`,
187
+ autoFixable: true,
188
+ autoFix: () => ({ truncate: true, limit }),
189
+ });
190
+ }
191
+ suggestions.push({
192
+ action: `Reduce scope to use less than ${limit} ${unit}`,
193
+ autoFixable: false,
194
+ });
195
+ super({
196
+ severity: ErrorSeverity.CRITICAL,
197
+ category: ErrorCategory.CONTEXT_OVERFLOW,
198
+ message: `Context overflow: ${actual} ${unit} exceeds limit of ${limit} ${unit} (${percentage}%)`,
199
+ suggestions,
200
+ recoverable: truncatable,
201
+ timestamp: new Date().toISOString(),
202
+ metadata: { actual, limit, unit, percentage },
203
+ });
204
+ }
205
+ }
206
+ /**
207
+ * Validation error - with auto-fix suggestions
208
+ */
209
+ export class ValidationError extends StructuredError {
210
+ constructor(field, value, constraint, correctExample) {
211
+ const suggestions = [];
212
+ if (correctExample) {
213
+ suggestions.push({
214
+ action: `Use correct format: ${correctExample}`,
215
+ example: correctExample,
216
+ autoFixable: true,
217
+ autoFix: () => correctExample,
218
+ });
219
+ }
220
+ super({
221
+ severity: ErrorSeverity.ERROR,
222
+ category: ErrorCategory.VALIDATION,
223
+ message: `Validation failed for "${field}": ${constraint}`,
224
+ originalInput: String(value),
225
+ suggestions,
226
+ recoverable: correctExample !== undefined,
227
+ timestamp: new Date().toISOString(),
228
+ metadata: { field, value, constraint },
229
+ });
230
+ }
231
+ }
232
+ /**
233
+ * Resource error - limits exceeded
234
+ */
235
+ export class ResourceLimitError extends StructuredError {
236
+ constructor(resource, actual, limit, reducible = true) {
237
+ const suggestions = [];
238
+ if (reducible) {
239
+ const safeValue = Math.floor(limit * 0.8); // 80% of limit
240
+ suggestions.push({
241
+ action: `Reduce ${resource} to ${safeValue} (80% of limit)`,
242
+ example: `Set ${resource}=${safeValue}`,
243
+ autoFixable: true,
244
+ autoFix: () => safeValue,
245
+ });
246
+ }
247
+ super({
248
+ severity: ErrorSeverity.ERROR,
249
+ category: ErrorCategory.RESOURCE,
250
+ message: `Resource limit exceeded: ${resource} is ${actual}, maximum is ${limit}`,
251
+ suggestions,
252
+ recoverable: reducible,
253
+ timestamp: new Date().toISOString(),
254
+ metadata: { resource, actual, limit },
255
+ });
256
+ }
257
+ }
258
+ /**
259
+ * Format any error as a structured error
260
+ */
261
+ export function toStructuredError(error) {
262
+ // Already structured
263
+ if (error instanceof StructuredError) {
264
+ return error;
265
+ }
266
+ // Convert standard errors
267
+ const message = error instanceof Error ? error.message : String(error);
268
+ // Detect error category from message
269
+ const category = detectErrorCategory(message);
270
+ const severity = detectErrorSeverity(category);
271
+ class GenericStructuredError extends StructuredError {
272
+ }
273
+ return new GenericStructuredError({
274
+ severity,
275
+ category,
276
+ message,
277
+ suggestions: [],
278
+ recoverable: false,
279
+ timestamp: new Date().toISOString(),
280
+ });
281
+ }
282
+ /**
283
+ * Detect error category from error message
284
+ */
285
+ function detectErrorCategory(message) {
286
+ const lower = message.toLowerCase();
287
+ if (lower.includes('dangerous') || lower.includes('unsafe') || lower.includes('harmful')) {
288
+ return ErrorCategory.DANGEROUS;
289
+ }
290
+ if (lower.includes('blocked') || lower.includes('forbidden') || lower.includes('not allowed')) {
291
+ return ErrorCategory.BLOCKED;
292
+ }
293
+ if (lower.includes('invalid') || lower.includes('malformed')) {
294
+ return ErrorCategory.INVALID;
295
+ }
296
+ if (lower.includes('permission') || lower.includes('unauthorized') || lower.includes('access denied')) {
297
+ return ErrorCategory.PERMISSION;
298
+ }
299
+ if (lower.includes('limit') || lower.includes('exceeded') || lower.includes('too large')) {
300
+ return ErrorCategory.RESOURCE;
301
+ }
302
+ if (lower.includes('timeout') || lower.includes('timed out')) {
303
+ return ErrorCategory.TIMEOUT;
304
+ }
305
+ if (lower.includes('network') || lower.includes('connection')) {
306
+ return ErrorCategory.NETWORK;
307
+ }
308
+ if (lower.includes('validation') || lower.includes('schema')) {
309
+ return ErrorCategory.VALIDATION;
310
+ }
311
+ if (lower.includes('context') || lower.includes('token') || lower.includes('overflow')) {
312
+ return ErrorCategory.CONTEXT_OVERFLOW;
313
+ }
314
+ if (lower.includes('not found') || lower.includes('does not exist')) {
315
+ return ErrorCategory.NOT_FOUND;
316
+ }
317
+ return ErrorCategory.UNKNOWN;
318
+ }
319
+ /**
320
+ * Determine severity from category
321
+ */
322
+ function detectErrorSeverity(category) {
323
+ switch (category) {
324
+ case ErrorCategory.DANGEROUS:
325
+ case ErrorCategory.CONTEXT_OVERFLOW:
326
+ return ErrorSeverity.CRITICAL;
327
+ case ErrorCategory.BLOCKED:
328
+ case ErrorCategory.PERMISSION:
329
+ case ErrorCategory.VALIDATION:
330
+ case ErrorCategory.INVALID:
331
+ case ErrorCategory.RESOURCE:
332
+ return ErrorSeverity.ERROR;
333
+ case ErrorCategory.TIMEOUT:
334
+ case ErrorCategory.NETWORK:
335
+ case ErrorCategory.NOT_FOUND:
336
+ return ErrorSeverity.WARNING;
337
+ default:
338
+ return ErrorSeverity.ERROR;
339
+ }
340
+ }