centaurus-cli 3.0.1 → 3.1.0

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 (552) hide show
  1. package/dist/ai/types.js +0 -1
  2. package/dist/ai/types.js.map +1 -1
  3. package/dist/cli-adapter.js +5047 -5158
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +372 -315
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/build-config.js +11 -42
  8. package/dist/config/build-config.js.map +1 -1
  9. package/dist/config/defaultConfig.js +94 -82
  10. package/dist/config/defaultConfig.js.map +1 -1
  11. package/dist/config/manager.js +144 -160
  12. package/dist/config/manager.js.map +1 -1
  13. package/dist/config/mcp-config-manager.js +411 -364
  14. package/dist/config/mcp-config-manager.js.map +1 -1
  15. package/dist/config/models.js +118 -185
  16. package/dist/config/models.js.map +1 -1
  17. package/dist/config/slash-commands.js +186 -184
  18. package/dist/config/slash-commands.js.map +1 -1
  19. package/dist/config/types.js +33 -26
  20. package/dist/config/types.js.map +1 -1
  21. package/dist/context/command-detector.js +63 -67
  22. package/dist/context/command-detector.js.map +1 -1
  23. package/dist/context/context-manager.js +533 -518
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/context/handlers/docker-handler.js +518 -576
  26. package/dist/context/handlers/docker-handler.js.map +1 -1
  27. package/dist/context/handlers/ssh-handler.js +1050 -1109
  28. package/dist/context/handlers/ssh-handler.js.map +1 -1
  29. package/dist/context/handlers/wsl-handler.js +558 -630
  30. package/dist/context/handlers/wsl-handler.js.map +1 -1
  31. package/dist/context/index.js +42 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/subshell-handler.js +0 -4
  34. package/dist/context/subshell-handler.js.map +1 -1
  35. package/dist/context/types.js +20 -31
  36. package/dist/context/types.js.map +1 -1
  37. package/dist/hooks/useConnectivity.js +13 -10
  38. package/dist/hooks/useConnectivity.js.map +1 -1
  39. package/dist/hooks/useTerminalDimensions.js +67 -79
  40. package/dist/hooks/useTerminalDimensions.js.map +1 -1
  41. package/dist/index.js +228 -251
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp/mcp-command-handler.js +297 -260
  44. package/dist/mcp/mcp-command-handler.js.map +1 -1
  45. package/dist/mcp/mcp-server-manager.js +139 -155
  46. package/dist/mcp/mcp-server-manager.js.map +1 -1
  47. package/dist/mcp/mcp-tool-wrapper.js +74 -94
  48. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  49. package/dist/services/ai-autocomplete-agent.js +169 -181
  50. package/dist/services/ai-autocomplete-agent.js.map +1 -1
  51. package/dist/services/ai-context-injector.js +180 -93
  52. package/dist/services/ai-context-injector.js.map +1 -1
  53. package/dist/services/ai-service-client.js +513 -456
  54. package/dist/services/ai-service-client.js.map +1 -1
  55. package/dist/services/api-client.js +443 -441
  56. package/dist/services/api-client.js.map +1 -1
  57. package/dist/services/auth-handler.js +162 -198
  58. package/dist/services/auth-handler.js.map +1 -1
  59. package/dist/services/background-task-manager.js +258 -282
  60. package/dist/services/background-task-manager.js.map +1 -1
  61. package/dist/services/checkpoint-manager.js +1526 -1512
  62. package/dist/services/checkpoint-manager.js.map +1 -1
  63. package/dist/services/clipboard-service.js +151 -200
  64. package/dist/services/clipboard-service.js.map +1 -1
  65. package/dist/services/connectivity-manager.js +63 -65
  66. package/dist/services/connectivity-manager.js.map +1 -1
  67. package/dist/services/conversation-manager.js +118 -121
  68. package/dist/services/conversation-manager.js.map +1 -1
  69. package/dist/services/environment-context-injector.js +160 -187
  70. package/dist/services/environment-context-injector.js.map +1 -1
  71. package/dist/services/fast-context-agent.js +203 -243
  72. package/dist/services/fast-context-agent.js.map +1 -1
  73. package/dist/services/input-detection-agent.js +190 -202
  74. package/dist/services/input-detection-agent.js.map +1 -1
  75. package/dist/services/input-requirement-detector.js +155 -189
  76. package/dist/services/input-requirement-detector.js.map +1 -1
  77. package/dist/services/local-chat-storage.js +342 -365
  78. package/dist/services/local-chat-storage.js.map +1 -1
  79. package/dist/services/monitored-shell-manager.js +225 -233
  80. package/dist/services/monitored-shell-manager.js.map +1 -1
  81. package/dist/services/ollama-service.js +293 -310
  82. package/dist/services/ollama-service.js.map +1 -1
  83. package/dist/services/rules-storage.js +142 -0
  84. package/dist/services/rules-storage.js.map +1 -0
  85. package/dist/services/session-quota-manager.js +219 -235
  86. package/dist/services/session-quota-manager.js.map +1 -1
  87. package/dist/services/shell-input-agent.js +299 -334
  88. package/dist/services/shell-input-agent.js.map +1 -1
  89. package/dist/services/sub-agent-manager.js +459 -501
  90. package/dist/services/sub-agent-manager.js.map +1 -1
  91. package/dist/services/warpify-detector.js +133 -183
  92. package/dist/services/warpify-detector.js.map +1 -1
  93. package/dist/services/workflow-storage.js +202 -217
  94. package/dist/services/workflow-storage.js.map +1 -1
  95. package/dist/test-ssh-handler.js +148 -193
  96. package/dist/test-ssh-handler.js.map +1 -1
  97. package/dist/tools/add-mcp.js +161 -0
  98. package/dist/tools/add-mcp.js.map +1 -0
  99. package/dist/tools/background-command.js +240 -273
  100. package/dist/tools/background-command.js.map +1 -1
  101. package/dist/tools/command.js +447 -440
  102. package/dist/tools/command.js.map +1 -1
  103. package/dist/tools/create-image.js +172 -202
  104. package/dist/tools/create-image.js.map +1 -1
  105. package/dist/tools/enter-remote-session.js +169 -215
  106. package/dist/tools/enter-remote-session.js.map +1 -1
  107. package/dist/tools/fast-context.js +60 -67
  108. package/dist/tools/fast-context.js.map +1 -1
  109. package/dist/tools/file-ops.js +601 -572
  110. package/dist/tools/file-ops.js.map +1 -1
  111. package/dist/tools/find-files.js +262 -303
  112. package/dist/tools/find-files.js.map +1 -1
  113. package/dist/tools/get-diff.js +423 -406
  114. package/dist/tools/get-diff.js.map +1 -1
  115. package/dist/tools/grep-search.js +966 -948
  116. package/dist/tools/grep-search.js.map +1 -1
  117. package/dist/tools/inspect-symbol.js +308 -323
  118. package/dist/tools/inspect-symbol.js.map +1 -1
  119. package/dist/tools/plan-mode.js +459 -503
  120. package/dist/tools/plan-mode.js.map +1 -1
  121. package/dist/tools/read-binary-file.js +160 -190
  122. package/dist/tools/read-binary-file.js.map +1 -1
  123. package/dist/tools/registry.js +100 -84
  124. package/dist/tools/registry.js.map +1 -1
  125. package/dist/tools/reproduce_issue.js +170 -151
  126. package/dist/tools/reproduce_issue.js.map +1 -1
  127. package/dist/tools/sub-agent.js +223 -228
  128. package/dist/tools/sub-agent.js.map +1 -1
  129. package/dist/tools/task-complete.js +28 -27
  130. package/dist/tools/task-complete.js.map +1 -1
  131. package/dist/tools/types.js +0 -1
  132. package/dist/tools/types.js.map +1 -1
  133. package/dist/tools/validation.js +96 -118
  134. package/dist/tools/validation.js.map +1 -1
  135. package/dist/tools/web-search.js +194 -194
  136. package/dist/tools/web-search.js.map +1 -1
  137. package/dist/tools/workflow-tool.js +77 -82
  138. package/dist/tools/workflow-tool.js.map +1 -1
  139. package/dist/types/index.js +0 -1
  140. package/dist/types/index.js.map +1 -1
  141. package/dist/types/rule.js +1 -0
  142. package/dist/types/rule.js.map +1 -0
  143. package/dist/types/workflow.js +0 -7
  144. package/dist/types/workflow.js.map +1 -1
  145. package/dist/ui/components/AgentTimer.js +24 -25
  146. package/dist/ui/components/AgentTimer.js.map +1 -1
  147. package/dist/ui/components/App.js +3266 -3263
  148. package/dist/ui/components/App.js.map +1 -1
  149. package/dist/ui/components/AuthScreen.js +22 -34
  150. package/dist/ui/components/AuthScreen.js.map +1 -1
  151. package/dist/ui/components/AuthWelcomeScreen.js +30 -24
  152. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
  153. package/dist/ui/components/Breadcrumbs.js +53 -82
  154. package/dist/ui/components/Breadcrumbs.js.map +1 -1
  155. package/dist/ui/components/CircularSelectInput.js +59 -67
  156. package/dist/ui/components/CircularSelectInput.js.map +1 -1
  157. package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
  158. package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
  159. package/dist/ui/components/CodeBlock.js +24 -42
  160. package/dist/ui/components/CodeBlock.js.map +1 -1
  161. package/dist/ui/components/ConfigViewer.js +18 -25
  162. package/dist/ui/components/ConfigViewer.js.map +1 -1
  163. package/dist/ui/components/ConfirmPrompt.js +49 -71
  164. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  165. package/dist/ui/components/ConnectionStatusMessage.js +32 -83
  166. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
  167. package/dist/ui/components/ContextWindowIndicator.js +34 -49
  168. package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
  169. package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
  170. package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
  171. package/dist/ui/components/DiffViewer.js +68 -121
  172. package/dist/ui/components/DiffViewer.js.map +1 -1
  173. package/dist/ui/components/ErrorBoundary.js +40 -48
  174. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  175. package/dist/ui/components/FileCreationPreview.js +29 -60
  176. package/dist/ui/components/FileCreationPreview.js.map +1 -1
  177. package/dist/ui/components/FileOperation.js +34 -29
  178. package/dist/ui/components/FileOperation.js.map +1 -1
  179. package/dist/ui/components/FileTagAutocomplete.js +55 -25
  180. package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
  181. package/dist/ui/components/FontRecommendation.js.map +1 -1
  182. package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
  183. package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
  184. package/dist/ui/components/InputBox.js +1620 -2150
  185. package/dist/ui/components/InputBox.js.map +1 -1
  186. package/dist/ui/components/InteractiveShell.js +234 -352
  187. package/dist/ui/components/InteractiveShell.js.map +1 -1
  188. package/dist/ui/components/KeyboardHelp.js +34 -35
  189. package/dist/ui/components/KeyboardHelp.js.map +1 -1
  190. package/dist/ui/components/LoadingIndicator.js +22 -25
  191. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  192. package/dist/ui/components/MCPAddScreen.js +40 -51
  193. package/dist/ui/components/MCPAddScreen.js.map +1 -1
  194. package/dist/ui/components/MCPListScreen.js +40 -48
  195. package/dist/ui/components/MCPListScreen.js.map +1 -1
  196. package/dist/ui/components/MCPServerListScreen.js +49 -56
  197. package/dist/ui/components/MCPServerListScreen.js.map +1 -1
  198. package/dist/ui/components/MarkdownRenderer.js +69 -96
  199. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  200. package/dist/ui/components/MessageBox.js +66 -48
  201. package/dist/ui/components/MessageBox.js.map +1 -1
  202. package/dist/ui/components/MessageDisplay.js +150 -142
  203. package/dist/ui/components/MessageDisplay.js.map +1 -1
  204. package/dist/ui/components/MonitorModeAIPanel.js +46 -65
  205. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
  206. package/dist/ui/components/MultiLineInput.js +243 -277
  207. package/dist/ui/components/MultiLineInput.js.map +1 -1
  208. package/dist/ui/components/PasswordPrompt.js +37 -18
  209. package/dist/ui/components/PasswordPrompt.js.map +1 -1
  210. package/dist/ui/components/PlanAcceptedMessage.js +27 -38
  211. package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
  212. package/dist/ui/components/PlanReviewScreen.js +46 -50
  213. package/dist/ui/components/PlanReviewScreen.js.map +1 -1
  214. package/dist/ui/components/RulesEditorScreen.js +81 -0
  215. package/dist/ui/components/RulesEditorScreen.js.map +1 -0
  216. package/dist/ui/components/SelectPrompt.js +19 -8
  217. package/dist/ui/components/SelectPrompt.js.map +1 -1
  218. package/dist/ui/components/ShimmerText.js +44 -0
  219. package/dist/ui/components/ShimmerText.js.map +1 -0
  220. package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
  221. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
  222. package/dist/ui/components/StatusBar.js +56 -87
  223. package/dist/ui/components/StatusBar.js.map +1 -1
  224. package/dist/ui/components/StreamingMessageDisplay.js +116 -99
  225. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  226. package/dist/ui/components/TaskCompletedMessage.js +28 -23
  227. package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
  228. package/dist/ui/components/TaskProgressIndicator.js +44 -70
  229. package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
  230. package/dist/ui/components/ThinkingDisplay.js +44 -41
  231. package/dist/ui/components/ThinkingDisplay.js.map +1 -1
  232. package/dist/ui/components/ToolExecutionMessage.js +772 -1326
  233. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  234. package/dist/ui/components/ToolExecutionStatus.js +53 -84
  235. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  236. package/dist/ui/components/ToolResult.js +22 -15
  237. package/dist/ui/components/ToolResult.js.map +1 -1
  238. package/dist/ui/components/VersionUpdatePrompt.js +88 -120
  239. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  240. package/dist/ui/components/WelcomeBanner.js +176 -26
  241. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  242. package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
  243. package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
  244. package/dist/utils/ansi-encoder.js +30 -61
  245. package/dist/utils/ansi-encoder.js.map +1 -1
  246. package/dist/utils/chat-formatter.js +327 -305
  247. package/dist/utils/chat-formatter.js.map +1 -1
  248. package/dist/utils/command-history.js +152 -174
  249. package/dist/utils/command-history.js.map +1 -1
  250. package/dist/utils/context-sanitizer.js +49 -112
  251. package/dist/utils/context-sanitizer.js.map +1 -1
  252. package/dist/utils/conversation-logger.js +292 -324
  253. package/dist/utils/conversation-logger.js.map +1 -1
  254. package/dist/utils/custom-commands-manager.js +126 -131
  255. package/dist/utils/custom-commands-manager.js.map +1 -1
  256. package/dist/utils/editor-utils.js +732 -837
  257. package/dist/utils/editor-utils.js.map +1 -1
  258. package/dist/utils/file.js +174 -213
  259. package/dist/utils/file.js.map +1 -1
  260. package/dist/utils/git-stats.js +169 -0
  261. package/dist/utils/git-stats.js.map +1 -0
  262. package/dist/utils/input-classifier.js +960 -482
  263. package/dist/utils/input-classifier.js.map +1 -1
  264. package/dist/utils/logger.js +48 -73
  265. package/dist/utils/logger.js.map +1 -1
  266. package/dist/utils/markdown-parser.js +277 -310
  267. package/dist/utils/markdown-parser.js.map +1 -1
  268. package/dist/utils/rule-reference-resolver.js +54 -0
  269. package/dist/utils/rule-reference-resolver.js.map +1 -0
  270. package/dist/utils/shell.js +144 -156
  271. package/dist/utils/shell.js.map +1 -1
  272. package/dist/utils/state.js +23 -22
  273. package/dist/utils/state.js.map +1 -1
  274. package/dist/utils/syntax-checker.js +279 -327
  275. package/dist/utils/syntax-checker.js.map +1 -1
  276. package/dist/utils/terminal-output.js +199 -302
  277. package/dist/utils/terminal-output.js.map +1 -1
  278. package/dist/utils/text-clipboard.js +47 -70
  279. package/dist/utils/text-clipboard.js.map +1 -1
  280. package/dist/utils/unicode-sanitizer.js +134 -197
  281. package/dist/utils/unicode-sanitizer.js.map +1 -1
  282. package/dist/utils/version-checker.js +46 -56
  283. package/dist/utils/version-checker.js.map +1 -1
  284. package/package.json +6 -4
  285. package/dist/ai/types.d.ts +0 -20
  286. package/dist/ai/types.d.ts.map +0 -1
  287. package/dist/cli-adapter.d.ts +0 -514
  288. package/dist/cli-adapter.d.ts.map +0 -1
  289. package/dist/commands/CommandParser.d.ts +0 -27
  290. package/dist/commands/CommandParser.d.ts.map +0 -1
  291. package/dist/config/build-config.d.ts +0 -42
  292. package/dist/config/build-config.d.ts.map +0 -1
  293. package/dist/config/defaultConfig.d.ts +0 -79
  294. package/dist/config/defaultConfig.d.ts.map +0 -1
  295. package/dist/config/manager.d.ts +0 -62
  296. package/dist/config/manager.d.ts.map +0 -1
  297. package/dist/config/mcp-config-manager.d.ts +0 -79
  298. package/dist/config/mcp-config-manager.d.ts.map +0 -1
  299. package/dist/config/models.d.ts +0 -83
  300. package/dist/config/models.d.ts.map +0 -1
  301. package/dist/config/slash-commands.d.ts +0 -23
  302. package/dist/config/slash-commands.d.ts.map +0 -1
  303. package/dist/config/types.d.ts +0 -35
  304. package/dist/config/types.d.ts.map +0 -1
  305. package/dist/context/command-detector.d.ts +0 -50
  306. package/dist/context/command-detector.d.ts.map +0 -1
  307. package/dist/context/context-manager.d.ts +0 -157
  308. package/dist/context/context-manager.d.ts.map +0 -1
  309. package/dist/context/handlers/docker-handler.d.ts +0 -130
  310. package/dist/context/handlers/docker-handler.d.ts.map +0 -1
  311. package/dist/context/handlers/ssh-handler.d.ts +0 -201
  312. package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
  313. package/dist/context/handlers/wsl-handler.d.ts +0 -146
  314. package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
  315. package/dist/context/index.d.ts +0 -8
  316. package/dist/context/index.d.ts.map +0 -1
  317. package/dist/context/subshell-handler.d.ts +0 -165
  318. package/dist/context/subshell-handler.d.ts.map +0 -1
  319. package/dist/context/types.d.ts +0 -70
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/useConnectivity.d.ts +0 -2
  322. package/dist/hooks/useConnectivity.d.ts.map +0 -1
  323. package/dist/hooks/useTerminalDimensions.d.ts +0 -41
  324. package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
  325. package/dist/index.d.ts +0 -9
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/mcp/mcp-command-handler.d.ts +0 -47
  328. package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
  329. package/dist/mcp/mcp-server-manager.d.ts +0 -30
  330. package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
  331. package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
  332. package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
  333. package/dist/services/ai-autocomplete-agent.d.ts +0 -39
  334. package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
  335. package/dist/services/ai-context-injector.d.ts +0 -41
  336. package/dist/services/ai-context-injector.d.ts.map +0 -1
  337. package/dist/services/ai-service-client.d.ts +0 -128
  338. package/dist/services/ai-service-client.d.ts.map +0 -1
  339. package/dist/services/api-client.d.ts +0 -353
  340. package/dist/services/api-client.d.ts.map +0 -1
  341. package/dist/services/auth-handler.d.ts +0 -30
  342. package/dist/services/auth-handler.d.ts.map +0 -1
  343. package/dist/services/background-task-manager.d.ts +0 -114
  344. package/dist/services/background-task-manager.d.ts.map +0 -1
  345. package/dist/services/checkpoint-manager.d.ts +0 -204
  346. package/dist/services/checkpoint-manager.d.ts.map +0 -1
  347. package/dist/services/clipboard-service.d.ts +0 -37
  348. package/dist/services/clipboard-service.d.ts.map +0 -1
  349. package/dist/services/connectivity-manager.d.ts +0 -18
  350. package/dist/services/connectivity-manager.d.ts.map +0 -1
  351. package/dist/services/conversation-manager.d.ts +0 -73
  352. package/dist/services/conversation-manager.d.ts.map +0 -1
  353. package/dist/services/environment-context-injector.d.ts +0 -69
  354. package/dist/services/environment-context-injector.d.ts.map +0 -1
  355. package/dist/services/fast-context-agent.d.ts +0 -12
  356. package/dist/services/fast-context-agent.d.ts.map +0 -1
  357. package/dist/services/input-detection-agent.d.ts +0 -40
  358. package/dist/services/input-detection-agent.d.ts.map +0 -1
  359. package/dist/services/input-requirement-detector.d.ts +0 -28
  360. package/dist/services/input-requirement-detector.d.ts.map +0 -1
  361. package/dist/services/local-chat-storage.d.ts +0 -182
  362. package/dist/services/local-chat-storage.d.ts.map +0 -1
  363. package/dist/services/monitored-shell-manager.d.ts +0 -120
  364. package/dist/services/monitored-shell-manager.d.ts.map +0 -1
  365. package/dist/services/ollama-service.d.ts +0 -197
  366. package/dist/services/ollama-service.d.ts.map +0 -1
  367. package/dist/services/session-quota-manager.d.ts +0 -101
  368. package/dist/services/session-quota-manager.d.ts.map +0 -1
  369. package/dist/services/shell-input-agent.d.ts +0 -89
  370. package/dist/services/shell-input-agent.d.ts.map +0 -1
  371. package/dist/services/sub-agent-manager.d.ts +0 -140
  372. package/dist/services/sub-agent-manager.d.ts.map +0 -1
  373. package/dist/services/warpify-detector.d.ts +0 -43
  374. package/dist/services/warpify-detector.d.ts.map +0 -1
  375. package/dist/services/workflow-storage.d.ts +0 -72
  376. package/dist/services/workflow-storage.d.ts.map +0 -1
  377. package/dist/test-ssh-handler.d.ts +0 -8
  378. package/dist/test-ssh-handler.d.ts.map +0 -1
  379. package/dist/tools/background-command.d.ts +0 -11
  380. package/dist/tools/background-command.d.ts.map +0 -1
  381. package/dist/tools/command.d.ts +0 -3
  382. package/dist/tools/command.d.ts.map +0 -1
  383. package/dist/tools/create-image.d.ts +0 -10
  384. package/dist/tools/create-image.d.ts.map +0 -1
  385. package/dist/tools/enter-remote-session.d.ts +0 -48
  386. package/dist/tools/enter-remote-session.d.ts.map +0 -1
  387. package/dist/tools/fast-context.d.ts +0 -3
  388. package/dist/tools/fast-context.d.ts.map +0 -1
  389. package/dist/tools/file-ops.d.ts +0 -7
  390. package/dist/tools/file-ops.d.ts.map +0 -1
  391. package/dist/tools/find-files.d.ts +0 -49
  392. package/dist/tools/find-files.d.ts.map +0 -1
  393. package/dist/tools/get-diff.d.ts +0 -14
  394. package/dist/tools/get-diff.d.ts.map +0 -1
  395. package/dist/tools/grep-search.d.ts +0 -155
  396. package/dist/tools/grep-search.d.ts.map +0 -1
  397. package/dist/tools/inspect-symbol.d.ts +0 -32
  398. package/dist/tools/inspect-symbol.d.ts.map +0 -1
  399. package/dist/tools/plan-mode.d.ts +0 -140
  400. package/dist/tools/plan-mode.d.ts.map +0 -1
  401. package/dist/tools/read-binary-file.d.ts +0 -10
  402. package/dist/tools/read-binary-file.d.ts.map +0 -1
  403. package/dist/tools/registry.d.ts +0 -31
  404. package/dist/tools/registry.d.ts.map +0 -1
  405. package/dist/tools/reproduce_issue.d.ts +0 -2
  406. package/dist/tools/reproduce_issue.d.ts.map +0 -1
  407. package/dist/tools/sub-agent.d.ts +0 -9
  408. package/dist/tools/sub-agent.d.ts.map +0 -1
  409. package/dist/tools/task-complete.d.ts +0 -3
  410. package/dist/tools/task-complete.d.ts.map +0 -1
  411. package/dist/tools/types.d.ts +0 -40
  412. package/dist/tools/types.d.ts.map +0 -1
  413. package/dist/tools/validation.d.ts +0 -47
  414. package/dist/tools/validation.d.ts.map +0 -1
  415. package/dist/tools/web-search.d.ts +0 -24
  416. package/dist/tools/web-search.d.ts.map +0 -1
  417. package/dist/tools/workflow-tool.d.ts +0 -11
  418. package/dist/tools/workflow-tool.d.ts.map +0 -1
  419. package/dist/types/index.d.ts +0 -123
  420. package/dist/types/index.d.ts.map +0 -1
  421. package/dist/types/workflow.d.ts +0 -110
  422. package/dist/types/workflow.d.ts.map +0 -1
  423. package/dist/ui/components/AgentTimer.d.ts +0 -7
  424. package/dist/ui/components/AgentTimer.d.ts.map +0 -1
  425. package/dist/ui/components/App.d.ts +0 -197
  426. package/dist/ui/components/App.d.ts.map +0 -1
  427. package/dist/ui/components/AuthScreen.d.ts +0 -8
  428. package/dist/ui/components/AuthScreen.d.ts.map +0 -1
  429. package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
  430. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
  431. package/dist/ui/components/Breadcrumbs.d.ts +0 -13
  432. package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
  433. package/dist/ui/components/CircularSelectInput.d.ts +0 -24
  434. package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
  435. package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
  436. package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
  437. package/dist/ui/components/CodeBlock.d.ts +0 -9
  438. package/dist/ui/components/CodeBlock.d.ts.map +0 -1
  439. package/dist/ui/components/ConfigViewer.d.ts +0 -11
  440. package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
  441. package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
  442. package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
  443. package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
  444. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
  445. package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
  446. package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
  447. package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
  448. package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
  449. package/dist/ui/components/DiffViewer.d.ts +0 -9
  450. package/dist/ui/components/DiffViewer.d.ts.map +0 -1
  451. package/dist/ui/components/ErrorBoundary.d.ts +0 -17
  452. package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
  453. package/dist/ui/components/FileCreationPreview.d.ts +0 -8
  454. package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
  455. package/dist/ui/components/FileOperation.d.ts +0 -10
  456. package/dist/ui/components/FileOperation.d.ts.map +0 -1
  457. package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
  458. package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
  459. package/dist/ui/components/FontRecommendation.d.ts +0 -1
  460. package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
  461. package/dist/ui/components/InputBox.d.ts +0 -42
  462. package/dist/ui/components/InputBox.d.ts.map +0 -1
  463. package/dist/ui/components/InteractiveShell.d.ts +0 -30
  464. package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
  465. package/dist/ui/components/KeyboardHelp.d.ts +0 -7
  466. package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
  467. package/dist/ui/components/LoadingIndicator.d.ts +0 -3
  468. package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
  469. package/dist/ui/components/MCPAddScreen.d.ts +0 -13
  470. package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
  471. package/dist/ui/components/MCPListScreen.d.ts +0 -17
  472. package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
  473. package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
  474. package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
  475. package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
  476. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  477. package/dist/ui/components/MessageBox.d.ts +0 -10
  478. package/dist/ui/components/MessageBox.d.ts.map +0 -1
  479. package/dist/ui/components/MessageDisplay.d.ts +0 -14
  480. package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
  481. package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
  482. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
  483. package/dist/ui/components/MultiLineInput.d.ts +0 -13
  484. package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
  485. package/dist/ui/components/PasswordPrompt.d.ts +0 -9
  486. package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
  487. package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
  488. package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
  489. package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
  490. package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
  491. package/dist/ui/components/SelectPrompt.d.ts +0 -12
  492. package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
  493. package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
  494. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
  495. package/dist/ui/components/StatusBar.d.ts +0 -14
  496. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  497. package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
  498. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
  499. package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
  500. package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
  501. package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
  502. package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
  503. package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
  504. package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
  505. package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
  506. package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
  507. package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
  508. package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
  509. package/dist/ui/components/ToolResult.d.ts +0 -10
  510. package/dist/ui/components/ToolResult.d.ts.map +0 -1
  511. package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
  512. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
  513. package/dist/ui/components/WelcomeBanner.d.ts +0 -3
  514. package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
  515. package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
  516. package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
  517. package/dist/utils/ansi-encoder.d.ts +0 -7
  518. package/dist/utils/ansi-encoder.d.ts.map +0 -1
  519. package/dist/utils/chat-formatter.d.ts +0 -12
  520. package/dist/utils/chat-formatter.d.ts.map +0 -1
  521. package/dist/utils/command-history.d.ts +0 -24
  522. package/dist/utils/command-history.d.ts.map +0 -1
  523. package/dist/utils/context-sanitizer.d.ts +0 -50
  524. package/dist/utils/context-sanitizer.d.ts.map +0 -1
  525. package/dist/utils/conversation-logger.d.ts +0 -142
  526. package/dist/utils/conversation-logger.d.ts.map +0 -1
  527. package/dist/utils/custom-commands-manager.d.ts +0 -59
  528. package/dist/utils/custom-commands-manager.d.ts.map +0 -1
  529. package/dist/utils/editor-utils.d.ts +0 -101
  530. package/dist/utils/editor-utils.d.ts.map +0 -1
  531. package/dist/utils/file.d.ts +0 -61
  532. package/dist/utils/file.d.ts.map +0 -1
  533. package/dist/utils/input-classifier.d.ts +0 -25
  534. package/dist/utils/input-classifier.d.ts.map +0 -1
  535. package/dist/utils/logger.d.ts +0 -17
  536. package/dist/utils/logger.d.ts.map +0 -1
  537. package/dist/utils/markdown-parser.d.ts +0 -60
  538. package/dist/utils/markdown-parser.d.ts.map +0 -1
  539. package/dist/utils/shell.d.ts +0 -47
  540. package/dist/utils/shell.d.ts.map +0 -1
  541. package/dist/utils/state.d.ts +0 -13
  542. package/dist/utils/state.d.ts.map +0 -1
  543. package/dist/utils/syntax-checker.d.ts +0 -24
  544. package/dist/utils/syntax-checker.d.ts.map +0 -1
  545. package/dist/utils/terminal-output.d.ts +0 -25
  546. package/dist/utils/terminal-output.d.ts.map +0 -1
  547. package/dist/utils/text-clipboard.d.ts +0 -12
  548. package/dist/utils/text-clipboard.d.ts.map +0 -1
  549. package/dist/utils/unicode-sanitizer.d.ts +0 -44
  550. package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
  551. package/dist/utils/version-checker.d.ts +0 -14
  552. package/dist/utils/version-checker.d.ts.map +0 -1
@@ -1,97 +1,184 @@
1
- /**
2
- * AI Context Injector
3
- *
4
- * Injects subshell context into AI message history to make the AI aware
5
- * of the current execution environment (SSH, WSL, Docker, etc.)
6
- */
7
- /**
8
- * AI Context Injector class
9
- * Handles injection of subshell context into message history before AI calls
10
- */
11
- export class AIContextInjector {
12
- /**
13
- * Inject subshell context into message history
14
- *
15
- * If the current context is a subshell (not local), this method inserts
16
- * a system message describing the environment before the last user message.
17
- * This ensures the AI is aware of where commands will execute.
18
- *
19
- * @param messages - The conversation history
20
- * @param context - The current subshell context
21
- * @returns Modified message array with context injected (if applicable)
22
- */
23
- injectSubshellContext(messages, context) {
24
- // Don't inject context for local environment
25
- if (context.type === 'local') {
26
- return messages;
27
- }
28
- // Build context message
29
- const contextMessage = {
30
- role: 'system',
31
- content: this.buildContextMessage(context),
32
- };
33
- // Insert context message before the last user message
34
- // This ensures the AI sees the context right before processing the request
35
- const result = [...messages];
36
- // Find the last user message index
37
- let lastUserMessageIndex = -1;
38
- for (let i = result.length - 1; i >= 0; i--) {
39
- if (result[i].role === 'user') {
40
- lastUserMessageIndex = i;
41
- break;
42
- }
43
- }
44
- // If we found a user message, insert context before it
45
- // Otherwise, append to the end
46
- if (lastUserMessageIndex >= 0) {
47
- result.splice(lastUserMessageIndex, 0, contextMessage);
48
- }
49
- else {
50
- result.push(contextMessage);
51
- }
52
- return result;
1
+ class AIContextInjector {
2
+ /**
3
+ * Inject subshell context into message history
4
+ *
5
+ * If the current context is a subshell (not local), this method inserts
6
+ * a system message describing the environment before the last user message.
7
+ * This ensures the AI is aware of where commands will execute.
8
+ *
9
+ * @param messages - The conversation history
10
+ * @param context - The current subshell context
11
+ * @returns Modified message array with context injected (if applicable)
12
+ */
13
+ injectSubshellContext(messages, context) {
14
+ if (context.type === "local") {
15
+ return messages;
53
16
  }
54
- /**
55
- * Build context message describing the current subshell environment
56
- *
57
- * Creates a formatted message that informs the AI about:
58
- * - Environment type (SSH, WSL, Docker)
59
- * - Working directory
60
- * - Shell type
61
- * - Operating system
62
- * - Connection details (hostname, username, etc.)
63
- *
64
- * @param context - The current subshell context
65
- * @returns Formatted context message string
66
- */
67
- buildContextMessage(context) {
68
- const { type, metadata } = context;
69
- let message = `\n\n## CURRENT EXECUTION ENVIRONMENT\n\n`;
70
- message += `You are currently operating in a ${type.toUpperCase()} environment.\n\n`;
71
- message += `**Environment Details:**\n`;
72
- message += `- Type: ${type}\n`;
73
- message += `- Working Directory: ${metadata.workingDirectory}\n`;
74
- message += `- Shell: ${metadata.shell}\n`;
75
- message += `- OS: ${metadata.os}\n`;
76
- // Add type-specific details
77
- if (metadata.hostname) {
78
- message += `- Hostname: ${metadata.hostname}\n`;
79
- }
80
- if (metadata.username) {
81
- message += `- Username: ${metadata.username}\n`;
82
- }
83
- if (metadata.distroName) {
84
- message += `- Distribution: ${metadata.distroName}\n`;
85
- }
86
- if (metadata.containerId) {
87
- message += `- Container: ${metadata.containerId}\n`;
88
- }
89
- if (metadata.port) {
90
- message += `- Port: ${metadata.port}\n`;
91
- }
92
- message += `\n**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.\n`;
93
- message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.\n`;
94
- return message;
17
+ const contextMessage = {
18
+ role: "system",
19
+ content: this.buildContextMessage(context)
20
+ };
21
+ const result = [...messages];
22
+ let lastUserMessageIndex = -1;
23
+ for (let i = result.length - 1; i >= 0; i--) {
24
+ if (result[i].role === "user") {
25
+ lastUserMessageIndex = i;
26
+ break;
27
+ }
95
28
  }
29
+ if (lastUserMessageIndex >= 0) {
30
+ result.splice(lastUserMessageIndex, 0, contextMessage);
31
+ } else {
32
+ result.push(contextMessage);
33
+ }
34
+ return result;
35
+ }
36
+ /**
37
+ * Build context message describing the current subshell environment
38
+ *
39
+ * Creates a formatted message that informs the AI about:
40
+ * - Environment type (SSH, WSL, Docker)
41
+ * - Working directory
42
+ * - Shell type
43
+ * - Operating system
44
+ * - Connection details (hostname, username, etc.)
45
+ *
46
+ * @param context - The current subshell context
47
+ * @returns Formatted context message string
48
+ */
49
+ buildContextMessage(context) {
50
+ const { type, metadata } = context;
51
+ let message = `
52
+
53
+ ## CURRENT EXECUTION ENVIRONMENT
54
+
55
+ `;
56
+ message += `You are currently operating in a ${type.toUpperCase()} environment.
57
+
58
+ `;
59
+ message += `**Environment Details:**
60
+ `;
61
+ message += `- Type: ${type}
62
+ `;
63
+ message += `- Working Directory: ${metadata.workingDirectory}
64
+ `;
65
+ message += `- Shell: ${metadata.shell}
66
+ `;
67
+ message += `- OS: ${metadata.os}
68
+ `;
69
+ if (metadata.hostname) {
70
+ message += `- Hostname: ${metadata.hostname}
71
+ `;
72
+ }
73
+ if (metadata.username) {
74
+ message += `- Username: ${metadata.username}
75
+ `;
76
+ }
77
+ if (metadata.distroName) {
78
+ message += `- Distribution: ${metadata.distroName}
79
+ `;
80
+ }
81
+ if (metadata.containerId) {
82
+ message += `- Container: ${metadata.containerId}
83
+ `;
84
+ }
85
+ if (metadata.port) {
86
+ message += `- Port: ${metadata.port}
87
+ `;
88
+ }
89
+ message += `
90
+ **IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.
91
+ `;
92
+ message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.
93
+ `;
94
+ return message;
95
+ }
96
+ /**
97
+ * Inject MCP auto-provisioning context into message history.
98
+ *
99
+ * Adds a system message informing the AI that it has the ability to
100
+ * dynamically discover and add MCP servers at runtime, enabling it to
101
+ * interact with external services (browsers, APIs, databases, etc.)
102
+ * even when no MCP servers are currently configured.
103
+ *
104
+ * @param messages - The conversation history
105
+ * @param connectedMcpServers - Names of currently connected MCP servers (for awareness)
106
+ * @returns Modified message array with MCP context injected
107
+ */
108
+ injectMCPContext(messages, connectedMcpServers) {
109
+ const contextMessage = {
110
+ role: "system",
111
+ content: this.buildMCPContextMessage(connectedMcpServers)
112
+ };
113
+ const result = [...messages];
114
+ let lastUserMessageIndex = -1;
115
+ for (let i = result.length - 1; i >= 0; i--) {
116
+ if (result[i].role === "user") {
117
+ lastUserMessageIndex = i;
118
+ break;
119
+ }
120
+ }
121
+ if (lastUserMessageIndex >= 0) {
122
+ result.splice(lastUserMessageIndex, 0, contextMessage);
123
+ } else {
124
+ result.push(contextMessage);
125
+ }
126
+ return result;
127
+ }
128
+ /**
129
+ * Build the MCP auto-provisioning context message.
130
+ */
131
+ buildMCPContextMessage(connectedServers) {
132
+ let message = `
133
+ ## MCP AUTO-PROVISIONING
134
+
135
+ `;
136
+ message += `You have the ability to dynamically add MCP (Model Context Protocol) servers at runtime using the \`add_mcp\` tool. `;
137
+ message += `This means you can interact with ANY external service, application, or environment \u2014 even if no MCP integration is currently configured.
138
+
139
+ `;
140
+ if (connectedServers.length > 0) {
141
+ message += `**Currently connected MCP servers:** ${connectedServers.join(", ")}
142
+ `;
143
+ message += `Tools from these servers are already available (prefixed with \`mcp_<serverName>_\`).
144
+
145
+ `;
146
+ } else {
147
+ message += `**No MCP servers are currently connected.** You can add them on the fly when needed.
148
+
149
+ `;
150
+ }
151
+ message += `**When the user asks you to interact with an external service or application (e.g., "open Chrome", "send a Slack message", "query the database", "control my smart home"), follow this workflow:**
152
+
153
+ `;
154
+ message += `1. **Check existing tools** \u2014 Look at your available tools to see if an MCP integration already provides what you need.
155
+ `;
156
+ message += `2. **Search the web** \u2014 If no existing tool handles the request, use \`web_search\` to find the right MCP server package. Search for queries like "MCP server for browser control", "MCP server for Slack", etc. Good sources include the MCP server registry, npm, and GitHub.
157
+ `;
158
+ message += `3. **Get the config** \u2014 From the search results or documentation, determine the correct command, args, and any required env vars (API keys, tokens).
159
+ `;
160
+ message += `4. **Add the MCP server** \u2014 Use the \`add_mcp\` tool with the correct config. The tool will connect to the server and register its tools automatically.
161
+ `;
162
+ message += `5. **Use the new tools** \u2014 Once connected, immediately use the newly available \`mcp_<serverName>_<toolName>\` tools to fulfill the user's request.
163
+
164
+ `;
165
+ message += `**Tips for finding MCP servers:**
166
+ `;
167
+ message += `- Search npm for packages starting with \`@modelcontextprotocol/\` or \`mcp-server-\`
168
+ `;
169
+ message += `- Many MCP servers are run via \`npx -y <package-name>\`
170
+ `;
171
+ message += `- Check the package README for required environment variables
172
+ `;
173
+ message += `- If a server needs an API key and the user hasn't provided one, ask them for it before adding the server
174
+ `;
175
+ message += `- If the first server you try doesn't work, search for alternatives and try again
176
+
177
+ `;
178
+ return message;
179
+ }
96
180
  }
181
+ export {
182
+ AIContextInjector
183
+ };
97
184
  //# sourceMappingURL=ai-context-injector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-context-injector.js","sourceRoot":"","sources":["../../src/services/ai-context-injector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,QAAmB,EAAE,OAAwB;QACjE,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAY;YAC9B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;SAC3C,CAAC;QAEF,sDAAsD;QACtD,2EAA2E;QAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,mCAAmC;QACnC,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,oBAAoB,GAAG,CAAC,CAAC;gBACzB,MAAM;YACR,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,+BAA+B;QAC/B,IAAI,oBAAoB,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,mBAAmB,CAAC,OAAwB;QAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEnC,IAAI,OAAO,GAAG,0CAA0C,CAAC;QACzD,OAAO,IAAI,oCAAoC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC;QACrF,OAAO,IAAI,4BAA4B,CAAC;QACxC,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC;QAC/B,OAAO,IAAI,wBAAwB,QAAQ,CAAC,gBAAgB,IAAI,CAAC;QACjE,OAAO,IAAI,YAAY,QAAQ,CAAC,KAAK,IAAI,CAAC;QAC1C,OAAO,IAAI,SAAS,QAAQ,CAAC,EAAE,IAAI,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,mBAAmB,QAAQ,CAAC,UAAU,IAAI,CAAC;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,IAAI,gBAAgB,QAAQ,CAAC,WAAW,IAAI,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,WAAW,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,kFAAkF,IAAI,2CAA2C,CAAC;QAC7I,OAAO,IAAI,oHAAoH,IAAI,iBAAiB,CAAC;QAErJ,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"sources":["../../src/services/ai-context-injector.ts"],"sourcesContent":["/**\r\n * AI Context Injector\r\n * \r\n * Injects subshell context into AI message history to make the AI aware\r\n * of the current execution environment (SSH, WSL, Docker, etc.)\r\n */\r\n\r\nimport type { Message } from './ai-service-client.js';\r\nimport type { SubshellContext } from '../context/types.js';\r\n\r\n/**\r\n * AI Context Injector class\r\n * Handles injection of subshell context into message history before AI calls\r\n */\r\nexport class AIContextInjector {\r\n /**\r\n * Inject subshell context into message history\r\n * \r\n * If the current context is a subshell (not local), this method inserts\r\n * a system message describing the environment before the last user message.\r\n * This ensures the AI is aware of where commands will execute.\r\n * \r\n * @param messages - The conversation history\r\n * @param context - The current subshell context\r\n * @returns Modified message array with context injected (if applicable)\r\n */\r\n injectSubshellContext(messages: Message[], context: SubshellContext): Message[] {\r\n // Don't inject context for local environment\r\n if (context.type === 'local') {\r\n return messages;\r\n }\r\n\r\n // Build context message\r\n const contextMessage: Message = {\r\n role: 'system',\r\n content: this.buildContextMessage(context),\r\n };\r\n\r\n // Insert context message before the last user message\r\n // This ensures the AI sees the context right before processing the request\r\n const result = [...messages];\r\n \r\n // Find the last user message index\r\n let lastUserMessageIndex = -1;\r\n for (let i = result.length - 1; i >= 0; i--) {\r\n if (result[i].role === 'user') {\r\n lastUserMessageIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n // If we found a user message, insert context before it\r\n // Otherwise, append to the end\r\n if (lastUserMessageIndex >= 0) {\r\n result.splice(lastUserMessageIndex, 0, contextMessage);\r\n } else {\r\n result.push(contextMessage);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Build context message describing the current subshell environment\r\n * \r\n * Creates a formatted message that informs the AI about:\r\n * - Environment type (SSH, WSL, Docker)\r\n * - Working directory\r\n * - Shell type\r\n * - Operating system\r\n * - Connection details (hostname, username, etc.)\r\n * \r\n * @param context - The current subshell context\r\n * @returns Formatted context message string\r\n */\r\n private buildContextMessage(context: SubshellContext): string {\r\n const { type, metadata } = context;\r\n\r\n let message = `\\n\\n## CURRENT EXECUTION ENVIRONMENT\\n\\n`;\r\n message += `You are currently operating in a ${type.toUpperCase()} environment.\\n\\n`;\r\n message += `**Environment Details:**\\n`;\r\n message += `- Type: ${type}\\n`;\r\n message += `- Working Directory: ${metadata.workingDirectory}\\n`;\r\n message += `- Shell: ${metadata.shell}\\n`;\r\n message += `- OS: ${metadata.os}\\n`;\r\n\r\n // Add type-specific details\r\n if (metadata.hostname) {\r\n message += `- Hostname: ${metadata.hostname}\\n`;\r\n }\r\n if (metadata.username) {\r\n message += `- Username: ${metadata.username}\\n`;\r\n }\r\n if (metadata.distroName) {\r\n message += `- Distribution: ${metadata.distroName}\\n`;\r\n }\r\n if (metadata.containerId) {\r\n message += `- Container: ${metadata.containerId}\\n`;\r\n }\r\n if (metadata.port) {\r\n message += `- Port: ${metadata.port}\\n`;\r\n }\r\n\r\n message += `\\n**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.\\n`;\r\n message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.\\n`;\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Inject MCP auto-provisioning context into message history.\r\n *\r\n * Adds a system message informing the AI that it has the ability to\r\n * dynamically discover and add MCP servers at runtime, enabling it to\r\n * interact with external services (browsers, APIs, databases, etc.)\r\n * even when no MCP servers are currently configured.\r\n *\r\n * @param messages - The conversation history\r\n * @param connectedMcpServers - Names of currently connected MCP servers (for awareness)\r\n * @returns Modified message array with MCP context injected\r\n */\r\n injectMCPContext(messages: Message[], connectedMcpServers: string[]): Message[] {\r\n const contextMessage: Message = {\r\n role: 'system',\r\n content: this.buildMCPContextMessage(connectedMcpServers),\r\n };\r\n\r\n const result = [...messages];\r\n\r\n // Find the last user message index\r\n let lastUserMessageIndex = -1;\r\n for (let i = result.length - 1; i >= 0; i--) {\r\n if (result[i].role === 'user') {\r\n lastUserMessageIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n if (lastUserMessageIndex >= 0) {\r\n result.splice(lastUserMessageIndex, 0, contextMessage);\r\n } else {\r\n result.push(contextMessage);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Build the MCP auto-provisioning context message.\r\n */\r\n private buildMCPContextMessage(connectedServers: string[]): string {\r\n let message = `\\n## MCP AUTO-PROVISIONING\\n\\n`;\r\n message += `You have the ability to dynamically add MCP (Model Context Protocol) servers at runtime using the \\`add_mcp\\` tool. `;\r\n message += `This means you can interact with ANY external service, application, or environment — even if no MCP integration is currently configured.\\n\\n`;\r\n\r\n if (connectedServers.length > 0) {\r\n message += `**Currently connected MCP servers:** ${connectedServers.join(', ')}\\n`;\r\n message += `Tools from these servers are already available (prefixed with \\`mcp_<serverName>_\\`).\\n\\n`;\r\n } else {\r\n message += `**No MCP servers are currently connected.** You can add them on the fly when needed.\\n\\n`;\r\n }\r\n\r\n message += `**When the user asks you to interact with an external service or application (e.g., \"open Chrome\", \"send a Slack message\", \"query the database\", \"control my smart home\"), follow this workflow:**\\n\\n`;\r\n message += `1. **Check existing tools** — Look at your available tools to see if an MCP integration already provides what you need.\\n`;\r\n message += `2. **Search the web** — If no existing tool handles the request, use \\`web_search\\` to find the right MCP server package. Search for queries like \"MCP server for browser control\", \"MCP server for Slack\", etc. Good sources include the MCP server registry, npm, and GitHub.\\n`;\r\n message += `3. **Get the config** — From the search results or documentation, determine the correct command, args, and any required env vars (API keys, tokens).\\n`;\r\n message += `4. **Add the MCP server** — Use the \\`add_mcp\\` tool with the correct config. The tool will connect to the server and register its tools automatically.\\n`;\r\n message += `5. **Use the new tools** — Once connected, immediately use the newly available \\`mcp_<serverName>_<toolName>\\` tools to fulfill the user's request.\\n\\n`;\r\n\r\n message += `**Tips for finding MCP servers:**\\n`;\r\n message += `- Search npm for packages starting with \\`@modelcontextprotocol/\\` or \\`mcp-server-\\`\\n`;\r\n message += `- Many MCP servers are run via \\`npx -y <package-name>\\`\\n`;\r\n message += `- Check the package README for required environment variables\\n`;\r\n message += `- If a server needs an API key and the user hasn't provided one, ask them for it before adding the server\\n`;\r\n message += `- If the first server you try doesn't work, search for alternatives and try again\\n\\n`;\r\n\r\n return message;\r\n }\r\n}\r\n"],"mappings":"AAcO,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY7B,sBAAsB,UAAqB,SAAqC;AAE9E,QAAI,QAAQ,SAAS,SAAS;AAC5B,aAAO;AAAA,IACT;AAGA,UAAM,iBAA0B;AAAA,MAC9B,MAAM;AAAA,MACN,SAAS,KAAK,oBAAoB,OAAO;AAAA,IAC3C;AAIA,UAAM,SAAS,CAAC,GAAG,QAAQ;AAG3B,QAAI,uBAAuB;AAC3B,aAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,UAAI,OAAO,CAAC,EAAE,SAAS,QAAQ;AAC7B,+BAAuB;AACvB;AAAA,MACF;AAAA,IACF;AAIA,QAAI,wBAAwB,GAAG;AAC7B,aAAO,OAAO,sBAAsB,GAAG,cAAc;AAAA,IACvD,OAAO;AACL,aAAO,KAAK,cAAc;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeQ,oBAAoB,SAAkC;AAC5D,UAAM,EAAE,MAAM,SAAS,IAAI;AAE3B,QAAI,UAAU;AAAA;AAAA;AAAA;AAAA;AACd,eAAW,oCAAoC,KAAK,YAAY,CAAC;AAAA;AAAA;AACjE,eAAW;AAAA;AACX,eAAW,WAAW,IAAI;AAAA;AAC1B,eAAW,wBAAwB,SAAS,gBAAgB;AAAA;AAC5D,eAAW,YAAY,SAAS,KAAK;AAAA;AACrC,eAAW,SAAS,SAAS,EAAE;AAAA;AAG/B,QAAI,SAAS,UAAU;AACrB,iBAAW,eAAe,SAAS,QAAQ;AAAA;AAAA,IAC7C;AACA,QAAI,SAAS,UAAU;AACrB,iBAAW,eAAe,SAAS,QAAQ;AAAA;AAAA,IAC7C;AACA,QAAI,SAAS,YAAY;AACvB,iBAAW,mBAAmB,SAAS,UAAU;AAAA;AAAA,IACnD;AACA,QAAI,SAAS,aAAa;AACxB,iBAAW,gBAAgB,SAAS,WAAW;AAAA;AAAA,IACjD;AACA,QAAI,SAAS,MAAM;AACjB,iBAAW,WAAW,SAAS,IAAI;AAAA;AAAA,IACrC;AAEA,eAAW;AAAA,+EAAkF,IAAI;AAAA;AACjG,eAAW,oHAAoH,IAAI;AAAA;AAEnI,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,iBAAiB,UAAqB,qBAA0C;AAC9E,UAAM,iBAA0B;AAAA,MAC9B,MAAM;AAAA,MACN,SAAS,KAAK,uBAAuB,mBAAmB;AAAA,IAC1D;AAEA,UAAM,SAAS,CAAC,GAAG,QAAQ;AAG3B,QAAI,uBAAuB;AAC3B,aAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,UAAI,OAAO,CAAC,EAAE,SAAS,QAAQ;AAC7B,+BAAuB;AACvB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,wBAAwB,GAAG;AAC7B,aAAO,OAAO,sBAAsB,GAAG,cAAc;AAAA,IACvD,OAAO;AACL,aAAO,KAAK,cAAc;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,uBAAuB,kBAAoC;AACjE,QAAI,UAAU;AAAA;AAAA;AAAA;AACd,eAAW;AACX,eAAW;AAAA;AAAA;AAEX,QAAI,iBAAiB,SAAS,GAAG;AAC/B,iBAAW,wCAAwC,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAC9E,iBAAW;AAAA;AAAA;AAAA,IACb,OAAO;AACL,iBAAW;AAAA;AAAA;AAAA,IACb;AAEA,eAAW;AAAA;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AAAA;AAEX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AACX,eAAW;AAAA;AAAA;AAEX,WAAO;AAAA,EACT;AACF;","names":[]}