erosolar-cli 1.7.356 → 1.7.357

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 (328) hide show
  1. package/README.md +24 -148
  2. package/dist/bin/erosolar.js +5 -21
  3. package/dist/bin/erosolar.js.map +1 -1
  4. package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -1
  5. package/dist/capabilities/agentSpawningCapability.js +56 -31
  6. package/dist/capabilities/agentSpawningCapability.js.map +1 -1
  7. package/dist/contracts/agent-schemas.json +0 -15
  8. package/dist/contracts/tools.schema.json +0 -9
  9. package/dist/core/agent.d.ts +2 -2
  10. package/dist/core/agent.d.ts.map +1 -1
  11. package/dist/core/agent.js.map +1 -1
  12. package/dist/core/customCommands.d.ts +1 -0
  13. package/dist/core/customCommands.d.ts.map +1 -1
  14. package/dist/core/customCommands.js +3 -0
  15. package/dist/core/customCommands.js.map +1 -1
  16. package/dist/core/hooks.d.ts +113 -0
  17. package/dist/core/hooks.d.ts.map +1 -0
  18. package/dist/core/hooks.js +267 -0
  19. package/dist/core/hooks.js.map +1 -0
  20. package/dist/core/metricsTracker.d.ts +122 -0
  21. package/dist/core/metricsTracker.d.ts.map +1 -0
  22. package/dist/{alpha-zero → core}/metricsTracker.js +2 -5
  23. package/dist/core/metricsTracker.js.map +1 -0
  24. package/dist/core/securityAssessment.d.ts +91 -0
  25. package/dist/core/securityAssessment.d.ts.map +1 -0
  26. package/dist/core/securityAssessment.js +580 -0
  27. package/dist/core/securityAssessment.js.map +1 -0
  28. package/dist/core/sessionStore.d.ts +2 -0
  29. package/dist/core/sessionStore.d.ts.map +1 -1
  30. package/dist/core/sessionStore.js +1 -0
  31. package/dist/core/sessionStore.js.map +1 -1
  32. package/dist/core/toolPreconditions.d.ts.map +1 -1
  33. package/dist/core/toolPreconditions.js +0 -14
  34. package/dist/core/toolPreconditions.js.map +1 -1
  35. package/dist/core/toolRuntime.d.ts +22 -1
  36. package/dist/core/toolRuntime.d.ts.map +1 -1
  37. package/dist/core/toolRuntime.js +0 -5
  38. package/dist/core/toolRuntime.js.map +1 -1
  39. package/dist/core/toolValidation.d.ts.map +1 -1
  40. package/dist/core/toolValidation.js +14 -3
  41. package/dist/core/toolValidation.js.map +1 -1
  42. package/dist/core/validationRunner.d.ts +1 -3
  43. package/dist/core/validationRunner.d.ts.map +1 -1
  44. package/dist/core/validationRunner.js.map +1 -1
  45. package/dist/core/verification.d.ts +137 -0
  46. package/dist/core/verification.d.ts.map +1 -0
  47. package/dist/core/verification.js +323 -0
  48. package/dist/core/verification.js.map +1 -0
  49. package/dist/headless/headlessApp.d.ts.map +1 -1
  50. package/dist/headless/headlessApp.js +21 -0
  51. package/dist/headless/headlessApp.js.map +1 -1
  52. package/dist/mcp/sseClient.d.ts.map +1 -1
  53. package/dist/mcp/sseClient.js +9 -18
  54. package/dist/mcp/sseClient.js.map +1 -1
  55. package/dist/plugins/tools/build/buildPlugin.d.ts +0 -6
  56. package/dist/plugins/tools/build/buildPlugin.d.ts.map +1 -1
  57. package/dist/plugins/tools/build/buildPlugin.js +4 -10
  58. package/dist/plugins/tools/build/buildPlugin.js.map +1 -1
  59. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  60. package/dist/plugins/tools/nodeDefaults.js +0 -2
  61. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  62. package/dist/runtime/agentSession.d.ts +2 -2
  63. package/dist/runtime/agentSession.d.ts.map +1 -1
  64. package/dist/runtime/agentSession.js +2 -2
  65. package/dist/runtime/agentSession.js.map +1 -1
  66. package/dist/shell/interactiveShell.d.ts +41 -7
  67. package/dist/shell/interactiveShell.d.ts.map +1 -1
  68. package/dist/shell/interactiveShell.js +399 -166
  69. package/dist/shell/interactiveShell.js.map +1 -1
  70. package/dist/shell/shellApp.d.ts +2 -0
  71. package/dist/shell/shellApp.d.ts.map +1 -1
  72. package/dist/shell/shellApp.js +82 -9
  73. package/dist/shell/shellApp.js.map +1 -1
  74. package/dist/shell/systemPrompt.d.ts.map +1 -1
  75. package/dist/shell/systemPrompt.js +1 -4
  76. package/dist/shell/systemPrompt.js.map +1 -1
  77. package/dist/shell/terminalInput.d.ts +250 -125
  78. package/dist/shell/terminalInput.d.ts.map +1 -1
  79. package/dist/shell/terminalInput.js +1071 -612
  80. package/dist/shell/terminalInput.js.map +1 -1
  81. package/dist/shell/terminalInputAdapter.d.ts +106 -24
  82. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  83. package/dist/shell/terminalInputAdapter.js +137 -30
  84. package/dist/shell/terminalInputAdapter.js.map +1 -1
  85. package/dist/subagents/agentConfig.d.ts +27 -0
  86. package/dist/subagents/agentConfig.d.ts.map +1 -0
  87. package/dist/subagents/agentConfig.js +89 -0
  88. package/dist/subagents/agentConfig.js.map +1 -0
  89. package/dist/subagents/agentRegistry.d.ts +33 -0
  90. package/dist/subagents/agentRegistry.d.ts.map +1 -0
  91. package/dist/subagents/agentRegistry.js +162 -0
  92. package/dist/subagents/agentRegistry.js.map +1 -0
  93. package/dist/subagents/taskRunner.d.ts +7 -1
  94. package/dist/subagents/taskRunner.d.ts.map +1 -1
  95. package/dist/subagents/taskRunner.js +200 -49
  96. package/dist/subagents/taskRunner.js.map +1 -1
  97. package/dist/ui/ShellUIAdapter.d.ts +7 -1
  98. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  99. package/dist/ui/ShellUIAdapter.js +42 -18
  100. package/dist/ui/ShellUIAdapter.js.map +1 -1
  101. package/dist/ui/display.d.ts +24 -45
  102. package/dist/ui/display.d.ts.map +1 -1
  103. package/dist/ui/display.js +148 -274
  104. package/dist/ui/display.js.map +1 -1
  105. package/dist/ui/theme.d.ts.map +1 -1
  106. package/dist/ui/theme.js +6 -8
  107. package/dist/ui/theme.js.map +1 -1
  108. package/dist/ui/toolDisplay.d.ts +0 -158
  109. package/dist/ui/toolDisplay.d.ts.map +1 -1
  110. package/dist/ui/toolDisplay.js +0 -348
  111. package/dist/ui/toolDisplay.js.map +1 -1
  112. package/dist/ui/unified/layout.d.ts +20 -0
  113. package/dist/ui/unified/layout.d.ts.map +1 -1
  114. package/dist/ui/unified/layout.js +105 -216
  115. package/dist/ui/unified/layout.js.map +1 -1
  116. package/dist/utils/frontmatter.d.ts +10 -0
  117. package/dist/utils/frontmatter.d.ts.map +1 -0
  118. package/dist/utils/frontmatter.js +78 -0
  119. package/dist/utils/frontmatter.js.map +1 -0
  120. package/package.json +4 -4
  121. package/dist/alpha-zero/agentWrapper.d.ts +0 -84
  122. package/dist/alpha-zero/agentWrapper.d.ts.map +0 -1
  123. package/dist/alpha-zero/agentWrapper.js +0 -171
  124. package/dist/alpha-zero/agentWrapper.js.map +0 -1
  125. package/dist/alpha-zero/codeEvaluator.d.ts +0 -25
  126. package/dist/alpha-zero/codeEvaluator.d.ts.map +0 -1
  127. package/dist/alpha-zero/codeEvaluator.js +0 -273
  128. package/dist/alpha-zero/codeEvaluator.js.map +0 -1
  129. package/dist/alpha-zero/competitiveRunner.d.ts +0 -66
  130. package/dist/alpha-zero/competitiveRunner.d.ts.map +0 -1
  131. package/dist/alpha-zero/competitiveRunner.js +0 -224
  132. package/dist/alpha-zero/competitiveRunner.js.map +0 -1
  133. package/dist/alpha-zero/index.d.ts +0 -67
  134. package/dist/alpha-zero/index.d.ts.map +0 -1
  135. package/dist/alpha-zero/index.js +0 -99
  136. package/dist/alpha-zero/index.js.map +0 -1
  137. package/dist/alpha-zero/introspection.d.ts +0 -128
  138. package/dist/alpha-zero/introspection.d.ts.map +0 -1
  139. package/dist/alpha-zero/introspection.js +0 -300
  140. package/dist/alpha-zero/introspection.js.map +0 -1
  141. package/dist/alpha-zero/metricsTracker.d.ts +0 -71
  142. package/dist/alpha-zero/metricsTracker.d.ts.map +0 -1
  143. package/dist/alpha-zero/metricsTracker.js.map +0 -1
  144. package/dist/alpha-zero/security/core.d.ts +0 -125
  145. package/dist/alpha-zero/security/core.d.ts.map +0 -1
  146. package/dist/alpha-zero/security/core.js +0 -271
  147. package/dist/alpha-zero/security/core.js.map +0 -1
  148. package/dist/alpha-zero/security/google.d.ts +0 -125
  149. package/dist/alpha-zero/security/google.d.ts.map +0 -1
  150. package/dist/alpha-zero/security/google.js +0 -311
  151. package/dist/alpha-zero/security/google.js.map +0 -1
  152. package/dist/alpha-zero/security/googleLoader.d.ts +0 -17
  153. package/dist/alpha-zero/security/googleLoader.d.ts.map +0 -1
  154. package/dist/alpha-zero/security/googleLoader.js +0 -41
  155. package/dist/alpha-zero/security/googleLoader.js.map +0 -1
  156. package/dist/alpha-zero/security/index.d.ts +0 -29
  157. package/dist/alpha-zero/security/index.d.ts.map +0 -1
  158. package/dist/alpha-zero/security/index.js +0 -32
  159. package/dist/alpha-zero/security/index.js.map +0 -1
  160. package/dist/alpha-zero/security/simulation.d.ts +0 -124
  161. package/dist/alpha-zero/security/simulation.d.ts.map +0 -1
  162. package/dist/alpha-zero/security/simulation.js +0 -277
  163. package/dist/alpha-zero/security/simulation.js.map +0 -1
  164. package/dist/alpha-zero/selfModification.d.ts +0 -109
  165. package/dist/alpha-zero/selfModification.d.ts.map +0 -1
  166. package/dist/alpha-zero/selfModification.js +0 -233
  167. package/dist/alpha-zero/selfModification.js.map +0 -1
  168. package/dist/alpha-zero/types.d.ts +0 -170
  169. package/dist/alpha-zero/types.d.ts.map +0 -1
  170. package/dist/alpha-zero/types.js +0 -31
  171. package/dist/alpha-zero/types.js.map +0 -1
  172. package/dist/capabilities/securityTestingCapability.d.ts +0 -13
  173. package/dist/capabilities/securityTestingCapability.d.ts.map +0 -1
  174. package/dist/capabilities/securityTestingCapability.js +0 -25
  175. package/dist/capabilities/securityTestingCapability.js.map +0 -1
  176. package/dist/core/aiFlowOptimizer.d.ts +0 -26
  177. package/dist/core/aiFlowOptimizer.d.ts.map +0 -1
  178. package/dist/core/aiFlowOptimizer.js +0 -31
  179. package/dist/core/aiFlowOptimizer.js.map +0 -1
  180. package/dist/core/aiOptimizationEngine.d.ts +0 -158
  181. package/dist/core/aiOptimizationEngine.d.ts.map +0 -1
  182. package/dist/core/aiOptimizationEngine.js +0 -428
  183. package/dist/core/aiOptimizationEngine.js.map +0 -1
  184. package/dist/core/aiOptimizationIntegration.d.ts +0 -93
  185. package/dist/core/aiOptimizationIntegration.d.ts.map +0 -1
  186. package/dist/core/aiOptimizationIntegration.js +0 -250
  187. package/dist/core/aiOptimizationIntegration.js.map +0 -1
  188. package/dist/core/enhancedErrorRecovery.d.ts +0 -100
  189. package/dist/core/enhancedErrorRecovery.d.ts.map +0 -1
  190. package/dist/core/enhancedErrorRecovery.js +0 -345
  191. package/dist/core/enhancedErrorRecovery.js.map +0 -1
  192. package/dist/core/hooksSystem.d.ts +0 -65
  193. package/dist/core/hooksSystem.d.ts.map +0 -1
  194. package/dist/core/hooksSystem.js +0 -273
  195. package/dist/core/hooksSystem.js.map +0 -1
  196. package/dist/core/memorySystem.d.ts +0 -48
  197. package/dist/core/memorySystem.d.ts.map +0 -1
  198. package/dist/core/memorySystem.js +0 -271
  199. package/dist/core/memorySystem.js.map +0 -1
  200. package/dist/core/unified/errors.d.ts +0 -189
  201. package/dist/core/unified/errors.d.ts.map +0 -1
  202. package/dist/core/unified/errors.js +0 -497
  203. package/dist/core/unified/errors.js.map +0 -1
  204. package/dist/core/unified/index.d.ts +0 -19
  205. package/dist/core/unified/index.d.ts.map +0 -1
  206. package/dist/core/unified/index.js +0 -68
  207. package/dist/core/unified/index.js.map +0 -1
  208. package/dist/core/unified/schema.d.ts +0 -101
  209. package/dist/core/unified/schema.d.ts.map +0 -1
  210. package/dist/core/unified/schema.js +0 -350
  211. package/dist/core/unified/schema.js.map +0 -1
  212. package/dist/core/unified/toolRuntime.d.ts +0 -179
  213. package/dist/core/unified/toolRuntime.d.ts.map +0 -1
  214. package/dist/core/unified/toolRuntime.js +0 -517
  215. package/dist/core/unified/toolRuntime.js.map +0 -1
  216. package/dist/core/unified/tools.d.ts +0 -127
  217. package/dist/core/unified/tools.d.ts.map +0 -1
  218. package/dist/core/unified/tools.js +0 -1333
  219. package/dist/core/unified/tools.js.map +0 -1
  220. package/dist/core/unified/types.d.ts +0 -352
  221. package/dist/core/unified/types.d.ts.map +0 -1
  222. package/dist/core/unified/types.js +0 -12
  223. package/dist/core/unified/types.js.map +0 -1
  224. package/dist/core/unified/version.d.ts +0 -209
  225. package/dist/core/unified/version.d.ts.map +0 -1
  226. package/dist/core/unified/version.js +0 -454
  227. package/dist/core/unified/version.js.map +0 -1
  228. package/dist/plugins/tools/security/securityPlugin.d.ts +0 -3
  229. package/dist/plugins/tools/security/securityPlugin.d.ts.map +0 -1
  230. package/dist/plugins/tools/security/securityPlugin.js +0 -12
  231. package/dist/plugins/tools/security/securityPlugin.js.map +0 -1
  232. package/dist/security/active-stack-security.d.ts +0 -112
  233. package/dist/security/active-stack-security.d.ts.map +0 -1
  234. package/dist/security/active-stack-security.js +0 -296
  235. package/dist/security/active-stack-security.js.map +0 -1
  236. package/dist/security/advanced-persistence-research.d.ts +0 -92
  237. package/dist/security/advanced-persistence-research.d.ts.map +0 -1
  238. package/dist/security/advanced-persistence-research.js +0 -195
  239. package/dist/security/advanced-persistence-research.js.map +0 -1
  240. package/dist/security/advanced-targeting.d.ts +0 -119
  241. package/dist/security/advanced-targeting.d.ts.map +0 -1
  242. package/dist/security/advanced-targeting.js +0 -233
  243. package/dist/security/advanced-targeting.js.map +0 -1
  244. package/dist/security/assessment/vulnerabilityAssessment.d.ts +0 -104
  245. package/dist/security/assessment/vulnerabilityAssessment.d.ts.map +0 -1
  246. package/dist/security/assessment/vulnerabilityAssessment.js +0 -315
  247. package/dist/security/assessment/vulnerabilityAssessment.js.map +0 -1
  248. package/dist/security/authorization/securityAuthorization.d.ts +0 -88
  249. package/dist/security/authorization/securityAuthorization.d.ts.map +0 -1
  250. package/dist/security/authorization/securityAuthorization.js +0 -172
  251. package/dist/security/authorization/securityAuthorization.js.map +0 -1
  252. package/dist/security/comprehensive-targeting.d.ts +0 -85
  253. package/dist/security/comprehensive-targeting.d.ts.map +0 -1
  254. package/dist/security/comprehensive-targeting.js +0 -438
  255. package/dist/security/comprehensive-targeting.js.map +0 -1
  256. package/dist/security/global-security-integration.d.ts +0 -91
  257. package/dist/security/global-security-integration.d.ts.map +0 -1
  258. package/dist/security/global-security-integration.js +0 -218
  259. package/dist/security/global-security-integration.js.map +0 -1
  260. package/dist/security/index.d.ts +0 -38
  261. package/dist/security/index.d.ts.map +0 -1
  262. package/dist/security/index.js +0 -47
  263. package/dist/security/index.js.map +0 -1
  264. package/dist/security/persistence-analyzer.d.ts +0 -56
  265. package/dist/security/persistence-analyzer.d.ts.map +0 -1
  266. package/dist/security/persistence-analyzer.js +0 -187
  267. package/dist/security/persistence-analyzer.js.map +0 -1
  268. package/dist/security/persistence-cli.d.ts +0 -36
  269. package/dist/security/persistence-cli.d.ts.map +0 -1
  270. package/dist/security/persistence-cli.js +0 -160
  271. package/dist/security/persistence-cli.js.map +0 -1
  272. package/dist/security/persistence-research.d.ts +0 -92
  273. package/dist/security/persistence-research.d.ts.map +0 -1
  274. package/dist/security/persistence-research.js +0 -364
  275. package/dist/security/persistence-research.js.map +0 -1
  276. package/dist/security/research/persistenceResearch.d.ts +0 -97
  277. package/dist/security/research/persistenceResearch.d.ts.map +0 -1
  278. package/dist/security/research/persistenceResearch.js +0 -282
  279. package/dist/security/research/persistenceResearch.js.map +0 -1
  280. package/dist/security/security-integration.d.ts +0 -74
  281. package/dist/security/security-integration.d.ts.map +0 -1
  282. package/dist/security/security-integration.js +0 -137
  283. package/dist/security/security-integration.js.map +0 -1
  284. package/dist/security/security-testing-framework.d.ts +0 -112
  285. package/dist/security/security-testing-framework.d.ts.map +0 -1
  286. package/dist/security/security-testing-framework.js +0 -364
  287. package/dist/security/security-testing-framework.js.map +0 -1
  288. package/dist/security/simulation/attackSimulation.d.ts +0 -93
  289. package/dist/security/simulation/attackSimulation.d.ts.map +0 -1
  290. package/dist/security/simulation/attackSimulation.js +0 -341
  291. package/dist/security/simulation/attackSimulation.js.map +0 -1
  292. package/dist/security/strategic-operations.d.ts +0 -100
  293. package/dist/security/strategic-operations.d.ts.map +0 -1
  294. package/dist/security/strategic-operations.js +0 -276
  295. package/dist/security/strategic-operations.js.map +0 -1
  296. package/dist/security/tool-security-wrapper.d.ts +0 -58
  297. package/dist/security/tool-security-wrapper.d.ts.map +0 -1
  298. package/dist/security/tool-security-wrapper.js +0 -156
  299. package/dist/security/tool-security-wrapper.js.map +0 -1
  300. package/dist/shell/claudeCodeStreamHandler.d.ts +0 -145
  301. package/dist/shell/claudeCodeStreamHandler.d.ts.map +0 -1
  302. package/dist/shell/claudeCodeStreamHandler.js +0 -322
  303. package/dist/shell/claudeCodeStreamHandler.js.map +0 -1
  304. package/dist/shell/inputQueueManager.d.ts +0 -144
  305. package/dist/shell/inputQueueManager.d.ts.map +0 -1
  306. package/dist/shell/inputQueueManager.js +0 -290
  307. package/dist/shell/inputQueueManager.js.map +0 -1
  308. package/dist/shell/metricsTracker.d.ts +0 -60
  309. package/dist/shell/metricsTracker.d.ts.map +0 -1
  310. package/dist/shell/metricsTracker.js +0 -119
  311. package/dist/shell/metricsTracker.js.map +0 -1
  312. package/dist/shell/streamingOutputManager.d.ts +0 -115
  313. package/dist/shell/streamingOutputManager.d.ts.map +0 -1
  314. package/dist/shell/streamingOutputManager.js +0 -225
  315. package/dist/shell/streamingOutputManager.js.map +0 -1
  316. package/dist/tools/securityTools.d.ts +0 -22
  317. package/dist/tools/securityTools.d.ts.map +0 -1
  318. package/dist/tools/securityTools.js +0 -448
  319. package/dist/tools/securityTools.js.map +0 -1
  320. package/dist/ui/persistentPrompt.d.ts +0 -50
  321. package/dist/ui/persistentPrompt.d.ts.map +0 -1
  322. package/dist/ui/persistentPrompt.js +0 -92
  323. package/dist/ui/persistentPrompt.js.map +0 -1
  324. package/dist/ui/terminalUISchema.d.ts +0 -195
  325. package/dist/ui/terminalUISchema.d.ts.map +0 -1
  326. package/dist/ui/terminalUISchema.js +0 -113
  327. package/dist/ui/terminalUISchema.js.map +0 -1
  328. package/scripts/deploy-security-capabilities.js +0 -178
@@ -1,290 +0,0 @@
1
- /**
2
- * InputQueueManager - Queue-based input handling for Claude Code style streaming
3
- *
4
- * Key principles from Claude Code:
5
- * 1. Readline handles input - Uses Node.js readline module
6
- * 2. User can type while streaming - Input is queued in memory, not rendered
7
- * 3. Queue-based approach: User types → stored in queue → processed after streaming ends
8
- *
9
- * The key insight is that the cursor is never moved during streaming.
10
- * Input is captured "invisibly" while streaming, then processed when streaming ends.
11
- */
12
- import { EventEmitter } from 'node:events';
13
- /**
14
- * Manages input queuing during streaming output.
15
- *
16
- * When streaming is active:
17
- * - Captures keystrokes into a buffer
18
- * - On Enter, queues the input for later processing
19
- * - Provides methods to process queue after streaming ends
20
- */
21
- export class InputQueueManager extends EventEmitter {
22
- state = {
23
- isCapturing: false,
24
- buffer: '',
25
- cursorPosition: 0,
26
- queue: [],
27
- };
28
- inputIdCounter = 0;
29
- maxQueueSize;
30
- maxBufferLength;
31
- constructor(options = {}) {
32
- super();
33
- this.maxQueueSize = options.maxQueueSize ?? 100;
34
- this.maxBufferLength = options.maxBufferLength ?? 10000;
35
- }
36
- /**
37
- * Start capturing input (during streaming)
38
- * Input will be buffered and queued, not immediately processed
39
- */
40
- startCapturing() {
41
- if (this.state.isCapturing) {
42
- return;
43
- }
44
- this.state.isCapturing = true;
45
- this.state.buffer = '';
46
- this.state.cursorPosition = 0;
47
- this.emit('capture-start');
48
- }
49
- /**
50
- * Stop capturing input (after streaming ends)
51
- * Returns any remaining buffer content
52
- */
53
- stopCapturing() {
54
- const remaining = this.state.buffer;
55
- this.state.isCapturing = false;
56
- this.state.buffer = '';
57
- this.state.cursorPosition = 0;
58
- this.emit('capture-end');
59
- return remaining;
60
- }
61
- /**
62
- * Check if currently capturing input
63
- */
64
- isCapturing() {
65
- return this.state.isCapturing;
66
- }
67
- /**
68
- * Handle a character input
69
- * During capturing, adds to buffer; otherwise ignored
70
- */
71
- handleChar(char) {
72
- if (!this.state.isCapturing) {
73
- return;
74
- }
75
- // Respect buffer length limit
76
- if (this.state.buffer.length >= this.maxBufferLength) {
77
- return;
78
- }
79
- // Insert at cursor position
80
- this.state.buffer =
81
- this.state.buffer.slice(0, this.state.cursorPosition) +
82
- char +
83
- this.state.buffer.slice(this.state.cursorPosition);
84
- this.state.cursorPosition += char.length;
85
- }
86
- /**
87
- * Handle backspace
88
- */
89
- handleBackspace() {
90
- if (!this.state.isCapturing || this.state.cursorPosition === 0) {
91
- return;
92
- }
93
- this.state.buffer =
94
- this.state.buffer.slice(0, this.state.cursorPosition - 1) +
95
- this.state.buffer.slice(this.state.cursorPosition);
96
- this.state.cursorPosition = Math.max(0, this.state.cursorPosition - 1);
97
- }
98
- /**
99
- * Handle delete key
100
- */
101
- handleDelete() {
102
- if (!this.state.isCapturing || this.state.cursorPosition >= this.state.buffer.length) {
103
- return;
104
- }
105
- this.state.buffer =
106
- this.state.buffer.slice(0, this.state.cursorPosition) +
107
- this.state.buffer.slice(this.state.cursorPosition + 1);
108
- }
109
- /**
110
- * Handle cursor left
111
- */
112
- handleCursorLeft() {
113
- if (!this.state.isCapturing)
114
- return;
115
- this.state.cursorPosition = Math.max(0, this.state.cursorPosition - 1);
116
- }
117
- /**
118
- * Handle cursor right
119
- */
120
- handleCursorRight() {
121
- if (!this.state.isCapturing)
122
- return;
123
- this.state.cursorPosition = Math.min(this.state.buffer.length, this.state.cursorPosition + 1);
124
- }
125
- /**
126
- * Handle Enter - queue the current buffer
127
- * Returns the queued input or null if buffer was empty
128
- */
129
- handleSubmit() {
130
- if (!this.state.isCapturing) {
131
- return null;
132
- }
133
- const text = this.state.buffer.trim();
134
- if (!text) {
135
- return null;
136
- }
137
- // Check queue size limit
138
- if (this.state.queue.length >= this.maxQueueSize) {
139
- // Remove oldest non-command input to make room
140
- const idx = this.state.queue.findIndex(q => q.type !== 'command');
141
- if (idx >= 0) {
142
- this.state.queue.splice(idx, 1);
143
- }
144
- else {
145
- return null; // Queue is full of commands
146
- }
147
- }
148
- const input = {
149
- id: `input-${++this.inputIdCounter}`,
150
- text,
151
- timestamp: Date.now(),
152
- type: text.startsWith('/') ? 'command' : 'message',
153
- };
154
- this.state.queue.push(input);
155
- this.state.buffer = '';
156
- this.state.cursorPosition = 0;
157
- this.emit('input-queued', input);
158
- return input;
159
- }
160
- /**
161
- * Handle Ctrl+C during capture - queue an interrupt
162
- */
163
- handleInterrupt() {
164
- const input = {
165
- id: `input-${++this.inputIdCounter}`,
166
- text: '',
167
- timestamp: Date.now(),
168
- type: 'interrupt',
169
- };
170
- // Interrupt goes to front of queue
171
- this.state.queue.unshift(input);
172
- this.state.buffer = '';
173
- this.state.cursorPosition = 0;
174
- this.emit('input-queued', input);
175
- return input;
176
- }
177
- /**
178
- * Get current buffer contents (for display purposes)
179
- */
180
- getBuffer() {
181
- return this.state.buffer;
182
- }
183
- /**
184
- * Get current cursor position
185
- */
186
- getCursorPosition() {
187
- return this.state.cursorPosition;
188
- }
189
- /**
190
- * Get the number of queued inputs
191
- */
192
- getQueueLength() {
193
- return this.state.queue.length;
194
- }
195
- /**
196
- * Check if there are queued inputs
197
- */
198
- hasQueuedInput() {
199
- return this.state.queue.length > 0;
200
- }
201
- /**
202
- * Get the next queued input without removing it
203
- */
204
- peekQueue() {
205
- return this.state.queue[0];
206
- }
207
- /**
208
- * Get and remove the next queued input
209
- */
210
- dequeue() {
211
- const input = this.state.queue.shift();
212
- if (input) {
213
- this.emit('input-processed', input);
214
- }
215
- return input;
216
- }
217
- /**
218
- * Get all queued inputs (copy)
219
- */
220
- getQueue() {
221
- return [...this.state.queue];
222
- }
223
- /**
224
- * Clear all queued inputs
225
- */
226
- clearQueue() {
227
- const hadItems = this.state.queue.length > 0;
228
- this.state.queue = [];
229
- if (hadItems) {
230
- this.emit('queue-cleared');
231
- }
232
- }
233
- /**
234
- * Clear the current buffer
235
- */
236
- clearBuffer() {
237
- this.state.buffer = '';
238
- this.state.cursorPosition = 0;
239
- }
240
- /**
241
- * Set the buffer content directly (for paste handling)
242
- */
243
- setBuffer(content, cursorPos) {
244
- this.state.buffer = content.slice(0, this.maxBufferLength);
245
- this.state.cursorPosition = cursorPos ?? this.state.buffer.length;
246
- }
247
- /**
248
- * Get queue summary for display
249
- */
250
- getQueueSummary() {
251
- const count = this.state.queue.length;
252
- if (count === 0) {
253
- return '';
254
- }
255
- const commands = this.state.queue.filter(q => q.type === 'command').length;
256
- const messages = this.state.queue.filter(q => q.type === 'message').length;
257
- const interrupts = this.state.queue.filter(q => q.type === 'interrupt').length;
258
- const parts = [];
259
- if (interrupts > 0) {
260
- parts.push(`${interrupts} interrupt${interrupts === 1 ? '' : 's'}`);
261
- }
262
- if (commands > 0) {
263
- parts.push(`${commands} command${commands === 1 ? '' : 's'}`);
264
- }
265
- if (messages > 0) {
266
- parts.push(`${messages} message${messages === 1 ? '' : 's'}`);
267
- }
268
- return parts.join(', ') + ' queued';
269
- }
270
- /**
271
- * Get full state (for debugging)
272
- */
273
- getState() {
274
- return { ...this.state, queue: [...this.state.queue] };
275
- }
276
- }
277
- /**
278
- * Singleton instance for global use
279
- */
280
- let globalInstance = null;
281
- export function getInputQueueManager() {
282
- if (!globalInstance) {
283
- globalInstance = new InputQueueManager();
284
- }
285
- return globalInstance;
286
- }
287
- export function resetInputQueueManager() {
288
- globalInstance = null;
289
- }
290
- //# sourceMappingURL=inputQueueManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inputQueueManager.js","sourceRoot":"","sources":["../../src/shell/inputQueueManager.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Simple metrics tracker for session performance monitoring.
3
- *
4
- * Tracks basic performance metrics like message count, response times,
5
- * token usage, and tool call success rates.
6
- */
7
- import type { ProviderUsage } from '../core/types.js';
8
- export interface AgentPerformanceMetrics {
9
- sessionId: string;
10
- totalMessages: number;
11
- totalToolCalls: number;
12
- totalTokensUsed: number;
13
- totalTimeMs: number;
14
- successfulToolCalls: number;
15
- failedToolCalls: number;
16
- avgResponseTimeMs: number;
17
- }
18
- export interface ImprovementSuggestion {
19
- category: 'performance' | 'quality' | 'efficiency' | 'error-handling';
20
- severity: 'low' | 'medium' | 'high';
21
- message: string;
22
- suggestedAction: string;
23
- }
24
- /**
25
- * Tracks performance metrics for an agent session.
26
- */
27
- export declare class MetricsTracker {
28
- private metrics;
29
- private responseTimes;
30
- constructor(sessionId: string);
31
- /**
32
- * Record a message exchange.
33
- */
34
- recordMessage(elapsedMs: number, usage?: ProviderUsage | null): void;
35
- /**
36
- * Record a tool call.
37
- */
38
- recordToolCall(success: boolean): void;
39
- /**
40
- * Update running averages.
41
- */
42
- private updateAverages;
43
- /**
44
- * Get current metrics.
45
- */
46
- getMetrics(): AgentPerformanceMetrics;
47
- /**
48
- * Get human-readable performance summary.
49
- */
50
- getPerformanceSummary(): string;
51
- /**
52
- * Get improvement suggestions based on metrics.
53
- */
54
- getImprovementSuggestions(): ImprovementSuggestion[];
55
- /**
56
- * Reset all metrics.
57
- */
58
- reset(): void;
59
- }
60
- //# sourceMappingURL=metricsTracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metricsTracker.d.ts","sourceRoot":"","sources":["../../src/shell/metricsTracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,gBAAgB,CAAC;IACtE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAeD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,SAAS,EAAE,MAAM;IAI7B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAapE;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAStC;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,UAAU,IAAI,uBAAuB;IAIrC;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAiB/B;;OAEG;IACH,yBAAyB,IAAI,qBAAqB,EAAE;IAyBpD;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -1,119 +0,0 @@
1
- /**
2
- * Simple metrics tracker for session performance monitoring.
3
- *
4
- * Tracks basic performance metrics like message count, response times,
5
- * token usage, and tool call success rates.
6
- */
7
- function createDefaultMetrics(sessionId) {
8
- return {
9
- sessionId,
10
- totalMessages: 0,
11
- totalToolCalls: 0,
12
- totalTokensUsed: 0,
13
- totalTimeMs: 0,
14
- successfulToolCalls: 0,
15
- failedToolCalls: 0,
16
- avgResponseTimeMs: 0,
17
- };
18
- }
19
- /**
20
- * Tracks performance metrics for an agent session.
21
- */
22
- export class MetricsTracker {
23
- metrics;
24
- responseTimes = [];
25
- constructor(sessionId) {
26
- this.metrics = createDefaultMetrics(sessionId);
27
- }
28
- /**
29
- * Record a message exchange.
30
- */
31
- recordMessage(elapsedMs, usage) {
32
- this.metrics.totalMessages += 1;
33
- this.metrics.totalTimeMs += elapsedMs;
34
- this.responseTimes.push(elapsedMs);
35
- if (usage) {
36
- const tokens = usage.totalTokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
37
- this.metrics.totalTokensUsed += tokens;
38
- }
39
- this.updateAverages();
40
- }
41
- /**
42
- * Record a tool call.
43
- */
44
- recordToolCall(success) {
45
- this.metrics.totalToolCalls += 1;
46
- if (success) {
47
- this.metrics.successfulToolCalls += 1;
48
- }
49
- else {
50
- this.metrics.failedToolCalls += 1;
51
- }
52
- }
53
- /**
54
- * Update running averages.
55
- */
56
- updateAverages() {
57
- if (this.responseTimes.length > 0) {
58
- this.metrics.avgResponseTimeMs =
59
- this.responseTimes.reduce((a, b) => a + b, 0) / this.responseTimes.length;
60
- }
61
- }
62
- /**
63
- * Get current metrics.
64
- */
65
- getMetrics() {
66
- return { ...this.metrics };
67
- }
68
- /**
69
- * Get human-readable performance summary.
70
- */
71
- getPerformanceSummary() {
72
- const m = this.metrics;
73
- const lines = [
74
- `Session Performance: ${m.sessionId}`,
75
- '─'.repeat(40),
76
- `Messages: ${m.totalMessages}`,
77
- `Total Time: ${(m.totalTimeMs / 1000).toFixed(2)}s`,
78
- `Avg Response: ${m.avgResponseTimeMs.toFixed(0)}ms`,
79
- `Tokens Used: ${m.totalTokensUsed.toLocaleString()}`,
80
- '',
81
- 'Tool Usage:',
82
- ` Total Calls: ${m.totalToolCalls}`,
83
- ` Success Rate: ${m.totalToolCalls > 0 ? ((m.successfulToolCalls / m.totalToolCalls) * 100).toFixed(1) : 0}%`,
84
- ];
85
- return lines.join('\n');
86
- }
87
- /**
88
- * Get improvement suggestions based on metrics.
89
- */
90
- getImprovementSuggestions() {
91
- const suggestions = [];
92
- const m = this.metrics;
93
- if (m.avgResponseTimeMs > 5000) {
94
- suggestions.push({
95
- category: 'performance',
96
- severity: 'high',
97
- message: 'Response time is high - consider using a faster model',
98
- suggestedAction: 'Try /model to switch to a faster model',
99
- });
100
- }
101
- if (m.totalToolCalls > 0 && m.failedToolCalls / m.totalToolCalls > 0.2) {
102
- suggestions.push({
103
- category: 'performance',
104
- severity: 'medium',
105
- message: `Tool failure rate is ${((m.failedToolCalls / m.totalToolCalls) * 100).toFixed(1)}%`,
106
- suggestedAction: 'Review failed tool calls and improve error recovery',
107
- });
108
- }
109
- return suggestions;
110
- }
111
- /**
112
- * Reset all metrics.
113
- */
114
- reset() {
115
- this.metrics = createDefaultMetrics(this.metrics.sessionId);
116
- this.responseTimes = [];
117
- }
118
- }
119
- //# sourceMappingURL=metricsTracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metricsTracker.js","sourceRoot":"","sources":["../../src/shell/metricsTracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,OAAO;QACL,SAAS;QACT,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,CAAC;QACd,mBAAmB,EAAE,CAAC;QACtB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;KACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,OAAO,CAA0B;IACjC,aAAa,GAAa,EAAE,CAAC;IAErC,YAAY,SAAiB;QAC3B,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,SAAiB,EAAE,KAA4B;QAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAgB;QAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,MAAM,KAAK,GAAG;YACZ,wBAAwB,CAAC,CAAC,SAAS,EAAE;YACrC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,aAAa,CAAC,CAAC,aAAa,EAAE;YAC9B,eAAe,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACnD,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YACnD,gBAAgB,CAAC,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE;YACpD,EAAE;YACF,aAAa;YACb,kBAAkB,CAAC,CAAC,cAAc,EAAE;YACpC,mBAAmB,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;SAC/G,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,yBAAyB;QACvB,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAEvB,IAAI,CAAC,CAAC,iBAAiB,GAAG,IAAI,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,uDAAuD;gBAChE,eAAe,EAAE,wCAAwC;aAC1D,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBAC7F,eAAe,EAAE,qDAAqD;aACvE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -1,115 +0,0 @@
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
- export interface StreamingOutputState {
16
- isStreaming: boolean;
17
- charsWritten: number;
18
- linesWritten: number;
19
- startTime: number | null;
20
- }
21
- export interface StreamingOutputEvents {
22
- 'stream-start': () => void;
23
- 'stream-chunk': (chunk: string) => void;
24
- 'stream-end': (stats: {
25
- duration: number;
26
- chars: number;
27
- lines: number;
28
- }) => void;
29
- }
30
- /**
31
- * Manages streaming output with optional buffering.
32
- *
33
- * Buffered mode:
34
- * - Chunks are collected in a buffer
35
- * - Output is rendered all at once when streaming ends
36
- * - Cursor stays at prompt area (no jumping during streaming)
37
- *
38
- * Direct mode:
39
- * - Chunks written directly to stdout (original behavior)
40
- * - Cursor moves with output
41
- */
42
- export declare class StreamingOutputManager extends EventEmitter {
43
- private state;
44
- private readonly writeStream;
45
- private lastChunk;
46
- private bufferedMode;
47
- private outputBuffer;
48
- constructor(writeStream?: NodeJS.WriteStream);
49
- /**
50
- * Enable or disable buffered mode
51
- * When buffered, chunks are collected and rendered at the end
52
- */
53
- setBufferedMode(enabled: boolean): void;
54
- /**
55
- * Check if buffered mode is enabled
56
- */
57
- isBufferedMode(): boolean;
58
- /**
59
- * Get the buffered content (for rendering)
60
- */
61
- getBuffer(): string;
62
- /**
63
- * Clear the buffer
64
- */
65
- clearBuffer(): void;
66
- /**
67
- * Check if currently streaming output
68
- */
69
- isStreaming(): boolean;
70
- /**
71
- * Begin a streaming session
72
- * Resets counters and marks streaming as active
73
- * In buffered mode, clears the buffer
74
- */
75
- startStream(): void;
76
- /**
77
- * Write a chunk of content
78
- *
79
- * In buffered mode: Collect in buffer (cursor stays at prompt)
80
- * In direct mode: Write to stdout immediately
81
- */
82
- writeChunk(chunk: string): void;
83
- /**
84
- * Write a complete line (adds newline)
85
- */
86
- writeLine(line?: string): void;
87
- /**
88
- * End the streaming session
89
- * In buffered mode: Renders the complete buffered output
90
- * Returns statistics about what was streamed
91
- */
92
- endStream(): {
93
- duration: number;
94
- chars: number;
95
- lines: number;
96
- buffer?: string;
97
- };
98
- /**
99
- * Get current streaming statistics
100
- */
101
- getStats(): {
102
- chars: number;
103
- lines: number;
104
- elapsed: number;
105
- };
106
- /**
107
- * Force a flush (for buffered output)
108
- */
109
- flush(): void;
110
- private countNewlines;
111
- private writeLocked;
112
- }
113
- export declare function getStreamingOutputManager(): StreamingOutputManager;
114
- export declare function resetStreamingOutputManager(): void;
115
- //# sourceMappingURL=streamingOutputManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamingOutputManager.d.ts","sourceRoot":"","sources":["../../src/shell/streamingOutputManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnF;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,KAAK,CAKX;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,SAAS,CAAc;IAG/B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAgB;gBAExB,WAAW,GAAE,MAAM,CAAC,WAA4B;IAK5D;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAiBnB;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqB/B;;OAEG;IACH,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,IAAI;IAIlC;;;;OAIG;IACH,SAAS,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IA0ChF;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQ7D;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;CAWpB;AAOD,wBAAgB,yBAAyB,IAAI,sBAAsB,CAKlE;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}