@codemieai/code 0.0.2 → 0.0.4

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 (360) hide show
  1. package/README.md +357 -719
  2. package/bin/codemie-claude.js +145 -0
  3. package/bin/codemie-code.js +128 -15
  4. package/bin/codemie-codex.js +137 -0
  5. package/bin/codemie.js +1 -1
  6. package/dist/agents/adapters/claude-code.d.ts +7 -2
  7. package/dist/agents/adapters/claude-code.d.ts.map +1 -1
  8. package/dist/agents/adapters/claude-code.js +94 -58
  9. package/dist/agents/adapters/claude-code.js.map +1 -1
  10. package/dist/agents/adapters/codemie-code.d.ts +11 -2
  11. package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
  12. package/dist/agents/adapters/codemie-code.js +93 -25
  13. package/dist/agents/adapters/codemie-code.js.map +1 -1
  14. package/dist/agents/adapters/codex.d.ts +7 -2
  15. package/dist/agents/adapters/codex.d.ts.map +1 -1
  16. package/dist/agents/adapters/codex.js +104 -39
  17. package/dist/agents/adapters/codex.js.map +1 -1
  18. package/dist/agents/codemie-code/agent.d.ts +89 -0
  19. package/dist/agents/codemie-code/agent.d.ts.map +1 -0
  20. package/dist/agents/codemie-code/agent.js +689 -0
  21. package/dist/agents/codemie-code/agent.js.map +1 -0
  22. package/dist/agents/codemie-code/config.d.ts +40 -0
  23. package/dist/agents/codemie-code/config.d.ts.map +1 -0
  24. package/dist/agents/codemie-code/config.js +278 -0
  25. package/dist/agents/codemie-code/config.js.map +1 -0
  26. package/dist/agents/codemie-code/filters.d.ts +91 -0
  27. package/dist/agents/codemie-code/filters.d.ts.map +1 -0
  28. package/dist/agents/codemie-code/filters.js +328 -0
  29. package/dist/agents/codemie-code/filters.js.map +1 -0
  30. package/dist/agents/codemie-code/index.d.ts +92 -0
  31. package/dist/agents/codemie-code/index.d.ts.map +1 -0
  32. package/dist/agents/codemie-code/index.js +327 -0
  33. package/dist/agents/codemie-code/index.js.map +1 -0
  34. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
  35. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
  36. package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
  37. package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
  38. package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
  39. package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
  40. package/dist/agents/codemie-code/modes/planMode.js +537 -0
  41. package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
  42. package/dist/agents/codemie-code/prompts.d.ts +40 -0
  43. package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
  44. package/dist/agents/codemie-code/prompts.js +160 -0
  45. package/dist/agents/codemie-code/prompts.js.map +1 -0
  46. package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
  47. package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
  48. package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
  49. package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
  50. package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
  51. package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
  52. package/dist/agents/codemie-code/tokenUtils.js +220 -0
  53. package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
  54. package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
  55. package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
  56. package/dist/agents/codemie-code/toolMetadata.js +315 -0
  57. package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
  58. package/dist/agents/codemie-code/tools/index.d.ts +45 -0
  59. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
  60. package/dist/agents/codemie-code/tools/index.js +407 -0
  61. package/dist/agents/codemie-code/tools/index.js.map +1 -0
  62. package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
  63. package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
  64. package/dist/agents/codemie-code/tools/planning.js +224 -0
  65. package/dist/agents/codemie-code/tools/planning.js.map +1 -0
  66. package/dist/agents/codemie-code/types.d.ts +418 -0
  67. package/dist/agents/codemie-code/types.d.ts.map +1 -0
  68. package/dist/agents/codemie-code/types.js +35 -0
  69. package/dist/agents/codemie-code/types.js.map +1 -0
  70. package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
  71. package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
  72. package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
  73. package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
  74. package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
  75. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
  76. package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
  77. package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
  78. package/dist/agents/codemie-code/ui.d.ts +179 -0
  79. package/dist/agents/codemie-code/ui.d.ts.map +1 -0
  80. package/dist/agents/codemie-code/ui.js +1408 -0
  81. package/dist/agents/codemie-code/ui.js.map +1 -0
  82. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
  83. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
  84. package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
  85. package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
  86. package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
  87. package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
  88. package/dist/agents/codemie-code/utils/todoParser.js +305 -0
  89. package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
  90. package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
  91. package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
  92. package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
  93. package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
  94. package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
  95. package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
  96. package/dist/agents/codemie-code/validators/planValidator.js +281 -0
  97. package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
  98. package/dist/agents/registry.d.ts +1 -1
  99. package/dist/agents/registry.d.ts.map +1 -1
  100. package/dist/agents/registry.js +11 -15
  101. package/dist/agents/registry.js.map +1 -1
  102. package/dist/cli/commands/auth.d.ts +3 -0
  103. package/dist/cli/commands/auth.d.ts.map +1 -0
  104. package/dist/cli/commands/auth.js +170 -0
  105. package/dist/cli/commands/auth.js.map +1 -0
  106. package/dist/cli/commands/config.d.ts +3 -0
  107. package/dist/cli/commands/config.d.ts.map +1 -0
  108. package/dist/cli/commands/config.js +350 -0
  109. package/dist/cli/commands/config.js.map +1 -0
  110. package/dist/cli/commands/doctor.d.ts.map +1 -1
  111. package/dist/cli/commands/doctor.js +308 -71
  112. package/dist/cli/commands/doctor.js.map +1 -1
  113. package/dist/cli/commands/env.d.ts +3 -0
  114. package/dist/cli/commands/env.d.ts.map +1 -0
  115. package/dist/cli/commands/env.js +19 -0
  116. package/dist/cli/commands/env.js.map +1 -0
  117. package/dist/cli/commands/install.d.ts.map +1 -1
  118. package/dist/cli/commands/install.js +28 -33
  119. package/dist/cli/commands/install.js.map +1 -1
  120. package/dist/cli/commands/list.js +18 -24
  121. package/dist/cli/commands/list.js.map +1 -1
  122. package/dist/cli/commands/run.d.ts.map +1 -1
  123. package/dist/cli/commands/run.js +297 -31
  124. package/dist/cli/commands/run.js.map +1 -1
  125. package/dist/cli/commands/setup.d.ts +3 -0
  126. package/dist/cli/commands/setup.d.ts.map +1 -0
  127. package/dist/cli/commands/setup.js +523 -0
  128. package/dist/cli/commands/setup.js.map +1 -0
  129. package/dist/cli/commands/tools.d.ts +6 -0
  130. package/dist/cli/commands/tools.d.ts.map +1 -0
  131. package/dist/cli/commands/tools.js +244 -0
  132. package/dist/cli/commands/tools.js.map +1 -0
  133. package/dist/cli/commands/uninstall.js +24 -30
  134. package/dist/cli/commands/uninstall.js.map +1 -1
  135. package/dist/cli/commands/version.d.ts.map +1 -1
  136. package/dist/cli/commands/version.js +11 -16
  137. package/dist/cli/commands/version.js.map +1 -1
  138. package/dist/cli/commands/workflow.d.ts +6 -0
  139. package/dist/cli/commands/workflow.d.ts.map +1 -0
  140. package/dist/cli/commands/workflow.js +424 -0
  141. package/dist/cli/commands/workflow.js.map +1 -0
  142. package/dist/cli/index.js +85 -35
  143. package/dist/cli/index.js.map +1 -1
  144. package/dist/clients/adapters/github.d.ts +17 -0
  145. package/dist/clients/adapters/github.d.ts.map +1 -0
  146. package/dist/clients/adapters/github.js +150 -0
  147. package/dist/clients/adapters/github.js.map +1 -0
  148. package/dist/clients/adapters/gitlab.d.ts +17 -0
  149. package/dist/clients/adapters/gitlab.d.ts.map +1 -0
  150. package/dist/clients/adapters/gitlab.js +147 -0
  151. package/dist/clients/adapters/gitlab.js.map +1 -0
  152. package/dist/clients/registry.d.ts +20 -0
  153. package/dist/clients/registry.d.ts.map +1 -0
  154. package/dist/clients/registry.js +27 -0
  155. package/dist/clients/registry.js.map +1 -0
  156. package/dist/env/manager.js +9 -46
  157. package/dist/env/manager.js.map +1 -1
  158. package/dist/index.d.ts +6 -13
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +6 -43
  161. package/dist/index.js.map +1 -1
  162. package/dist/tools/detector.d.ts +33 -0
  163. package/dist/tools/detector.d.ts.map +1 -0
  164. package/dist/tools/detector.js +145 -0
  165. package/dist/tools/detector.js.map +1 -0
  166. package/dist/tools/index.d.ts +8 -0
  167. package/dist/tools/index.d.ts.map +1 -0
  168. package/dist/tools/index.js +8 -0
  169. package/dist/tools/index.js.map +1 -0
  170. package/dist/tools/manager.d.ts +21 -0
  171. package/dist/tools/manager.d.ts.map +1 -0
  172. package/dist/tools/manager.js +104 -0
  173. package/dist/tools/manager.js.map +1 -0
  174. package/dist/tools/registry.d.ts +8 -0
  175. package/dist/tools/registry.d.ts.map +1 -0
  176. package/dist/tools/registry.js +36 -0
  177. package/dist/tools/registry.js.map +1 -0
  178. package/dist/tools/types.d.ts +41 -0
  179. package/dist/tools/types.d.ts.map +1 -0
  180. package/dist/tools/types.js +5 -0
  181. package/dist/tools/types.js.map +1 -0
  182. package/dist/types/sso.d.ts +42 -0
  183. package/dist/types/sso.d.ts.map +1 -0
  184. package/dist/types/sso.js +2 -0
  185. package/dist/types/sso.js.map +1 -0
  186. package/dist/utils/agent-compatibility.d.ts +32 -0
  187. package/dist/utils/agent-compatibility.d.ts.map +1 -0
  188. package/dist/utils/agent-compatibility.js +140 -0
  189. package/dist/utils/agent-compatibility.js.map +1 -0
  190. package/dist/utils/async-tips.d.ts.map +1 -1
  191. package/dist/utils/async-tips.js +16 -55
  192. package/dist/utils/async-tips.js.map +1 -1
  193. package/dist/utils/clipboard.d.ts +16 -0
  194. package/dist/utils/clipboard.d.ts.map +1 -0
  195. package/dist/utils/clipboard.js +179 -0
  196. package/dist/utils/clipboard.js.map +1 -0
  197. package/dist/utils/codemie-integration-validator.d.ts +17 -0
  198. package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
  199. package/dist/utils/codemie-integration-validator.js +105 -0
  200. package/dist/utils/codemie-integration-validator.js.map +1 -0
  201. package/dist/utils/codemie-model-fetcher.d.ts +11 -0
  202. package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
  203. package/dist/utils/codemie-model-fetcher.js +242 -0
  204. package/dist/utils/codemie-model-fetcher.js.map +1 -0
  205. package/dist/utils/config-loader.d.ts +118 -0
  206. package/dist/utils/config-loader.d.ts.map +1 -0
  207. package/dist/utils/config-loader.js +397 -0
  208. package/dist/utils/config-loader.js.map +1 -0
  209. package/dist/utils/credential-store.d.ts +16 -0
  210. package/dist/utils/credential-store.d.ts.map +1 -0
  211. package/dist/utils/credential-store.js +109 -0
  212. package/dist/utils/credential-store.js.map +1 -0
  213. package/dist/utils/dirname.d.ts +7 -0
  214. package/dist/utils/dirname.d.ts.map +1 -0
  215. package/dist/utils/dirname.js +11 -0
  216. package/dist/utils/dirname.js.map +1 -0
  217. package/dist/utils/errors.js +7 -17
  218. package/dist/utils/errors.js.map +1 -1
  219. package/dist/utils/exec.js +3 -6
  220. package/dist/utils/exec.js.map +1 -1
  221. package/dist/utils/first-time.d.ts +34 -0
  222. package/dist/utils/first-time.d.ts.map +1 -0
  223. package/dist/utils/first-time.js +226 -0
  224. package/dist/utils/first-time.js.map +1 -0
  225. package/dist/utils/health-checker.d.ts +20 -0
  226. package/dist/utils/health-checker.d.ts.map +1 -0
  227. package/dist/utils/health-checker.js +172 -0
  228. package/dist/utils/health-checker.js.map +1 -0
  229. package/dist/utils/logger.js +12 -18
  230. package/dist/utils/logger.js.map +1 -1
  231. package/dist/utils/model-fetcher.d.ts +21 -0
  232. package/dist/utils/model-fetcher.d.ts.map +1 -0
  233. package/dist/utils/model-fetcher.js +150 -0
  234. package/dist/utils/model-fetcher.js.map +1 -0
  235. package/dist/utils/sso-auth.d.ts +15 -0
  236. package/dist/utils/sso-auth.d.ts.map +1 -0
  237. package/dist/utils/sso-auth.js +207 -0
  238. package/dist/utils/sso-auth.js.map +1 -0
  239. package/dist/utils/sso-gateway.d.ts +47 -0
  240. package/dist/utils/sso-gateway.d.ts.map +1 -0
  241. package/dist/utils/sso-gateway.js +298 -0
  242. package/dist/utils/sso-gateway.js.map +1 -0
  243. package/dist/utils/tips.d.ts.map +1 -1
  244. package/dist/utils/tips.js +13 -52
  245. package/dist/utils/tips.js.map +1 -1
  246. package/dist/workflows/detector.d.ts +37 -0
  247. package/dist/workflows/detector.d.ts.map +1 -0
  248. package/dist/workflows/detector.js +160 -0
  249. package/dist/workflows/detector.js.map +1 -0
  250. package/dist/workflows/index.d.ts +8 -0
  251. package/dist/workflows/index.d.ts.map +1 -0
  252. package/dist/workflows/index.js +8 -0
  253. package/dist/workflows/index.js.map +1 -0
  254. package/dist/workflows/installer.d.ts +24 -0
  255. package/dist/workflows/installer.d.ts.map +1 -0
  256. package/dist/workflows/installer.js +105 -0
  257. package/dist/workflows/installer.js.map +1 -0
  258. package/dist/workflows/registry.d.ts +29 -0
  259. package/dist/workflows/registry.d.ts.map +1 -0
  260. package/dist/workflows/registry.js +54 -0
  261. package/dist/workflows/registry.js.map +1 -0
  262. package/dist/workflows/templates/github/metadata.d.ts +6 -0
  263. package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
  264. package/dist/workflows/templates/github/metadata.js +111 -0
  265. package/dist/workflows/templates/github/metadata.js.map +1 -0
  266. package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
  267. package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
  268. package/dist/workflows/templates/gitlab/metadata.js +14 -0
  269. package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
  270. package/dist/workflows/types.d.ts +71 -0
  271. package/dist/workflows/types.d.ts.map +1 -0
  272. package/dist/workflows/types.js +5 -0
  273. package/dist/workflows/types.js.map +1 -0
  274. package/package.json +32 -25
  275. package/src/workflows/templates/github/code-ci.yml +529 -0
  276. package/src/workflows/templates/github/inline-fix.yml +665 -0
  277. package/src/workflows/templates/github/pr-review.yml +677 -0
  278. package/.claude/agents/README.md +0 -298
  279. package/.claude/agents/release-manager.md +0 -857
  280. package/.codemie/guides/git-workflow.md +0 -493
  281. package/CLAUDE.md +0 -855
  282. package/dist/agents/adapters/aider.d.ts +0 -12
  283. package/dist/agents/adapters/aider.d.ts.map +0 -1
  284. package/dist/agents/adapters/aider.js +0 -80
  285. package/dist/agents/adapters/aider.js.map +0 -1
  286. package/dist/cli/cli.d.ts +0 -4
  287. package/dist/cli/cli.d.ts.map +0 -1
  288. package/dist/cli/cli.js +0 -107
  289. package/dist/cli/cli.js.map +0 -1
  290. package/dist/cli/commands/mcp.d.ts +0 -3
  291. package/dist/cli/commands/mcp.d.ts.map +0 -1
  292. package/dist/cli/commands/mcp.js +0 -459
  293. package/dist/cli/commands/mcp.js.map +0 -1
  294. package/dist/code/agent-events.d.ts +0 -39
  295. package/dist/code/agent-events.d.ts.map +0 -1
  296. package/dist/code/agent-events.js +0 -4
  297. package/dist/code/agent-events.js.map +0 -1
  298. package/dist/code/agent.d.ts +0 -19
  299. package/dist/code/agent.d.ts.map +0 -1
  300. package/dist/code/agent.js +0 -144
  301. package/dist/code/agent.js.map +0 -1
  302. package/dist/code/config.d.ts +0 -13
  303. package/dist/code/config.d.ts.map +0 -1
  304. package/dist/code/config.js +0 -41
  305. package/dist/code/config.js.map +0 -1
  306. package/dist/code/index.d.ts +0 -19
  307. package/dist/code/index.d.ts.map +0 -1
  308. package/dist/code/index.js +0 -400
  309. package/dist/code/index.js.map +0 -1
  310. package/dist/code/prompts.d.ts +0 -2
  311. package/dist/code/prompts.d.ts.map +0 -1
  312. package/dist/code/prompts.js +0 -45
  313. package/dist/code/prompts.js.map +0 -1
  314. package/dist/code/tools/command.d.ts +0 -8
  315. package/dist/code/tools/command.d.ts.map +0 -1
  316. package/dist/code/tools/command.js +0 -83
  317. package/dist/code/tools/command.js.map +0 -1
  318. package/dist/code/tools/diff-utils.d.ts +0 -2
  319. package/dist/code/tools/diff-utils.d.ts.map +0 -1
  320. package/dist/code/tools/diff-utils.js +0 -45
  321. package/dist/code/tools/diff-utils.js.map +0 -1
  322. package/dist/code/tools/filesystem.d.ts +0 -11
  323. package/dist/code/tools/filesystem.d.ts.map +0 -1
  324. package/dist/code/tools/filesystem.js +0 -442
  325. package/dist/code/tools/filesystem.js.map +0 -1
  326. package/dist/code/tools/git.d.ts +0 -7
  327. package/dist/code/tools/git.d.ts.map +0 -1
  328. package/dist/code/tools/git.js +0 -111
  329. package/dist/code/tools/git.js.map +0 -1
  330. package/dist/code/tools/mcp.d.ts +0 -13
  331. package/dist/code/tools/mcp.d.ts.map +0 -1
  332. package/dist/code/tools/mcp.js +0 -230
  333. package/dist/code/tools/mcp.js.map +0 -1
  334. package/dist/data/tips.json +0 -118
  335. package/dist/ui/terminal-ui.d.ts +0 -73
  336. package/dist/ui/terminal-ui.d.ts.map +0 -1
  337. package/dist/ui/terminal-ui.js +0 -900
  338. package/dist/ui/terminal-ui.js.map +0 -1
  339. package/dist/utils/env-mapper.d.ts +0 -40
  340. package/dist/utils/env-mapper.d.ts.map +0 -1
  341. package/dist/utils/env-mapper.js +0 -122
  342. package/dist/utils/env-mapper.js.map +0 -1
  343. package/docs/USER_GUIDE.md +0 -573
  344. package/eslint.config.mjs +0 -43
  345. package/tests/agent-direct.test.mjs +0 -45
  346. package/tests/agent-output.test.mjs +0 -64
  347. package/tests/codemie-code.test.mjs +0 -42
  348. package/tests/context7-only.test.mjs +0 -42
  349. package/tests/conversation-flow.test.mjs +0 -63
  350. package/tests/interactive-simulation.test.mjs +0 -60
  351. package/tests/live-output.test.mjs +0 -53
  352. package/tests/mcp-context7.test.mjs +0 -105
  353. package/tests/mcp-e2e.test.mjs +0 -109
  354. package/tests/mcp-time-server.test.mjs +0 -58
  355. package/tests/streaming.test.mjs +0 -57
  356. package/tests/test-helpers.mjs +0 -94
  357. package/tests/text-wrapping.test.mjs +0 -33
  358. package/tests/tool-count.test.mjs +0 -81
  359. package/tests/ui-format.test.mjs +0 -39
  360. package/tests/ui-state.test.mjs +0 -72
@@ -0,0 +1,145 @@
1
+ /**
2
+ * VCS tools detection utilities
3
+ */
4
+ import { execSync } from 'node:child_process';
5
+ import { getToolInfo } from './registry.js';
6
+ /**
7
+ * Check if a tool is installed
8
+ */
9
+ export function isToolInstalled(tool) {
10
+ try {
11
+ const toolInfo = getToolInfo(tool);
12
+ execSync(toolInfo.checkCommand, { stdio: 'pipe' });
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ /**
20
+ * Get tool version
21
+ */
22
+ export function getToolVersion(tool) {
23
+ try {
24
+ const toolInfo = getToolInfo(tool);
25
+ const output = execSync(toolInfo.versionCommand, {
26
+ stdio: 'pipe',
27
+ encoding: 'utf-8',
28
+ }).trim();
29
+ // Extract version number from output
30
+ // gh version 2.40.0 (2024-01-15)
31
+ // glab version 1.36.0 (2024-01-10)
32
+ const match = output.match(/version\s+(\d+\.\d+\.\d+)/i);
33
+ return match ? match[1] : output;
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ /**
40
+ * Check if tool is authenticated
41
+ */
42
+ export function isToolAuthenticated(tool) {
43
+ try {
44
+ const toolInfo = getToolInfo(tool);
45
+ execSync(toolInfo.authCheckCommand, { stdio: 'pipe' });
46
+ return true;
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ /**
53
+ * Get authenticated user for a tool
54
+ */
55
+ export function getAuthUser(tool) {
56
+ try {
57
+ const toolInfo = getToolInfo(tool);
58
+ const output = execSync(toolInfo.authCheckCommand, {
59
+ stdio: 'pipe',
60
+ encoding: 'utf-8',
61
+ });
62
+ // Parse username from auth status output
63
+ if (tool === 'gh') {
64
+ // GitHub: "Logged in to github.com account USERNAME"
65
+ const match = output.match(/account\s+(\S+)/i);
66
+ return match ? match[1] : null;
67
+ }
68
+ else if (tool === 'glab') {
69
+ // GitLab: "Logged in to gitlab.com as USERNAME" or "Logged in to domain.com as USERNAME"
70
+ const match = output.match(/Logged in to \S+ as (\S+)/i);
71
+ return match ? match[1] : null;
72
+ }
73
+ return null;
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
79
+ /**
80
+ * Detect installation method for a tool
81
+ */
82
+ export function detectInstallationMethod(tool) {
83
+ if (!isToolInstalled(tool)) {
84
+ return null;
85
+ }
86
+ try {
87
+ // Try to find tool path
88
+ const whichCmd = process.platform === 'win32' ? 'where' : 'which';
89
+ const toolPath = execSync(`${whichCmd} ${tool}`, {
90
+ stdio: 'pipe',
91
+ encoding: 'utf-8',
92
+ }).trim();
93
+ // Check if installed via npm (usually in node_modules/.bin or npm global)
94
+ if (toolPath.includes('node_modules') || toolPath.includes('npm')) {
95
+ return 'npm';
96
+ }
97
+ return 'system';
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Get full status for a tool
105
+ */
106
+ export function getToolStatus(tool) {
107
+ const installed = isToolInstalled(tool);
108
+ return {
109
+ tool,
110
+ installed,
111
+ version: installed ? getToolVersion(tool) : null,
112
+ authenticated: installed ? isToolAuthenticated(tool) : false,
113
+ authUser: installed ? getAuthUser(tool) : null,
114
+ installationMethod: installed ? detectInstallationMethod(tool) : null,
115
+ };
116
+ }
117
+ /**
118
+ * Check status of all tools including git
119
+ */
120
+ export function checkAllTools() {
121
+ // Check git
122
+ let gitInstalled = false;
123
+ let gitVersion = null;
124
+ try {
125
+ const output = execSync('git --version', {
126
+ stdio: 'pipe',
127
+ encoding: 'utf-8',
128
+ }).trim();
129
+ gitInstalled = true;
130
+ const match = output.match(/git version (\d+\.\d+\.\d+)/);
131
+ gitVersion = match ? match[1] : output;
132
+ }
133
+ catch {
134
+ // Git not installed
135
+ }
136
+ return {
137
+ git: {
138
+ installed: gitInstalled,
139
+ version: gitVersion,
140
+ },
141
+ gh: getToolStatus('gh'),
142
+ glab: getToolStatus('glab'),
143
+ };
144
+ }
145
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/tools/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * VCS tools management exports
3
+ */
4
+ export * from './types.js';
5
+ export * from './registry.js';
6
+ export * from './detector.js';
7
+ export * from './manager.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * VCS tools management exports
3
+ */
4
+ export * from './types.js';
5
+ export * from './registry.js';
6
+ export * from './detector.js';
7
+ export * from './manager.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * VCS tools installation and management
3
+ */
4
+ import type { VCSTool, ToolInstallOptions } from './types.js';
5
+ /**
6
+ * Install a tool via npm
7
+ */
8
+ export declare function installTool(tool: VCSTool, options?: ToolInstallOptions): Promise<void>;
9
+ /**
10
+ * Uninstall a tool
11
+ */
12
+ export declare function uninstallTool(tool: VCSTool): Promise<void>;
13
+ /**
14
+ * Update a tool
15
+ */
16
+ export declare function updateTool(tool: VCSTool): Promise<void>;
17
+ /**
18
+ * Authenticate a tool
19
+ */
20
+ export declare function authenticateTool(tool: VCSTool, token?: string): Promise<void>;
21
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tools/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAI9D;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhG;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCnF"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * VCS tools installation and management
3
+ */
4
+ import { execSync } from 'node:child_process';
5
+ import { getToolInfo } from './registry.js';
6
+ import { isToolInstalled } from './detector.js';
7
+ /**
8
+ * Install a tool via npm
9
+ */
10
+ export async function installTool(tool, options = {}) {
11
+ const toolInfo = getToolInfo(tool);
12
+ const { global = true, force = false } = options;
13
+ // Check if already installed
14
+ if (isToolInstalled(tool) && !force) {
15
+ throw new Error(`${toolInfo.displayName} is already installed. Use --force to reinstall.`);
16
+ }
17
+ try {
18
+ const globalFlag = global ? '-g' : '';
19
+ const forceFlag = force ? '--force' : '';
20
+ console.log(`Installing ${toolInfo.displayName} via npm...`);
21
+ // Install via npm
22
+ execSync(`npm install ${globalFlag} ${forceFlag} ${toolInfo.npmPackage}`, {
23
+ stdio: 'inherit',
24
+ });
25
+ console.log(`✅ ${toolInfo.displayName} installed successfully`);
26
+ }
27
+ catch (error) {
28
+ throw new Error(`Failed to install ${toolInfo.displayName}: ${error instanceof Error ? error.message : String(error)}`);
29
+ }
30
+ }
31
+ /**
32
+ * Uninstall a tool
33
+ */
34
+ export async function uninstallTool(tool) {
35
+ const toolInfo = getToolInfo(tool);
36
+ if (!isToolInstalled(tool)) {
37
+ throw new Error(`${toolInfo.displayName} is not installed`);
38
+ }
39
+ try {
40
+ console.log(`Uninstalling ${toolInfo.displayName}...`);
41
+ execSync(`npm uninstall -g ${toolInfo.npmPackage}`, {
42
+ stdio: 'inherit',
43
+ });
44
+ console.log(`✅ ${toolInfo.displayName} uninstalled successfully`);
45
+ }
46
+ catch (error) {
47
+ throw new Error(`Failed to uninstall ${toolInfo.displayName}: ${error instanceof Error ? error.message : String(error)}`);
48
+ }
49
+ }
50
+ /**
51
+ * Update a tool
52
+ */
53
+ export async function updateTool(tool) {
54
+ const toolInfo = getToolInfo(tool);
55
+ if (!isToolInstalled(tool)) {
56
+ throw new Error(`${toolInfo.displayName} is not installed. Install it first with: codemie tools install ${tool}`);
57
+ }
58
+ try {
59
+ console.log(`Updating ${toolInfo.displayName}...`);
60
+ execSync(`npm update -g ${toolInfo.npmPackage}`, {
61
+ stdio: 'inherit',
62
+ });
63
+ console.log(`✅ ${toolInfo.displayName} updated successfully`);
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Failed to update ${toolInfo.displayName}: ${error instanceof Error ? error.message : String(error)}`);
67
+ }
68
+ }
69
+ /**
70
+ * Authenticate a tool
71
+ */
72
+ export async function authenticateTool(tool, token) {
73
+ const toolInfo = getToolInfo(tool);
74
+ if (!isToolInstalled(tool)) {
75
+ throw new Error(`${toolInfo.displayName} is not installed. Install it first with: codemie tools install ${tool}`);
76
+ }
77
+ try {
78
+ console.log(`Authenticating ${toolInfo.displayName}...`);
79
+ if (token) {
80
+ // Authenticate with token
81
+ if (tool === 'gh') {
82
+ execSync(`echo ${token} | gh auth login --with-token`, {
83
+ stdio: 'inherit',
84
+ });
85
+ }
86
+ else if (tool === 'glab') {
87
+ execSync(`glab auth login --token ${token}`, {
88
+ stdio: 'inherit',
89
+ });
90
+ }
91
+ }
92
+ else {
93
+ // Interactive authentication
94
+ execSync(toolInfo.authCommand, {
95
+ stdio: 'inherit',
96
+ });
97
+ }
98
+ console.log(`✅ ${toolInfo.displayName} authenticated successfully`);
99
+ }
100
+ catch (error) {
101
+ throw new Error(`Failed to authenticate ${toolInfo.displayName}: ${error instanceof Error ? error.message : String(error)}`);
102
+ }
103
+ }
104
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tools/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * VCS tools registry
3
+ */
4
+ import type { ToolInfo, VCSTool } from './types.js';
5
+ export declare const TOOLS: Record<VCSTool, ToolInfo>;
6
+ export declare function getToolInfo(tool: VCSTool): ToolInfo;
7
+ export declare function getAllTools(): ToolInfo[];
8
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAyB3C,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAEnD;AAED,wBAAgB,WAAW,IAAI,QAAQ,EAAE,CAExC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * VCS tools registry
3
+ */
4
+ export const TOOLS = {
5
+ gh: {
6
+ name: 'gh',
7
+ displayName: 'GitHub CLI',
8
+ packageName: 'gh',
9
+ description: 'GitHub official command-line tool',
10
+ npmPackage: '@github/gh',
11
+ checkCommand: 'gh --version',
12
+ versionCommand: 'gh --version',
13
+ authCheckCommand: 'gh auth status',
14
+ authCommand: 'gh auth login',
15
+ docsUrl: 'https://cli.github.com/',
16
+ },
17
+ glab: {
18
+ name: 'glab',
19
+ displayName: 'GitLab CLI',
20
+ packageName: 'glab',
21
+ description: 'GitLab official command-line tool',
22
+ npmPackage: 'glab-cli',
23
+ checkCommand: 'glab --version',
24
+ versionCommand: 'glab --version',
25
+ authCheckCommand: 'glab auth status',
26
+ authCommand: 'glab auth login',
27
+ docsUrl: 'https://gitlab.com/gitlab-org/cli',
28
+ },
29
+ };
30
+ export function getToolInfo(tool) {
31
+ return TOOLS[tool];
32
+ }
33
+ export function getAllTools() {
34
+ return Object.values(TOOLS);
35
+ }
36
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,KAAK,GAA8B;IAC9C,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,mCAAmC;QAChD,UAAU,EAAE,YAAY;QACxB,YAAY,EAAE,cAAc;QAC5B,cAAc,EAAE,cAAc;QAC9B,gBAAgB,EAAE,gBAAgB;QAClC,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,yBAAyB;KACnC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,mCAAmC;QAChD,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,gBAAgB;QAC9B,cAAc,EAAE,gBAAgB;QAChC,gBAAgB,EAAE,kBAAkB;QACpC,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,mCAAmC;KAC7C;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * VCS Tools management types
3
+ */
4
+ export type VCSTool = 'gh' | 'glab';
5
+ export interface ToolInfo {
6
+ name: VCSTool;
7
+ displayName: string;
8
+ packageName: string;
9
+ description: string;
10
+ npmPackage: string;
11
+ checkCommand: string;
12
+ versionCommand: string;
13
+ authCheckCommand: string;
14
+ authCommand: string;
15
+ docsUrl: string;
16
+ }
17
+ export interface ToolStatus {
18
+ tool: VCSTool;
19
+ installed: boolean;
20
+ version: string | null;
21
+ authenticated: boolean;
22
+ authUser: string | null;
23
+ installationMethod: 'npm' | 'system' | null;
24
+ }
25
+ export interface ToolInstallOptions {
26
+ global?: boolean;
27
+ force?: boolean;
28
+ }
29
+ export interface ToolAuthOptions {
30
+ token?: string;
31
+ interactive?: boolean;
32
+ }
33
+ export interface ToolsCheckResult {
34
+ git: {
35
+ installed: boolean;
36
+ version: string | null;
37
+ };
38
+ gh: ToolStatus;
39
+ glab: ToolStatus;
40
+ }
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kBAAkB,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE;QACH,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * VCS Tools management types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,42 @@
1
+ export interface SSOAuthConfig {
2
+ codeMieUrl: string;
3
+ timeout?: number;
4
+ }
5
+ export interface SSOAuthResult {
6
+ success: boolean;
7
+ apiUrl?: string;
8
+ cookies?: Record<string, string>;
9
+ error?: string;
10
+ }
11
+ export interface CodeMieModel {
12
+ id?: string;
13
+ base_name?: string;
14
+ deployment_name?: string;
15
+ label?: string;
16
+ name?: string;
17
+ description?: string;
18
+ context_length?: number;
19
+ provider?: string;
20
+ multimodal?: boolean;
21
+ react_agent?: boolean;
22
+ enabled?: boolean;
23
+ default?: boolean;
24
+ }
25
+ export interface SSOCredentials {
26
+ cookies: Record<string, string>;
27
+ apiUrl: string;
28
+ expiresAt?: number;
29
+ }
30
+ export interface CodeMieIntegration {
31
+ id: string;
32
+ alias: string;
33
+ project_name: string;
34
+ credential_type: string;
35
+ created_at?: string;
36
+ updated_at?: string;
37
+ }
38
+ export interface CodeMieIntegrationsResponse {
39
+ integrations?: CodeMieIntegration[];
40
+ [key: string]: any;
41
+ }
42
+ //# sourceMappingURL=sso.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../../src/types/sso.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEpC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sso.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.js","sourceRoot":"","sources":["../../src/types/sso.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { CodeMieConfigOptions } from './config-loader.js';
2
+ /**
3
+ * Validation result with helpful error information
4
+ */
5
+ export interface CompatibilityResult {
6
+ valid: boolean;
7
+ error?: string;
8
+ suggestions?: string[];
9
+ }
10
+ /**
11
+ * Validate if an agent supports the configured provider
12
+ */
13
+ export declare function validateProviderCompatibility(agentName: string, config: CodeMieConfigOptions): CompatibilityResult;
14
+ /**
15
+ * Validate if an agent supports the configured model
16
+ */
17
+ export declare function validateModelCompatibility(agentName: string, config: CodeMieConfigOptions): CompatibilityResult;
18
+ /**
19
+ * Display compatibility error with suggestions
20
+ */
21
+ export declare function displayCompatibilityError(result: CompatibilityResult, logger: {
22
+ error: (msg: string) => void;
23
+ }): void;
24
+ /**
25
+ * Get supported providers for an agent
26
+ */
27
+ export declare function getSupportedProviders(agentName: string): string[];
28
+ /**
29
+ * Check if agent supports a specific provider
30
+ */
31
+ export declare function supportsProvider(agentName: string, provider: string): boolean;
32
+ //# sourceMappingURL=agent-compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-compatibility.d.ts","sourceRoot":"","sources":["../../src/utils/agent-compatibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAiC1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,GAC3B,mBAAmB,CAuCrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,GAC3B,mBAAmB,CAkCrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACvC,IAAI,CAiCN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAGjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK7E"}
@@ -0,0 +1,140 @@
1
+ import chalk from 'chalk';
2
+ /**
3
+ * Centralized agent compatibility rules
4
+ * Add new agents or update provider support here
5
+ */
6
+ const AGENT_COMPATIBILITY = {
7
+ 'claude': {
8
+ supportedProviders: ['bedrock', 'openai', 'azure', 'litellm', 'ai-run-sso'],
9
+ blockedModelPatterns: [] // Claude accepts both Claude and GPT models
10
+ },
11
+ 'codex': {
12
+ supportedProviders: ['openai', 'azure', 'litellm'],
13
+ blockedModelPatterns: [
14
+ /^claude/i, // Block any Claude models
15
+ /bedrock.*claude/i // Block Bedrock Claude models
16
+ ]
17
+ },
18
+ 'codemie-code': {
19
+ supportedProviders: ['bedrock', 'openai', 'azure', 'litellm', 'ai-run-sso'],
20
+ blockedModelPatterns: [] // Supports all models via LangChain
21
+ }
22
+ };
23
+ /**
24
+ * Validate if an agent supports the configured provider
25
+ */
26
+ export function validateProviderCompatibility(agentName, config) {
27
+ const compatibility = AGENT_COMPATIBILITY[agentName];
28
+ // If no rules defined, block by default for security
29
+ if (!compatibility) {
30
+ return {
31
+ valid: false,
32
+ error: `Unknown agent '${agentName}'`,
33
+ suggestions: ['Check agent name and try again']
34
+ };
35
+ }
36
+ const provider = config.provider || 'unknown';
37
+ // Check if provider is in supported list
38
+ if (!compatibility.supportedProviders.includes(provider)) {
39
+ const suggestions = [
40
+ `Supported providers: ${compatibility.supportedProviders.join(', ')}`,
41
+ 'Run setup to choose a different provider: codemie setup'
42
+ ];
43
+ // Add direct environment variable configuration hint for Anthropic agents
44
+ if (agentName === 'claude') {
45
+ suggestions.push('Or configure environment variables directly:', ' export ANTHROPIC_BASE_URL="https://litellm....."', ' export ANTHROPIC_AUTH_TOKEN="sk...."', ' export ANTHROPIC_MODEL="claude-4-5-sonnet"');
46
+ }
47
+ return {
48
+ valid: false,
49
+ error: `Provider '${provider}' is not supported by ${agentName}`,
50
+ suggestions
51
+ };
52
+ }
53
+ return { valid: true };
54
+ }
55
+ /**
56
+ * Validate if an agent supports the configured model
57
+ */
58
+ export function validateModelCompatibility(agentName, config) {
59
+ const compatibility = AGENT_COMPATIBILITY[agentName];
60
+ // If no rules defined, block by default for security
61
+ if (!compatibility) {
62
+ return {
63
+ valid: false,
64
+ error: `Unknown agent '${agentName}'`,
65
+ suggestions: ['Check agent name and try again']
66
+ };
67
+ }
68
+ const model = config.model || 'unknown';
69
+ // Check if model matches any blocked pattern
70
+ if (compatibility.blockedModelPatterns) {
71
+ const isBlocked = compatibility.blockedModelPatterns.some(pattern => pattern.test(model));
72
+ if (isBlocked) {
73
+ return {
74
+ valid: false,
75
+ error: `Model '${model}' is not compatible with ${agentName}`,
76
+ suggestions: [
77
+ `${agentName} requires OpenAI-compatible models (e.g., gpt-5, gpt-4o)`,
78
+ `Switch model: codemie config set model gpt-4o`,
79
+ `Override for this session: codemie-${agentName} --model gpt-4o`
80
+ ]
81
+ };
82
+ }
83
+ }
84
+ return { valid: true };
85
+ }
86
+ /**
87
+ * Display compatibility error with suggestions
88
+ */
89
+ export function displayCompatibilityError(result, logger) {
90
+ if (result.error) {
91
+ logger.error(result.error);
92
+ }
93
+ if (result.suggestions && result.suggestions.length > 0) {
94
+ if (result.suggestions[0].toLowerCase().startsWith('supported')) {
95
+ console.log(chalk.dim(`\n${result.suggestions[0]}`));
96
+ // Display remaining suggestions as numbered options
97
+ if (result.suggestions.length > 1) {
98
+ console.log(chalk.dim('\nOptions:'));
99
+ result.suggestions.slice(1).forEach((suggestion, index) => {
100
+ // Don't number lines that start with whitespace (continuation lines)
101
+ if (suggestion.startsWith(' ')) {
102
+ console.log(chalk.dim(suggestion));
103
+ }
104
+ else {
105
+ console.log(chalk.dim(` ${index + 1}. ${suggestion}`));
106
+ }
107
+ });
108
+ }
109
+ }
110
+ else {
111
+ console.log(chalk.dim('\nOptions:'));
112
+ result.suggestions.forEach((suggestion, index) => {
113
+ // Don't number lines that start with whitespace (continuation lines)
114
+ if (suggestion.startsWith(' ')) {
115
+ console.log(chalk.dim(suggestion));
116
+ }
117
+ else {
118
+ console.log(chalk.dim(` ${index + 1}. ${suggestion}`));
119
+ }
120
+ });
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Get supported providers for an agent
126
+ */
127
+ export function getSupportedProviders(agentName) {
128
+ const compatibility = AGENT_COMPATIBILITY[agentName];
129
+ return compatibility?.supportedProviders || [];
130
+ }
131
+ /**
132
+ * Check if agent supports a specific provider
133
+ */
134
+ export function supportsProvider(agentName, provider) {
135
+ const compatibility = AGENT_COMPATIBILITY[agentName];
136
+ if (!compatibility)
137
+ return false; // Default to false for security
138
+ return compatibility.supportedProviders.includes(provider);
139
+ }
140
+ //# sourceMappingURL=agent-compatibility.js.map