@codemieai/code 0.0.33 → 0.0.35

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 (294) hide show
  1. package/README.md +78 -7
  2. package/bin/codemie-claude-acp.js +21 -0
  3. package/bin/codemie-opencode.js +11 -0
  4. package/bin/codemie.js +13 -0
  5. package/dist/agents/codemie-code/agent.d.ts +38 -4
  6. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  7. package/dist/agents/codemie-code/agent.js +333 -178
  8. package/dist/agents/codemie-code/agent.js.map +1 -1
  9. package/dist/agents/codemie-code/index.d.ts +2 -1
  10. package/dist/agents/codemie-code/index.d.ts.map +1 -1
  11. package/dist/agents/codemie-code/index.js +36 -7
  12. package/dist/agents/codemie-code/index.js.map +1 -1
  13. package/dist/agents/codemie-code/prompts.d.ts +12 -5
  14. package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
  15. package/dist/agents/codemie-code/prompts.js +53 -6
  16. package/dist/agents/codemie-code/prompts.js.map +1 -1
  17. package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -1
  18. package/dist/agents/codemie-code/toolMetadata.js +9 -8
  19. package/dist/agents/codemie-code/toolMetadata.js.map +1 -1
  20. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts +47 -0
  21. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -0
  22. package/dist/agents/codemie-code/tools/assistant-invocation.js +129 -0
  23. package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -0
  24. package/dist/agents/codemie-code/tools/index.d.ts +70 -4
  25. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
  26. package/dist/agents/codemie-code/tools/index.js +57 -44
  27. package/dist/agents/codemie-code/tools/index.js.map +1 -1
  28. package/dist/agents/codemie-code/tools/planning.d.ts +6 -5
  29. package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -1
  30. package/dist/agents/codemie-code/tools/planning.js +12 -10
  31. package/dist/agents/codemie-code/tools/planning.js.map +1 -1
  32. package/dist/agents/codemie-code/types.d.ts +27 -3
  33. package/dist/agents/codemie-code/types.d.ts.map +1 -1
  34. package/dist/agents/codemie-code/types.js +24 -0
  35. package/dist/agents/codemie-code/types.js.map +1 -1
  36. package/dist/agents/codemie-code/ui/autocomplete.d.ts +98 -0
  37. package/dist/agents/codemie-code/ui/autocomplete.d.ts.map +1 -0
  38. package/dist/agents/codemie-code/ui/autocomplete.js +145 -0
  39. package/dist/agents/codemie-code/ui/autocomplete.js.map +1 -0
  40. package/dist/agents/codemie-code/ui/keyHandlers.d.ts +112 -0
  41. package/dist/agents/codemie-code/ui/keyHandlers.d.ts.map +1 -0
  42. package/dist/agents/codemie-code/ui/keyHandlers.js +415 -0
  43. package/dist/agents/codemie-code/ui/keyHandlers.js.map +1 -0
  44. package/dist/agents/codemie-code/ui/mentions.d.ts +86 -0
  45. package/dist/agents/codemie-code/ui/mentions.d.ts.map +1 -0
  46. package/dist/agents/codemie-code/ui/mentions.js +122 -0
  47. package/dist/agents/codemie-code/ui/mentions.js.map +1 -0
  48. package/dist/agents/codemie-code/ui/terminalCodes.d.ts +38 -0
  49. package/dist/agents/codemie-code/ui/terminalCodes.d.ts.map +1 -0
  50. package/dist/agents/codemie-code/ui/terminalCodes.js +42 -0
  51. package/dist/agents/codemie-code/ui/terminalCodes.js.map +1 -0
  52. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -1
  53. package/dist/agents/codemie-code/ui/todoPanel.js +3 -4
  54. package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -1
  55. package/dist/agents/codemie-code/ui.d.ts +8 -7
  56. package/dist/agents/codemie-code/ui.d.ts.map +1 -1
  57. package/dist/agents/codemie-code/ui.js +87 -145
  58. package/dist/agents/codemie-code/ui.js.map +1 -1
  59. package/dist/agents/core/AgentCLI.d.ts +5 -0
  60. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  61. package/dist/agents/core/AgentCLI.js +25 -1
  62. package/dist/agents/core/AgentCLI.js.map +1 -1
  63. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  64. package/dist/agents/core/BaseAgentAdapter.js +90 -27
  65. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  66. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +7 -1
  67. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
  68. package/dist/agents/core/extension/BaseExtensionInstaller.js +58 -15
  69. package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
  70. package/dist/agents/core/session/BaseSessionAdapter.d.ts +25 -0
  71. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  72. package/dist/agents/core/session/discovery-types.d.ts +53 -0
  73. package/dist/agents/core/session/discovery-types.d.ts.map +1 -0
  74. package/dist/agents/core/session/discovery-types.js +8 -0
  75. package/dist/agents/core/session/discovery-types.js.map +1 -0
  76. package/dist/agents/core/types.d.ts +62 -0
  77. package/dist/agents/core/types.d.ts.map +1 -1
  78. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +27 -0
  79. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -0
  80. package/dist/agents/plugins/claude/claude-acp.plugin.js +63 -0
  81. package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -0
  82. package/dist/agents/plugins/claude/claude-message-types.d.ts +1 -0
  83. package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -1
  84. package/dist/agents/plugins/claude/claude.plugin.d.ts +44 -1
  85. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  86. package/dist/agents/plugins/claude/claude.plugin.js +263 -12
  87. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  88. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  89. package/dist/agents/plugins/claude/claude.session.js +14 -7
  90. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  91. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  92. package/dist/agents/plugins/claude/plugin/README.md +40 -2
  93. package/dist/agents/plugins/claude/plugin/claude-templates/README.md +5 -5
  94. package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +177 -436
  95. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +49 -82
  96. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +337 -0
  97. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +129 -419
  98. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +146 -693
  99. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +110 -138
  100. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +197 -0
  101. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +171 -91
  102. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +219 -131
  103. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +223 -98
  104. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +131 -95
  105. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +247 -75
  106. package/dist/agents/plugins/claude/plugin/commands/README.md +133 -0
  107. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +336 -544
  108. package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +233 -504
  109. package/dist/agents/plugins/claude/plugin/commands/memory-add.md +311 -30
  110. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +218 -39
  111. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  112. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +43 -8
  113. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  114. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  115. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +68 -40
  116. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  117. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  118. package/dist/agents/plugins/gemini/gemini.plugin.js +0 -3
  119. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  120. package/dist/agents/plugins/opencode/index.d.ts +8 -0
  121. package/dist/agents/plugins/opencode/index.d.ts.map +1 -0
  122. package/dist/agents/plugins/opencode/index.js +12 -0
  123. package/dist/agents/plugins/opencode/index.js.map +1 -0
  124. package/dist/agents/plugins/opencode/opencode-message-types.d.ts +207 -0
  125. package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -0
  126. package/dist/agents/plugins/opencode/opencode-message-types.js +59 -0
  127. package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -0
  128. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +65 -0
  129. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -0
  130. package/dist/agents/plugins/opencode/opencode-model-configs.js +184 -0
  131. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -0
  132. package/dist/agents/plugins/opencode/opencode.paths.d.ts +62 -0
  133. package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -0
  134. package/dist/agents/plugins/opencode/opencode.paths.js +148 -0
  135. package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -0
  136. package/dist/agents/plugins/opencode/opencode.plugin.d.ts +35 -0
  137. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -0
  138. package/dist/agents/plugins/opencode/opencode.plugin.js +338 -0
  139. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -0
  140. package/dist/agents/plugins/opencode/opencode.session.d.ts +77 -0
  141. package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -0
  142. package/dist/agents/plugins/opencode/opencode.session.js +424 -0
  143. package/dist/agents/plugins/opencode/opencode.session.js.map +1 -0
  144. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts +25 -0
  145. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -0
  146. package/dist/agents/plugins/opencode/opencode.storage-utils.js +96 -0
  147. package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -0
  148. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts +30 -0
  149. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -0
  150. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +116 -0
  151. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -0
  152. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +102 -0
  153. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -0
  154. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +584 -0
  155. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -0
  156. package/dist/agents/registry.d.ts +1 -1
  157. package/dist/agents/registry.d.ts.map +1 -1
  158. package/dist/agents/registry.js +5 -1
  159. package/dist/agents/registry.js.map +1 -1
  160. package/dist/cli/commands/assistants/chat.d.ts +11 -0
  161. package/dist/cli/commands/assistants/chat.d.ts.map +1 -0
  162. package/dist/cli/commands/assistants/chat.js +201 -0
  163. package/dist/cli/commands/assistants/chat.js.map +1 -0
  164. package/dist/cli/commands/assistants/constants.d.ts +81 -0
  165. package/dist/cli/commands/assistants/constants.d.ts.map +1 -0
  166. package/dist/cli/commands/assistants/constants.js +75 -0
  167. package/dist/cli/commands/assistants/constants.js.map +1 -0
  168. package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts +26 -0
  169. package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +1 -0
  170. package/dist/cli/commands/assistants/generators/claude-agent-generator.js +115 -0
  171. package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +1 -0
  172. package/dist/cli/commands/assistants/index.d.ts +11 -0
  173. package/dist/cli/commands/assistants/index.d.ts.map +1 -0
  174. package/dist/cli/commands/assistants/index.js +28 -0
  175. package/dist/cli/commands/assistants/index.js.map +1 -0
  176. package/dist/cli/commands/assistants/list.d.ts +11 -0
  177. package/dist/cli/commands/assistants/list.d.ts.map +1 -0
  178. package/dist/cli/commands/assistants/list.js +323 -0
  179. package/dist/cli/commands/assistants/list.js.map +1 -0
  180. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +5 -0
  181. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
  182. package/dist/cli/commands/doctor/checks/AgentsCheck.js +29 -0
  183. package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
  184. package/dist/cli/commands/install.d.ts.map +1 -1
  185. package/dist/cli/commands/install.js +104 -13
  186. package/dist/cli/commands/install.js.map +1 -1
  187. package/dist/cli/commands/opencode-metrics.d.ts +13 -0
  188. package/dist/cli/commands/opencode-metrics.d.ts.map +1 -0
  189. package/dist/cli/commands/opencode-metrics.js +200 -0
  190. package/dist/cli/commands/opencode-metrics.js.map +1 -0
  191. package/dist/cli/commands/self-update.d.ts +3 -0
  192. package/dist/cli/commands/self-update.d.ts.map +1 -0
  193. package/dist/cli/commands/self-update.js +55 -0
  194. package/dist/cli/commands/self-update.js.map +1 -0
  195. package/dist/cli/commands/setup.d.ts.map +1 -1
  196. package/dist/cli/commands/setup.js +113 -0
  197. package/dist/cli/commands/setup.js.map +1 -1
  198. package/dist/cli/commands/skill.d.ts +6 -0
  199. package/dist/cli/commands/skill.d.ts.map +1 -0
  200. package/dist/cli/commands/skill.js +196 -0
  201. package/dist/cli/commands/skill.js.map +1 -0
  202. package/dist/cli/commands/update.d.ts.map +1 -1
  203. package/dist/cli/commands/update.js +34 -6
  204. package/dist/cli/commands/update.js.map +1 -1
  205. package/dist/cli/index.d.ts.map +1 -1
  206. package/dist/cli/index.js +12 -4
  207. package/dist/cli/index.js.map +1 -1
  208. package/dist/env/types.d.ts +13 -0
  209. package/dist/env/types.d.ts.map +1 -1
  210. package/dist/env/types.js +1 -1
  211. package/dist/env/types.js.map +1 -1
  212. package/dist/migrations/003-remove-hooks-node.migration.d.ts +22 -0
  213. package/dist/migrations/003-remove-hooks-node.migration.d.ts.map +1 -0
  214. package/dist/migrations/003-remove-hooks-node.migration.js +103 -0
  215. package/dist/migrations/003-remove-hooks-node.migration.js.map +1 -0
  216. package/dist/migrations/index.d.ts +1 -0
  217. package/dist/migrations/index.d.ts.map +1 -1
  218. package/dist/migrations/index.js +1 -1
  219. package/dist/migrations/index.js.map +1 -1
  220. package/dist/providers/plugins/sso/sso.http-client.js +2 -2
  221. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  222. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  223. package/dist/providers/plugins/sso/sso.setup-steps.js +14 -10
  224. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  225. package/dist/skills/core/SkillDiscovery.d.ts +83 -0
  226. package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
  227. package/dist/skills/core/SkillDiscovery.js +237 -0
  228. package/dist/skills/core/SkillDiscovery.js.map +1 -0
  229. package/dist/skills/core/SkillManager.d.ts +86 -0
  230. package/dist/skills/core/SkillManager.d.ts.map +1 -0
  231. package/dist/skills/core/SkillManager.js +155 -0
  232. package/dist/skills/core/SkillManager.js.map +1 -0
  233. package/dist/skills/core/types.d.ts +120 -0
  234. package/dist/skills/core/types.d.ts.map +1 -0
  235. package/dist/skills/core/types.js +20 -0
  236. package/dist/skills/core/types.js.map +1 -0
  237. package/dist/skills/index.d.ts +12 -0
  238. package/dist/skills/index.d.ts.map +1 -0
  239. package/dist/skills/index.js +12 -0
  240. package/dist/skills/index.js.map +1 -0
  241. package/dist/skills/utils/content-loader.d.ts +25 -0
  242. package/dist/skills/utils/content-loader.d.ts.map +1 -0
  243. package/dist/skills/utils/content-loader.js +161 -0
  244. package/dist/skills/utils/content-loader.js.map +1 -0
  245. package/dist/skills/utils/frontmatter.d.ts +60 -0
  246. package/dist/skills/utils/frontmatter.d.ts.map +1 -0
  247. package/dist/skills/utils/frontmatter.js +114 -0
  248. package/dist/skills/utils/frontmatter.js.map +1 -0
  249. package/dist/skills/utils/pattern-matcher.d.ts +60 -0
  250. package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
  251. package/dist/skills/utils/pattern-matcher.js +97 -0
  252. package/dist/skills/utils/pattern-matcher.js.map +1 -0
  253. package/dist/utils/auth.d.ts +22 -0
  254. package/dist/utils/auth.d.ts.map +1 -0
  255. package/dist/utils/auth.js +50 -0
  256. package/dist/utils/auth.js.map +1 -0
  257. package/dist/utils/cli-updater.d.ts +70 -0
  258. package/dist/utils/cli-updater.d.ts.map +1 -0
  259. package/dist/utils/cli-updater.js +339 -0
  260. package/dist/utils/cli-updater.js.map +1 -0
  261. package/dist/utils/config.d.ts +6 -1
  262. package/dist/utils/config.d.ts.map +1 -1
  263. package/dist/utils/config.js +13 -0
  264. package/dist/utils/config.js.map +1 -1
  265. package/dist/utils/installation-detector.d.ts +22 -0
  266. package/dist/utils/installation-detector.d.ts.map +1 -0
  267. package/dist/utils/installation-detector.js +49 -0
  268. package/dist/utils/installation-detector.js.map +1 -0
  269. package/dist/utils/native-installer.d.ts +49 -0
  270. package/dist/utils/native-installer.d.ts.map +1 -0
  271. package/dist/utils/native-installer.js +225 -0
  272. package/dist/utils/native-installer.js.map +1 -0
  273. package/dist/utils/processes.js +1 -1
  274. package/dist/utils/profile.d.ts +2 -0
  275. package/dist/utils/profile.d.ts.map +1 -1
  276. package/dist/utils/profile.js +5 -0
  277. package/dist/utils/profile.js.map +1 -1
  278. package/dist/utils/sdk-client.d.ts +15 -0
  279. package/dist/utils/sdk-client.d.ts.map +1 -0
  280. package/dist/utils/sdk-client.js +92 -0
  281. package/dist/utils/sdk-client.js.map +1 -0
  282. package/dist/utils/version-utils.d.ts +50 -0
  283. package/dist/utils/version-utils.d.ts.map +1 -0
  284. package/dist/utils/version-utils.js +92 -0
  285. package/dist/utils/version-utils.js.map +1 -0
  286. package/package.json +11 -3
  287. package/scripts/copy-mr-skill-to-global.ts +252 -0
  288. package/scripts/demo-hooks.sh +125 -0
  289. package/scripts/test-hooks.sh +196 -0
  290. package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +0 -205
  291. package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +0 -74
  292. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +0 -143
  293. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +0 -127
  294. package/dist/agents/plugins/claude/plugin/commands/codemie-pr.md +0 -25
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Native installer utilities for platform-specific agent installation
3
+ * Used for Claude Code native installation management
4
+ */
5
+ import { exec } from './processes.js';
6
+ import { AgentInstallationError } from './errors.js';
7
+ import { logger } from './logger.js';
8
+ import { sanitizeLogArgs, sanitizeValue } from './security.js';
9
+ import { isValidSemanticVersion } from './version-utils.js';
10
+ /**
11
+ * Detect current platform
12
+ * @returns Platform identifier: 'macOS' | 'windows' | 'linux'
13
+ */
14
+ function detectPlatform() {
15
+ const platform = process.platform;
16
+ if (platform === 'darwin') {
17
+ return 'macOS';
18
+ }
19
+ else if (platform === 'win32') {
20
+ return 'windows';
21
+ }
22
+ else {
23
+ // Assume Linux for all other platforms (linux, freebsd, etc.)
24
+ return 'linux';
25
+ }
26
+ }
27
+ /**
28
+ * Build installer command for the detected platform
29
+ *
30
+ * @param agentName - Agent name for error messages
31
+ * @param installerUrls - Platform-specific installer URLs
32
+ * @param version - Optional version to install
33
+ * @param platform - Detected platform
34
+ * @param installFlags - Additional flags to pass to installer (e.g., ['--force'])
35
+ * @returns Command string to execute
36
+ */
37
+ function buildInstallerCommand(agentName, installerUrls, version, platform, installFlags) {
38
+ // Validate installer URLs are HTTPS (security requirement)
39
+ const url = installerUrls[platform];
40
+ if (!url.startsWith('https://')) {
41
+ throw new AgentInstallationError(agentName, `Installer URL must use HTTPS: ${url}`);
42
+ }
43
+ // SECURITY: Validate version string to prevent command injection
44
+ // Only allow semantic versions or special channels (latest, stable)
45
+ if (version) {
46
+ const allowedChannels = ['latest', 'stable'];
47
+ const isValidChannel = allowedChannels.includes(version.toLowerCase());
48
+ const isValidVersion = isValidSemanticVersion(version);
49
+ if (!isValidChannel && !isValidVersion) {
50
+ throw new AgentInstallationError(agentName, `Invalid version format: "${version}". Expected semantic version (e.g., "2.0.30"), "latest", or "stable".`);
51
+ }
52
+ }
53
+ // SECURITY: Validate install flags against whitelist
54
+ // Only allow known safe flags to prevent command injection
55
+ const allowedFlags = ['--force', '--silent', '--yes', '-y', '-f', '--no-progress'];
56
+ if (installFlags && installFlags.length > 0) {
57
+ for (const flag of installFlags) {
58
+ if (!allowedFlags.includes(flag)) {
59
+ throw new AgentInstallationError(agentName, `Invalid install flag: "${flag}". Allowed flags: ${allowedFlags.join(', ')}`);
60
+ }
61
+ }
62
+ }
63
+ // Build platform-specific command
64
+ if (platform === 'windows') {
65
+ // Windows CMD command (simpler and more universal than PowerShell)
66
+ // Download install.cmd, execute with args, then delete
67
+ const versionArg = version ? ` ${version}` : '';
68
+ const flagsArg = installFlags && installFlags.length > 0 ? ` ${installFlags.join(' ')}` : '';
69
+ return `curl -fsSL ${url} -o install.cmd && install.cmd${versionArg}${flagsArg} && del install.cmd`;
70
+ }
71
+ else {
72
+ // macOS/Linux shell script command
73
+ const versionArg = version ? ` -s -- ${version}` : '';
74
+ const scriptFlags = installFlags && installFlags.length > 0 ? ` ${installFlags.join(' ')}` : '';
75
+ return `curl -fsSL ${url} | bash${versionArg}${scriptFlags}`;
76
+ }
77
+ }
78
+ /**
79
+ * Verify installation by running the verify command
80
+ * On Windows, retries with backoff to allow PATH updates to propagate
81
+ *
82
+ * @param verifyCommand - Command to verify (e.g., 'claude')
83
+ * @param retries - Number of retry attempts (default: 3 on Windows, 1 on Unix)
84
+ * @returns Installed version string or null if verification failed
85
+ */
86
+ async function verifyInstallation(verifyCommand, retries) {
87
+ // Windows requires more retries due to PATH refresh delays
88
+ // Unix also benefits from 2 retries (network-mounted home dirs, slow filesystems)
89
+ const isWindows = process.platform === 'win32';
90
+ const maxRetries = retries ?? (isWindows ? 3 : 2);
91
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
92
+ try {
93
+ logger.debug(`Verifying installation (attempt ${attempt}/${maxRetries})`, { command: verifyCommand });
94
+ // Run version check command (e.g., 'claude --version')
95
+ const result = await exec(verifyCommand, ['--version'], {
96
+ timeout: 5000, // 5 second timeout for version check
97
+ });
98
+ if (result.code === 0 && result.stdout) {
99
+ // Parse version from output (usually first line, may have 'v' prefix)
100
+ const versionMatch = result.stdout.trim().match(/v?(\d+\.\d+\.\d+)/);
101
+ if (versionMatch) {
102
+ logger.debug('Installation verified successfully', {
103
+ version: versionMatch[1],
104
+ attempt,
105
+ });
106
+ return versionMatch[1];
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ logger.debug(`Installation verification attempt ${attempt} failed`, ...sanitizeLogArgs({ error, attempt, maxRetries }));
112
+ }
113
+ // Wait before retry (exponential backoff with cap: 1s, 2s, 4s max)
114
+ // Gives Windows time to update PATH without excessive wait
115
+ if (attempt < maxRetries) {
116
+ const delayMs = Math.min(Math.pow(2, attempt - 1) * 1000, 4000);
117
+ logger.debug(`Waiting ${delayMs}ms before retry (exponential backoff)...`);
118
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
119
+ }
120
+ }
121
+ // All retries failed
122
+ logger.debug('Installation verification failed after all retries', {
123
+ command: verifyCommand,
124
+ attempts: maxRetries,
125
+ });
126
+ return null;
127
+ }
128
+ /**
129
+ * Install agent using native platform installer
130
+ * Detects platform and executes appropriate installation script
131
+ *
132
+ * @param agentName - Agent name for logging (e.g., 'claude')
133
+ * @param installerUrls - Platform-specific installer URLs
134
+ * @param version - Version to install (e.g., '2.0.30', 'latest', 'stable', or undefined)
135
+ * @param options - Installation options (timeout, env, etc.)
136
+ * @returns Installation result with success status and installed version
137
+ * @throws {AgentInstallationError} If installation fails
138
+ *
139
+ * @example
140
+ * await installNativeAgent('claude', {
141
+ * macOS: 'https://claude.ai/install.sh',
142
+ * windows: 'https://claude.ai/install.ps1',
143
+ * linux: 'https://claude.ai/install.sh'
144
+ * }, '2.0.30');
145
+ */
146
+ export async function installNativeAgent(agentName, installerUrls, version, options) {
147
+ const platform = detectPlatform();
148
+ const timeout = options?.timeout || 300000; // 5 minute default timeout
149
+ logger.debug('Starting native agent installation', {
150
+ agentName,
151
+ platform,
152
+ version: version || 'latest',
153
+ });
154
+ try {
155
+ // Build installer command
156
+ const command = buildInstallerCommand(agentName, installerUrls, version, platform, options?.installFlags);
157
+ logger.debug('Executing installer command', {
158
+ agentName,
159
+ platform,
160
+ // Don't log full command (may contain sensitive URLs)
161
+ });
162
+ // Execute installer
163
+ const result = await exec(command, [], {
164
+ timeout,
165
+ env: options?.env,
166
+ shell: true, // Required for piped commands (curl | bash)
167
+ });
168
+ // Check if installation succeeded
169
+ if (result.code !== 0) {
170
+ // SECURITY: Sanitize output before including in error message
171
+ // Installer scripts might echo sensitive environment variables
172
+ const sanitizedOutput = sanitizeValue(result.stderr || result.stdout);
173
+ throw new AgentInstallationError(agentName, `Installer exited with code ${result.code}. Output: ${sanitizedOutput}`);
174
+ }
175
+ logger.debug('Installer completed successfully', {
176
+ agentName,
177
+ platform,
178
+ });
179
+ // Verify installation if verify command provided
180
+ let installedVersion = null;
181
+ if (options?.verifyCommand) {
182
+ logger.debug('Verifying installation', {
183
+ agentName,
184
+ verifyCommand: options.verifyCommand,
185
+ });
186
+ installedVersion = await verifyInstallation(options.verifyCommand);
187
+ if (!installedVersion) {
188
+ // Add platform-specific context for troubleshooting
189
+ const isWindows = platform === 'windows';
190
+ const troubleshootingHint = isWindows
191
+ ? 'On Windows, you may need to restart your terminal/PowerShell/CMD to refresh PATH.'
192
+ : 'Verify that the command is in your PATH.';
193
+ logger.warn('Installation verification failed', {
194
+ agentName,
195
+ verifyCommand: options.verifyCommand,
196
+ platform,
197
+ hint: troubleshootingHint,
198
+ });
199
+ }
200
+ else {
201
+ logger.debug('Installation verified', {
202
+ agentName,
203
+ installedVersion,
204
+ });
205
+ }
206
+ }
207
+ // SECURITY: Sanitize output before returning
208
+ // Prevents exposure of sensitive data in logs or UI
209
+ const sanitizedOutput = sanitizeValue(result.stdout || result.stderr || '');
210
+ return {
211
+ success: true,
212
+ installedVersion,
213
+ output: sanitizedOutput,
214
+ };
215
+ }
216
+ catch (error) {
217
+ // If it's already an AgentInstallationError, rethrow
218
+ if (error instanceof AgentInstallationError) {
219
+ throw error;
220
+ }
221
+ // Wrap other errors
222
+ throw new AgentInstallationError(agentName, `Failed to install: ${error instanceof Error ? error.message : String(error)}`);
223
+ }
224
+ }
225
+ //# sourceMappingURL=native-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-installer.js","sourceRoot":"","sources":["../../src/utils/native-installer.ts"],"names":[],"mappings":"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"}
@@ -77,7 +77,7 @@ export async function getCommandPath(command) {
77
77
  */
78
78
  export async function installGlobal(packageName, options = {}) {
79
79
  const packageSpec = options.version ? `${packageName}@${options.version}` : packageName;
80
- const timeout = options.timeout ?? 120000; // 2 minutes default
80
+ const timeout = options.timeout ?? 300000; // 5 minutes default
81
81
  logger.info(`Installing ${packageSpec} globally...`);
82
82
  try {
83
83
  const isWindows = os.platform() === 'win32';
@@ -1,4 +1,5 @@
1
1
  import { type ErrorContext } from './errors.js';
2
+ import type { CodemieAssistant } from '../env/types.js';
2
3
  /**
3
4
  * Authentication status for display
4
5
  */
@@ -15,6 +16,7 @@ export declare function renderProfileInfo(config: {
15
16
  provider?: string;
16
17
  model?: string;
17
18
  codeMieUrl?: string;
19
+ codemieAssistants?: CodemieAssistant[];
18
20
  authStatus?: AuthStatusDisplay;
19
21
  agent?: string;
20
22
  cliVersion?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/utils/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,MAAM,CA2ET;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EACd,cAAc,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EACxC,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CACpC,GACL,IAAI,CAuDN"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/utils/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,MAAM,CAgFT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EACd,cAAc,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EACxC,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CACpC,GACL,IAAI,CAuDN"}
@@ -35,6 +35,11 @@ export function renderProfileInfo(config) {
35
35
  if (config.codeMieUrl) {
36
36
  outputLines.push(formatRow('CodeMie URL', config.codeMieUrl));
37
37
  }
38
+ if (config.codemieAssistants && config.codemieAssistants.length > 0) {
39
+ const count = config.codemieAssistants.length;
40
+ const assistantsText = `${count} assistant${count === 1 ? '' : 's'} registered`;
41
+ outputLines.push(formatRow('Assistants', assistantsText, chalk.cyan));
42
+ }
38
43
  // Auth status inline
39
44
  if (config.authStatus) {
40
45
  const { authenticated, expiresAt, apiUrl } = config.authStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/utils/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/utils/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * CodeMie SDK Client Utilities
3
+ *
4
+ * Shared utilities for initializing and working with CodeMieClient
5
+ */
6
+ import { CodeMieClient } from 'codemie-sdk';
7
+ /**
8
+ * Get authenticated CodeMieClient instance
9
+ *
10
+ * @param quiet - Suppress spinner and status messages
11
+ * @returns Initialized CodeMieClient instance
12
+ * @throws ConfigurationError if setup is incomplete or credentials are invalid
13
+ */
14
+ export declare function getCodemieClient(quiet?: boolean): Promise<CodeMieClient>;
15
+ //# sourceMappingURL=sdk-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../../src/utils/sdk-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO5C;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAuF5E"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * CodeMie SDK Client Utilities
3
+ *
4
+ * Shared utilities for initializing and working with CodeMieClient
5
+ */
6
+ import ora from 'ora';
7
+ import chalk from 'chalk';
8
+ import { CodeMieClient } from 'codemie-sdk';
9
+ import { CodeMieSSO } from '../providers/plugins/sso/sso.auth.js';
10
+ import { ConfigLoader } from './config.js';
11
+ import { ConfigurationError } from './errors.js';
12
+ import { logger } from './logger.js';
13
+ /**
14
+ * Get authenticated CodeMieClient instance
15
+ *
16
+ * @param quiet - Suppress spinner and status messages
17
+ * @returns Initialized CodeMieClient instance
18
+ * @throws ConfigurationError if setup is incomplete or credentials are invalid
19
+ */
20
+ export async function getCodemieClient(quiet = false) {
21
+ let spinner;
22
+ if (!quiet) {
23
+ spinner = ora('Loading configuration...').start();
24
+ }
25
+ // 1. Load configuration
26
+ let config;
27
+ try {
28
+ config = await ConfigLoader.load();
29
+ }
30
+ catch {
31
+ if (spinner) {
32
+ spinner.fail(chalk.red('Failed to load configuration'));
33
+ }
34
+ throw new ConfigurationError('No configuration found. Please run "codemie setup" first.');
35
+ }
36
+ // 2. Get stored SSO credentials
37
+ if (spinner) {
38
+ spinner.text = 'Retrieving authentication credentials...';
39
+ }
40
+ const ssoAuth = new CodeMieSSO();
41
+ // Use codeMieUrl for credential lookup, not baseUrl (which may be proxied)
42
+ const credentialLookupUrl = config.codeMieUrl || config.baseUrl;
43
+ logger.debug('Attempting to retrieve SSO credentials', {
44
+ baseUrl: config.baseUrl,
45
+ credentialLookupUrl,
46
+ hasBaseUrl: !!config.baseUrl
47
+ });
48
+ const credentials = await ssoAuth.getStoredCredentials(credentialLookupUrl);
49
+ logger.debug('SSO credentials retrieval result', {
50
+ hasCredentials: !!credentials,
51
+ hasCookies: !!credentials?.cookies,
52
+ hasApiUrl: !!credentials?.apiUrl
53
+ });
54
+ if (!credentials?.cookies || !credentials.apiUrl) {
55
+ if (spinner) {
56
+ spinner.fail(chalk.red('No valid SSO credentials found'));
57
+ }
58
+ logger.error('SSO credentials not found or incomplete', {
59
+ credentials: credentials ? 'exists but incomplete' : 'not found',
60
+ baseUrl: config.baseUrl
61
+ });
62
+ throw new ConfigurationError('SSO authentication required. Please run "codemie setup" with SSO provider first.');
63
+ }
64
+ logger.debug('Retrieved SSO credentials', {
65
+ apiUrl: credentials.apiUrl,
66
+ hasCookies: !!credentials.cookies
67
+ });
68
+ // 3. Initialize CodeMie SDK client with cookies
69
+ if (spinner) {
70
+ spinner.text = 'Initializing SDK...';
71
+ }
72
+ try {
73
+ const client = new CodeMieClient({
74
+ codemie_api_domain: credentials.apiUrl,
75
+ cookies: credentials.cookies,
76
+ verify_ssl: false
77
+ });
78
+ logger.debug('CodeMieClient created with cookies', { apiUrl: credentials.apiUrl });
79
+ if (spinner) {
80
+ spinner.succeed(chalk.green('Connected to CodeMie'));
81
+ }
82
+ return client;
83
+ }
84
+ catch (error) {
85
+ if (spinner) {
86
+ spinner.fail(chalk.red('Failed to initialize SDK'));
87
+ }
88
+ logger.error('SDK initialization failed', { error });
89
+ throw new ConfigurationError('Failed to initialize CodeMie SDK. Please verify your setup.');
90
+ }
91
+ }
92
+ //# sourceMappingURL=sdk-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../../src/utils/sdk-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Version comparison utilities for semantic versioning
3
+ * Used for Claude Code version management
4
+ */
5
+ /**
6
+ * Semantic version components
7
+ */
8
+ export interface SemanticVersion {
9
+ major: number;
10
+ minor: number;
11
+ patch: number;
12
+ raw: string;
13
+ }
14
+ /**
15
+ * Parse semantic version string into comparable components
16
+ *
17
+ * @param version - Version string (e.g., '2.0.30')
18
+ * @returns Version components { major, minor, patch, raw }
19
+ * @throws {Error} If version string is invalid
20
+ *
21
+ * @example
22
+ * parseSemanticVersion('2.0.30') // Returns { major: 2, minor: 0, patch: 30, raw: '2.0.30' }
23
+ */
24
+ export declare function parseSemanticVersion(version: string): SemanticVersion;
25
+ /**
26
+ * Check if version string is valid semantic version
27
+ *
28
+ * @param version - Version string to validate
29
+ * @returns true if valid semantic version
30
+ *
31
+ * @example
32
+ * isValidSemanticVersion('2.0.30') // true
33
+ * isValidSemanticVersion('v2.0.30') // true
34
+ * isValidSemanticVersion('invalid') // false
35
+ */
36
+ export declare function isValidSemanticVersion(version: string): boolean;
37
+ /**
38
+ * Compare two semantic versions
39
+ *
40
+ * @param version1 - First version string (e.g., '2.0.30')
41
+ * @param version2 - Second version string (e.g., '2.0.45')
42
+ * @returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2
43
+ *
44
+ * @example
45
+ * compareVersions('2.0.30', '2.0.45') // Returns -1
46
+ * compareVersions('2.0.45', '2.0.30') // Returns 1
47
+ * compareVersions('2.0.30', '2.0.30') // Returns 0
48
+ */
49
+ export declare function compareVersions(version1: string, version2: string): number;
50
+ //# sourceMappingURL=version-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-utils.d.ts","sourceRoot":"","sources":["../../src/utils/version-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAmBrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoC1E"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Version comparison utilities for semantic versioning
3
+ * Used for Claude Code version management
4
+ */
5
+ /**
6
+ * Parse semantic version string into comparable components
7
+ *
8
+ * @param version - Version string (e.g., '2.0.30')
9
+ * @returns Version components { major, minor, patch, raw }
10
+ * @throws {Error} If version string is invalid
11
+ *
12
+ * @example
13
+ * parseSemanticVersion('2.0.30') // Returns { major: 2, minor: 0, patch: 30, raw: '2.0.30' }
14
+ */
15
+ export function parseSemanticVersion(version) {
16
+ // Remove 'v' prefix if present
17
+ const cleanVersion = version.trim().replace(/^v/, '');
18
+ // Match semantic version pattern: major.minor.patch
19
+ const match = cleanVersion.match(/^(\d+)\.(\d+)\.(\d+)$/);
20
+ if (!match) {
21
+ throw new Error(`Invalid semantic version format: "${version}". Expected format: major.minor.patch (e.g., "2.0.30")`);
22
+ }
23
+ return {
24
+ major: parseInt(match[1], 10),
25
+ minor: parseInt(match[2], 10),
26
+ patch: parseInt(match[3], 10),
27
+ raw: version,
28
+ };
29
+ }
30
+ /**
31
+ * Check if version string is valid semantic version
32
+ *
33
+ * @param version - Version string to validate
34
+ * @returns true if valid semantic version
35
+ *
36
+ * @example
37
+ * isValidSemanticVersion('2.0.30') // true
38
+ * isValidSemanticVersion('v2.0.30') // true
39
+ * isValidSemanticVersion('invalid') // false
40
+ */
41
+ export function isValidSemanticVersion(version) {
42
+ try {
43
+ parseSemanticVersion(version);
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ /**
51
+ * Compare two semantic versions
52
+ *
53
+ * @param version1 - First version string (e.g., '2.0.30')
54
+ * @param version2 - Second version string (e.g., '2.0.45')
55
+ * @returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2
56
+ *
57
+ * @example
58
+ * compareVersions('2.0.30', '2.0.45') // Returns -1
59
+ * compareVersions('2.0.45', '2.0.30') // Returns 1
60
+ * compareVersions('2.0.30', '2.0.30') // Returns 0
61
+ */
62
+ export function compareVersions(version1, version2) {
63
+ // Handle special channel names (treat as highest version)
64
+ const isSpecialChannel = (v) => ['latest', 'stable'].includes(v.toLowerCase());
65
+ if (isSpecialChannel(version1) && isSpecialChannel(version2)) {
66
+ return 0; // Both special channels, consider equal
67
+ }
68
+ if (isSpecialChannel(version1)) {
69
+ return 1; // v1 is latest/stable, higher than any specific version
70
+ }
71
+ if (isSpecialChannel(version2)) {
72
+ return -1; // v2 is latest/stable, higher than v1
73
+ }
74
+ // Parse both versions
75
+ const v1 = parseSemanticVersion(version1);
76
+ const v2 = parseSemanticVersion(version2);
77
+ // Compare major version
78
+ if (v1.major !== v2.major) {
79
+ return v1.major < v2.major ? -1 : 1;
80
+ }
81
+ // Compare minor version
82
+ if (v1.minor !== v2.minor) {
83
+ return v1.minor < v2.minor ? -1 : 1;
84
+ }
85
+ // Compare patch version
86
+ if (v1.patch !== v2.patch) {
87
+ return v1.patch < v2.patch ? -1 : 1;
88
+ }
89
+ // Versions are equal
90
+ return 0;
91
+ }
92
+ //# sourceMappingURL=version-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-utils.js","sourceRoot":"","sources":["../../src/utils/version-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IACnD,+BAA+B;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtD,oDAAoD;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACd,qCAAqC,OAAO,wDAAwD,CACpG,CAAC;IACH,CAAC;IAED,OAAO;QACN,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,EAAE,OAAO;KACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACrD,IAAI,CAAC;QACJ,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IACjE,0DAA0D;IAC1D,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAW,EAAE,CAC/C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAEhD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,CAAC,CAAC,wCAAwC;IACnD,CAAC;IACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,wDAAwD;IACnE,CAAC;IACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,CAAC,sCAAsC;IAClD,CAAC;IAED,sBAAsB;IACtB,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE1C,wBAAwB;IACxB,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,qBAAqB;IACrB,OAAO,CAAC,CAAC;AACV,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemieai/code",
3
- "version": "0.0.33",
3
+ "version": "0.0.35",
4
4
  "description": "Unified AI coding assistant CLI - Manage Claude Code, Gemini & custom agents. Multi-provider support (OpenAI, Azure, LiteLLM, SSO). Built-in LangGraph agent with file operations & git integration.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,9 @@
9
9
  "codemie": "./bin/codemie.js",
10
10
  "codemie-code": "./bin/agent-executor.js",
11
11
  "codemie-claude": "./bin/codemie-claude.js",
12
- "codemie-gemini": "./bin/codemie-gemini.js"
12
+ "codemie-claude-acp": "./bin/codemie-claude-acp.js",
13
+ "codemie-gemini": "./bin/codemie-gemini.js",
14
+ "codemie-opencode": "./bin/codemie-opencode.js"
13
15
  },
14
16
  "files": [
15
17
  "dist",
@@ -20,7 +22,7 @@
20
22
  "LICENSE"
21
23
  ],
22
24
  "scripts": {
23
- "build": "tsc && npm run copy-plugin",
25
+ "build": "tsc && tsc-alias && npm run copy-plugin",
24
26
  "copy-plugin": "node scripts/copy-plugins.js",
25
27
  "dev": "tsc --watch",
26
28
  "test": "vitest",
@@ -110,10 +112,13 @@
110
112
  "@langchain/openai": "^1.1.0",
111
113
  "chalk": "^5.3.0",
112
114
  "cli-table3": "^0.6.5",
115
+ "codemie-sdk": "^0.1.318",
113
116
  "commander": "^11.1.0",
114
117
  "cors": "^2.8.5",
118
+ "dedent": "^1.7.1",
115
119
  "dotenv": "^16.3.1",
116
120
  "express": "^5.1.0",
121
+ "fast-glob": "^3.3.2",
117
122
  "http-proxy-agent": "^7.0.2",
118
123
  "https-proxy-agent": "^7.0.5",
119
124
  "inquirer": "^9.2.12",
@@ -122,6 +127,7 @@
122
127
  "open": "^8.4.2",
123
128
  "ora": "^7.0.1",
124
129
  "strip-ansi": "^7.1.2",
130
+ "yaml": "^2.3.4",
125
131
  "zod": "^4.1.12"
126
132
  },
127
133
  "devDependencies": {
@@ -129,6 +135,7 @@
129
135
  "@commitlint/config-conventional": "^20.2.0",
130
136
  "@eslint/js": "^9.38.0",
131
137
  "@types/cors": "^2.8.19",
138
+ "@types/dedent": "^0.7.2",
132
139
  "@types/express": "^5.0.5",
133
140
  "@types/inquirer": "^9.0.7",
134
141
  "@types/node": "^20.10.5",
@@ -138,6 +145,7 @@
138
145
  "eslint": "^9.38.0",
139
146
  "husky": "^9.1.7",
140
147
  "lint-staged": "^16.2.7",
148
+ "tsc-alias": "^1.8.16",
141
149
  "typescript": "^5.3.3",
142
150
  "vitest": "^4.0.10"
143
151
  },