erosolar-cli 1.7.355 → 1.7.356

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 (330) 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/sessionStore.d.ts +0 -2
  97. package/dist/core/sessionStore.d.ts.map +1 -1
  98. package/dist/core/sessionStore.js +0 -1
  99. package/dist/core/sessionStore.js.map +1 -1
  100. package/dist/core/toolPreconditions.d.ts.map +1 -1
  101. package/dist/core/toolPreconditions.js +14 -0
  102. package/dist/core/toolPreconditions.js.map +1 -1
  103. package/dist/core/toolRuntime.d.ts +1 -22
  104. package/dist/core/toolRuntime.d.ts.map +1 -1
  105. package/dist/core/toolRuntime.js +5 -0
  106. package/dist/core/toolRuntime.js.map +1 -1
  107. package/dist/core/toolValidation.d.ts.map +1 -1
  108. package/dist/core/toolValidation.js +3 -14
  109. package/dist/core/toolValidation.js.map +1 -1
  110. package/dist/core/unified/errors.d.ts +189 -0
  111. package/dist/core/unified/errors.d.ts.map +1 -0
  112. package/dist/core/unified/errors.js +497 -0
  113. package/dist/core/unified/errors.js.map +1 -0
  114. package/dist/core/unified/index.d.ts +19 -0
  115. package/dist/core/unified/index.d.ts.map +1 -0
  116. package/dist/core/unified/index.js +68 -0
  117. package/dist/core/unified/index.js.map +1 -0
  118. package/dist/core/unified/schema.d.ts +101 -0
  119. package/dist/core/unified/schema.d.ts.map +1 -0
  120. package/dist/core/unified/schema.js +350 -0
  121. package/dist/core/unified/schema.js.map +1 -0
  122. package/dist/core/unified/toolRuntime.d.ts +179 -0
  123. package/dist/core/unified/toolRuntime.d.ts.map +1 -0
  124. package/dist/core/unified/toolRuntime.js +517 -0
  125. package/dist/core/unified/toolRuntime.js.map +1 -0
  126. package/dist/core/unified/tools.d.ts +127 -0
  127. package/dist/core/unified/tools.d.ts.map +1 -0
  128. package/dist/core/unified/tools.js +1333 -0
  129. package/dist/core/unified/tools.js.map +1 -0
  130. package/dist/core/unified/types.d.ts +352 -0
  131. package/dist/core/unified/types.d.ts.map +1 -0
  132. package/dist/core/unified/types.js +12 -0
  133. package/dist/core/unified/types.js.map +1 -0
  134. package/dist/core/unified/version.d.ts +209 -0
  135. package/dist/core/unified/version.d.ts.map +1 -0
  136. package/dist/core/unified/version.js +454 -0
  137. package/dist/core/unified/version.js.map +1 -0
  138. package/dist/core/validationRunner.d.ts +3 -1
  139. package/dist/core/validationRunner.d.ts.map +1 -1
  140. package/dist/core/validationRunner.js.map +1 -1
  141. package/dist/headless/headlessApp.d.ts.map +1 -1
  142. package/dist/headless/headlessApp.js +0 -21
  143. package/dist/headless/headlessApp.js.map +1 -1
  144. package/dist/mcp/sseClient.d.ts.map +1 -1
  145. package/dist/mcp/sseClient.js +18 -9
  146. package/dist/mcp/sseClient.js.map +1 -1
  147. package/dist/plugins/tools/build/buildPlugin.d.ts +6 -0
  148. package/dist/plugins/tools/build/buildPlugin.d.ts.map +1 -1
  149. package/dist/plugins/tools/build/buildPlugin.js +10 -4
  150. package/dist/plugins/tools/build/buildPlugin.js.map +1 -1
  151. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  152. package/dist/plugins/tools/nodeDefaults.js +2 -0
  153. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  154. package/dist/plugins/tools/security/securityPlugin.d.ts +3 -0
  155. package/dist/plugins/tools/security/securityPlugin.d.ts.map +1 -0
  156. package/dist/plugins/tools/security/securityPlugin.js +12 -0
  157. package/dist/plugins/tools/security/securityPlugin.js.map +1 -0
  158. package/dist/runtime/agentSession.d.ts +2 -2
  159. package/dist/runtime/agentSession.d.ts.map +1 -1
  160. package/dist/runtime/agentSession.js +2 -2
  161. package/dist/runtime/agentSession.js.map +1 -1
  162. package/dist/security/active-stack-security.d.ts +112 -0
  163. package/dist/security/active-stack-security.d.ts.map +1 -0
  164. package/dist/security/active-stack-security.js +296 -0
  165. package/dist/security/active-stack-security.js.map +1 -0
  166. package/dist/security/advanced-persistence-research.d.ts +92 -0
  167. package/dist/security/advanced-persistence-research.d.ts.map +1 -0
  168. package/dist/security/advanced-persistence-research.js +195 -0
  169. package/dist/security/advanced-persistence-research.js.map +1 -0
  170. package/dist/security/advanced-targeting.d.ts +119 -0
  171. package/dist/security/advanced-targeting.d.ts.map +1 -0
  172. package/dist/security/advanced-targeting.js +233 -0
  173. package/dist/security/advanced-targeting.js.map +1 -0
  174. package/dist/security/assessment/vulnerabilityAssessment.d.ts +104 -0
  175. package/dist/security/assessment/vulnerabilityAssessment.d.ts.map +1 -0
  176. package/dist/security/assessment/vulnerabilityAssessment.js +315 -0
  177. package/dist/security/assessment/vulnerabilityAssessment.js.map +1 -0
  178. package/dist/security/authorization/securityAuthorization.d.ts +88 -0
  179. package/dist/security/authorization/securityAuthorization.d.ts.map +1 -0
  180. package/dist/security/authorization/securityAuthorization.js +172 -0
  181. package/dist/security/authorization/securityAuthorization.js.map +1 -0
  182. package/dist/security/comprehensive-targeting.d.ts +85 -0
  183. package/dist/security/comprehensive-targeting.d.ts.map +1 -0
  184. package/dist/security/comprehensive-targeting.js +438 -0
  185. package/dist/security/comprehensive-targeting.js.map +1 -0
  186. package/dist/security/global-security-integration.d.ts +91 -0
  187. package/dist/security/global-security-integration.d.ts.map +1 -0
  188. package/dist/security/global-security-integration.js +218 -0
  189. package/dist/security/global-security-integration.js.map +1 -0
  190. package/dist/security/index.d.ts +38 -0
  191. package/dist/security/index.d.ts.map +1 -0
  192. package/dist/security/index.js +47 -0
  193. package/dist/security/index.js.map +1 -0
  194. package/dist/security/persistence-analyzer.d.ts +56 -0
  195. package/dist/security/persistence-analyzer.d.ts.map +1 -0
  196. package/dist/security/persistence-analyzer.js +187 -0
  197. package/dist/security/persistence-analyzer.js.map +1 -0
  198. package/dist/security/persistence-cli.d.ts +36 -0
  199. package/dist/security/persistence-cli.d.ts.map +1 -0
  200. package/dist/security/persistence-cli.js +160 -0
  201. package/dist/security/persistence-cli.js.map +1 -0
  202. package/dist/security/persistence-research.d.ts +92 -0
  203. package/dist/security/persistence-research.d.ts.map +1 -0
  204. package/dist/security/persistence-research.js +364 -0
  205. package/dist/security/persistence-research.js.map +1 -0
  206. package/dist/security/research/persistenceResearch.d.ts +97 -0
  207. package/dist/security/research/persistenceResearch.d.ts.map +1 -0
  208. package/dist/security/research/persistenceResearch.js +282 -0
  209. package/dist/security/research/persistenceResearch.js.map +1 -0
  210. package/dist/security/security-integration.d.ts +74 -0
  211. package/dist/security/security-integration.d.ts.map +1 -0
  212. package/dist/security/security-integration.js +137 -0
  213. package/dist/security/security-integration.js.map +1 -0
  214. package/dist/security/security-testing-framework.d.ts +112 -0
  215. package/dist/security/security-testing-framework.d.ts.map +1 -0
  216. package/dist/security/security-testing-framework.js +364 -0
  217. package/dist/security/security-testing-framework.js.map +1 -0
  218. package/dist/security/simulation/attackSimulation.d.ts +93 -0
  219. package/dist/security/simulation/attackSimulation.d.ts.map +1 -0
  220. package/dist/security/simulation/attackSimulation.js +341 -0
  221. package/dist/security/simulation/attackSimulation.js.map +1 -0
  222. package/dist/security/strategic-operations.d.ts +100 -0
  223. package/dist/security/strategic-operations.d.ts.map +1 -0
  224. package/dist/security/strategic-operations.js +276 -0
  225. package/dist/security/strategic-operations.js.map +1 -0
  226. package/dist/security/tool-security-wrapper.d.ts +58 -0
  227. package/dist/security/tool-security-wrapper.d.ts.map +1 -0
  228. package/dist/security/tool-security-wrapper.js +156 -0
  229. package/dist/security/tool-security-wrapper.js.map +1 -0
  230. package/dist/shell/claudeCodeStreamHandler.d.ts +145 -0
  231. package/dist/shell/claudeCodeStreamHandler.d.ts.map +1 -0
  232. package/dist/shell/claudeCodeStreamHandler.js +322 -0
  233. package/dist/shell/claudeCodeStreamHandler.js.map +1 -0
  234. package/dist/shell/inputQueueManager.d.ts +144 -0
  235. package/dist/shell/inputQueueManager.d.ts.map +1 -0
  236. package/dist/shell/inputQueueManager.js +290 -0
  237. package/dist/shell/inputQueueManager.js.map +1 -0
  238. package/dist/shell/interactiveShell.d.ts +7 -43
  239. package/dist/shell/interactiveShell.d.ts.map +1 -1
  240. package/dist/shell/interactiveShell.js +166 -418
  241. package/dist/shell/interactiveShell.js.map +1 -1
  242. package/dist/shell/metricsTracker.d.ts +60 -0
  243. package/dist/shell/metricsTracker.d.ts.map +1 -0
  244. package/dist/shell/metricsTracker.js +119 -0
  245. package/dist/shell/metricsTracker.js.map +1 -0
  246. package/dist/shell/shellApp.d.ts +0 -2
  247. package/dist/shell/shellApp.d.ts.map +1 -1
  248. package/dist/shell/shellApp.js +9 -82
  249. package/dist/shell/shellApp.js.map +1 -1
  250. package/dist/shell/streamingOutputManager.d.ts +115 -0
  251. package/dist/shell/streamingOutputManager.d.ts.map +1 -0
  252. package/dist/shell/streamingOutputManager.js +225 -0
  253. package/dist/shell/streamingOutputManager.js.map +1 -0
  254. package/dist/shell/systemPrompt.d.ts.map +1 -1
  255. package/dist/shell/systemPrompt.js +4 -1
  256. package/dist/shell/systemPrompt.js.map +1 -1
  257. package/dist/shell/terminalInput.d.ts +124 -258
  258. package/dist/shell/terminalInput.d.ts.map +1 -1
  259. package/dist/shell/terminalInput.js +608 -1010
  260. package/dist/shell/terminalInput.js.map +1 -1
  261. package/dist/shell/terminalInputAdapter.d.ts +24 -106
  262. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  263. package/dist/shell/terminalInputAdapter.js +30 -140
  264. package/dist/shell/terminalInputAdapter.js.map +1 -1
  265. package/dist/subagents/taskRunner.d.ts +1 -7
  266. package/dist/subagents/taskRunner.d.ts.map +1 -1
  267. package/dist/subagents/taskRunner.js +47 -180
  268. package/dist/subagents/taskRunner.js.map +1 -1
  269. package/dist/tools/learnTools.js +4 -127
  270. package/dist/tools/learnTools.js.map +1 -1
  271. package/dist/tools/securityTools.d.ts +22 -0
  272. package/dist/tools/securityTools.d.ts.map +1 -0
  273. package/dist/tools/securityTools.js +448 -0
  274. package/dist/tools/securityTools.js.map +1 -0
  275. package/dist/ui/ShellUIAdapter.d.ts +1 -7
  276. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  277. package/dist/ui/ShellUIAdapter.js +18 -42
  278. package/dist/ui/ShellUIAdapter.js.map +1 -1
  279. package/dist/ui/display.d.ts +45 -24
  280. package/dist/ui/display.d.ts.map +1 -1
  281. package/dist/ui/display.js +274 -148
  282. package/dist/ui/display.js.map +1 -1
  283. package/dist/ui/persistentPrompt.d.ts +50 -0
  284. package/dist/ui/persistentPrompt.d.ts.map +1 -0
  285. package/dist/ui/persistentPrompt.js +92 -0
  286. package/dist/ui/persistentPrompt.js.map +1 -0
  287. package/dist/ui/terminalUISchema.d.ts +195 -0
  288. package/dist/ui/terminalUISchema.d.ts.map +1 -0
  289. package/dist/ui/terminalUISchema.js +113 -0
  290. package/dist/ui/terminalUISchema.js.map +1 -0
  291. package/dist/ui/theme.d.ts.map +1 -1
  292. package/dist/ui/theme.js +8 -6
  293. package/dist/ui/theme.js.map +1 -1
  294. package/dist/ui/toolDisplay.d.ts +158 -0
  295. package/dist/ui/toolDisplay.d.ts.map +1 -1
  296. package/dist/ui/toolDisplay.js +348 -0
  297. package/dist/ui/toolDisplay.js.map +1 -1
  298. package/dist/ui/unified/layout.d.ts +0 -20
  299. package/dist/ui/unified/layout.d.ts.map +1 -1
  300. package/dist/ui/unified/layout.js +216 -105
  301. package/dist/ui/unified/layout.js.map +1 -1
  302. package/package.json +4 -4
  303. package/scripts/deploy-security-capabilities.js +178 -0
  304. package/dist/core/hooks.d.ts +0 -113
  305. package/dist/core/hooks.d.ts.map +0 -1
  306. package/dist/core/hooks.js +0 -267
  307. package/dist/core/hooks.js.map +0 -1
  308. package/dist/core/metricsTracker.d.ts +0 -122
  309. package/dist/core/metricsTracker.d.ts.map +0 -1
  310. package/dist/core/metricsTracker.js.map +0 -1
  311. package/dist/core/securityAssessment.d.ts +0 -91
  312. package/dist/core/securityAssessment.d.ts.map +0 -1
  313. package/dist/core/securityAssessment.js +0 -580
  314. package/dist/core/securityAssessment.js.map +0 -1
  315. package/dist/core/verification.d.ts +0 -137
  316. package/dist/core/verification.d.ts.map +0 -1
  317. package/dist/core/verification.js +0 -323
  318. package/dist/core/verification.js.map +0 -1
  319. package/dist/subagents/agentConfig.d.ts +0 -27
  320. package/dist/subagents/agentConfig.d.ts.map +0 -1
  321. package/dist/subagents/agentConfig.js +0 -89
  322. package/dist/subagents/agentConfig.js.map +0 -1
  323. package/dist/subagents/agentRegistry.d.ts +0 -33
  324. package/dist/subagents/agentRegistry.d.ts.map +0 -1
  325. package/dist/subagents/agentRegistry.js +0 -162
  326. package/dist/subagents/agentRegistry.js.map +0 -1
  327. package/dist/utils/frontmatter.d.ts +0 -10
  328. package/dist/utils/frontmatter.d.ts.map +0 -1
  329. package/dist/utils/frontmatter.js +0 -78
  330. package/dist/utils/frontmatter.js.map +0 -1
@@ -0,0 +1,225 @@
1
+ /**
2
+ * StreamingOutputManager - Buffered output for Claude Code style UI
3
+ *
4
+ * Key design principle:
5
+ * - Buffer streaming output instead of writing directly to stdout
6
+ * - This keeps the cursor at the prompt area (no cursor movement during streaming)
7
+ * - Render complete response when streaming ends
8
+ * - The UI (prompt) stays fixed at the bottom
9
+ *
10
+ * Two modes:
11
+ * 1. Direct mode (bufferedMode=false): Write chunks directly to stdout (original behavior)
12
+ * 2. Buffered mode (bufferedMode=true): Collect chunks, render when complete
13
+ */
14
+ import { EventEmitter } from 'node:events';
15
+ import { writeLock } from '../ui/writeLock.js';
16
+ /**
17
+ * Manages streaming output with optional buffering.
18
+ *
19
+ * Buffered mode:
20
+ * - Chunks are collected in a buffer
21
+ * - Output is rendered all at once when streaming ends
22
+ * - Cursor stays at prompt area (no jumping during streaming)
23
+ *
24
+ * Direct mode:
25
+ * - Chunks written directly to stdout (original behavior)
26
+ * - Cursor moves with output
27
+ */
28
+ export class StreamingOutputManager extends EventEmitter {
29
+ state = {
30
+ isStreaming: false,
31
+ charsWritten: 0,
32
+ linesWritten: 0,
33
+ startTime: null,
34
+ };
35
+ writeStream;
36
+ lastChunk = '';
37
+ // Buffered mode support
38
+ bufferedMode = false;
39
+ outputBuffer = [];
40
+ constructor(writeStream = process.stdout) {
41
+ super();
42
+ this.writeStream = writeStream;
43
+ }
44
+ /**
45
+ * Enable or disable buffered mode
46
+ * When buffered, chunks are collected and rendered at the end
47
+ */
48
+ setBufferedMode(enabled) {
49
+ this.bufferedMode = enabled;
50
+ }
51
+ /**
52
+ * Check if buffered mode is enabled
53
+ */
54
+ isBufferedMode() {
55
+ return this.bufferedMode;
56
+ }
57
+ /**
58
+ * Get the buffered content (for rendering)
59
+ */
60
+ getBuffer() {
61
+ return this.outputBuffer.join('');
62
+ }
63
+ /**
64
+ * Clear the buffer
65
+ */
66
+ clearBuffer() {
67
+ this.outputBuffer = [];
68
+ }
69
+ /**
70
+ * Check if currently streaming output
71
+ */
72
+ isStreaming() {
73
+ return this.state.isStreaming;
74
+ }
75
+ /**
76
+ * Begin a streaming session
77
+ * Resets counters and marks streaming as active
78
+ * In buffered mode, clears the buffer
79
+ */
80
+ startStream() {
81
+ if (this.state.isStreaming) {
82
+ return; // Already streaming
83
+ }
84
+ this.state = {
85
+ isStreaming: true,
86
+ charsWritten: 0,
87
+ linesWritten: 0,
88
+ startTime: Date.now(),
89
+ };
90
+ this.lastChunk = '';
91
+ this.outputBuffer = [];
92
+ this.emit('stream-start');
93
+ }
94
+ /**
95
+ * Write a chunk of content
96
+ *
97
+ * In buffered mode: Collect in buffer (cursor stays at prompt)
98
+ * In direct mode: Write to stdout immediately
99
+ */
100
+ writeChunk(chunk) {
101
+ if (!chunk) {
102
+ return;
103
+ }
104
+ // Track statistics
105
+ this.state.charsWritten += chunk.length;
106
+ this.state.linesWritten += this.countNewlines(chunk);
107
+ this.lastChunk = chunk;
108
+ if (this.bufferedMode) {
109
+ // Buffered mode: collect chunks, don't write yet
110
+ this.outputBuffer.push(chunk);
111
+ }
112
+ else {
113
+ // Direct mode: write immediately
114
+ this.writeLocked(chunk);
115
+ }
116
+ this.emit('stream-chunk', chunk);
117
+ }
118
+ /**
119
+ * Write a complete line (adds newline)
120
+ */
121
+ writeLine(line = '') {
122
+ this.writeChunk(`${line}\n`);
123
+ }
124
+ /**
125
+ * End the streaming session
126
+ * In buffered mode: Renders the complete buffered output
127
+ * Returns statistics about what was streamed
128
+ */
129
+ endStream() {
130
+ const stats = {
131
+ duration: this.state.startTime ? Date.now() - this.state.startTime : 0,
132
+ chars: this.state.charsWritten,
133
+ lines: this.state.linesWritten,
134
+ buffer: undefined,
135
+ };
136
+ if (this.bufferedMode) {
137
+ // In buffered mode, render the collected output now
138
+ const bufferedContent = this.outputBuffer.join('');
139
+ stats.buffer = bufferedContent;
140
+ if (bufferedContent) {
141
+ this.writeLocked(bufferedContent);
142
+ // Ensure we end with a newline
143
+ if (!bufferedContent.endsWith('\n')) {
144
+ this.writeLocked('\n');
145
+ stats.lines += 1;
146
+ }
147
+ }
148
+ this.outputBuffer = [];
149
+ }
150
+ else {
151
+ // Direct mode: just ensure newline
152
+ if (this.lastChunk && !this.lastChunk.endsWith('\n')) {
153
+ this.writeLocked('\n');
154
+ stats.lines += 1;
155
+ }
156
+ }
157
+ this.state = {
158
+ isStreaming: false,
159
+ charsWritten: 0,
160
+ linesWritten: 0,
161
+ startTime: null,
162
+ };
163
+ this.lastChunk = '';
164
+ this.emit('stream-end', stats);
165
+ return stats;
166
+ }
167
+ /**
168
+ * Get current streaming statistics
169
+ */
170
+ getStats() {
171
+ return {
172
+ chars: this.state.charsWritten,
173
+ lines: this.state.linesWritten,
174
+ elapsed: this.state.startTime ? Date.now() - this.state.startTime : 0,
175
+ };
176
+ }
177
+ /**
178
+ * Force a flush (for buffered output)
179
+ */
180
+ flush() {
181
+ // Cork/uncork pattern for optimal buffering
182
+ if (typeof this.writeStream.cork === 'function') {
183
+ this.writeStream.cork();
184
+ process.nextTick(() => {
185
+ if (typeof this.writeStream.uncork === 'function') {
186
+ this.writeStream.uncork();
187
+ }
188
+ });
189
+ }
190
+ }
191
+ countNewlines(text) {
192
+ let count = 0;
193
+ for (const char of text) {
194
+ if (char === '\n') {
195
+ count += 1;
196
+ }
197
+ }
198
+ return count;
199
+ }
200
+ writeLocked(chunk) {
201
+ // If lock is already held, write directly - we're in a protected context
202
+ // This prevents queuing issues where content gets delayed during streaming
203
+ if (writeLock.isLocked()) {
204
+ this.writeStream.write(chunk);
205
+ return;
206
+ }
207
+ writeLock.withLock(() => {
208
+ this.writeStream.write(chunk);
209
+ }, 'streamingOutputManager.write');
210
+ }
211
+ }
212
+ /**
213
+ * Singleton instance for global use
214
+ */
215
+ let globalInstance = null;
216
+ export function getStreamingOutputManager() {
217
+ if (!globalInstance) {
218
+ globalInstance = new StreamingOutputManager();
219
+ }
220
+ return globalInstance;
221
+ }
222
+ export function resetStreamingOutputManager() {
223
+ globalInstance = null;
224
+ }
225
+ //# sourceMappingURL=streamingOutputManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamingOutputManager.js","sourceRoot":"","sources":["../../src/shell/streamingOutputManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"systemPrompt.d.ts","sourceRoot":"","sources":["../../src/shell/systemPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,sBAAsB,EAAE,EAC/B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CA2DR"}
1
+ {"version":3,"file":"systemPrompt.d.ts","sourceRoot":"","sources":["../../src/shell/systemPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,sBAAsB,EAAE,EAC/B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CA6DR"}
@@ -1,7 +1,9 @@
1
+ import { getMemoryForPrompt } from '../core/memorySystem.js';
1
2
  export function buildInteractiveSystemPrompt(basePrompt, profileLabel, tools, workspaceDir) {
2
3
  const name = profileLabel || 'Active Agent';
3
4
  const toolSummary = formatToolSummary(tools, { maxDescriptionLength: 80 });
4
5
  const workspace = workspaceDir || process.cwd();
6
+ const memoryContent = getMemoryForPrompt(workspace);
5
7
  const identityBlock = `
6
8
  CRITICAL IDENTITY: You ARE ${name}, an autonomous coding agent running INSIDE the erosolar-cli tool.
7
9
  You have FULL ACCESS to the workspace at: ${workspace}
@@ -51,7 +53,8 @@ ${capabilityLines.join('\n')}
51
53
  BEHAVIOR GUIDELINES:
52
54
  ${behaviorSection}
53
55
 
54
- Remember: answer truthfully, ground everything in the workspace, and let the logs show what you actually did. You CAN modify this codebase.`;
56
+ Remember: answer truthfully, ground everything in the workspace, and let the logs show what you actually did. You CAN modify this codebase.
57
+ ${memoryContent}`;
55
58
  }
56
59
  function formatToolSummary(tools, options = {}) {
57
60
  if (!tools.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../../src/shell/systemPrompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,YAAoB,EACpB,KAA+B,EAC/B,YAAqB;IAErB,MAAM,IAAI,GAAG,YAAY,IAAI,cAAc,CAAC;IAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhD,MAAM,aAAa,GAAG;6BACK,IAAI;4CACW,SAAS;;;CAGpD,CAAC;IAEA,MAAM,eAAe,GAAG;QACtB,sCAAsC;QACtC,mDAAmD;QACnD,sEAAsE;QACtE,qCAAqC;QACrC,kDAAkD;QAClD,uDAAuD;KACxD,CAAC;IAEF,MAAM,kBAAkB,GAAG;QACzB,oVAAoV;QACpV,iHAAiH;QACjH,0EAA0E;QAC1E,6DAA6D;QAC7D,+CAA+C;QAC/C,6KAA6K;QAC7K,wLAAwL;QACxL,gIAAgI;QAChI,mIAAmI;QACnI,oIAAoI;QACpI,0RAA0R;QAC1R,qVAAqV;QACrV,0OAA0O;QAC1O,oNAAoN;QACpN,8NAA8N;QAC9N,wLAAwL;QACxL,oMAAoM;KACrM,CAAC;IAEF,MAAM,eAAe,GAAG,kBAAkB;SACvC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,GAAG,UAAU;EACpB,aAAa;UACL,IAAI;;;EAGZ,WAAW;;;EAGX,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG1B,eAAe;;4IAE2H,CAAC;AAC7I,CAAC;AAMD,SAAS,iBAAiB,CAAC,KAA+B,EAAE,UAA8B,EAAE;IAC1F,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,6CAA6C,CAAC;IACvD,CAAC;IACD,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACzG,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACpE,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,SAAkB;IACjD,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../../src/shell/systemPrompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,YAAoB,EACpB,KAA+B,EAC/B,YAAqB;IAErB,MAAM,IAAI,GAAG,YAAY,IAAI,cAAc,CAAC;IAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG;6BACK,IAAI;4CACW,SAAS;;;CAGpD,CAAC;IAEA,MAAM,eAAe,GAAG;QACtB,sCAAsC;QACtC,mDAAmD;QACnD,sEAAsE;QACtE,qCAAqC;QACrC,kDAAkD;QAClD,uDAAuD;KACxD,CAAC;IAEF,MAAM,kBAAkB,GAAG;QACzB,oVAAoV;QACpV,iHAAiH;QACjH,0EAA0E;QAC1E,6DAA6D;QAC7D,+CAA+C;QAC/C,6KAA6K;QAC7K,wLAAwL;QACxL,gIAAgI;QAChI,mIAAmI;QACnI,oIAAoI;QACpI,0RAA0R;QAC1R,qVAAqV;QACrV,0OAA0O;QAC1O,oNAAoN;QACpN,8NAA8N;QAC9N,wLAAwL;QACxL,oMAAoM;KACrM,CAAC;IAEF,MAAM,eAAe,GAAG,kBAAkB;SACvC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,GAAG,UAAU;EACpB,aAAa;UACL,IAAI;;;EAGZ,WAAW;;;EAGX,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG1B,eAAe;;;EAGf,aAAa,EAAE,CAAC;AAClB,CAAC;AAMD,SAAS,iBAAiB,CAAC,KAA+B,EAAE,UAA8B,EAAE;IAC1F,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,6CAA6C,CAAC;IACvD,CAAC;IACD,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACzG,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACpE,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,SAAkB;IACjD,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AACtD,CAAC"}