centaurus-cli 2.0.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 (338) hide show
  1. package/AUTH_FLOW.md +138 -0
  2. package/CONFIG_GUIDE.md +255 -0
  3. package/LICENSE +21 -0
  4. package/README.md +346 -0
  5. package/dist/ai/provider-factory.d.ts +6 -0
  6. package/dist/ai/provider-factory.d.ts.map +1 -0
  7. package/dist/ai/provider-factory.js +27 -0
  8. package/dist/ai/provider-factory.js.map +1 -0
  9. package/dist/ai/providers/base.d.ts +25 -0
  10. package/dist/ai/providers/base.d.ts.map +1 -0
  11. package/dist/ai/providers/base.js +9 -0
  12. package/dist/ai/providers/base.js.map +1 -0
  13. package/dist/ai/providers/gemini.d.ts +34 -0
  14. package/dist/ai/providers/gemini.d.ts.map +1 -0
  15. package/dist/ai/providers/gemini.js +146 -0
  16. package/dist/ai/providers/gemini.js.map +1 -0
  17. package/dist/ai/types.d.ts +20 -0
  18. package/dist/ai/types.d.ts.map +1 -0
  19. package/dist/ai/types.js +2 -0
  20. package/dist/ai/types.js.map +1 -0
  21. package/dist/cli-adapter.d.ts +78 -0
  22. package/dist/cli-adapter.d.ts.map +1 -0
  23. package/dist/cli-adapter.js +605 -0
  24. package/dist/cli-adapter.js.map +1 -0
  25. package/dist/commands/CommandParser.d.ts +27 -0
  26. package/dist/commands/CommandParser.d.ts.map +1 -0
  27. package/dist/commands/CommandParser.js +238 -0
  28. package/dist/commands/CommandParser.js.map +1 -0
  29. package/dist/config/ConfigManager.d.ts +59 -0
  30. package/dist/config/ConfigManager.d.ts.map +1 -0
  31. package/dist/config/ConfigManager.js +332 -0
  32. package/dist/config/ConfigManager.js.map +1 -0
  33. package/dist/config/defaultConfig.d.ts +82 -0
  34. package/dist/config/defaultConfig.d.ts.map +1 -0
  35. package/dist/config/defaultConfig.js +88 -0
  36. package/dist/config/defaultConfig.js.map +1 -0
  37. package/dist/config/manager.d.ts +60 -0
  38. package/dist/config/manager.d.ts.map +1 -0
  39. package/dist/config/manager.js +162 -0
  40. package/dist/config/manager.js.map +1 -0
  41. package/dist/config/types.d.ts +9 -0
  42. package/dist/config/types.d.ts.map +1 -0
  43. package/dist/config/types.js +6 -0
  44. package/dist/config/types.js.map +1 -0
  45. package/dist/index-custom.d.ts +3 -0
  46. package/dist/index-custom.d.ts.map +1 -0
  47. package/dist/index-custom.js +65 -0
  48. package/dist/index-custom.js.map +1 -0
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +102 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/prompts/system-prompt.d.ts +47 -0
  54. package/dist/prompts/system-prompt.d.ts.map +1 -0
  55. package/dist/prompts/system-prompt.js +378 -0
  56. package/dist/prompts/system-prompt.js.map +1 -0
  57. package/dist/providers/GoogleProvider.d.ts +26 -0
  58. package/dist/providers/GoogleProvider.d.ts.map +1 -0
  59. package/dist/providers/GoogleProvider.js +313 -0
  60. package/dist/providers/GoogleProvider.js.map +1 -0
  61. package/dist/providers/Provider.d.ts +114 -0
  62. package/dist/providers/Provider.d.ts.map +1 -0
  63. package/dist/providers/Provider.js +44 -0
  64. package/dist/providers/Provider.js.map +1 -0
  65. package/dist/services/api-client.d.ts +282 -0
  66. package/dist/services/api-client.d.ts.map +1 -0
  67. package/dist/services/api-client.js +339 -0
  68. package/dist/services/api-client.js.map +1 -0
  69. package/dist/services/auth-handler.d.ts +30 -0
  70. package/dist/services/auth-handler.d.ts.map +1 -0
  71. package/dist/services/auth-handler.js +210 -0
  72. package/dist/services/auth-handler.js.map +1 -0
  73. package/dist/services/conversation-manager.d.ts +73 -0
  74. package/dist/services/conversation-manager.d.ts.map +1 -0
  75. package/dist/services/conversation-manager.js +128 -0
  76. package/dist/services/conversation-manager.js.map +1 -0
  77. package/dist/tests/automated-verification.d.ts +27 -0
  78. package/dist/tests/automated-verification.d.ts.map +1 -0
  79. package/dist/tests/automated-verification.js +359 -0
  80. package/dist/tests/automated-verification.js.map +1 -0
  81. package/dist/tests/integration-tests.d.ts +50 -0
  82. package/dist/tests/integration-tests.d.ts.map +1 -0
  83. package/dist/tests/integration-tests.js +648 -0
  84. package/dist/tests/integration-tests.js.map +1 -0
  85. package/dist/tools/ToolRegistry.d.ts +44 -0
  86. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  87. package/dist/tools/ToolRegistry.js +494 -0
  88. package/dist/tools/ToolRegistry.js.map +1 -0
  89. package/dist/tools/command.d.ts +4 -0
  90. package/dist/tools/command.d.ts.map +1 -0
  91. package/dist/tools/command.js +117 -0
  92. package/dist/tools/command.js.map +1 -0
  93. package/dist/tools/file-ops-test.d.ts +6 -0
  94. package/dist/tools/file-ops-test.d.ts.map +1 -0
  95. package/dist/tools/file-ops-test.js +197 -0
  96. package/dist/tools/file-ops-test.js.map +1 -0
  97. package/dist/tools/file-ops.d.ts +6 -0
  98. package/dist/tools/file-ops.d.ts.map +1 -0
  99. package/dist/tools/file-ops.js +189 -0
  100. package/dist/tools/file-ops.js.map +1 -0
  101. package/dist/tools/plan-mode.d.ts +53 -0
  102. package/dist/tools/plan-mode.d.ts.map +1 -0
  103. package/dist/tools/plan-mode.js +202 -0
  104. package/dist/tools/plan-mode.js.map +1 -0
  105. package/dist/tools/registry.d.ts +30 -0
  106. package/dist/tools/registry.d.ts.map +1 -0
  107. package/dist/tools/registry.js +67 -0
  108. package/dist/tools/registry.js.map +1 -0
  109. package/dist/tools/types.d.ts +34 -0
  110. package/dist/tools/types.d.ts.map +1 -0
  111. package/dist/tools/types.js +2 -0
  112. package/dist/tools/types.js.map +1 -0
  113. package/dist/tools/web-search.d.ts +24 -0
  114. package/dist/tools/web-search.d.ts.map +1 -0
  115. package/dist/tools/web-search.js +194 -0
  116. package/dist/tools/web-search.js.map +1 -0
  117. package/dist/types/index.d.ts +32 -0
  118. package/dist/types/index.d.ts.map +1 -0
  119. package/dist/types/index.js +2 -0
  120. package/dist/types/index.js.map +1 -0
  121. package/dist/ui/DisplayHistory.d.ts +53 -0
  122. package/dist/ui/DisplayHistory.d.ts.map +1 -0
  123. package/dist/ui/DisplayHistory.js +82 -0
  124. package/dist/ui/DisplayHistory.js.map +1 -0
  125. package/dist/ui/clack-ui.d.ts +83 -0
  126. package/dist/ui/clack-ui.d.ts.map +1 -0
  127. package/dist/ui/clack-ui.js +304 -0
  128. package/dist/ui/clack-ui.js.map +1 -0
  129. package/dist/ui/components/App.d.ts +47 -0
  130. package/dist/ui/components/App.d.ts.map +1 -0
  131. package/dist/ui/components/App.js +389 -0
  132. package/dist/ui/components/App.js.map +1 -0
  133. package/dist/ui/components/AuthScreen.d.ts +8 -0
  134. package/dist/ui/components/AuthScreen.d.ts.map +1 -0
  135. package/dist/ui/components/AuthScreen.js +37 -0
  136. package/dist/ui/components/AuthScreen.js.map +1 -0
  137. package/dist/ui/components/AuthWelcomeScreen.d.ts +8 -0
  138. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +1 -0
  139. package/dist/ui/components/AuthWelcomeScreen.js +34 -0
  140. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -0
  141. package/dist/ui/components/CodeBlock.d.ts +9 -0
  142. package/dist/ui/components/CodeBlock.d.ts.map +1 -0
  143. package/dist/ui/components/CodeBlock.js +22 -0
  144. package/dist/ui/components/CodeBlock.js.map +1 -0
  145. package/dist/ui/components/ConfigViewer.d.ts +11 -0
  146. package/dist/ui/components/ConfigViewer.d.ts.map +1 -0
  147. package/dist/ui/components/ConfigViewer.js +27 -0
  148. package/dist/ui/components/ConfigViewer.js.map +1 -0
  149. package/dist/ui/components/ConfirmPrompt.d.ts +11 -0
  150. package/dist/ui/components/ConfirmPrompt.d.ts.map +1 -0
  151. package/dist/ui/components/ConfirmPrompt.js +55 -0
  152. package/dist/ui/components/ConfirmPrompt.js.map +1 -0
  153. package/dist/ui/components/DiffViewer.d.ts +8 -0
  154. package/dist/ui/components/DiffViewer.d.ts.map +1 -0
  155. package/dist/ui/components/DiffViewer.js +63 -0
  156. package/dist/ui/components/DiffViewer.js.map +1 -0
  157. package/dist/ui/components/DisplayItemRenderer.d.ts +18 -0
  158. package/dist/ui/components/DisplayItemRenderer.d.ts.map +1 -0
  159. package/dist/ui/components/DisplayItemRenderer.js +53 -0
  160. package/dist/ui/components/DisplayItemRenderer.js.map +1 -0
  161. package/dist/ui/components/DynamicMessage.d.ts +13 -0
  162. package/dist/ui/components/DynamicMessage.d.ts.map +1 -0
  163. package/dist/ui/components/DynamicMessage.js +27 -0
  164. package/dist/ui/components/DynamicMessage.js.map +1 -0
  165. package/dist/ui/components/ErrorBoundary.d.ts +16 -0
  166. package/dist/ui/components/ErrorBoundary.d.ts.map +1 -0
  167. package/dist/ui/components/ErrorBoundary.js +25 -0
  168. package/dist/ui/components/ErrorBoundary.js.map +1 -0
  169. package/dist/ui/components/FileOperation.d.ts +10 -0
  170. package/dist/ui/components/FileOperation.d.ts.map +1 -0
  171. package/dist/ui/components/FileOperation.js +31 -0
  172. package/dist/ui/components/FileOperation.js.map +1 -0
  173. package/dist/ui/components/InputBox.d.ts +12 -0
  174. package/dist/ui/components/InputBox.d.ts.map +1 -0
  175. package/dist/ui/components/InputBox.js +50 -0
  176. package/dist/ui/components/InputBox.js.map +1 -0
  177. package/dist/ui/components/KeyboardHelp.d.ts +7 -0
  178. package/dist/ui/components/KeyboardHelp.d.ts.map +1 -0
  179. package/dist/ui/components/KeyboardHelp.js +25 -0
  180. package/dist/ui/components/KeyboardHelp.js.map +1 -0
  181. package/dist/ui/components/LoadingIndicator.d.ts +3 -0
  182. package/dist/ui/components/LoadingIndicator.d.ts.map +1 -0
  183. package/dist/ui/components/LoadingIndicator.js +25 -0
  184. package/dist/ui/components/LoadingIndicator.js.map +1 -0
  185. package/dist/ui/components/MarkdownRenderer.d.ts +8 -0
  186. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -0
  187. package/dist/ui/components/MarkdownRenderer.js +96 -0
  188. package/dist/ui/components/MarkdownRenderer.js.map +1 -0
  189. package/dist/ui/components/MessageBox.d.ts +10 -0
  190. package/dist/ui/components/MessageBox.d.ts.map +1 -0
  191. package/dist/ui/components/MessageBox.js +50 -0
  192. package/dist/ui/components/MessageBox.js.map +1 -0
  193. package/dist/ui/components/MessageDisplay.d.ts +8 -0
  194. package/dist/ui/components/MessageDisplay.d.ts.map +1 -0
  195. package/dist/ui/components/MessageDisplay.js +43 -0
  196. package/dist/ui/components/MessageDisplay.js.map +1 -0
  197. package/dist/ui/components/ScrollableContent.d.ts +7 -0
  198. package/dist/ui/components/ScrollableContent.d.ts.map +1 -0
  199. package/dist/ui/components/ScrollableContent.js +6 -0
  200. package/dist/ui/components/ScrollableContent.js.map +1 -0
  201. package/dist/ui/components/ScrollableMessageList.d.ts +10 -0
  202. package/dist/ui/components/ScrollableMessageList.d.ts.map +1 -0
  203. package/dist/ui/components/ScrollableMessageList.js +133 -0
  204. package/dist/ui/components/ScrollableMessageList.js.map +1 -0
  205. package/dist/ui/components/ScrollableScreen.d.ts +9 -0
  206. package/dist/ui/components/ScrollableScreen.d.ts.map +1 -0
  207. package/dist/ui/components/ScrollableScreen.js +22 -0
  208. package/dist/ui/components/ScrollableScreen.js.map +1 -0
  209. package/dist/ui/components/SelectPrompt.d.ts +12 -0
  210. package/dist/ui/components/SelectPrompt.d.ts.map +1 -0
  211. package/dist/ui/components/SelectPrompt.js +10 -0
  212. package/dist/ui/components/SelectPrompt.js.map +1 -0
  213. package/dist/ui/components/StaticMessageHistory.d.ts +14 -0
  214. package/dist/ui/components/StaticMessageHistory.d.ts.map +1 -0
  215. package/dist/ui/components/StaticMessageHistory.js +19 -0
  216. package/dist/ui/components/StaticMessageHistory.js.map +1 -0
  217. package/dist/ui/components/StatusBar.d.ts +10 -0
  218. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  219. package/dist/ui/components/StatusBar.js +20 -0
  220. package/dist/ui/components/StatusBar.js.map +1 -0
  221. package/dist/ui/components/StreamingMessageDisplay.d.ts +13 -0
  222. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -0
  223. package/dist/ui/components/StreamingMessageDisplay.js +26 -0
  224. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -0
  225. package/dist/ui/components/ToolExecutionMessage.d.ts +8 -0
  226. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -0
  227. package/dist/ui/components/ToolExecutionMessage.js +189 -0
  228. package/dist/ui/components/ToolExecutionMessage.js.map +1 -0
  229. package/dist/ui/components/ToolExecutionStatus.d.ts +10 -0
  230. package/dist/ui/components/ToolExecutionStatus.d.ts.map +1 -0
  231. package/dist/ui/components/ToolExecutionStatus.js +65 -0
  232. package/dist/ui/components/ToolExecutionStatus.js.map +1 -0
  233. package/dist/ui/components/ToolResult.d.ts +10 -0
  234. package/dist/ui/components/ToolResult.d.ts.map +1 -0
  235. package/dist/ui/components/ToolResult.js +17 -0
  236. package/dist/ui/components/ToolResult.js.map +1 -0
  237. package/dist/ui/components/WelcomeBanner.d.ts +3 -0
  238. package/dist/ui/components/WelcomeBanner.d.ts.map +1 -0
  239. package/dist/ui/components/WelcomeBanner.js +28 -0
  240. package/dist/ui/components/WelcomeBanner.js.map +1 -0
  241. package/dist/ui/components/code-block.d.ts +10 -0
  242. package/dist/ui/components/code-block.d.ts.map +1 -0
  243. package/dist/ui/components/code-block.js +74 -0
  244. package/dist/ui/components/code-block.js.map +1 -0
  245. package/dist/ui/components/confirm-prompt.d.ts +12 -0
  246. package/dist/ui/components/confirm-prompt.d.ts.map +1 -0
  247. package/dist/ui/components/confirm-prompt.js +104 -0
  248. package/dist/ui/components/confirm-prompt.js.map +1 -0
  249. package/dist/ui/components/diff-viewer.d.ts +9 -0
  250. package/dist/ui/components/diff-viewer.d.ts.map +1 -0
  251. package/dist/ui/components/diff-viewer.js +57 -0
  252. package/dist/ui/components/diff-viewer.js.map +1 -0
  253. package/dist/ui/components/input-box.d.ts +18 -0
  254. package/dist/ui/components/input-box.d.ts.map +1 -0
  255. package/dist/ui/components/input-box.js +157 -0
  256. package/dist/ui/components/input-box.js.map +1 -0
  257. package/dist/ui/components/keyboard-help.d.ts +7 -0
  258. package/dist/ui/components/keyboard-help.d.ts.map +1 -0
  259. package/dist/ui/components/keyboard-help.js +43 -0
  260. package/dist/ui/components/keyboard-help.js.map +1 -0
  261. package/dist/ui/components/loading-indicator.d.ts +3 -0
  262. package/dist/ui/components/loading-indicator.d.ts.map +1 -0
  263. package/dist/ui/components/loading-indicator.js +42 -0
  264. package/dist/ui/components/loading-indicator.js.map +1 -0
  265. package/dist/ui/components/message-display.d.ts +7 -0
  266. package/dist/ui/components/message-display.d.ts.map +1 -0
  267. package/dist/ui/components/message-display.js +104 -0
  268. package/dist/ui/components/message-display.js.map +1 -0
  269. package/dist/ui/components/misc.d.ts +28 -0
  270. package/dist/ui/components/misc.d.ts.map +1 -0
  271. package/dist/ui/components/misc.js +128 -0
  272. package/dist/ui/components/misc.js.map +1 -0
  273. package/dist/ui/components/select-prompt.d.ts +13 -0
  274. package/dist/ui/components/select-prompt.d.ts.map +1 -0
  275. package/dist/ui/components/select-prompt.js +42 -0
  276. package/dist/ui/components/select-prompt.js.map +1 -0
  277. package/dist/ui/components/status-bar.d.ts +11 -0
  278. package/dist/ui/components/status-bar.d.ts.map +1 -0
  279. package/dist/ui/components/status-bar.js +47 -0
  280. package/dist/ui/components/status-bar.js.map +1 -0
  281. package/dist/ui/components/tool-execution.d.ts +3 -0
  282. package/dist/ui/components/tool-execution.d.ts.map +1 -0
  283. package/dist/ui/components/tool-execution.js +374 -0
  284. package/dist/ui/components/tool-execution.js.map +1 -0
  285. package/dist/ui/components/tool-result.d.ts +11 -0
  286. package/dist/ui/components/tool-result.d.ts.map +1 -0
  287. package/dist/ui/components/tool-result.js +58 -0
  288. package/dist/ui/components/tool-result.js.map +1 -0
  289. package/dist/ui/components/welcome-banner.d.ts +3 -0
  290. package/dist/ui/components/welcome-banner.d.ts.map +1 -0
  291. package/dist/ui/components/welcome-banner.js +46 -0
  292. package/dist/ui/components/welcome-banner.js.map +1 -0
  293. package/dist/ui/hooks/useDisplayHistory.d.ts +13 -0
  294. package/dist/ui/hooks/useDisplayHistory.d.ts.map +1 -0
  295. package/dist/ui/hooks/useDisplayHistory.js +45 -0
  296. package/dist/ui/hooks/useDisplayHistory.js.map +1 -0
  297. package/dist/ui/render-engine.d.ts +69 -0
  298. package/dist/ui/render-engine.d.ts.map +1 -0
  299. package/dist/ui/render-engine.js +197 -0
  300. package/dist/ui/render-engine.js.map +1 -0
  301. package/dist/ui/terminal/TerminalRenderer.d.ts +84 -0
  302. package/dist/ui/terminal/TerminalRenderer.d.ts.map +1 -0
  303. package/dist/ui/terminal/TerminalRenderer.js +154 -0
  304. package/dist/ui/terminal/TerminalRenderer.js.map +1 -0
  305. package/dist/ui/terminal/TerminalUI.d.ts +139 -0
  306. package/dist/ui/terminal/TerminalUI.d.ts.map +1 -0
  307. package/dist/ui/terminal/TerminalUI.js +430 -0
  308. package/dist/ui/terminal/TerminalUI.js.map +1 -0
  309. package/dist/ui/terminal/VirtualChatBuffer.d.ts +32 -0
  310. package/dist/ui/terminal/VirtualChatBuffer.d.ts.map +1 -0
  311. package/dist/ui/terminal/VirtualChatBuffer.js +37 -0
  312. package/dist/ui/terminal/VirtualChatBuffer.js.map +1 -0
  313. package/dist/ui/terminal-kit-base.d.ts +117 -0
  314. package/dist/ui/terminal-kit-base.d.ts.map +1 -0
  315. package/dist/ui/terminal-kit-base.js +188 -0
  316. package/dist/ui/terminal-kit-base.js.map +1 -0
  317. package/dist/utils/file.d.ts +21 -0
  318. package/dist/utils/file.d.ts.map +1 -0
  319. package/dist/utils/file.js +68 -0
  320. package/dist/utils/file.js.map +1 -0
  321. package/dist/utils/logger.d.ts +17 -0
  322. package/dist/utils/logger.d.ts.map +1 -0
  323. package/dist/utils/logger.js +57 -0
  324. package/dist/utils/logger.js.map +1 -0
  325. package/dist/utils/markdown-parser.d.ts +56 -0
  326. package/dist/utils/markdown-parser.d.ts.map +1 -0
  327. package/dist/utils/markdown-parser.js +307 -0
  328. package/dist/utils/markdown-parser.js.map +1 -0
  329. package/dist/utils/shell.d.ts +7 -0
  330. package/dist/utils/shell.d.ts.map +1 -0
  331. package/dist/utils/shell.js +62 -0
  332. package/dist/utils/shell.js.map +1 -0
  333. package/dist/utils/state.d.ts +13 -0
  334. package/dist/utils/state.d.ts.map +1 -0
  335. package/dist/utils/state.js +25 -0
  336. package/dist/utils/state.js.map +1 -0
  337. package/package.json +81 -0
  338. package/postinstall.js +46 -0
@@ -0,0 +1,282 @@
1
+ /**
2
+ * API Client Service for Centaurus CLI
3
+ *
4
+ * Handles all communication with the backend REST API including:
5
+ * - Authentication and session management
6
+ * - Conversation and message operations
7
+ * - User settings management
8
+ * - API key storage and retrieval
9
+ */
10
+ /**
11
+ * Type definitions for API requests and responses
12
+ */
13
+ interface GoogleAuthInitResponse {
14
+ authUrl: string;
15
+ state: string;
16
+ }
17
+ interface AuthResponse {
18
+ sessionToken: string;
19
+ expiresAt: string;
20
+ user: {
21
+ id: string;
22
+ email: string;
23
+ fullName: string;
24
+ avatarUrl?: string;
25
+ };
26
+ }
27
+ interface UserProfile {
28
+ id: string;
29
+ email: string;
30
+ fullName: string;
31
+ avatarUrl?: string;
32
+ createdAt: string;
33
+ }
34
+ interface CreateConversationRequest {
35
+ title: string;
36
+ modelUsed: string;
37
+ provider: string;
38
+ workingDirectory?: string;
39
+ tags?: string[];
40
+ metadata?: Record<string, any>;
41
+ }
42
+ interface Conversation {
43
+ id: string;
44
+ userId: string;
45
+ title: string;
46
+ modelUsed: string;
47
+ provider: string;
48
+ workingDirectory?: string;
49
+ tags: string[];
50
+ isPinned: boolean;
51
+ metadata: Record<string, any>;
52
+ createdAt: string;
53
+ updatedAt: string;
54
+ archivedAt?: string;
55
+ }
56
+ interface UpdateConversationRequest {
57
+ title?: string;
58
+ tags?: string[];
59
+ isPinned?: boolean;
60
+ metadata?: Record<string, any>;
61
+ }
62
+ interface CreateMessageRequest {
63
+ role: 'user' | 'assistant' | 'system' | 'tool';
64
+ content: string;
65
+ contentType?: 'text' | 'code' | 'markdown' | 'file' | 'image';
66
+ tokensUsed?: number;
67
+ toolCalls?: any[];
68
+ attachments?: any[];
69
+ metadata?: Record<string, any>;
70
+ }
71
+ interface Message {
72
+ id: string;
73
+ conversationId: string;
74
+ role: 'user' | 'assistant' | 'system' | 'tool';
75
+ content: string;
76
+ contentType: 'text' | 'code' | 'markdown' | 'file' | 'image';
77
+ tokensUsed?: number;
78
+ toolCalls?: any[];
79
+ attachments?: any[];
80
+ metadata: Record<string, any>;
81
+ createdAt: string;
82
+ editedAt?: string;
83
+ }
84
+ interface UserSettings {
85
+ defaultModel?: string;
86
+ defaultProvider?: string;
87
+ theme?: string;
88
+ autoSave?: boolean;
89
+ planMode?: boolean;
90
+ [key: string]: any;
91
+ }
92
+ interface StoreApiKeyRequest {
93
+ provider: 'google' | 'openrouter' | 'anthropic' | 'openai' | 'serper';
94
+ keyName: string;
95
+ apiKey: string;
96
+ }
97
+ interface ApiKeyMetadata {
98
+ id: string;
99
+ provider: string;
100
+ keyName: string;
101
+ createdAt: string;
102
+ lastUsedAt?: string;
103
+ isActive: boolean;
104
+ }
105
+ interface DecryptedApiKey {
106
+ provider: string;
107
+ apiKey: string;
108
+ }
109
+ interface ApiResponse<T = any> {
110
+ success: boolean;
111
+ data?: T;
112
+ error?: {
113
+ code: string;
114
+ message: string;
115
+ details?: any;
116
+ };
117
+ meta?: {
118
+ page?: number;
119
+ limit?: number;
120
+ total?: number;
121
+ };
122
+ }
123
+ /**
124
+ * API Client class for communicating with the backend service
125
+ */
126
+ declare class ApiClient {
127
+ private client;
128
+ private sessionToken;
129
+ private configPath;
130
+ private configDir;
131
+ constructor();
132
+ /**
133
+ * Load session token from local config file
134
+ */
135
+ private loadSession;
136
+ /**
137
+ * Save session token to local config file
138
+ */
139
+ private saveSession;
140
+ /**
141
+ * Clear session token from memory and local storage
142
+ */
143
+ private clearSession;
144
+ /**
145
+ * Check if user is authenticated
146
+ */
147
+ isAuthenticated(): boolean;
148
+ /**
149
+ * Initialize Google OAuth flow
150
+ * @param redirectUri - The URI to redirect to after OAuth
151
+ * @returns OAuth URL and state parameter
152
+ */
153
+ initGoogleAuth(redirectUri: string): Promise<GoogleAuthInitResponse>;
154
+ /**
155
+ * Complete Google OAuth authentication
156
+ * @param code - Authorization code from Google
157
+ * @param state - State parameter for CSRF protection
158
+ * @returns Session token and user information
159
+ */
160
+ authenticate(code: string, state: string): Promise<AuthResponse>;
161
+ /**
162
+ * Set session token directly (used when receiving token from web app)
163
+ * @param sessionToken - The session token to save
164
+ * @param user - User information
165
+ */
166
+ setSessionToken(sessionToken: string, user?: any): void;
167
+ /**
168
+ * Refresh the current session token
169
+ * @returns New session token and expiration
170
+ */
171
+ refreshSession(): Promise<{
172
+ sessionToken: string;
173
+ expiresAt: string;
174
+ }>;
175
+ /**
176
+ * Logout and invalidate current session
177
+ */
178
+ logout(): Promise<void>;
179
+ /**
180
+ * Get current authenticated user profile
181
+ * @returns User profile information
182
+ */
183
+ getCurrentUser(): Promise<UserProfile>;
184
+ /**
185
+ * Create a new conversation
186
+ * @param data - Conversation creation parameters
187
+ * @returns Created conversation
188
+ */
189
+ createConversation(data: CreateConversationRequest): Promise<Conversation>;
190
+ /**
191
+ * Get all conversations for the authenticated user
192
+ * @param params - Pagination and filter parameters
193
+ * @returns List of conversations with pagination metadata
194
+ */
195
+ getConversations(params?: {
196
+ page?: number;
197
+ limit?: number;
198
+ includeArchived?: boolean;
199
+ tags?: string[];
200
+ }): Promise<ApiResponse<Conversation[]>>;
201
+ /**
202
+ * Get a specific conversation by ID
203
+ * @param conversationId - The conversation ID
204
+ * @returns Conversation details
205
+ */
206
+ getConversation(conversationId: string): Promise<Conversation>;
207
+ /**
208
+ * Update a conversation
209
+ * @param conversationId - The conversation ID
210
+ * @param data - Fields to update
211
+ * @returns Updated conversation
212
+ */
213
+ updateConversation(conversationId: string, data: UpdateConversationRequest): Promise<Conversation>;
214
+ /**
215
+ * Delete (archive) a conversation
216
+ * @param conversationId - The conversation ID
217
+ */
218
+ deleteConversation(conversationId: string): Promise<void>;
219
+ /**
220
+ * Add a message to a conversation
221
+ * @param conversationId - The conversation ID
222
+ * @param message - Message data
223
+ * @returns Created message
224
+ */
225
+ addMessage(conversationId: string, message: CreateMessageRequest): Promise<Message>;
226
+ /**
227
+ * Get all messages for a conversation
228
+ * @param conversationId - The conversation ID
229
+ * @param params - Pagination parameters
230
+ * @returns List of messages with pagination metadata
231
+ */
232
+ getMessages(conversationId: string, params?: {
233
+ page?: number;
234
+ limit?: number;
235
+ }): Promise<ApiResponse<Message[]>>;
236
+ /**
237
+ * Get user settings
238
+ * @returns User settings object
239
+ */
240
+ getSettings(): Promise<UserSettings>;
241
+ /**
242
+ * Update user settings
243
+ * @param settings - Settings to update (partial update supported)
244
+ * @returns Updated settings
245
+ */
246
+ updateSettings(settings: Partial<UserSettings>): Promise<UserSettings>;
247
+ /**
248
+ * Store an encrypted API key
249
+ * @param data - API key data including provider, name, and key value
250
+ * @returns API key metadata (without the actual key)
251
+ */
252
+ storeApiKey(data: StoreApiKeyRequest): Promise<ApiKeyMetadata>;
253
+ /**
254
+ * Get all API keys (metadata only, not actual keys)
255
+ * @returns List of API key metadata
256
+ */
257
+ getApiKeys(): Promise<ApiKeyMetadata[]>;
258
+ /**
259
+ * Decrypt and retrieve an API key for a specific provider
260
+ * @param provider - The provider name
261
+ * @returns Decrypted API key
262
+ */
263
+ decryptApiKey(provider: string): Promise<DecryptedApiKey>;
264
+ /**
265
+ * Delete an API key
266
+ * @param keyId - The API key ID
267
+ */
268
+ deleteApiKey(keyId: string): Promise<void>;
269
+ /**
270
+ * Check backend service health
271
+ * @returns Health status information
272
+ */
273
+ healthCheck(): Promise<{
274
+ status: string;
275
+ timestamp: string;
276
+ database: string;
277
+ version: string;
278
+ }>;
279
+ }
280
+ export declare const apiClient: ApiClient;
281
+ export type { GoogleAuthInitResponse, AuthResponse, UserProfile, CreateConversationRequest, Conversation, UpdateConversationRequest, CreateMessageRequest, Message, UserSettings, StoreApiKeyRequest, ApiKeyMetadata, DecryptedApiKey, ApiResponse, };
282
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ /**
2
+ * API Client Service for Centaurus CLI
3
+ *
4
+ * Handles all communication with the backend REST API including:
5
+ * - Authentication and session management
6
+ * - Conversation and message operations
7
+ * - User settings management
8
+ * - API key storage and retrieval
9
+ */
10
+ import axios from 'axios';
11
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, unlinkSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { homedir } from 'os';
14
+ /**
15
+ * API Client class for communicating with the backend service
16
+ */
17
+ class ApiClient {
18
+ client;
19
+ sessionToken = null;
20
+ configPath;
21
+ configDir;
22
+ constructor() {
23
+ // Set up session storage path: ~/.centaurus/session.json
24
+ this.configDir = join(homedir(), '.centaurus');
25
+ this.configPath = join(this.configDir, 'session.json');
26
+ // Load existing session if available
27
+ this.loadSession();
28
+ // Create axios instance with base configuration
29
+ // Use production backend by default, allow override with env var for development
30
+ const baseURL = process.env.BACKEND_API_URL || 'https://centaurus-backend.onrender.com/api';
31
+ this.client = axios.create({
32
+ baseURL,
33
+ timeout: 30000,
34
+ headers: {
35
+ 'Content-Type': 'application/json',
36
+ },
37
+ });
38
+ // Request interceptor: Add Authorization header if session token exists
39
+ this.client.interceptors.request.use((config) => {
40
+ if (this.sessionToken) {
41
+ config.headers.Authorization = `Bearer ${this.sessionToken}`;
42
+ }
43
+ return config;
44
+ }, (error) => {
45
+ return Promise.reject(error);
46
+ });
47
+ // Response interceptor: Handle 401 errors (expired/invalid session)
48
+ this.client.interceptors.response.use((response) => response, async (error) => {
49
+ if (error.response?.status === 401) {
50
+ // Clear invalid session
51
+ this.clearSession();
52
+ // Create a more user-friendly error
53
+ const authError = new Error('Session expired. Please sign in again.');
54
+ authError.name = 'AuthenticationError';
55
+ throw authError;
56
+ }
57
+ // For other errors, extract message from API response if available
58
+ if (error.response?.data) {
59
+ const apiError = error.response.data;
60
+ if (apiError.error) {
61
+ const customError = new Error(apiError.error.message);
62
+ customError.name = apiError.error.code;
63
+ throw customError;
64
+ }
65
+ }
66
+ throw error;
67
+ });
68
+ }
69
+ /**
70
+ * Load session token from local config file
71
+ */
72
+ loadSession() {
73
+ try {
74
+ if (existsSync(this.configPath)) {
75
+ const data = readFileSync(this.configPath, 'utf-8');
76
+ const session = JSON.parse(data);
77
+ this.sessionToken = session.sessionToken || null;
78
+ }
79
+ }
80
+ catch (error) {
81
+ // If there's any error reading the session, just start fresh
82
+ this.sessionToken = null;
83
+ }
84
+ }
85
+ /**
86
+ * Save session token to local config file
87
+ */
88
+ saveSession(token, expiresAt) {
89
+ try {
90
+ // Ensure config directory exists
91
+ if (!existsSync(this.configDir)) {
92
+ mkdirSync(this.configDir, { recursive: true });
93
+ }
94
+ // Save session data
95
+ const sessionData = {
96
+ sessionToken: token,
97
+ expiresAt: expiresAt || null,
98
+ savedAt: new Date().toISOString(),
99
+ };
100
+ writeFileSync(this.configPath, JSON.stringify(sessionData, null, 2), 'utf-8');
101
+ this.sessionToken = token;
102
+ }
103
+ catch (error) {
104
+ console.error('Failed to save session:', error);
105
+ throw new Error('Failed to save session locally');
106
+ }
107
+ }
108
+ /**
109
+ * Clear session token from memory and local storage
110
+ */
111
+ clearSession() {
112
+ this.sessionToken = null;
113
+ try {
114
+ if (existsSync(this.configPath)) {
115
+ unlinkSync(this.configPath);
116
+ }
117
+ }
118
+ catch (error) {
119
+ // Ignore errors when clearing session
120
+ }
121
+ }
122
+ /**
123
+ * Check if user is authenticated
124
+ */
125
+ isAuthenticated() {
126
+ return this.sessionToken !== null;
127
+ }
128
+ // ==================== Authentication Methods ====================
129
+ /**
130
+ * Initialize Google OAuth flow
131
+ * @param redirectUri - The URI to redirect to after OAuth
132
+ * @returns OAuth URL and state parameter
133
+ */
134
+ async initGoogleAuth(redirectUri) {
135
+ const response = await this.client.post('/auth/google/init', { redirectUri });
136
+ return response.data.data;
137
+ }
138
+ /**
139
+ * Complete Google OAuth authentication
140
+ * @param code - Authorization code from Google
141
+ * @param state - State parameter for CSRF protection
142
+ * @returns Session token and user information
143
+ */
144
+ async authenticate(code, state) {
145
+ const response = await this.client.post('/auth/google/callback', { code, state });
146
+ const authData = response.data.data;
147
+ this.saveSession(authData.sessionToken, authData.expiresAt);
148
+ return authData;
149
+ }
150
+ /**
151
+ * Set session token directly (used when receiving token from web app)
152
+ * @param sessionToken - The session token to save
153
+ * @param user - User information
154
+ */
155
+ setSessionToken(sessionToken, user) {
156
+ // Calculate expiration (30 days from now)
157
+ const expiresAt = new Date();
158
+ expiresAt.setDate(expiresAt.getDate() + 30);
159
+ this.saveSession(sessionToken, expiresAt.toISOString());
160
+ }
161
+ /**
162
+ * Refresh the current session token
163
+ * @returns New session token and expiration
164
+ */
165
+ async refreshSession() {
166
+ const response = await this.client.post('/auth/refresh');
167
+ const refreshData = response.data.data;
168
+ this.saveSession(refreshData.sessionToken, refreshData.expiresAt);
169
+ return refreshData;
170
+ }
171
+ /**
172
+ * Logout and invalidate current session
173
+ */
174
+ async logout() {
175
+ try {
176
+ await this.client.post('/auth/logout');
177
+ }
178
+ finally {
179
+ // Always clear local session, even if API call fails
180
+ this.clearSession();
181
+ }
182
+ }
183
+ /**
184
+ * Get current authenticated user profile
185
+ * @returns User profile information
186
+ */
187
+ async getCurrentUser() {
188
+ const response = await this.client.get('/auth/me');
189
+ return response.data.data;
190
+ }
191
+ // ==================== Conversation Methods ====================
192
+ /**
193
+ * Create a new conversation
194
+ * @param data - Conversation creation parameters
195
+ * @returns Created conversation
196
+ */
197
+ async createConversation(data) {
198
+ const response = await this.client.post('/conversations', data);
199
+ return response.data.data;
200
+ }
201
+ /**
202
+ * Get all conversations for the authenticated user
203
+ * @param params - Pagination and filter parameters
204
+ * @returns List of conversations with pagination metadata
205
+ */
206
+ async getConversations(params) {
207
+ const queryParams = {
208
+ page: params?.page || 1,
209
+ limit: params?.limit || 20,
210
+ };
211
+ if (params?.includeArchived !== undefined) {
212
+ queryParams.includeArchived = params.includeArchived;
213
+ }
214
+ if (params?.tags && params.tags.length > 0) {
215
+ queryParams.tags = params.tags.join(',');
216
+ }
217
+ const response = await this.client.get('/conversations', { params: queryParams });
218
+ return response.data;
219
+ }
220
+ /**
221
+ * Get a specific conversation by ID
222
+ * @param conversationId - The conversation ID
223
+ * @returns Conversation details
224
+ */
225
+ async getConversation(conversationId) {
226
+ const response = await this.client.get(`/conversations/${conversationId}`);
227
+ return response.data.data;
228
+ }
229
+ /**
230
+ * Update a conversation
231
+ * @param conversationId - The conversation ID
232
+ * @param data - Fields to update
233
+ * @returns Updated conversation
234
+ */
235
+ async updateConversation(conversationId, data) {
236
+ const response = await this.client.put(`/conversations/${conversationId}`, data);
237
+ return response.data.data;
238
+ }
239
+ /**
240
+ * Delete (archive) a conversation
241
+ * @param conversationId - The conversation ID
242
+ */
243
+ async deleteConversation(conversationId) {
244
+ await this.client.delete(`/conversations/${conversationId}`);
245
+ }
246
+ // ==================== Message Methods ====================
247
+ /**
248
+ * Add a message to a conversation
249
+ * @param conversationId - The conversation ID
250
+ * @param message - Message data
251
+ * @returns Created message
252
+ */
253
+ async addMessage(conversationId, message) {
254
+ const response = await this.client.post(`/conversations/${conversationId}/messages`, message);
255
+ return response.data.data;
256
+ }
257
+ /**
258
+ * Get all messages for a conversation
259
+ * @param conversationId - The conversation ID
260
+ * @param params - Pagination parameters
261
+ * @returns List of messages with pagination metadata
262
+ */
263
+ async getMessages(conversationId, params) {
264
+ const queryParams = {
265
+ page: params?.page || 1,
266
+ limit: params?.limit || 50,
267
+ };
268
+ const response = await this.client.get(`/conversations/${conversationId}/messages`, { params: queryParams });
269
+ return response.data;
270
+ }
271
+ // ==================== Settings Methods ====================
272
+ /**
273
+ * Get user settings
274
+ * @returns User settings object
275
+ */
276
+ async getSettings() {
277
+ const response = await this.client.get('/settings');
278
+ return response.data.data;
279
+ }
280
+ /**
281
+ * Update user settings
282
+ * @param settings - Settings to update (partial update supported)
283
+ * @returns Updated settings
284
+ */
285
+ async updateSettings(settings) {
286
+ const response = await this.client.put('/settings', settings);
287
+ return response.data.data;
288
+ }
289
+ // ==================== API Key Methods ====================
290
+ /**
291
+ * Store an encrypted API key
292
+ * @param data - API key data including provider, name, and key value
293
+ * @returns API key metadata (without the actual key)
294
+ */
295
+ async storeApiKey(data) {
296
+ const response = await this.client.post('/api-keys', data);
297
+ return response.data.data;
298
+ }
299
+ /**
300
+ * Get all API keys (metadata only, not actual keys)
301
+ * @returns List of API key metadata
302
+ */
303
+ async getApiKeys() {
304
+ const response = await this.client.get('/api-keys');
305
+ return response.data.data;
306
+ }
307
+ /**
308
+ * Decrypt and retrieve an API key for a specific provider
309
+ * @param provider - The provider name
310
+ * @returns Decrypted API key
311
+ */
312
+ async decryptApiKey(provider) {
313
+ const response = await this.client.get(`/api-keys/${provider}/decrypt`);
314
+ return response.data.data;
315
+ }
316
+ /**
317
+ * Delete an API key
318
+ * @param keyId - The API key ID
319
+ */
320
+ async deleteApiKey(keyId) {
321
+ await this.client.delete(`/api-keys/${keyId}`);
322
+ }
323
+ // ==================== Health Check ====================
324
+ /**
325
+ * Check backend service health
326
+ * @returns Health status information
327
+ */
328
+ async healthCheck() {
329
+ // Health endpoint is at root level, not under /api
330
+ // So we need to construct the full URL manually
331
+ const baseURL = process.env.BACKEND_API_URL || 'https://centaurus-backend.onrender.com/api';
332
+ const healthURL = baseURL.replace('/api', '/health');
333
+ const response = await axios.get(healthURL);
334
+ return response.data.data;
335
+ }
336
+ }
337
+ // Export singleton instance
338
+ export const apiClient = new ApiClient();
339
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Authentication Handler
3
+ *
4
+ * Handles OAuth authentication flow with a temporary local server
5
+ * to receive the callback from the backend
6
+ */
7
+ interface AuthResult {
8
+ success: boolean;
9
+ sessionToken?: string;
10
+ user?: {
11
+ id: string;
12
+ email: string;
13
+ fullName: string;
14
+ };
15
+ error?: string;
16
+ }
17
+ /**
18
+ * Handle complete OAuth authentication flow via web app
19
+ */
20
+ export declare function authenticateWithGoogle(): Promise<AuthResult>;
21
+ /**
22
+ * Check if user is already authenticated
23
+ */
24
+ export declare function isAuthenticated(): boolean;
25
+ /**
26
+ * Logout and clear session
27
+ */
28
+ export declare function logout(): Promise<void>;
29
+ export {};
30
+ //# sourceMappingURL=auth-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-handler.d.ts","sourceRoot":"","sources":["../../src/services/auth-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4ID;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,UAAU,CAAC,CAyDlE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5C"}