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,129 +1,126 @@
1
- /**
2
- * Conversation Manager Service
3
- *
4
- * Handles conversation and message persistence through the backend API
5
- */
6
- import { apiClient } from './api-client.js';
7
- export class ConversationManager {
8
- static instance;
9
- currentConversationId = null;
10
- conversationCache = new Map();
11
- constructor() { }
12
- static getInstance() {
13
- if (!ConversationManager.instance) {
14
- ConversationManager.instance = new ConversationManager();
15
- }
16
- return ConversationManager.instance;
1
+ import { apiClient } from "./api-client.js";
2
+ class ConversationManager {
3
+ static instance;
4
+ currentConversationId = null;
5
+ conversationCache = /* @__PURE__ */ new Map();
6
+ constructor() {
7
+ }
8
+ static getInstance() {
9
+ if (!ConversationManager.instance) {
10
+ ConversationManager.instance = new ConversationManager();
17
11
  }
18
- /**
19
- * Create a new conversation
20
- */
21
- async createConversation(data) {
22
- const conversation = await apiClient.createConversation(data);
23
- this.currentConversationId = conversation.id;
24
- this.conversationCache.set(conversation.id, conversation);
25
- return conversation;
12
+ return ConversationManager.instance;
13
+ }
14
+ /**
15
+ * Create a new conversation
16
+ */
17
+ async createConversation(data) {
18
+ const conversation = await apiClient.createConversation(data);
19
+ this.currentConversationId = conversation.id;
20
+ this.conversationCache.set(conversation.id, conversation);
21
+ return conversation;
22
+ }
23
+ /**
24
+ * Get the current conversation ID
25
+ */
26
+ getCurrentConversationId() {
27
+ return this.currentConversationId;
28
+ }
29
+ /**
30
+ * Set the current conversation ID
31
+ */
32
+ setCurrentConversationId(id) {
33
+ this.currentConversationId = id;
34
+ }
35
+ /**
36
+ * Get a conversation by ID
37
+ */
38
+ async getConversation(id) {
39
+ const cached = this.conversationCache.get(id);
40
+ if (cached) {
41
+ return cached;
26
42
  }
27
- /**
28
- * Get the current conversation ID
29
- */
30
- getCurrentConversationId() {
31
- return this.currentConversationId;
43
+ const conversation = await apiClient.getConversation(id);
44
+ this.conversationCache.set(id, conversation);
45
+ return conversation;
46
+ }
47
+ /**
48
+ * Get all conversations
49
+ */
50
+ async getConversations(params) {
51
+ const response = await apiClient.getConversations(params);
52
+ if (response.data) {
53
+ response.data.forEach((conv) => {
54
+ this.conversationCache.set(conv.id, conv);
55
+ });
32
56
  }
33
- /**
34
- * Set the current conversation ID
35
- */
36
- setCurrentConversationId(id) {
37
- this.currentConversationId = id;
57
+ return response.data || [];
58
+ }
59
+ /**
60
+ * Update a conversation
61
+ */
62
+ async updateConversation(id, data) {
63
+ const conversation = await apiClient.updateConversation(id, data);
64
+ this.conversationCache.set(id, conversation);
65
+ return conversation;
66
+ }
67
+ /**
68
+ * Delete (archive) a conversation
69
+ */
70
+ async deleteConversation(id) {
71
+ await apiClient.deleteConversation(id);
72
+ this.conversationCache.delete(id);
73
+ if (this.currentConversationId === id) {
74
+ this.currentConversationId = null;
38
75
  }
39
- /**
40
- * Get a conversation by ID
41
- */
42
- async getConversation(id) {
43
- // Check cache first
44
- const cached = this.conversationCache.get(id);
45
- if (cached) {
46
- return cached;
47
- }
48
- // Fetch from API
49
- const conversation = await apiClient.getConversation(id);
50
- this.conversationCache.set(id, conversation);
51
- return conversation;
76
+ }
77
+ /**
78
+ * Add a message to the current conversation
79
+ */
80
+ async addMessage(message) {
81
+ if (!this.currentConversationId) {
82
+ throw new Error("No active conversation. Create a conversation first.");
52
83
  }
53
- /**
54
- * Get all conversations
55
- */
56
- async getConversations(params) {
57
- const response = await apiClient.getConversations(params);
58
- // Update cache
59
- if (response.data) {
60
- response.data.forEach(conv => {
61
- this.conversationCache.set(conv.id, conv);
62
- });
63
- }
64
- return response.data || [];
65
- }
66
- /**
67
- * Update a conversation
68
- */
69
- async updateConversation(id, data) {
70
- const conversation = await apiClient.updateConversation(id, data);
71
- this.conversationCache.set(id, conversation);
72
- return conversation;
73
- }
74
- /**
75
- * Delete (archive) a conversation
76
- */
77
- async deleteConversation(id) {
78
- await apiClient.deleteConversation(id);
79
- this.conversationCache.delete(id);
80
- if (this.currentConversationId === id) {
81
- this.currentConversationId = null;
82
- }
83
- }
84
- /**
85
- * Add a message to the current conversation
86
- */
87
- async addMessage(message) {
88
- if (!this.currentConversationId) {
89
- throw new Error('No active conversation. Create a conversation first.');
90
- }
91
- return await apiClient.addMessage(this.currentConversationId, message);
92
- }
93
- /**
94
- * Get messages for a conversation
95
- */
96
- async getMessages(conversationId, params) {
97
- const id = conversationId || this.currentConversationId;
98
- if (!id) {
99
- throw new Error('No conversation ID provided');
100
- }
101
- const response = await apiClient.getMessages(id, params);
102
- return response.data || [];
103
- }
104
- /**
105
- * Clear the conversation cache
106
- */
107
- clearCache() {
108
- this.conversationCache.clear();
109
- }
110
- /**
111
- * Start a new conversation session
112
- * Creates a conversation with default settings
113
- */
114
- async startNewConversation(title, model, provider, workingDirectory) {
115
- const conversation = await this.createConversation({
116
- title,
117
- modelUsed: model,
118
- provider,
119
- workingDirectory: workingDirectory || process.cwd(),
120
- tags: [],
121
- metadata: {
122
- startedAt: new Date().toISOString(),
123
- },
124
- });
125
- return conversation;
84
+ return await apiClient.addMessage(this.currentConversationId, message);
85
+ }
86
+ /**
87
+ * Get messages for a conversation
88
+ */
89
+ async getMessages(conversationId, params) {
90
+ const id = conversationId || this.currentConversationId;
91
+ if (!id) {
92
+ throw new Error("No conversation ID provided");
126
93
  }
94
+ const response = await apiClient.getMessages(id, params);
95
+ return response.data || [];
96
+ }
97
+ /**
98
+ * Clear the conversation cache
99
+ */
100
+ clearCache() {
101
+ this.conversationCache.clear();
102
+ }
103
+ /**
104
+ * Start a new conversation session
105
+ * Creates a conversation with default settings
106
+ */
107
+ async startNewConversation(title, model, provider, workingDirectory) {
108
+ const conversation = await this.createConversation({
109
+ title,
110
+ modelUsed: model,
111
+ provider,
112
+ workingDirectory: workingDirectory || process.cwd(),
113
+ tags: [],
114
+ metadata: {
115
+ startedAt: (/* @__PURE__ */ new Date()).toISOString()
116
+ }
117
+ });
118
+ return conversation;
119
+ }
127
120
  }
128
- export const conversationManager = ConversationManager.getInstance();
121
+ const conversationManager = ConversationManager.getInstance();
122
+ export {
123
+ ConversationManager,
124
+ conversationManager
125
+ };
129
126
  //# sourceMappingURL=conversation-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../src/services/conversation-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/services/conversation-manager.ts"],"sourcesContent":["/**\r\n * Conversation Manager Service\r\n * \r\n * Handles conversation and message persistence through the backend API\r\n */\r\n\r\nimport { apiClient, Conversation, Message, CreateConversationRequest, CreateMessageRequest } from './api-client.js';\r\n\r\nexport class ConversationManager {\r\n private static instance: ConversationManager;\r\n private currentConversationId: string | null = null;\r\n private conversationCache: Map<string, Conversation> = new Map();\r\n\r\n private constructor() { }\r\n\r\n static getInstance(): ConversationManager {\r\n if (!ConversationManager.instance) {\r\n ConversationManager.instance = new ConversationManager();\r\n }\r\n return ConversationManager.instance;\r\n }\r\n\r\n /**\r\n * Create a new conversation\r\n */\r\n async createConversation(data: CreateConversationRequest): Promise<Conversation> {\r\n const conversation = await apiClient.createConversation(data);\r\n this.currentConversationId = conversation.id;\r\n this.conversationCache.set(conversation.id, conversation);\r\n return conversation;\r\n }\r\n\r\n /**\r\n * Get the current conversation ID\r\n */\r\n getCurrentConversationId(): string | null {\r\n return this.currentConversationId;\r\n }\r\n\r\n /**\r\n * Set the current conversation ID\r\n */\r\n setCurrentConversationId(id: string | null): void {\r\n this.currentConversationId = id;\r\n }\r\n\r\n /**\r\n * Get a conversation by ID\r\n */\r\n async getConversation(id: string): Promise<Conversation> {\r\n // Check cache first\r\n const cached = this.conversationCache.get(id);\r\n if (cached) {\r\n return cached;\r\n }\r\n\r\n // Fetch from API\r\n const conversation = await apiClient.getConversation(id);\r\n this.conversationCache.set(id, conversation);\r\n return conversation;\r\n }\r\n\r\n /**\r\n * Get all conversations\r\n */\r\n async getConversations(params?: {\r\n page?: number;\r\n limit?: number;\r\n includeArchived?: boolean;\r\n tags?: string[];\r\n }): Promise<Conversation[]> {\r\n const response = await apiClient.getConversations(params);\r\n\r\n // Update cache\r\n if (response.data) {\r\n response.data.forEach(conv => {\r\n this.conversationCache.set(conv.id, conv);\r\n });\r\n }\r\n\r\n return response.data || [];\r\n }\r\n\r\n /**\r\n * Update a conversation\r\n */\r\n async updateConversation(\r\n id: string,\r\n data: { title?: string; tags?: string[]; isPinned?: boolean; metadata?: Record<string, any> }\r\n ): Promise<Conversation> {\r\n const conversation = await apiClient.updateConversation(id, data);\r\n this.conversationCache.set(id, conversation);\r\n return conversation;\r\n }\r\n\r\n /**\r\n * Delete (archive) a conversation\r\n */\r\n async deleteConversation(id: string): Promise<void> {\r\n await apiClient.deleteConversation(id);\r\n this.conversationCache.delete(id);\r\n\r\n if (this.currentConversationId === id) {\r\n this.currentConversationId = null;\r\n }\r\n }\r\n\r\n /**\r\n * Add a message to the current conversation\r\n */\r\n async addMessage(message: CreateMessageRequest): Promise<Message> {\r\n if (!this.currentConversationId) {\r\n throw new Error('No active conversation. Create a conversation first.');\r\n }\r\n\r\n return await apiClient.addMessage(this.currentConversationId, message);\r\n }\r\n\r\n /**\r\n * Get messages for a conversation\r\n */\r\n async getMessages(\r\n conversationId?: string,\r\n params?: { page?: number; limit?: number }\r\n ): Promise<Message[]> {\r\n const id = conversationId || this.currentConversationId;\r\n\r\n if (!id) {\r\n throw new Error('No conversation ID provided');\r\n }\r\n\r\n const response = await apiClient.getMessages(id, params);\r\n return response.data || [];\r\n }\r\n\r\n /**\r\n * Clear the conversation cache\r\n */\r\n clearCache(): void {\r\n this.conversationCache.clear();\r\n }\r\n\r\n /**\r\n * Start a new conversation session\r\n * Creates a conversation with default settings\r\n */\r\n async startNewConversation(\r\n title: string,\r\n model: string,\r\n provider: string,\r\n workingDirectory?: string\r\n ): Promise<Conversation> {\r\n const conversation = await this.createConversation({\r\n title,\r\n modelUsed: model,\r\n provider,\r\n workingDirectory: workingDirectory || process.cwd(),\r\n tags: [],\r\n metadata: {\r\n startedAt: new Date().toISOString(),\r\n },\r\n });\r\n\r\n return conversation;\r\n }\r\n}\r\n\r\nexport const conversationManager = ConversationManager.getInstance();\r\n"],"mappings":"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","names":[]}
@@ -1,198 +1,171 @@
1
- /**
2
- * Environment Context Injector
3
- *
4
- * Detects runtime environment information (OS, shell, CWD, git root, etc.)
5
- * and formats it for injection into the system prompt to provide the AI
6
- * with context about the user's environment.
7
- */
8
- import { platform, type, release, userInfo } from 'os';
9
- import { execSync } from 'child_process';
10
- import { readFileSync } from 'fs';
11
- /**
12
- * Environment Context Injector class
13
- * Handles detection and formatting of environment context for AI prompts
14
- */
15
- export class EnvironmentContextInjector {
16
- cachedContext = null;
17
- lastCwd = '';
18
- /**
19
- * Detect current environment context
20
- * Uses caching to avoid re-detecting on every request
21
- * Updates cache when CWD changes
22
- */
23
- detectContext(cwdOverride) {
24
- const currentCwd = cwdOverride || process.cwd();
25
- // Return cached context if CWD hasn't changed
26
- if (this.cachedContext && this.lastCwd === currentCwd) {
27
- // Update date even when using cache
28
- return {
29
- ...this.cachedContext,
30
- date: new Date().toISOString(),
31
- };
32
- }
33
- // Detect fresh context
34
- const context = {
35
- osName: this.detectOSName(),
36
- osType: this.detectOSType(),
37
- shell: this.detectShell(),
38
- username: this.detectUsername(),
39
- cwd: currentCwd,
40
- projectRoot: this.detectProjectRoot(currentCwd),
41
- date: new Date().toISOString(),
42
- };
43
- // Cache the context
44
- this.cachedContext = context;
45
- this.lastCwd = currentCwd;
46
- return context;
47
- }
48
- /**
49
- * Format context as structured markdown block for system prompt
50
- */
51
- formatContextBlock(context) {
52
- let block = '\n\n# ENVIRONMENT CONTEXT\n\n';
53
- block += 'The following information describes your current execution environment:\n\n';
54
- block += `- **Operating System**: ${context.osName} (${context.osType})\n`;
55
- block += `- **Shell**: ${context.shell}\n`;
56
- block += `- **Username**: ${context.username}\n`;
57
- block += `- **Current Working Directory**: ${context.cwd}\n`;
58
- block += `- **Project Root**: ${context.projectRoot}\n`;
59
- block += `- **Current Date**: ${context.date}\n`;
60
- block += '\n';
61
- block += '**Important**: Use this context to generate platform-specific commands and appropriate file paths.\n';
62
- block += 'All file operations and commands will execute relative to the Current Working Directory.\n\n';
63
- return block;
1
+ import { platform, type, release, userInfo } from "os";
2
+ import { execSync } from "child_process";
3
+ import { readFileSync } from "fs";
4
+ class EnvironmentContextInjector {
5
+ cachedContext = null;
6
+ lastCwd = "";
7
+ /**
8
+ * Detect current environment context
9
+ * Uses caching to avoid re-detecting on every request
10
+ * Updates cache when CWD changes
11
+ */
12
+ detectContext(cwdOverride) {
13
+ const currentCwd = cwdOverride || process.cwd();
14
+ if (this.cachedContext && this.lastCwd === currentCwd) {
15
+ return {
16
+ ...this.cachedContext,
17
+ date: (/* @__PURE__ */ new Date()).toISOString()
18
+ };
64
19
  }
65
- /**
66
- * Get enhanced system prompt with injected environment context
67
- * Prepends context block to the base system prompt
68
- */
69
- getEnhancedSystemPrompt(basePrompt, cwdOverride) {
70
- const context = this.detectContext(cwdOverride);
71
- const contextBlock = this.formatContextBlock(context);
72
- // Prepend context block to base prompt
73
- return contextBlock + basePrompt;
74
- }
75
- /**
76
- * Detect detailed OS name with version
77
- */
78
- detectOSName() {
79
- const osType = platform();
80
- const osRelease = release();
81
- try {
82
- if (osType === 'win32') {
83
- // Try to get Windows version name
84
- const version = execSync('wmic os get Caption', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
85
- const match = version.match(/Microsoft Windows [^\r\n]+/);
86
- if (match) {
87
- return match[0].trim();
88
- }
89
- return `Windows ${osRelease}`;
90
- }
91
- else if (osType === 'darwin') {
92
- // macOS
93
- const version = execSync('sw_vers -productVersion', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
94
- return `macOS ${version.trim()}`;
95
- }
96
- else if (osType === 'linux') {
97
- // Try to read /etc/os-release for Linux distribution info
98
- try {
99
- const osReleaseContent = readFileSync('/etc/os-release', 'utf-8');
100
- const prettyNameMatch = osReleaseContent.match(/PRETTY_NAME="([^"]+)"/);
101
- if (prettyNameMatch) {
102
- return prettyNameMatch[1];
103
- }
104
- }
105
- catch {
106
- // Fall through to generic Linux
107
- }
108
- return `Linux ${osRelease}`;
109
- }
20
+ const context = {
21
+ osName: this.detectOSName(),
22
+ osType: this.detectOSType(),
23
+ shell: this.detectShell(),
24
+ username: this.detectUsername(),
25
+ cwd: currentCwd,
26
+ projectRoot: this.detectProjectRoot(currentCwd),
27
+ date: (/* @__PURE__ */ new Date()).toISOString()
28
+ };
29
+ this.cachedContext = context;
30
+ this.lastCwd = currentCwd;
31
+ return context;
32
+ }
33
+ /**
34
+ * Format context as structured markdown block for system prompt
35
+ */
36
+ formatContextBlock(context) {
37
+ let block = "\n\n# ENVIRONMENT CONTEXT\n\n";
38
+ block += "The following information describes your current execution environment:\n\n";
39
+ block += `- **Operating System**: ${context.osName} (${context.osType})
40
+ `;
41
+ block += `- **Shell**: ${context.shell}
42
+ `;
43
+ block += `- **Username**: ${context.username}
44
+ `;
45
+ block += `- **Current Working Directory**: ${context.cwd}
46
+ `;
47
+ block += `- **Project Root**: ${context.projectRoot}
48
+ `;
49
+ block += `- **Current Date**: ${context.date}
50
+ `;
51
+ block += "\n";
52
+ block += "**Important**: Use this context to generate platform-specific commands and appropriate file paths.\n";
53
+ block += "All file operations and commands will execute relative to the Current Working Directory.\n\n";
54
+ return block;
55
+ }
56
+ /**
57
+ * Get enhanced system prompt with injected environment context
58
+ * Prepends context block to the base system prompt
59
+ */
60
+ getEnhancedSystemPrompt(basePrompt, cwdOverride) {
61
+ const context = this.detectContext(cwdOverride);
62
+ const contextBlock = this.formatContextBlock(context);
63
+ return contextBlock + basePrompt;
64
+ }
65
+ /**
66
+ * Detect detailed OS name with version
67
+ */
68
+ detectOSName() {
69
+ const osType = platform();
70
+ const osRelease = release();
71
+ try {
72
+ if (osType === "win32") {
73
+ const version = execSync("wmic os get Caption", { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] });
74
+ const match = version.match(/Microsoft Windows [^\r\n]+/);
75
+ if (match) {
76
+ return match[0].trim();
110
77
  }
111
- catch (error) {
112
- // Fall back to basic info if detection fails
78
+ return `Windows ${osRelease}`;
79
+ } else if (osType === "darwin") {
80
+ const version = execSync("sw_vers -productVersion", { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] });
81
+ return `macOS ${version.trim()}`;
82
+ } else if (osType === "linux") {
83
+ try {
84
+ const osReleaseContent = readFileSync("/etc/os-release", "utf-8");
85
+ const prettyNameMatch = osReleaseContent.match(/PRETTY_NAME="([^"]+)"/);
86
+ if (prettyNameMatch) {
87
+ return prettyNameMatch[1];
88
+ }
89
+ } catch {
113
90
  }
114
- return `${type()} ${osRelease}`;
91
+ return `Linux ${osRelease}`;
92
+ }
93
+ } catch (error) {
115
94
  }
116
- /**
117
- * Detect OS type (simplified)
118
- */
119
- detectOSType() {
120
- const osType = platform();
121
- if (osType === 'win32')
122
- return 'Windows';
123
- if (osType === 'darwin')
124
- return 'Darwin';
125
- if (osType === 'linux')
126
- return 'Linux';
127
- return type();
95
+ return `${type()} ${osRelease}`;
96
+ }
97
+ /**
98
+ * Detect OS type (simplified)
99
+ */
100
+ detectOSType() {
101
+ const osType = platform();
102
+ if (osType === "win32") return "Windows";
103
+ if (osType === "darwin") return "Darwin";
104
+ if (osType === "linux") return "Linux";
105
+ return type();
106
+ }
107
+ /**
108
+ * Detect current shell
109
+ */
110
+ detectShell() {
111
+ if (process.env.SHELL) {
112
+ const shellPath = process.env.SHELL;
113
+ const shellName = shellPath.split("/").pop() || shellPath.split("\\").pop();
114
+ return shellName || "unknown";
128
115
  }
129
- /**
130
- * Detect current shell
131
- */
132
- detectShell() {
133
- // Check SHELL environment variable (Unix-like systems)
134
- if (process.env.SHELL) {
135
- const shellPath = process.env.SHELL;
136
- const shellName = shellPath.split('/').pop() || shellPath.split('\\').pop();
137
- return shellName || 'unknown';
138
- }
139
- // Check for PowerShell on Windows
140
- if (process.env.PSModulePath) {
141
- return 'PowerShell';
142
- }
143
- // Check COMSPEC for Windows Command Prompt
144
- if (process.env.COMSPEC) {
145
- const comspec = process.env.COMSPEC;
146
- if (comspec.toLowerCase().includes('cmd.exe')) {
147
- return 'cmd';
148
- }
149
- }
150
- // Fallback: detect from platform
151
- const osType = platform();
152
- if (osType === 'win32') {
153
- return 'PowerShell'; // Default assumption for Windows
154
- }
155
- return 'bash'; // Default assumption for Unix-like systems
116
+ if (process.env.PSModulePath) {
117
+ return "PowerShell";
156
118
  }
157
- /**
158
- * Detect current username
159
- */
160
- detectUsername() {
161
- try {
162
- const user = userInfo();
163
- return user.username;
164
- }
165
- catch (error) {
166
- // Fallback to environment variables
167
- return process.env.USER || process.env.USERNAME || 'unknown';
168
- }
119
+ if (process.env.COMSPEC) {
120
+ const comspec = process.env.COMSPEC;
121
+ if (comspec.toLowerCase().includes("cmd.exe")) {
122
+ return "cmd";
123
+ }
169
124
  }
170
- /**
171
- * Detect git repository root
172
- * Falls back to CWD if not in a git repository
173
- */
174
- detectProjectRoot(cwd) {
175
- try {
176
- const gitRoot = execSync('git rev-parse --show-toplevel', {
177
- cwd,
178
- encoding: 'utf-8',
179
- stdio: ['pipe', 'pipe', 'ignore'],
180
- }).trim();
181
- return gitRoot;
182
- }
183
- catch (error) {
184
- // Not in a git repository, return CWD
185
- return cwd;
186
- }
125
+ const osType = platform();
126
+ if (osType === "win32") {
127
+ return "PowerShell";
128
+ }
129
+ return "bash";
130
+ }
131
+ /**
132
+ * Detect current username
133
+ */
134
+ detectUsername() {
135
+ try {
136
+ const user = userInfo();
137
+ return user.username;
138
+ } catch (error) {
139
+ return process.env.USER || process.env.USERNAME || "unknown";
187
140
  }
188
- /**
189
- * Clear cached context (useful for testing or manual refresh)
190
- */
191
- clearCache() {
192
- this.cachedContext = null;
193
- this.lastCwd = '';
141
+ }
142
+ /**
143
+ * Detect git repository root
144
+ * Falls back to CWD if not in a git repository
145
+ */
146
+ detectProjectRoot(cwd) {
147
+ try {
148
+ const gitRoot = execSync("git rev-parse --show-toplevel", {
149
+ cwd,
150
+ encoding: "utf-8",
151
+ stdio: ["pipe", "pipe", "ignore"]
152
+ }).trim();
153
+ return gitRoot;
154
+ } catch (error) {
155
+ return cwd;
194
156
  }
157
+ }
158
+ /**
159
+ * Clear cached context (useful for testing or manual refresh)
160
+ */
161
+ clearCache() {
162
+ this.cachedContext = null;
163
+ this.lastCwd = "";
164
+ }
195
165
  }
196
- // Export singleton instance
197
- export const environmentContextInjector = new EnvironmentContextInjector();
166
+ const environmentContextInjector = new EnvironmentContextInjector();
167
+ export {
168
+ EnvironmentContextInjector,
169
+ environmentContextInjector
170
+ };
198
171
  //# sourceMappingURL=environment-context-injector.js.map