@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,397 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import dotenv from 'dotenv';
5
+ import chalk from 'chalk';
6
+ /**
7
+ * Unified configuration loader with priority system:
8
+ * CLI args > Env vars > Project config > Global config > Defaults
9
+ */
10
+ export class ConfigLoader {
11
+ static GLOBAL_CONFIG_DIR = path.join(os.homedir(), '.codemie');
12
+ static GLOBAL_CONFIG = path.join(ConfigLoader.GLOBAL_CONFIG_DIR, 'config.json');
13
+ static LOCAL_CONFIG = '.codemie/config.json';
14
+ /**
15
+ * Load configuration with proper priority:
16
+ * CLI args > Env vars > Project config > Global config > Defaults
17
+ */
18
+ static async load(workingDir = process.cwd(), cliOverrides) {
19
+ // 5. Built-in defaults (lowest priority)
20
+ const config = {
21
+ timeout: 300,
22
+ debug: false,
23
+ allowedDirs: [],
24
+ ignorePatterns: ['node_modules', '.git', 'dist', 'build']
25
+ };
26
+ // 4. Global config (~/.codemie/config.json)
27
+ const globalConfig = await this.loadJsonConfig(this.GLOBAL_CONFIG);
28
+ Object.assign(config, this.removeUndefined(globalConfig));
29
+ // 3. Project-local config (.codemie/config.json)
30
+ const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
31
+ const localConfig = await this.loadJsonConfig(localConfigPath);
32
+ Object.assign(config, this.removeUndefined(localConfig));
33
+ // 2. Environment variables (load .env first if in project)
34
+ const envPath = path.join(workingDir, '.env');
35
+ try {
36
+ await fs.access(envPath);
37
+ dotenv.config({ path: envPath });
38
+ }
39
+ catch {
40
+ // No .env file, that's fine
41
+ }
42
+ const envConfig = this.loadFromEnv();
43
+ Object.assign(config, this.removeUndefined(envConfig));
44
+ // 1. CLI arguments (highest priority)
45
+ if (cliOverrides) {
46
+ Object.assign(config, this.removeUndefined(cliOverrides));
47
+ }
48
+ return config;
49
+ }
50
+ /**
51
+ * Load configuration with validation (throws if required fields missing)
52
+ */
53
+ static async loadAndValidate(workingDir = process.cwd(), cliOverrides) {
54
+ const config = await this.load(workingDir, cliOverrides);
55
+ this.validate(config);
56
+ return config;
57
+ }
58
+ /**
59
+ * Load configuration from environment variables
60
+ */
61
+ static loadFromEnv() {
62
+ const env = {};
63
+ if (process.env.CODEMIE_PROVIDER) {
64
+ env.provider = process.env.CODEMIE_PROVIDER;
65
+ }
66
+ if (process.env.CODEMIE_BASE_URL) {
67
+ env.baseUrl = process.env.CODEMIE_BASE_URL;
68
+ }
69
+ if (process.env.CODEMIE_API_KEY) {
70
+ env.apiKey = process.env.CODEMIE_API_KEY;
71
+ }
72
+ if (process.env.CODEMIE_MODEL) {
73
+ env.model = process.env.CODEMIE_MODEL;
74
+ }
75
+ if (process.env.CODEMIE_TIMEOUT) {
76
+ env.timeout = parseInt(process.env.CODEMIE_TIMEOUT, 10);
77
+ }
78
+ if (process.env.CODEMIE_DEBUG) {
79
+ env.debug = process.env.CODEMIE_DEBUG === 'true';
80
+ }
81
+ if (process.env.CODEMIE_ALLOWED_DIRS) {
82
+ env.allowedDirs = process.env.CODEMIE_ALLOWED_DIRS.split(',').map(s => s.trim());
83
+ }
84
+ if (process.env.CODEMIE_IGNORE_PATTERNS) {
85
+ env.ignorePatterns = process.env.CODEMIE_IGNORE_PATTERNS.split(',').map(s => s.trim());
86
+ }
87
+ // SSO-specific environment variables
88
+ if (process.env.CODEMIE_URL)
89
+ env.codeMieUrl = process.env.CODEMIE_URL;
90
+ if (process.env.CODEMIE_AUTH_METHOD)
91
+ env.authMethod = process.env.CODEMIE_AUTH_METHOD;
92
+ // Handle CodeMie integration from environment variables
93
+ if (process.env.CODEMIE_INTEGRATION_ID || process.env.CODEMIE_INTEGRATION_ALIAS) {
94
+ env.codeMieIntegration = {
95
+ id: process.env.CODEMIE_INTEGRATION_ID || '',
96
+ alias: process.env.CODEMIE_INTEGRATION_ALIAS || ''
97
+ };
98
+ }
99
+ // Check for AWS Bedrock configuration
100
+ if (process.env.CLAUDE_CODE_USE_BEDROCK === '1') {
101
+ env.provider = 'bedrock';
102
+ env.baseUrl = 'bedrock';
103
+ env.apiKey = 'bedrock'; // Placeholder for AWS credentials
104
+ }
105
+ return env;
106
+ }
107
+ /**
108
+ * Load JSON config file
109
+ */
110
+ static async loadJsonConfig(filePath) {
111
+ try {
112
+ const content = await fs.readFile(filePath, 'utf-8');
113
+ return JSON.parse(content);
114
+ }
115
+ catch {
116
+ return {};
117
+ }
118
+ }
119
+ /**
120
+ * Save configuration to global config file
121
+ */
122
+ static async saveGlobalConfig(config) {
123
+ await fs.mkdir(this.GLOBAL_CONFIG_DIR, { recursive: true });
124
+ await fs.writeFile(this.GLOBAL_CONFIG, JSON.stringify(config, null, 2), 'utf-8');
125
+ }
126
+ /**
127
+ * Save configuration to project config file
128
+ */
129
+ static async saveProjectConfig(workingDir, config) {
130
+ const configDir = path.join(workingDir, '.codemie');
131
+ await fs.mkdir(configDir, { recursive: true });
132
+ await fs.writeFile(path.join(configDir, 'config.json'), JSON.stringify(config, null, 2), 'utf-8');
133
+ }
134
+ /**
135
+ * Delete global config file
136
+ */
137
+ static async deleteGlobalConfig() {
138
+ try {
139
+ await fs.unlink(this.GLOBAL_CONFIG);
140
+ }
141
+ catch (error) {
142
+ // Ignore if file doesn't exist
143
+ if (error.code !== 'ENOENT') {
144
+ throw error;
145
+ }
146
+ }
147
+ }
148
+ /**
149
+ * Delete project config file
150
+ */
151
+ static async deleteProjectConfig(workingDir) {
152
+ try {
153
+ const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
154
+ await fs.unlink(localConfigPath);
155
+ }
156
+ catch (error) {
157
+ // Ignore if file doesn't exist
158
+ if (error.code !== 'ENOENT') {
159
+ throw error;
160
+ }
161
+ }
162
+ }
163
+ /**
164
+ * Check if global config exists and is not empty
165
+ */
166
+ static async hasGlobalConfig() {
167
+ try {
168
+ await fs.access(this.GLOBAL_CONFIG);
169
+ const config = await this.loadJsonConfig(this.GLOBAL_CONFIG);
170
+ // Check if config has any actual values (not just an empty object)
171
+ return Object.keys(config).length > 0;
172
+ }
173
+ catch {
174
+ return false;
175
+ }
176
+ }
177
+ /**
178
+ * Check if project config exists
179
+ */
180
+ static async hasProjectConfig(workingDir = process.cwd()) {
181
+ try {
182
+ const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
183
+ await fs.access(localConfigPath);
184
+ return true;
185
+ }
186
+ catch {
187
+ return false;
188
+ }
189
+ }
190
+ /**
191
+ * Remove undefined values from object
192
+ */
193
+ static removeUndefined(obj) {
194
+ return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v !== undefined));
195
+ }
196
+ /**
197
+ * Validate required configuration
198
+ */
199
+ static validate(config) {
200
+ if (!config.baseUrl) {
201
+ throw new Error('CODEMIE_BASE_URL is required. Run: codemie setup');
202
+ }
203
+ if (!config.apiKey) {
204
+ throw new Error('CODEMIE_API_KEY is required. Run: codemie setup');
205
+ }
206
+ if (!config.model) {
207
+ throw new Error('CODEMIE_MODEL is required. Run: codemie setup');
208
+ }
209
+ }
210
+ /**
211
+ * Load configuration with source tracking
212
+ */
213
+ static async loadWithSources(workingDir = process.cwd()) {
214
+ const sources = {};
215
+ // Load all config layers
216
+ const configs = [
217
+ {
218
+ data: {
219
+ timeout: 300,
220
+ debug: false
221
+ },
222
+ source: 'default'
223
+ },
224
+ {
225
+ data: await this.loadJsonConfig(this.GLOBAL_CONFIG),
226
+ source: 'global'
227
+ },
228
+ {
229
+ data: await this.loadJsonConfig(path.join(workingDir, this.LOCAL_CONFIG)),
230
+ source: 'project'
231
+ },
232
+ {
233
+ data: this.loadFromEnv(),
234
+ source: 'env'
235
+ }
236
+ ];
237
+ // Track where each value comes from (last one wins)
238
+ for (const { data, source } of configs) {
239
+ for (const [key, value] of Object.entries(data)) {
240
+ if (value !== undefined && value !== null) {
241
+ sources[key] = { value, source };
242
+ }
243
+ }
244
+ }
245
+ return sources;
246
+ }
247
+ /**
248
+ * Show configuration with source attribution
249
+ */
250
+ static async showWithSources(workingDir = process.cwd()) {
251
+ const sources = await this.loadWithSources(workingDir);
252
+ console.log(chalk.bold('\nConfiguration Sources:\n'));
253
+ const sortedKeys = Object.keys(sources).sort();
254
+ for (const key of sortedKeys) {
255
+ const { value, source } = sources[key];
256
+ const displayValue = this.maskSensitive(key, value);
257
+ const sourceColor = this.getSourceColor(source);
258
+ const sourceLabel = sourceColor(`(${source})`);
259
+ console.log(` ${chalk.cyan(key)}: ${displayValue} ${sourceLabel}`);
260
+ }
261
+ console.log(chalk.dim('\nPriority: cli > env > project > global > default\n'));
262
+ }
263
+ /**
264
+ * Mask sensitive values
265
+ */
266
+ static maskSensitive(key, value) {
267
+ const valueStr = String(value);
268
+ const keyLower = key.toLowerCase();
269
+ if (keyLower.includes('key') || keyLower.includes('token') || keyLower.includes('password')) {
270
+ if (valueStr.length <= 8) {
271
+ return '***';
272
+ }
273
+ const start = valueStr.substring(0, 8);
274
+ const end = valueStr.substring(valueStr.length - 4);
275
+ return `${start}***${end}`;
276
+ }
277
+ // Handle arrays
278
+ if (Array.isArray(value)) {
279
+ return value.join(', ');
280
+ }
281
+ return valueStr;
282
+ }
283
+ /**
284
+ * Get color for source
285
+ */
286
+ static getSourceColor(source) {
287
+ const colors = {
288
+ default: chalk.gray,
289
+ global: chalk.cyan,
290
+ project: chalk.yellow,
291
+ env: chalk.green,
292
+ cli: chalk.magenta
293
+ };
294
+ return colors[source] || chalk.white;
295
+ }
296
+ /**
297
+ * Get environment variable overrides
298
+ */
299
+ static getEnvOverrides() {
300
+ return this.removeUndefined(this.loadFromEnv());
301
+ }
302
+ /**
303
+ * Export provider-specific environment variables
304
+ * (for passing to external agents like Claude Code, Codex)
305
+ */
306
+ static exportProviderEnvVars(config) {
307
+ const env = {};
308
+ // Always set generic CODEMIE_* vars
309
+ if (config.provider)
310
+ env.CODEMIE_PROVIDER = config.provider;
311
+ if (config.baseUrl)
312
+ env.CODEMIE_BASE_URL = config.baseUrl;
313
+ if (config.apiKey)
314
+ env.CODEMIE_API_KEY = config.apiKey;
315
+ if (config.model)
316
+ env.CODEMIE_MODEL = config.model;
317
+ if (config.timeout)
318
+ env.CODEMIE_TIMEOUT = String(config.timeout);
319
+ if (config.debug)
320
+ env.CODEMIE_DEBUG = String(config.debug);
321
+ // Set provider-specific vars based on provider
322
+ const provider = (config.provider || 'openai').toUpperCase();
323
+ if (provider === 'OPENAI' || provider === 'CODEX') {
324
+ // OpenAI and Codex share the same configuration
325
+ // Note: OpenAI Codex was deprecated in March 2023
326
+ // Modern usage should use gpt-3.5-turbo or gpt-4 models instead
327
+ if (config.baseUrl)
328
+ env.OPENAI_BASE_URL = config.baseUrl;
329
+ if (config.apiKey)
330
+ env.OPENAI_API_KEY = config.apiKey;
331
+ if (config.model)
332
+ env.OPENAI_MODEL = config.model;
333
+ // Legacy Codex environment variables (for compatibility)
334
+ if (provider === 'CODEX') {
335
+ if (config.baseUrl)
336
+ env.CODEX_BASE_URL = config.baseUrl;
337
+ if (config.apiKey)
338
+ env.CODEX_API_KEY = config.apiKey;
339
+ if (config.model)
340
+ env.CODEX_MODEL = config.model;
341
+ }
342
+ }
343
+ else if (provider === 'AZURE') {
344
+ if (config.baseUrl)
345
+ env.AZURE_OPENAI_ENDPOINT = config.baseUrl;
346
+ if (config.apiKey)
347
+ env.AZURE_OPENAI_API_KEY = config.apiKey;
348
+ if (config.model)
349
+ env.AZURE_OPENAI_DEPLOYMENT = config.model;
350
+ }
351
+ else if (provider === 'BEDROCK') {
352
+ // AWS Bedrock configuration
353
+ env.CLAUDE_CODE_USE_BEDROCK = '1';
354
+ // AWS credentials should be set via AWS CLI or environment variables
355
+ }
356
+ else if (provider === 'LITELLM') {
357
+ // Generic LiteLLM proxy gateway
358
+ // LiteLLM can proxy for any model, so set both OpenAI and Anthropic env vars
359
+ if (config.baseUrl) {
360
+ env.OPENAI_BASE_URL = config.baseUrl;
361
+ env.ANTHROPIC_BASE_URL = config.baseUrl;
362
+ }
363
+ if (config.apiKey) {
364
+ env.OPENAI_API_KEY = config.apiKey;
365
+ env.ANTHROPIC_AUTH_TOKEN = config.apiKey;
366
+ }
367
+ if (config.model) {
368
+ env.OPENAI_MODEL = config.model;
369
+ env.ANTHROPIC_MODEL = config.model;
370
+ }
371
+ }
372
+ else if (provider === 'AI-RUN-SSO') {
373
+ // CodeMie SSO authentication - credentials handled via credential store
374
+ // Set both OpenAI and Anthropic env vars for compatibility
375
+ if (config.baseUrl) {
376
+ env.OPENAI_BASE_URL = config.baseUrl;
377
+ env.ANTHROPIC_BASE_URL = config.baseUrl;
378
+ }
379
+ if (config.apiKey) {
380
+ env.OPENAI_API_KEY = config.apiKey;
381
+ env.ANTHROPIC_AUTH_TOKEN = config.apiKey;
382
+ }
383
+ if (config.model) {
384
+ env.OPENAI_MODEL = config.model;
385
+ env.ANTHROPIC_MODEL = config.model;
386
+ }
387
+ if (config.codeMieUrl)
388
+ env.CODEMIE_URL = config.codeMieUrl;
389
+ if (config.authMethod)
390
+ env.CODEMIE_AUTH_METHOD = config.authMethod;
391
+ if (config.codeMieIntegration?.id)
392
+ env.CODEMIE_INTEGRATION_ID = config.codeMieIntegration.id;
393
+ }
394
+ return env;
395
+ }
396
+ }
397
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { SSOCredentials } from '../types/sso.js';
2
+ export declare class CredentialStore {
3
+ private static instance;
4
+ private encryptionKey;
5
+ private constructor();
6
+ static getInstance(): CredentialStore;
7
+ storeSSOCredentials(credentials: SSOCredentials): Promise<void>;
8
+ retrieveSSOCredentials(): Promise<SSOCredentials | null>;
9
+ clearSSOCredentials(): Promise<void>;
10
+ private encrypt;
11
+ private decrypt;
12
+ private getOrCreateEncryptionKey;
13
+ private storeToFile;
14
+ private retrieveFromFile;
15
+ }
16
+ //# sourceMappingURL=credential-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/utils/credential-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,eAAe;IAO/B,mBAAmB,CAAC,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,sBAAsB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA0BxD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,wBAAwB;YAMlB,WAAW;YAMX,gBAAgB;CAO/B"}
@@ -0,0 +1,109 @@
1
+ import * as keytar from 'keytar';
2
+ import * as crypto from 'crypto';
3
+ import * as fs from 'fs/promises';
4
+ import * as path from 'path';
5
+ import * as os from 'os';
6
+ const SERVICE_NAME = 'codemie-code';
7
+ const ACCOUNT_NAME = 'sso-credentials';
8
+ const FALLBACK_FILE = path.join(os.homedir(), '.codemie', 'sso-credentials.enc');
9
+ export class CredentialStore {
10
+ static instance;
11
+ encryptionKey;
12
+ constructor() {
13
+ this.encryptionKey = this.getOrCreateEncryptionKey();
14
+ }
15
+ static getInstance() {
16
+ if (!CredentialStore.instance) {
17
+ CredentialStore.instance = new CredentialStore();
18
+ }
19
+ return CredentialStore.instance;
20
+ }
21
+ async storeSSOCredentials(credentials) {
22
+ const encrypted = this.encrypt(JSON.stringify(credentials));
23
+ try {
24
+ // Try secure keychain storage first
25
+ await keytar.setPassword(SERVICE_NAME, ACCOUNT_NAME, encrypted);
26
+ }
27
+ catch {
28
+ console.warn('Keychain not available, using encrypted file storage');
29
+ await this.storeToFile(encrypted);
30
+ }
31
+ }
32
+ async retrieveSSOCredentials() {
33
+ try {
34
+ // Try keychain first
35
+ const encrypted = await keytar.getPassword(SERVICE_NAME, ACCOUNT_NAME);
36
+ if (encrypted) {
37
+ const decrypted = this.decrypt(encrypted);
38
+ return JSON.parse(decrypted);
39
+ }
40
+ }
41
+ catch {
42
+ // Fall back to file storage
43
+ }
44
+ // Always try file storage as fallback
45
+ try {
46
+ const encrypted = await this.retrieveFromFile();
47
+ if (encrypted) {
48
+ const decrypted = this.decrypt(encrypted);
49
+ return JSON.parse(decrypted);
50
+ }
51
+ }
52
+ catch {
53
+ // Unable to decrypt file storage
54
+ }
55
+ return null;
56
+ }
57
+ async clearSSOCredentials() {
58
+ try {
59
+ await keytar.deletePassword(SERVICE_NAME, ACCOUNT_NAME);
60
+ }
61
+ catch {
62
+ // Also clear file storage
63
+ try {
64
+ await fs.unlink(FALLBACK_FILE);
65
+ }
66
+ catch {
67
+ // Ignore file not found errors
68
+ }
69
+ }
70
+ }
71
+ encrypt(text) {
72
+ const iv = crypto.randomBytes(16);
73
+ // Use a proper 32-byte key by hashing the encryptionKey
74
+ const key = crypto.createHash('sha256').update(this.encryptionKey).digest();
75
+ const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
76
+ let encrypted = cipher.update(text, 'utf8', 'hex');
77
+ encrypted += cipher.final('hex');
78
+ return iv.toString('hex') + ':' + encrypted;
79
+ }
80
+ decrypt(text) {
81
+ const [ivHex, encryptedHex] = text.split(':');
82
+ const iv = Buffer.from(ivHex, 'hex');
83
+ // Use a proper 32-byte key by hashing the encryptionKey
84
+ const key = crypto.createHash('sha256').update(this.encryptionKey).digest();
85
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
86
+ let decrypted = decipher.update(encryptedHex, 'hex', 'utf8');
87
+ decrypted += decipher.final('utf8');
88
+ return decrypted;
89
+ }
90
+ getOrCreateEncryptionKey() {
91
+ // Use machine-specific key based on hardware info
92
+ const machineId = os.hostname() + os.platform() + os.arch();
93
+ return crypto.createHash('sha256').update(machineId).digest('hex');
94
+ }
95
+ async storeToFile(encrypted) {
96
+ const dir = path.dirname(FALLBACK_FILE);
97
+ await fs.mkdir(dir, { recursive: true });
98
+ await fs.writeFile(FALLBACK_FILE, encrypted, 'utf8');
99
+ }
100
+ async retrieveFromFile() {
101
+ try {
102
+ return await fs.readFile(FALLBACK_FILE, 'utf8');
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ }
109
+ //# sourceMappingURL=credential-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/utils/credential-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get the directory name of the current module (ESM equivalent of __dirname)
3
+ * @param importMetaUrl - Pass import.meta.url from the calling module
4
+ * @returns The directory path
5
+ */
6
+ export declare function getDirname(importMetaUrl: string): string;
7
+ //# sourceMappingURL=dirname.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirname.d.ts","sourceRoot":"","sources":["../../src/utils/dirname.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,11 @@
1
+ import { fileURLToPath } from 'url';
2
+ import { dirname } from 'path';
3
+ /**
4
+ * Get the directory name of the current module (ESM equivalent of __dirname)
5
+ * @param importMetaUrl - Pass import.meta.url from the calling module
6
+ * @returns The directory path
7
+ */
8
+ export function getDirname(importMetaUrl) {
9
+ return dirname(fileURLToPath(importMetaUrl));
10
+ }
11
+ //# sourceMappingURL=dirname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirname.js","sourceRoot":"","sources":["../../src/utils/dirname.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB;IAC9C,OAAO,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,55 +1,45 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PathSecurityError = exports.ToolExecutionError = exports.AgentInstallationError = exports.AgentNotFoundError = exports.ConfigurationError = exports.CodeMieError = void 0;
4
- exports.getErrorMessage = getErrorMessage;
5
- class CodeMieError extends Error {
1
+ export class CodeMieError extends Error {
6
2
  constructor(message) {
7
3
  super(message);
8
4
  this.name = 'CodeMieError';
9
5
  }
10
6
  }
11
- exports.CodeMieError = CodeMieError;
12
- class ConfigurationError extends CodeMieError {
7
+ export class ConfigurationError extends CodeMieError {
13
8
  constructor(message) {
14
9
  super(message);
15
10
  this.name = 'ConfigurationError';
16
11
  }
17
12
  }
18
- exports.ConfigurationError = ConfigurationError;
19
- class AgentNotFoundError extends CodeMieError {
13
+ export class AgentNotFoundError extends CodeMieError {
20
14
  constructor(agentName) {
21
15
  super(`Agent not found: ${agentName}`);
22
16
  this.name = 'AgentNotFoundError';
23
17
  }
24
18
  }
25
- exports.AgentNotFoundError = AgentNotFoundError;
26
- class AgentInstallationError extends CodeMieError {
19
+ export class AgentInstallationError extends CodeMieError {
27
20
  constructor(agentName, reason) {
28
21
  super(`Failed to install agent ${agentName}: ${reason}`);
29
22
  this.name = 'AgentInstallationError';
30
23
  }
31
24
  }
32
- exports.AgentInstallationError = AgentInstallationError;
33
- class ToolExecutionError extends CodeMieError {
25
+ export class ToolExecutionError extends CodeMieError {
34
26
  constructor(toolName, reason) {
35
27
  super(`Tool ${toolName} failed: ${reason}`);
36
28
  this.name = 'ToolExecutionError';
37
29
  }
38
30
  }
39
- exports.ToolExecutionError = ToolExecutionError;
40
- class PathSecurityError extends CodeMieError {
31
+ export class PathSecurityError extends CodeMieError {
41
32
  constructor(path, reason) {
42
33
  super(`Path security violation: ${path} - ${reason}`);
43
34
  this.name = 'PathSecurityError';
44
35
  }
45
36
  }
46
- exports.PathSecurityError = PathSecurityError;
47
37
  /**
48
38
  * Extracts error message from unknown error type
49
39
  * @param error - The caught error (unknown type)
50
40
  * @returns Error message as string
51
41
  */
52
- function getErrorMessage(error) {
42
+ export function getErrorMessage(error) {
53
43
  if (error instanceof Error) {
54
44
  return error.message;
55
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";;;AA+CA,0CAKC;AApDD,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,SAAiB;QAC3B,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,sBAAuB,SAAQ,YAAY;IACtD,YAAY,SAAiB,EAAE,MAAc;QAC3C,KAAK,CAAC,2BAA2B,SAAS,KAAK,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AALD,wDAKC;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CAAC,QAAQ,QAAQ,YAAY,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,4BAA4B,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,SAAiB;QAC3B,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,SAAiB,EAAE,MAAc;QAC3C,KAAK,CAAC,2BAA2B,SAAS,KAAK,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CAAC,QAAQ,QAAQ,YAAY,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,4BAA4B,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}