erosolar-cli 1.7.354 → 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 (328) 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 -417
  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 +125 -250
  258. package/dist/shell/terminalInput.d.ts.map +1 -1
  259. package/dist/shell/terminalInput.js +612 -1071
  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 -139
  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 +49 -200
  268. package/dist/subagents/taskRunner.js.map +1 -1
  269. package/dist/tools/securityTools.d.ts +22 -0
  270. package/dist/tools/securityTools.d.ts.map +1 -0
  271. package/dist/tools/securityTools.js +448 -0
  272. package/dist/tools/securityTools.js.map +1 -0
  273. package/dist/ui/ShellUIAdapter.d.ts +1 -7
  274. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  275. package/dist/ui/ShellUIAdapter.js +18 -42
  276. package/dist/ui/ShellUIAdapter.js.map +1 -1
  277. package/dist/ui/display.d.ts +45 -24
  278. package/dist/ui/display.d.ts.map +1 -1
  279. package/dist/ui/display.js +274 -148
  280. package/dist/ui/display.js.map +1 -1
  281. package/dist/ui/persistentPrompt.d.ts +50 -0
  282. package/dist/ui/persistentPrompt.d.ts.map +1 -0
  283. package/dist/ui/persistentPrompt.js +92 -0
  284. package/dist/ui/persistentPrompt.js.map +1 -0
  285. package/dist/ui/terminalUISchema.d.ts +195 -0
  286. package/dist/ui/terminalUISchema.d.ts.map +1 -0
  287. package/dist/ui/terminalUISchema.js +113 -0
  288. package/dist/ui/terminalUISchema.js.map +1 -0
  289. package/dist/ui/theme.d.ts.map +1 -1
  290. package/dist/ui/theme.js +8 -6
  291. package/dist/ui/theme.js.map +1 -1
  292. package/dist/ui/toolDisplay.d.ts +158 -0
  293. package/dist/ui/toolDisplay.d.ts.map +1 -1
  294. package/dist/ui/toolDisplay.js +348 -0
  295. package/dist/ui/toolDisplay.js.map +1 -1
  296. package/dist/ui/unified/layout.d.ts +0 -20
  297. package/dist/ui/unified/layout.d.ts.map +1 -1
  298. package/dist/ui/unified/layout.js +216 -105
  299. package/dist/ui/unified/layout.js.map +1 -1
  300. package/package.json +4 -4
  301. package/scripts/deploy-security-capabilities.js +178 -0
  302. package/dist/core/hooks.d.ts +0 -113
  303. package/dist/core/hooks.d.ts.map +0 -1
  304. package/dist/core/hooks.js +0 -267
  305. package/dist/core/hooks.js.map +0 -1
  306. package/dist/core/metricsTracker.d.ts +0 -122
  307. package/dist/core/metricsTracker.d.ts.map +0 -1
  308. package/dist/core/metricsTracker.js.map +0 -1
  309. package/dist/core/securityAssessment.d.ts +0 -91
  310. package/dist/core/securityAssessment.d.ts.map +0 -1
  311. package/dist/core/securityAssessment.js +0 -580
  312. package/dist/core/securityAssessment.js.map +0 -1
  313. package/dist/core/verification.d.ts +0 -137
  314. package/dist/core/verification.d.ts.map +0 -1
  315. package/dist/core/verification.js +0 -323
  316. package/dist/core/verification.js.map +0 -1
  317. package/dist/subagents/agentConfig.d.ts +0 -27
  318. package/dist/subagents/agentConfig.d.ts.map +0 -1
  319. package/dist/subagents/agentConfig.js +0 -89
  320. package/dist/subagents/agentConfig.js.map +0 -1
  321. package/dist/subagents/agentRegistry.d.ts +0 -33
  322. package/dist/subagents/agentRegistry.d.ts.map +0 -1
  323. package/dist/subagents/agentRegistry.js +0 -162
  324. package/dist/subagents/agentRegistry.js.map +0 -1
  325. package/dist/utils/frontmatter.d.ts +0 -10
  326. package/dist/utils/frontmatter.d.ts.map +0 -1
  327. package/dist/utils/frontmatter.js +0 -78
  328. package/dist/utils/frontmatter.js.map +0 -1
@@ -33,21 +33,12 @@ export class TerminalInputAdapter {
33
33
  this.input.on('mode-change', (mode) => this.callbacks.onEditModeChange?.(mode));
34
34
  this.input.on('toggleVerify', () => this.callbacks.onToggleVerify?.());
35
35
  this.input.on('toggleAutoContinue', () => this.callbacks.onToggleAutoContinue?.());
36
- this.input.on('toggleThinking', () => this.callbacks.onToggleThinking?.());
37
- this.input.on('toggleEditMode', () => {
38
- const mode = this.input.getEditMode?.() || 'display-edits';
39
- this.callbacks.onEditModeChange?.(mode);
40
- });
41
- this.input.on('clearContext', () => this.callbacks.onClearContext?.());
42
36
  }
43
37
  /**
44
- * Start capturing input. Does NOT render - caller should render after setup.
38
+ * Start capturing input
45
39
  */
46
40
  start() {
47
41
  this.input.enableBracketedPaste();
48
- // Enable mouse tracking for scroll wheel
49
- // Text selection: use Shift+click+drag in most terminals
50
- this.input.enableMouseTracking();
51
42
  // Set up raw mode
52
43
  if (this.inStream.isTTY) {
53
44
  this.inStream.setRawMode(true);
@@ -59,14 +50,14 @@ export class TerminalInputAdapter {
59
50
  this.setupRawDataInterception();
60
51
  // Set up keypress handling
61
52
  this.setupKeypressHandler();
62
- // Note: No auto-render here - caller controls when to render
53
+ // Initial render
54
+ this.input.forceRender();
63
55
  }
64
56
  /**
65
57
  * Stop capturing input
66
58
  */
67
59
  stop() {
68
60
  this.input.disableBracketedPaste();
69
- this.input.disableMouseTracking();
70
61
  // Remove handlers
71
62
  if (this.rawDataHandler) {
72
63
  this.restoreRawDataInterception();
@@ -89,10 +80,11 @@ export class TerminalInputAdapter {
89
80
  this.input.setMode(streaming ? 'streaming' : 'idle');
90
81
  }
91
82
  /**
92
- * Pin top rows (e.g., the launch banner) outside the scroll region.
83
+ * Set the row where content ends (for idle mode positioning).
84
+ * Input area will render starting from this row + 1.
93
85
  */
94
- setPinnedHeaderLines(count) {
95
- this.input.setPinnedHeaderLines(count);
86
+ setContentEndRow(row) {
87
+ this.input.setContentEndRow(row);
96
88
  }
97
89
  /**
98
90
  * Get current buffer content
@@ -115,8 +107,8 @@ export class TerminalInputAdapter {
115
107
  /**
116
108
  * Update context usage indicator (0-100, null to clear)
117
109
  */
118
- setContextUsage(percentage, autoCompactThreshold) {
119
- this.input.updateContextUsage(percentage, autoCompactThreshold);
110
+ setContextUsage(percentage) {
111
+ this.input.updateContextUsage(percentage);
120
112
  }
121
113
  /**
122
114
  * Surface mode toggle states (verification/auto-continue) in the control bar.
@@ -124,6 +116,13 @@ export class TerminalInputAdapter {
124
116
  setModeToggles(options) {
125
117
  this.input.setModeToggles(options);
126
118
  }
119
+ /**
120
+ * Set the model info string (e.g., "OpenAI · gpt-4")
121
+ * This is displayed persistently above the input area.
122
+ */
123
+ setModelInfo(info) {
124
+ this.input.setModelInfo(info);
125
+ }
127
126
  /**
128
127
  * Update the inline status message shown before the prompt (e.g., streaming heartbeat).
129
128
  */
@@ -144,24 +143,12 @@ export class TerminalInputAdapter {
144
143
  setStreamingLabel(label) {
145
144
  this.input.setStreamingLabel(label);
146
145
  }
147
- /**
148
- * Surface meta header information (elapsed, tokens/context) above the divider.
149
- */
150
- setMetaStatus(meta) {
151
- this.input.setMetaStatus(meta);
152
- }
153
146
  /**
154
147
  * Clear all status messages at once (convenience method).
155
148
  */
156
149
  clearAllStatus() {
157
150
  this.input.clearAllStatus();
158
151
  }
159
- /**
160
- * Surface model/provider context in the controls bar.
161
- */
162
- setModelContext(options) {
163
- this.input.setModelContext(options);
164
- }
165
152
  /**
166
153
  * Set the edit guard mode explicitly
167
154
  */
@@ -198,114 +185,6 @@ export class TerminalInputAdapter {
198
185
  forceRender() {
199
186
  this.input.forceRender();
200
187
  }
201
- /**
202
- * Stream content above the pinned chat box (Claude Code method).
203
- * Automatically enables scroll region on first call.
204
- */
205
- streamContent(content) {
206
- this.input.streamContent(content);
207
- }
208
- /**
209
- * Enable scroll region (Claude Code method).
210
- * Chat box is pinned below scroll region.
211
- */
212
- enableScrollRegion() {
213
- this.input.enableScrollRegion();
214
- }
215
- /**
216
- * Disable scroll region and reset to full terminal.
217
- */
218
- disableScrollRegion() {
219
- this.input.disableScrollRegion();
220
- }
221
- /**
222
- * @deprecated Use streamContent() instead
223
- * Write content directly into the scroll region.
224
- */
225
- writeToScrollRegion(content) {
226
- this.input.writeToScrollRegion(content);
227
- }
228
- /**
229
- * Enter alternate screen buffer.
230
- */
231
- enterAlternateScreen() {
232
- this.input.enterAlternateScreen();
233
- }
234
- /**
235
- * Exit alternate screen buffer.
236
- */
237
- exitAlternateScreen() {
238
- this.input.exitAlternateScreen();
239
- }
240
- /**
241
- * Clear the entire terminal screen and reset content position.
242
- * This removes all content including the launching command.
243
- */
244
- clearScreen() {
245
- this.input.clearScreen();
246
- }
247
- /**
248
- * Enter streaming scroll region mode.
249
- * Call once at the start of streaming.
250
- */
251
- enterStreamingScrollRegion() {
252
- this.input.enterStreamingScrollRegion();
253
- }
254
- /**
255
- * Exit streaming scroll region mode.
256
- * Call once at the end of streaming.
257
- */
258
- exitStreamingScrollRegion() {
259
- this.input.exitStreamingScrollRegion();
260
- }
261
- /**
262
- * Get scrollback buffer content for persistence.
263
- */
264
- getScrollbackBuffer() {
265
- return this.input.getScrollbackBuffer();
266
- }
267
- /**
268
- * Load scrollback buffer for restoration.
269
- */
270
- loadScrollbackBuffer(lines) {
271
- this.input.loadScrollbackBuffer(lines);
272
- }
273
- /**
274
- * Clear scrollback buffer.
275
- */
276
- clearScrollbackBuffer() {
277
- this.input.clearScrollbackBuffer();
278
- }
279
- /**
280
- * Check if alternate screen buffer is currently active.
281
- */
282
- isAlternateScreenActive() {
283
- return this.input.isAlternateScreenActive();
284
- }
285
- /**
286
- * Get a snapshot of the scrollback buffer (for display on exit).
287
- */
288
- getScrollbackSnapshot() {
289
- return this.input.getScrollbackSnapshot();
290
- }
291
- /**
292
- * Reset content position to top of scroll region.
293
- */
294
- resetContentPosition() {
295
- this.input.resetContentPosition();
296
- }
297
- /**
298
- * Set the content row explicitly (used after banner is written).
299
- */
300
- setContentRow(row) {
301
- this.input.setContentRow(row);
302
- }
303
- /**
304
- * Get the current content row position.
305
- */
306
- getContentRow() {
307
- return this.input.getContentRow();
308
- }
309
188
  /**
310
189
  * Handle terminal resize
311
190
  */
@@ -326,12 +205,24 @@ export class TerminalInputAdapter {
326
205
  return this.input;
327
206
  }
328
207
  /**
329
- * Register with display's output interceptor for cursor positioning.
330
- * This ensures streamed output goes to the scroll region during processing.
208
+ * Register with display's output interceptor (kept for API compatibility).
331
209
  */
332
210
  registerOutputInterceptor(display) {
333
211
  this.input.registerOutputInterceptor(display);
334
212
  }
213
+ /**
214
+ * Set banner content to be written when unified UI initializes.
215
+ */
216
+ setBannerContent(content) {
217
+ this.input.setBannerContent(content);
218
+ }
219
+ /**
220
+ * Initialize the unified UI system.
221
+ * Clears screen, writes banner, renders input area.
222
+ */
223
+ initializeUnifiedUI() {
224
+ this.input.initializeUnifiedUI();
225
+ }
335
226
  // ===========================================================================
336
227
  // PRIVATE
337
228
  // ===========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"terminalInputAdapter.js","sourceRoot":"","sources":["../../src/shell/terminalInputAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAoC,MAAM,oBAAoB,CAAC;AAyBrF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IASZ;IARF,KAAK,CAAgB;IACrB,SAAS,CAAwB;IAC1C,cAAc,GAAqC,IAAI,CAAC;IACxD,eAAe,GAA6C,IAAI,CAAC;IACzE,8DAA8D;IACtD,YAAY,GAAyC,IAAI,CAAC;IAElE,YACmB,QAA2B,EAC5C,SAA6B,EAC7B,SAAgC;QAFf,aAAQ,GAAR,QAAQ,CAAmB;QAI5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE;YACxC,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,eAAe,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAClC,yCAAyC;QACzC,yDAAyD;QACzD,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAEjC,kBAAkB;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,sEAAsE;QACtE,gCAAgC;QAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEvB,mDAAmD;QACnD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,6DAA6D;IAC/D,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAElC,kBAAkB;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,mBAAmB;QACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAkB;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,SAAkB;QACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAyB,EAAE,oBAA6B;QACtE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAOd;QACC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAsB;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAsB;QACtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAoB;QACpC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAMb;QACC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAA4D;QAC1E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAmB;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,0BAA0B;QACxB,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,yBAAyB;QACvB,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,KAAe;QAClC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,OAEzB;QACC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAEtE,wBAAwB;QAC9B,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAgC,CAAC;QACvF,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,8DAA8D;QAC7D,IAAI,CAAC,QAAgB,CAAC,IAAI,GAAG,UAAU,KAAsB,EAAE,GAAG,IAAW;YAC5E,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAe,CAAC,QAAQ,EAAE,CAAC;gBAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAE9C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,qCAAqC;oBACrC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvB,8BAA8B;wBAC9B,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC7C,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAEO,0BAA0B;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,QAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,2CAA2C;QAC3C,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,CAAC,eAAe,GAAG,CAAC,GAAW,EAAE,GAAQ,EAAE,EAAE;YAC/C,2CAA2C;YAC3C,MAAM,OAAO,GAAY;gBACvB,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,KAAK,EAAE,GAAG,EAAE,KAAK;gBACjB,QAAQ,EAAE,GAAG,EAAE,QAAQ;aACxB,CAAC;YAEF,yFAAyF;YACzF,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;oBACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,gDAAgD;QAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAgC,EAChC,WAA8B,OAAO,CAAC,KAAK,EAC3C,YAAgC,OAAO,CAAC,MAAM;IAE9C,OAAO,IAAI,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"terminalInputAdapter.js","sourceRoot":"","sources":["../../src/shell/terminalInputAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAoC,MAAM,oBAAoB,CAAC;AAqBrF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IASZ;IARF,KAAK,CAAgB;IACrB,SAAS,CAAwB;IAC1C,cAAc,GAAqC,IAAI,CAAC;IACxD,eAAe,GAA6C,IAAI,CAAC;IACzE,8DAA8D;IACtD,YAAY,GAAyC,IAAI,CAAC;IAElE,YACmB,QAA2B,EAC5C,SAA6B,EAC7B,SAAgC;QAFf,aAAQ,GAAR,QAAQ,CAAmB;QAI5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE;YACxC,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAElC,kBAAkB;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,sEAAsE;QACtE,gCAAgC;QAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEvB,mDAAmD;QACnD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,iBAAiB;QACjB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAEnC,kBAAkB;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,mBAAmB;QACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAkB;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,GAAW;QAC1B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,SAAkB;QACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAyB;QACvC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAKd;QACC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,IAAmB;QAC9B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAsB;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAsB;QACtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAoB;QACpC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAmB;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,OAGzB;QACC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAsB;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACjB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IACnC,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAEtE,wBAAwB;QAC9B,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAgC,CAAC;QACvF,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,8DAA8D;QAC7D,IAAI,CAAC,QAAgB,CAAC,IAAI,GAAG,UAAU,KAAsB,EAAE,GAAG,IAAW;YAC5E,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAe,CAAC,QAAQ,EAAE,CAAC;gBAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAE9C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,qCAAqC;oBACrC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvB,8BAA8B;wBAC9B,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC7C,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAEO,0BAA0B;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,QAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,2CAA2C;QAC3C,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,CAAC,eAAe,GAAG,CAAC,GAAW,EAAE,GAAQ,EAAE,EAAE;YAC/C,2CAA2C;YAC3C,MAAM,OAAO,GAAY;gBACvB,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,KAAK,EAAE,GAAG,EAAE,KAAK;gBACjB,QAAQ,EAAE,GAAG,EAAE,QAAQ;aACxB,CAAC;YAEF,yFAAyF;YACzF,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;oBACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,gDAAgD;QAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAgC,EAChC,WAA8B,OAAO,CAAC,KAAK,EAC3C,YAAgC,OAAO,CAAC,MAAM;IAE9C,OAAO,IAAI,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC"}
@@ -1,26 +1,20 @@
1
1
  import type { CapabilityContext } from '../runtime/agentHost.js';
2
- import { AgentRegistry, type AgentDefinition } from './agentRegistry.js';
3
2
  type TaskModelName = 'sonnet' | 'opus' | 'haiku';
4
- type TaskThoroughness = 'quick' | 'medium' | 'very_thorough';
5
3
  export interface TaskInvocationOptions {
6
4
  description: string;
7
5
  prompt: string;
8
6
  subagentType: string;
9
7
  model?: TaskModelName;
10
8
  resumeId?: string;
11
- thoroughness?: TaskThoroughness;
12
9
  }
13
10
  interface TaskExecutionResult {
14
11
  output: string;
15
12
  }
16
- export declare const BUILTIN_AGENT_DEFINITIONS: AgentDefinition[];
17
13
  export declare class TaskRunner {
18
14
  private readonly context;
19
- private readonly registry;
20
15
  private readonly snapshots;
21
- constructor(context: CapabilityContext, registry?: AgentRegistry);
16
+ constructor(context: CapabilityContext);
22
17
  runTask(options: TaskInvocationOptions): Promise<TaskExecutionResult>;
23
- private buildToolRuntime;
24
18
  private resolveToolPermissions;
25
19
  private buildModelSelection;
26
20
  private composeSystemPrompt;
@@ -1 +1 @@
1
- {"version":3,"file":"taskRunner.d.ts","sourceRoot":"","sources":["../../src/subagents/taskRunner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAQjE,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzE,KAAK,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AACjD,KAAK,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD,eAAO,MAAM,yBAAyB,EAAE,eAAe,EAwDtD,CAAC;AAUF,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEzC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,aAAa;IAU1D,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA2G3E,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,mBAAmB;CAwD5B"}
1
+ {"version":3,"file":"taskRunner.d.ts","sourceRoot":"","sources":["../../src/subagents/taskRunner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAQjE,KAAK,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AA6DD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEzC,OAAO,EAAE,iBAAiB;IAIhC,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyF3E,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,mBAAmB;CAkB5B"}
@@ -5,64 +5,38 @@ import { join } from 'node:path';
5
5
  import { createNodeRuntime } from '../runtime/node.js';
6
6
  import { loadToolSettings } from '../core/preferences.js';
7
7
  import { buildEnabledToolSet, evaluateToolPermissions } from '../capabilities/toolRegistry.js';
8
- import { AgentRegistry } from './agentRegistry.js';
9
- export const BUILTIN_AGENT_DEFINITIONS = [
10
- {
11
- name: 'general-purpose',
12
- description: 'Complete research, editing, and implementation tasks end-to-end.',
13
- summary: 'Autonomous agent for multi-step work.',
14
- prompt: [
8
+ const SUBAGENT_DEFINITIONS = {
9
+ 'general-purpose': {
10
+ id: 'general-purpose',
11
+ label: 'General Purpose',
12
+ summary: 'complete research, editing, and implementation tasks end-to-end',
13
+ instructions: [
15
14
  'Own the entire task autonomously. Narrate your plan, gather context with filesystem/search tools, and make changes when necessary.',
16
15
  'Always cite the evidence, commands, and files you touched. Include TODOs or risks that need human review.',
17
- ].join('\n'),
18
- model: 'sonnet',
19
- source: 'builtin',
16
+ ],
17
+ defaultModel: 'sonnet',
20
18
  },
21
- {
22
- name: 'explore',
23
- description: 'Deep codebase exploration agent for thorough analysis and structural understanding.',
24
- summary: 'Thorough read/search analysis, no edits.',
25
- prompt: [
26
- 'You are a thorough codebase exploration agent. Take your time to deeply analyze the codebase.',
27
- '',
28
- 'APPROACH:',
29
- '1. First, get an overview by listing root directories and key files (package.json, README, configs)',
30
- '2. Identify the tech stack, frameworks, and architecture patterns',
31
- '3. Explore multiple areas systematically - follow imports, trace data flow, understand component relationships',
32
- '4. Read relevant files in full to understand implementation details',
33
- '5. Use grep/search to find patterns, usages, and connections across the codebase',
34
- '',
35
- 'THOROUGHNESS:',
36
- '- Do NOT return quickly with shallow analysis',
37
- '- Explore at least 10-20 relevant files for comprehensive understanding',
38
- '- Follow the dependency chain - understand how modules connect',
39
- '- Identify entry points, core logic, and data models',
40
- '- Note architectural patterns, conventions, and code organization',
41
- '',
42
- 'OUTPUT:',
43
- '- Provide detailed findings with specific file:line references',
44
- '- Explain relationships between components',
45
- '- Include code snippets for key implementations',
46
- '- Summarize patterns and conventions you discovered',
47
- ].join('\n'),
48
- tools: ['read', 'read_file', 'read_files', 'list_files', 'search_files', 'glob_search', 'grep_search', 'find_definition', 'context_snapshot', 'learn_codebase', 'learn_file', 'learn_topic'],
49
- model: 'sonnet',
50
- source: 'builtin',
19
+ explore: {
20
+ id: 'explore',
21
+ label: 'Explore',
22
+ summary: 'map the codebase, answer architectural questions, and locate patterns quickly',
23
+ instructions: [
24
+ 'Prioritize read/search/glob tools before editing. Call out every directory or file you investigated.',
25
+ 'Return a crisp summary of what you learned plus direct file references so the parent agent can follow up.',
26
+ ],
27
+ defaultModel: 'haiku',
51
28
  },
52
- {
53
- name: 'plan',
54
- description: 'Break down complex efforts into actionable steps and identify risks or dependencies.',
55
- summary: 'Planning-first, read/search only.',
56
- prompt: [
29
+ plan: {
30
+ id: 'plan',
31
+ label: 'Plan',
32
+ summary: 'break down complex efforts into actionable steps and identify risks or dependencies',
33
+ instructions: [
57
34
  'Produce a numbered plan with estimates, dependency notes, and explicit testing checkpoints.',
58
35
  'If the task mentions code changes, suggest which files/modules should be edited and why before any implementation occurs.',
59
- 'Do not modify files directly; focus on analysis and recommendations.',
60
- ].join('\n'),
61
- tools: ['read', 'read_file', 'read_files', 'list_files', 'search_files', 'glob_search', 'grep_search', 'find_definition', 'context_snapshot'],
62
- model: 'sonnet',
63
- source: 'builtin',
36
+ ],
37
+ defaultModel: 'sonnet',
64
38
  },
65
- ];
39
+ };
66
40
  const MODEL_ID_LOOKUP = {
67
41
  sonnet: { provider: 'anthropic', model: 'claude-sonnet-4-5-20250929' },
68
42
  opus: { provider: 'anthropic', model: 'claude-opus-4-20250514' },
@@ -71,24 +45,12 @@ const MODEL_ID_LOOKUP = {
71
45
  const TASK_STORE_DIR = join(homedir(), '.erosolar', 'tasks');
72
46
  export class TaskRunner {
73
47
  context;
74
- registry;
75
48
  snapshots = new TaskSnapshotStore();
76
- constructor(context, registry) {
49
+ constructor(context) {
77
50
  this.context = context;
78
- this.registry =
79
- registry ??
80
- new AgentRegistry({
81
- workingDir: context.workingDir,
82
- builtIns: BUILTIN_AGENT_DEFINITIONS,
83
- });
84
51
  }
85
52
  async runTask(options) {
86
- this.registry.refresh();
87
- const definition = this.registry.resolve(options.subagentType);
88
- if (!definition) {
89
- const available = this.registry.list().map((agent) => agent.name).join(', ');
90
- throw new Error(`Subagent "${options.subagentType}" is not defined. Available agents: ${available || 'none found'}`);
91
- }
53
+ const definition = resolveSubAgentDefinition(options.subagentType);
92
54
  const { allowedPluginIds } = this.resolveToolPermissions();
93
55
  const adapterOptions = allowedPluginIds.size
94
56
  ? {
@@ -104,14 +66,8 @@ export class TaskRunner {
104
66
  });
105
67
  try {
106
68
  const session = runtime.session;
107
- const preferredModel = options.model ?? definition.model;
108
- const selection = this.buildModelSelection(session.profileConfig, preferredModel);
109
- const { runtime: toolRuntime, allowedTools, missingTools } = this.buildToolRuntime(session.toolRuntime, definition.tools);
110
- const systemPrompt = this.composeSystemPrompt(session.profileConfig.systemPrompt, definition, options.description, {
111
- thoroughness: options.thoroughness,
112
- allowedTools,
113
- missingTools,
114
- });
69
+ const selection = this.buildModelSelection(session.profileConfig, options.model ?? definition.defaultModel);
70
+ const systemPrompt = this.composeSystemPrompt(session.profileConfig.systemPrompt, definition, options.description);
115
71
  let finalMetadata = null;
116
72
  const agent = session.createAgent({
117
73
  provider: selection.provider,
@@ -125,7 +81,7 @@ export class TaskRunner {
125
81
  finalMetadata = metadata;
126
82
  }
127
83
  },
128
- }, toolRuntime);
84
+ });
129
85
  const resumeSnapshot = options.resumeId ? await this.snapshots.load(options.resumeId) : null;
130
86
  if (options.resumeId && !resumeSnapshot) {
131
87
  throw new Error(`Resume id "${options.resumeId}" was not found. Call Task without resume to start a new agent.`);
@@ -142,7 +98,7 @@ export class TaskRunner {
142
98
  id: resumeId,
143
99
  profile: this.context.profile,
144
100
  description: options.description,
145
- subagentType: definition.name,
101
+ subagentType: definition.id,
146
102
  history,
147
103
  createdAt: resumeSnapshot?.createdAt ?? new Date().toISOString(),
148
104
  updatedAt: new Date().toISOString(),
@@ -151,7 +107,7 @@ export class TaskRunner {
151
107
  const usageLine = formatUsage(extractUsage(finalMetadata));
152
108
  const durationLine = `Duration: ${formatDuration(durationMs)}${usageLine ? ` | ${usageLine}` : ''}`;
153
109
  const lines = [
154
- `Task "${options.description}" completed by ${definition.name} agent (${selection.model})`,
110
+ `Task "${options.description}" completed by ${definition.label} agent (${selection.model})`,
155
111
  `${durationLine} | Resume ID: ${resumeId}`,
156
112
  ];
157
113
  if (definition.summary) {
@@ -167,18 +123,6 @@ export class TaskRunner {
167
123
  await runtime.host.dispose();
168
124
  }
169
125
  }
170
- buildToolRuntime(baseRuntime, requestedTools) {
171
- if (!requestedTools?.length) {
172
- return { runtime: baseRuntime, allowedTools: [], missingTools: [] };
173
- }
174
- const available = baseRuntime.listProviderTools();
175
- const { allowedNames, missing } = resolveAllowedToolNames(requestedTools, available);
176
- if (!allowedNames.size) {
177
- return { runtime: baseRuntime, allowedTools: [], missingTools: missing };
178
- }
179
- const runtime = new RestrictedToolRuntime(baseRuntime, allowedNames);
180
- return { runtime, allowedTools: Array.from(allowedNames), missingTools: missing };
181
- }
182
126
  resolveToolPermissions() {
183
127
  const settings = loadToolSettings();
184
128
  const selection = buildEnabledToolSet(settings);
@@ -188,9 +132,8 @@ export class TaskRunner {
188
132
  };
189
133
  }
190
134
  buildModelSelection(profile, preferred) {
191
- const normalized = preferred?.trim().toLowerCase();
192
- if (normalized && normalized !== 'inherit' && MODEL_ID_LOOKUP[normalized]) {
193
- const mapping = MODEL_ID_LOOKUP[normalized];
135
+ if (preferred && MODEL_ID_LOOKUP[preferred]) {
136
+ const mapping = MODEL_ID_LOOKUP[preferred];
194
137
  return {
195
138
  provider: mapping.provider,
196
139
  model: mapping.model,
@@ -205,46 +148,16 @@ export class TaskRunner {
205
148
  maxTokens: profile.maxTokens,
206
149
  };
207
150
  }
208
- composeSystemPrompt(basePrompt, definition, description, extras) {
209
- const toolLine = extras.allowedTools.length
210
- ? `Allowed tools for this subagent: ${extras.allowedTools.join(', ')}.`
211
- : 'This subagent inherits all tools available to the parent agent.';
212
- const missingLine = extras.missingTools.length
213
- ? `Requested but unavailable tools: ${extras.missingTools.join(', ')}.`
214
- : null;
215
- const thoroughnessLine = extras.thoroughness
216
- ? `Requested exploration thoroughness: ${extras.thoroughness.replace('_', ' ')}.`
217
- : null;
218
- const permissionLine = definition.permissionMode
219
- ? `Permission mode: ${definition.permissionMode}`
220
- : null;
221
- const skillsLine = definition.skills && definition.skills.length
222
- ? `Auto-load skills: ${definition.skills.join(', ')}`
223
- : null;
224
- const agentMeta = [
225
- `Subagent: ${definition.name}`,
226
- `Purpose: ${definition.summary || definition.description}`,
227
- toolLine,
228
- missingLine,
229
- permissionLine,
230
- skillsLine,
231
- thoroughnessLine,
232
- ]
233
- .filter(Boolean)
234
- .join('\n');
151
+ composeSystemPrompt(basePrompt, definition, description) {
235
152
  const lines = [
236
153
  basePrompt.trim(),
237
154
  '',
238
155
  'You are an autonomous sub-agent launched via the Task tool. Operate independently and return a single comprehensive report to the parent agent.',
239
156
  `Task summary: ${description}`,
240
- agentMeta,
157
+ `Agent specialization: ${definition.summary}`,
241
158
  '',
242
159
  'Execution rules:',
243
- '- Use ONLY the tools listed above. Do not request tools that are unavailable.',
244
- '- Keep your own context focused; do not bloat the response with unnecessary content.',
245
- '- Always cite the evidence, commands, and files you touched so the parent agent can verify your work.',
246
- '- If you are read-only, explicitly state any edits you avoided and the files you inspected.',
247
- definition.prompt,
160
+ ...definition.instructions.map((line, index) => `${index + 1}. ${line}`),
248
161
  '',
249
162
  'When you finish:',
250
163
  '- Provide a concise summary with actionable next steps.',
@@ -254,82 +167,6 @@ export class TaskRunner {
254
167
  return lines.join('\n').trim();
255
168
  }
256
169
  }
257
- const BASELINE_ALLOWED_TOOLS = ['context_snapshot', 'capabilities_overview', 'profile_details'];
258
- class RestrictedToolRuntime {
259
- base;
260
- allowed;
261
- constructor(base, allowed) {
262
- this.base = base;
263
- this.allowed = allowed;
264
- }
265
- listProviderTools() {
266
- return this.base.listProviderTools().filter((tool) => this.allowed.has(tool.name));
267
- }
268
- async execute(call, context) {
269
- if (!this.allowed.has(call.name)) {
270
- const allowedList = Array.from(this.allowed).join(', ');
271
- return `Tool "${call.name}" is not allowed for this agent. Allowed tools: ${allowedList || 'none'}.`;
272
- }
273
- return this.base.execute(call, context);
274
- }
275
- registerSuite(suite) {
276
- this.base.registerSuite(suite);
277
- }
278
- unregisterSuite(id) {
279
- this.base.unregisterSuite(id);
280
- }
281
- clearCache() {
282
- this.base.clearCache();
283
- }
284
- getCacheStats() {
285
- return this.base.getCacheStats();
286
- }
287
- clearToolHistory() {
288
- this.base.clearToolHistory();
289
- }
290
- getToolHistory() {
291
- return this.base.getToolHistory();
292
- }
293
- }
294
- function resolveAllowedToolNames(requested, available) {
295
- const normalizedAvailable = new Map();
296
- for (const tool of available) {
297
- normalizedAvailable.set(normalizeToolName(tool.name), tool.name);
298
- }
299
- const allowed = new Set();
300
- const missing = [];
301
- // Always allow baseline runtime metadata tools
302
- for (const name of BASELINE_ALLOWED_TOOLS) {
303
- const normalized = normalizeToolName(name);
304
- if (normalizedAvailable.has(normalized)) {
305
- allowed.add(normalizedAvailable.get(normalized));
306
- }
307
- else {
308
- allowed.add(name);
309
- }
310
- }
311
- for (const entry of requested) {
312
- const normalized = normalizeToolName(entry);
313
- if (!normalized) {
314
- continue;
315
- }
316
- const exact = normalizedAvailable.get(normalized);
317
- if (exact) {
318
- allowed.add(exact);
319
- continue;
320
- }
321
- const fuzzy = Array.from(normalizedAvailable.entries()).find(([candidate]) => candidate.includes(normalized) || normalized.includes(candidate));
322
- if (fuzzy) {
323
- allowed.add(fuzzy[1]);
324
- continue;
325
- }
326
- missing.push(entry);
327
- }
328
- return { allowedNames: allowed, missing };
329
- }
330
- function normalizeToolName(value) {
331
- return value.replace(/[^a-z0-9]/gi, '').toLowerCase();
332
- }
333
170
  class TaskSnapshotStore {
334
171
  async load(id) {
335
172
  try {
@@ -360,6 +197,18 @@ class TaskSnapshotStore {
360
197
  return `task_${randomUUID()}`;
361
198
  }
362
199
  }
200
+ function resolveSubAgentDefinition(name) {
201
+ const normalized = name ? name.trim().toLowerCase() : '';
202
+ const candidate = normalized ? SUBAGENT_DEFINITIONS[normalized] : undefined;
203
+ if (candidate) {
204
+ return candidate;
205
+ }
206
+ const fallback = SUBAGENT_DEFINITIONS['general-purpose'];
207
+ if (!fallback) {
208
+ throw new Error('General-purpose subagent definition is missing.');
209
+ }
210
+ return fallback;
211
+ }
363
212
  function sanitizeId(value) {
364
213
  return value.replace(/[^a-zA-Z0-9_-]/g, '').slice(0, 64) || 'task';
365
214
  }