@codemieai/code 0.0.57 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/README.md +165 -19
  2. package/bin/proxy-daemon.js +10 -0
  3. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  4. package/dist/agents/core/BaseAgentAdapter.js +3 -0
  5. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  6. package/dist/agents/core/session/SessionStore.d.ts +4 -0
  7. package/dist/agents/core/session/SessionStore.d.ts.map +1 -1
  8. package/dist/agents/core/session/SessionStore.js +40 -1
  9. package/dist/agents/core/session/SessionStore.js.map +1 -1
  10. package/dist/agents/core/session/types.d.ts +7 -0
  11. package/dist/agents/core/session/types.d.ts.map +1 -1
  12. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  13. package/dist/agents/plugins/claude/claude.plugin.js +18 -0
  14. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  15. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  16. package/dist/agents/plugins/claude/plugin/commands/README.md +2 -31
  17. package/dist/agents/plugins/claude/plugin/commands/codemie-catchup.md +5 -0
  18. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +42 -43
  19. package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +5 -0
  20. package/dist/agents/plugins/claude/plugin/commands/handoff.md +56 -0
  21. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +5 -0
  22. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +1 -1
  23. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-rewrite.sh +101 -0
  24. package/dist/agents/plugins/claude/plugin/skills/msgraph/README.md +4 -1
  25. package/dist/agents/plugins/claude/plugin/skills/msgraph/SKILL.md +27 -8
  26. package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.js +63 -3
  27. package/dist/agents/plugins/claude/plugin/skills/report-issue/SKILL.md +1 -0
  28. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +1 -0
  29. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  30. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +32 -20
  31. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  32. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +2 -0
  33. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  34. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +24 -1
  35. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  36. package/dist/assets/demo.gif +0 -0
  37. package/dist/assets/skills-sh-egress-guard.cjs +166 -0
  38. package/dist/bin/proxy-daemon.d.ts +2 -0
  39. package/dist/bin/proxy-daemon.d.ts.map +1 -0
  40. package/dist/bin/proxy-daemon.js +138 -0
  41. package/dist/bin/proxy-daemon.js.map +1 -0
  42. package/dist/cli/commands/assistants/setup/constants.d.ts +1 -25
  43. package/dist/cli/commands/assistants/setup/constants.d.ts.map +1 -1
  44. package/dist/cli/commands/assistants/setup/constants.js +1 -20
  45. package/dist/cli/commands/assistants/setup/constants.js.map +1 -1
  46. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts +4 -4
  47. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts.map +1 -1
  48. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js +11 -10
  49. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js.map +1 -1
  50. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts +4 -4
  51. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts.map +1 -1
  52. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +11 -9
  53. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js.map +1 -1
  54. package/dist/cli/commands/assistants/setup/helpers.d.ts +4 -18
  55. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
  56. package/dist/cli/commands/assistants/setup/helpers.js +10 -60
  57. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
  58. package/dist/cli/commands/assistants/setup/index.d.ts +0 -8
  59. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
  60. package/dist/cli/commands/assistants/setup/index.js +20 -164
  61. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  62. package/dist/cli/commands/assistants/setup/selection/actions.d.ts +1 -30
  63. package/dist/cli/commands/assistants/setup/selection/actions.d.ts.map +1 -1
  64. package/dist/cli/commands/assistants/setup/selection/actions.js +1 -320
  65. package/dist/cli/commands/assistants/setup/selection/actions.js.map +1 -1
  66. package/dist/cli/commands/assistants/setup/selection/constants.d.ts +3 -65
  67. package/dist/cli/commands/assistants/setup/selection/constants.d.ts.map +1 -1
  68. package/dist/cli/commands/assistants/setup/selection/constants.js +4 -81
  69. package/dist/cli/commands/assistants/setup/selection/constants.js.map +1 -1
  70. package/dist/cli/commands/assistants/setup/selection/index.d.ts +1 -9
  71. package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -1
  72. package/dist/cli/commands/assistants/setup/selection/index.js +14 -34
  73. package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -1
  74. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts +1 -19
  75. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -1
  76. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +1 -338
  77. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -1
  78. package/dist/cli/commands/assistants/setup/selection/types.d.ts +7 -23
  79. package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -1
  80. package/dist/cli/commands/assistants/setup/selection/ui.d.ts +0 -8
  81. package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
  82. package/dist/cli/commands/assistants/setup/selection/ui.js +7 -123
  83. package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
  84. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  85. package/dist/cli/commands/doctor/index.js +10 -1
  86. package/dist/cli/commands/doctor/index.js.map +1 -1
  87. package/dist/cli/commands/proxy/connectors/desktop-managed-mcp-servers.json +50 -0
  88. package/dist/cli/commands/proxy/connectors/desktop.d.ts +65 -0
  89. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -0
  90. package/dist/cli/commands/proxy/connectors/desktop.js +218 -0
  91. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -0
  92. package/dist/cli/commands/proxy/daemon-manager.d.ts +35 -0
  93. package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -0
  94. package/dist/cli/commands/proxy/daemon-manager.js +107 -0
  95. package/dist/cli/commands/proxy/daemon-manager.js.map +1 -0
  96. package/dist/cli/commands/proxy/index.d.ts +3 -0
  97. package/dist/cli/commands/proxy/index.d.ts.map +1 -0
  98. package/dist/cli/commands/proxy/index.js +258 -0
  99. package/dist/cli/commands/proxy/index.js.map +1 -0
  100. package/dist/cli/commands/proxy/inspect-desktop.d.ts +28 -0
  101. package/dist/cli/commands/proxy/inspect-desktop.d.ts.map +1 -0
  102. package/dist/cli/commands/proxy/inspect-desktop.js +134 -0
  103. package/dist/cli/commands/proxy/inspect-desktop.js.map +1 -0
  104. package/dist/cli/commands/setup.d.ts.map +1 -1
  105. package/dist/cli/commands/setup.js +2 -0
  106. package/dist/cli/commands/setup.js.map +1 -1
  107. package/dist/cli/commands/shared/constants.d.ts +15 -0
  108. package/dist/cli/commands/shared/constants.d.ts.map +1 -0
  109. package/dist/cli/commands/shared/constants.js +10 -0
  110. package/dist/cli/commands/shared/constants.js.map +1 -0
  111. package/dist/cli/commands/shared/helpers.d.ts +12 -0
  112. package/dist/cli/commands/shared/helpers.d.ts.map +1 -0
  113. package/dist/cli/commands/shared/helpers.js +54 -0
  114. package/dist/cli/commands/shared/helpers.js.map +1 -0
  115. package/dist/cli/commands/shared/prompts/storage-scope.d.ts +6 -0
  116. package/dist/cli/commands/shared/prompts/storage-scope.d.ts.map +1 -0
  117. package/dist/cli/commands/shared/prompts/storage-scope.js +84 -0
  118. package/dist/cli/commands/shared/prompts/storage-scope.js.map +1 -0
  119. package/dist/cli/commands/shared/selection/actions.d.ts +40 -0
  120. package/dist/cli/commands/shared/selection/actions.d.ts.map +1 -0
  121. package/dist/cli/commands/shared/selection/actions.js +264 -0
  122. package/dist/cli/commands/shared/selection/actions.js.map +1 -0
  123. package/dist/cli/commands/shared/selection/constants.d.ts +68 -0
  124. package/dist/cli/commands/shared/selection/constants.d.ts.map +1 -0
  125. package/dist/cli/commands/shared/selection/constants.js +70 -0
  126. package/dist/cli/commands/shared/selection/constants.js.map +1 -0
  127. package/dist/cli/commands/shared/selection/interactive-prompt.d.ts +16 -0
  128. package/dist/cli/commands/shared/selection/interactive-prompt.d.ts.map +1 -0
  129. package/dist/cli/commands/shared/selection/interactive-prompt.js +276 -0
  130. package/dist/cli/commands/shared/selection/interactive-prompt.js.map +1 -0
  131. package/dist/cli/commands/shared/selection/types.d.ts +31 -0
  132. package/dist/cli/commands/shared/selection/types.d.ts.map +1 -0
  133. package/dist/cli/commands/shared/selection/types.js +2 -0
  134. package/dist/cli/commands/shared/selection/types.js.map +1 -0
  135. package/dist/cli/commands/shared/selection/ui.d.ts +9 -0
  136. package/dist/cli/commands/shared/selection/ui.d.ts.map +1 -0
  137. package/dist/cli/commands/shared/selection/ui.js +92 -0
  138. package/dist/cli/commands/shared/selection/ui.js.map +1 -0
  139. package/dist/cli/commands/skills/add.d.ts +9 -0
  140. package/dist/cli/commands/skills/add.d.ts.map +1 -0
  141. package/dist/cli/commands/skills/add.js +187 -0
  142. package/dist/cli/commands/skills/add.js.map +1 -0
  143. package/dist/cli/commands/skills/find.d.ts +17 -0
  144. package/dist/cli/commands/skills/find.d.ts.map +1 -0
  145. package/dist/cli/commands/skills/find.js +94 -0
  146. package/dist/cli/commands/skills/find.js.map +1 -0
  147. package/dist/cli/commands/skills/index.d.ts +10 -0
  148. package/dist/cli/commands/skills/index.d.ts.map +1 -0
  149. package/dist/cli/commands/skills/index.js +23 -0
  150. package/dist/cli/commands/skills/index.js.map +1 -0
  151. package/dist/cli/commands/skills/lib/agent-detection.d.ts +27 -0
  152. package/dist/cli/commands/skills/lib/agent-detection.d.ts.map +1 -0
  153. package/dist/cli/commands/skills/lib/agent-detection.js +50 -0
  154. package/dist/cli/commands/skills/lib/agent-detection.js.map +1 -0
  155. package/dist/cli/commands/skills/lib/error-classify.d.ts +14 -0
  156. package/dist/cli/commands/skills/lib/error-classify.d.ts.map +1 -0
  157. package/dist/cli/commands/skills/lib/error-classify.js +64 -0
  158. package/dist/cli/commands/skills/lib/error-classify.js.map +1 -0
  159. package/dist/cli/commands/skills/lib/require-auth.d.ts +17 -0
  160. package/dist/cli/commands/skills/lib/require-auth.d.ts.map +1 -0
  161. package/dist/cli/commands/skills/lib/require-auth.js +44 -0
  162. package/dist/cli/commands/skills/lib/require-auth.js.map +1 -0
  163. package/dist/cli/commands/skills/lib/result-render.d.ts +26 -0
  164. package/dist/cli/commands/skills/lib/result-render.d.ts.map +1 -0
  165. package/dist/cli/commands/skills/lib/result-render.js +77 -0
  166. package/dist/cli/commands/skills/lib/result-render.js.map +1 -0
  167. package/dist/cli/commands/skills/lib/run-skills-cli.d.ts +46 -0
  168. package/dist/cli/commands/skills/lib/run-skills-cli.d.ts.map +1 -0
  169. package/dist/cli/commands/skills/lib/run-skills-cli.js +217 -0
  170. package/dist/cli/commands/skills/lib/run-skills-cli.js.map +1 -0
  171. package/dist/cli/commands/skills/lib/sanitize.d.ts +17 -0
  172. package/dist/cli/commands/skills/lib/sanitize.d.ts.map +1 -0
  173. package/dist/cli/commands/skills/lib/sanitize.js +73 -0
  174. package/dist/cli/commands/skills/lib/sanitize.js.map +1 -0
  175. package/dist/cli/commands/skills/lib/skills-metrics.d.ts +74 -0
  176. package/dist/cli/commands/skills/lib/skills-metrics.d.ts.map +1 -0
  177. package/dist/cli/commands/skills/lib/skills-metrics.js +268 -0
  178. package/dist/cli/commands/skills/lib/skills-metrics.js.map +1 -0
  179. package/dist/cli/commands/skills/lib/skills-search-client.d.ts +36 -0
  180. package/dist/cli/commands/skills/lib/skills-search-client.d.ts.map +1 -0
  181. package/dist/cli/commands/skills/lib/skills-search-client.js +147 -0
  182. package/dist/cli/commands/skills/lib/skills-search-client.js.map +1 -0
  183. package/dist/cli/commands/skills/lib/skills-sh-telemetry.d.ts +10 -0
  184. package/dist/cli/commands/skills/lib/skills-sh-telemetry.d.ts.map +1 -0
  185. package/dist/cli/commands/skills/lib/skills-sh-telemetry.js +33 -0
  186. package/dist/cli/commands/skills/lib/skills-sh-telemetry.js.map +1 -0
  187. package/dist/cli/commands/skills/list.d.ts +13 -0
  188. package/dist/cli/commands/skills/list.d.ts.map +1 -0
  189. package/dist/cli/commands/skills/list.js +55 -0
  190. package/dist/cli/commands/skills/list.js.map +1 -0
  191. package/dist/cli/commands/skills/remove.d.ts +11 -0
  192. package/dist/cli/commands/skills/remove.d.ts.map +1 -0
  193. package/dist/cli/commands/skills/remove.js +93 -0
  194. package/dist/cli/commands/skills/remove.js.map +1 -0
  195. package/dist/cli/commands/skills/setup/constants.d.ts +2 -0
  196. package/dist/cli/commands/skills/setup/constants.d.ts.map +1 -0
  197. package/dist/cli/commands/skills/setup/constants.js +2 -0
  198. package/dist/cli/commands/skills/setup/constants.js.map +1 -0
  199. package/dist/cli/commands/skills/setup/data.d.ts +28 -0
  200. package/dist/cli/commands/skills/setup/data.d.ts.map +1 -0
  201. package/dist/cli/commands/skills/setup/data.js +79 -0
  202. package/dist/cli/commands/skills/setup/data.js.map +1 -0
  203. package/dist/cli/commands/skills/setup/generators/claude-skill-generator.d.ts +12 -0
  204. package/dist/cli/commands/skills/setup/generators/claude-skill-generator.d.ts.map +1 -0
  205. package/dist/cli/commands/skills/setup/generators/claude-skill-generator.js +94 -0
  206. package/dist/cli/commands/skills/setup/generators/claude-skill-generator.js.map +1 -0
  207. package/dist/cli/commands/skills/setup/helpers.d.ts +12 -0
  208. package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -0
  209. package/dist/cli/commands/skills/setup/helpers.js +31 -0
  210. package/dist/cli/commands/skills/setup/helpers.js.map +1 -0
  211. package/dist/cli/commands/skills/setup/index.d.ts +5 -0
  212. package/dist/cli/commands/skills/setup/index.d.ts.map +1 -0
  213. package/dist/cli/commands/skills/setup/index.js +137 -0
  214. package/dist/cli/commands/skills/setup/index.js.map +1 -0
  215. package/dist/cli/commands/skills/setup/selection/actions.d.ts +2 -0
  216. package/dist/cli/commands/skills/setup/selection/actions.d.ts.map +1 -0
  217. package/dist/cli/commands/skills/setup/selection/actions.js +2 -0
  218. package/dist/cli/commands/skills/setup/selection/actions.js.map +1 -0
  219. package/dist/cli/commands/skills/setup/selection/constants.d.ts +11 -0
  220. package/dist/cli/commands/skills/setup/selection/constants.d.ts.map +1 -0
  221. package/dist/cli/commands/skills/setup/selection/constants.js +11 -0
  222. package/dist/cli/commands/skills/setup/selection/constants.js.map +1 -0
  223. package/dist/cli/commands/skills/setup/selection/index.d.ts +13 -0
  224. package/dist/cli/commands/skills/setup/selection/index.d.ts.map +1 -0
  225. package/dist/cli/commands/skills/setup/selection/index.js +113 -0
  226. package/dist/cli/commands/skills/setup/selection/index.js.map +1 -0
  227. package/dist/cli/commands/skills/setup/selection/interactive-prompt.d.ts +2 -0
  228. package/dist/cli/commands/skills/setup/selection/interactive-prompt.d.ts.map +1 -0
  229. package/dist/cli/commands/skills/setup/selection/interactive-prompt.js +2 -0
  230. package/dist/cli/commands/skills/setup/selection/interactive-prompt.js.map +1 -0
  231. package/dist/cli/commands/skills/setup/selection/types.d.ts +13 -0
  232. package/dist/cli/commands/skills/setup/selection/types.d.ts.map +1 -0
  233. package/dist/cli/commands/skills/setup/selection/types.js +2 -0
  234. package/dist/cli/commands/skills/setup/selection/types.js.map +1 -0
  235. package/dist/cli/commands/skills/setup/selection/ui.d.ts +3 -0
  236. package/dist/cli/commands/skills/setup/selection/ui.d.ts.map +1 -0
  237. package/dist/cli/commands/skills/setup/selection/ui.js +68 -0
  238. package/dist/cli/commands/skills/setup/selection/ui.js.map +1 -0
  239. package/dist/cli/commands/skills/setup/sync.d.ts +13 -0
  240. package/dist/cli/commands/skills/setup/sync.d.ts.map +1 -0
  241. package/dist/cli/commands/skills/setup/sync.js +46 -0
  242. package/dist/cli/commands/skills/setup/sync.js.map +1 -0
  243. package/dist/cli/commands/skills/update.d.ts +7 -0
  244. package/dist/cli/commands/skills/update.d.ts.map +1 -0
  245. package/dist/cli/commands/skills/update.js +71 -0
  246. package/dist/cli/commands/skills/update.js.map +1 -0
  247. package/dist/cli/first-time.d.ts.map +1 -1
  248. package/dist/cli/first-time.js +4 -0
  249. package/dist/cli/first-time.js.map +1 -1
  250. package/dist/cli/index.js +14 -0
  251. package/dist/cli/index.js.map +1 -1
  252. package/dist/env/types.d.ts +14 -0
  253. package/dist/env/types.d.ts.map +1 -1
  254. package/dist/env/types.js.map +1 -1
  255. package/dist/providers/core/types.d.ts +1 -1
  256. package/dist/providers/core/types.d.ts.map +1 -1
  257. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.d.ts.map +1 -1
  258. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js +26 -2
  259. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js.map +1 -1
  260. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +31 -0
  261. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -0
  262. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +148 -0
  263. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -0
  264. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts +9 -0
  265. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts.map +1 -0
  266. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js +36 -0
  267. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js.map +1 -0
  268. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +12 -12
  269. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  270. package/dist/providers/plugins/sso/proxy/plugins/index.js +15 -15
  271. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  272. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +4 -0
  273. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  274. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  275. package/dist/providers/plugins/sso/proxy/sso.proxy.js +4 -3
  276. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  277. package/dist/providers/plugins/sso/sso.http-client.d.ts +1 -1
  278. package/dist/providers/plugins/sso/sso.http-client.js +3 -3
  279. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  280. package/dist/providers/plugins/sso/sso.models.js +2 -2
  281. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  282. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  283. package/dist/providers/plugins/sso/sso.setup-steps.js +6 -10
  284. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  285. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts +15 -0
  286. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts.map +1 -0
  287. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js +117 -0
  288. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js.map +1 -0
  289. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +3 -0
  290. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -0
  291. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +138 -0
  292. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -0
  293. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.d.ts +4 -0
  294. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.d.ts.map +1 -0
  295. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.js +53 -0
  296. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.js.map +1 -0
  297. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts +4 -0
  298. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -0
  299. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +60 -0
  300. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -0
  301. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts +4 -0
  302. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -0
  303. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +19 -0
  304. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -0
  305. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +23 -0
  306. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -0
  307. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +243 -0
  308. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -0
  309. package/dist/telemetry/runtime/checkpoints.d.ts +10 -0
  310. package/dist/telemetry/runtime/checkpoints.d.ts.map +1 -0
  311. package/dist/telemetry/runtime/checkpoints.js +8 -0
  312. package/dist/telemetry/runtime/checkpoints.js.map +1 -0
  313. package/dist/telemetry/runtime/types.d.ts +32 -0
  314. package/dist/telemetry/runtime/types.d.ts.map +1 -0
  315. package/dist/telemetry/runtime/types.js +2 -0
  316. package/dist/telemetry/runtime/types.js.map +1 -0
  317. package/dist/utils/config.d.ts +14 -3
  318. package/dist/utils/config.d.ts.map +1 -1
  319. package/dist/utils/config.js +95 -5
  320. package/dist/utils/config.js.map +1 -1
  321. package/dist/utils/processes.d.ts +6 -0
  322. package/dist/utils/processes.d.ts.map +1 -1
  323. package/dist/utils/processes.js +13 -3
  324. package/dist/utils/processes.js.map +1 -1
  325. package/package.json +25 -11
  326. package/scripts/README.md +15 -1
  327. package/scripts/copy-plugins.js +5 -0
  328. package/scripts/prepare-install-artifacts.mjs +66 -0
  329. package/scripts/sonar/package.json +3 -0
  330. package/scripts/sonar/run-local-sonar.js +405 -0
  331. package/scripts/test-desktop-telemetry.js +229 -0
  332. package/scripts/test-proxy-endpoint.js +173 -0
  333. package/dist/agents/plugins/claude/plugin/commands/codemie-commit.md +0 -31
  334. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-auto-wrapper.sh +0 -81
  335. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.d.ts +0 -30
  336. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.d.ts.map +0 -1
  337. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.js +0 -111
  338. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.js.map +0 -1
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Send a sample /v1/messages request to the local CodeMie proxy daemon.
4
+ *
5
+ * - Auto-discovers URL and gateway key from ~/.codemie/proxy-daemon.json
6
+ * (override with --url and --gateway-key)
7
+ * - Sends Anthropic-style headers and a tiny payload
8
+ * - Supports both buffered and streaming (SSE) responses
9
+ *
10
+ * Usage:
11
+ * node scripts/test-proxy-endpoint.js # auto-discover, non-streaming
12
+ * node scripts/test-proxy-endpoint.js --stream # SSE streaming
13
+ * node scripts/test-proxy-endpoint.js --url http://localhost:4001 --gateway-key codemie-proxy
14
+ * node scripts/test-proxy-endpoint.js --model claude-sonnet-4-5 --message "Hello"
15
+ */
16
+ import { readFile } from 'node:fs/promises';
17
+ import { join } from 'node:path';
18
+ import { homedir } from 'node:os';
19
+
20
+ const STATE_FILE = process.env.CODEMIE_HOME
21
+ ? join(process.env.CODEMIE_HOME, 'proxy-daemon.json')
22
+ : join(homedir(), '.codemie', 'proxy-daemon.json');
23
+
24
+ function printUsage() {
25
+ console.log(`Usage: node scripts/test-proxy-endpoint.js [options]
26
+
27
+ Options:
28
+ --url <base-url> Proxy base URL (default: read from state file)
29
+ --gateway-key <key> Static bearer key (default: read from state file)
30
+ --endpoint <path> Endpoint path (default: /v1/messages)
31
+ --model <id> Model ID (default: claude-sonnet-4-5)
32
+ --message <text> Prompt text (default: "Test proxy endpoint")
33
+ --max-tokens <n> Max tokens (default: 32)
34
+ --stream Use SSE streaming
35
+ --no-anthropic-version Don't send anthropic-version header
36
+ -h, --help Show this help`);
37
+ }
38
+
39
+ function parseArgs(argv) {
40
+ const opts = {
41
+ endpoint: '/v1/messages',
42
+ message: 'Test proxy endpoint',
43
+ model: 'claude-sonnet-4-5',
44
+ maxTokens: 32,
45
+ stream: false,
46
+ sendAnthropicVersion: true,
47
+ };
48
+
49
+ for (let i = 0; i < argv.length; i += 1) {
50
+ const arg = argv[i];
51
+ if (arg === '--help' || arg === '-h') { opts.help = true; return opts; }
52
+ if (arg === '--url') { opts.url = argv[++i]; continue; }
53
+ if (arg === '--gateway-key') { opts.gatewayKey = argv[++i]; continue; }
54
+ if (arg === '--endpoint') { opts.endpoint = argv[++i] || opts.endpoint; continue; }
55
+ if (arg === '--message') { opts.message = argv[++i] || opts.message; continue; }
56
+ if (arg === '--model') { opts.model = argv[++i] || opts.model; continue; }
57
+ if (arg === '--max-tokens') {
58
+ const v = Number.parseInt(argv[++i] || '', 10);
59
+ if (Number.isFinite(v) && v > 0) opts.maxTokens = v;
60
+ continue;
61
+ }
62
+ if (arg === '--stream') { opts.stream = true; continue; }
63
+ if (arg === '--no-anthropic-version') { opts.sendAnthropicVersion = false; continue; }
64
+ }
65
+ return opts;
66
+ }
67
+
68
+ async function loadDaemonState() {
69
+ try {
70
+ const raw = await readFile(STATE_FILE, 'utf-8');
71
+ return JSON.parse(raw);
72
+ } catch {
73
+ return null;
74
+ }
75
+ }
76
+
77
+ async function main() {
78
+ const args = parseArgs(process.argv.slice(2));
79
+ if (args.help) { printUsage(); process.exit(0); }
80
+
81
+ if (!args.url || !args.gatewayKey) {
82
+ const state = await loadDaemonState();
83
+ if (state) {
84
+ args.url ??= state.url;
85
+ args.gatewayKey ??= state.gatewayKey;
86
+ console.log(`[test] Using daemon at ${args.url} (profile: ${state.profile})`);
87
+ }
88
+ }
89
+
90
+ if (!args.url) {
91
+ console.error(`No proxy URL. Provide --url or start the daemon: codemie proxy start`);
92
+ process.exit(1);
93
+ }
94
+ if (!args.gatewayKey) {
95
+ console.error(`No gateway key. Provide --gateway-key or start the daemon: codemie proxy start`);
96
+ process.exit(1);
97
+ }
98
+
99
+ let baseUrl;
100
+ try { baseUrl = new URL(args.url); }
101
+ catch { console.error(`Invalid URL: ${args.url}`); process.exit(1); }
102
+
103
+ const endpoint = args.endpoint.startsWith('/') ? args.endpoint : `/${args.endpoint}`;
104
+ const targetUrl = new URL(endpoint, baseUrl);
105
+
106
+ const body = {
107
+ model: args.model,
108
+ messages: [{ role: 'user', content: args.message }],
109
+ max_tokens: args.maxTokens,
110
+ stream: args.stream,
111
+ };
112
+
113
+ const headers = {
114
+ 'Content-Type': 'application/json',
115
+ Accept: args.stream ? 'text/event-stream' : 'application/json',
116
+ Authorization: `Bearer ${args.gatewayKey}`,
117
+ };
118
+ if (args.sendAnthropicVersion) headers['anthropic-version'] = '2023-06-01';
119
+
120
+ console.log(`[test] POST ${targetUrl.href}`);
121
+ console.log(`[test] Headers: ${JSON.stringify({ ...headers, Authorization: 'Bearer ***' })}`);
122
+ console.log(`[test] Body: ${JSON.stringify(body)}`);
123
+
124
+ const startMs = Date.now();
125
+ let response;
126
+ try {
127
+ response = await fetch(targetUrl, {
128
+ method: 'POST',
129
+ headers,
130
+ body: JSON.stringify(body),
131
+ });
132
+ } catch (error) {
133
+ console.error(`[test] Request failed: ${error.message}`);
134
+ process.exit(1);
135
+ }
136
+
137
+ const ttfbMs = Date.now() - startMs;
138
+ console.log(`\n[test] Status: ${response.status} ${response.statusText} (TTFB ${ttfbMs}ms)`);
139
+ console.log(`[test] Response headers:`);
140
+ for (const [k, v] of response.headers.entries()) {
141
+ console.log(` ${k}: ${v}`);
142
+ }
143
+
144
+ if (args.stream) {
145
+ if (!response.body) {
146
+ console.error('[test] No response body for streaming');
147
+ process.exit(1);
148
+ }
149
+ console.log('\n[test] --- SSE stream ---');
150
+ const reader = response.body.getReader();
151
+ const decoder = new TextDecoder();
152
+ let chunkCount = 0;
153
+ let totalBytes = 0;
154
+ while (true) {
155
+ const { value, done } = await reader.read();
156
+ if (done) break;
157
+ chunkCount += 1;
158
+ totalBytes += value.length;
159
+ process.stdout.write(decoder.decode(value, { stream: true }));
160
+ }
161
+ const totalMs = Date.now() - startMs;
162
+ console.log(`\n[test] --- end (${chunkCount} chunks, ${totalBytes} bytes, ${totalMs}ms total) ---`);
163
+ } else {
164
+ const text = await response.text();
165
+ const totalMs = Date.now() - startMs;
166
+ console.log(`\n[test] Body (${text.length} bytes, ${totalMs}ms total):`);
167
+ console.log(text);
168
+ }
169
+
170
+ if (!response.ok) process.exit(1);
171
+ }
172
+
173
+ main().catch(err => { console.error(err); process.exit(1); });
@@ -1,31 +0,0 @@
1
- ---
2
- allowed-tools: Bash(git add:*), Bash(git commit:*), Bash(git checkout:*)
3
- description: Create a git commit (not on main branch)
4
- ---
5
-
6
- ## Context
7
-
8
- - Current branch: !`git branch --show-current`
9
- - Current git status: !`git status`
10
- - Current git diff (staged and unstaged changes): !`git diff HEAD`
11
- - Recent commits: !`git log --oneline -5`
12
-
13
- ## Your task
14
-
15
- Based on the above changes, create a single git commit.
16
-
17
- **IMPORTANT**: If the current branch is `main` or `master`:
18
- 1. Analyze the changes to determine the type (feat, fix, refactor, etc.)
19
- 2. Suggest a branch name in format `<type>/<short-description>` (e.g., `feat/add-auth-header-support`, `fix/proxy-timeout-issue`)
20
- 3. Ask user to confirm the branch name or provide an alternative
21
- 4. After confirmation, create the branch with `git checkout -b <branch-name>` and proceed with the commit
22
-
23
- If on a feature branch:
24
- 1. Stage all relevant changes
25
- 2. Create a commit message following commitlint rules:
26
- - Format: `<type>(<scope>): <subject>` or `<type>: <subject>`
27
- - Types: feat, fix, docs, style, refactor, perf, test, chore, ci, revert
28
- - Scopes (optional): cli, agents, providers, config, proxy, workflows, ci, analytics, utils, deps, tests
29
- - Subject: max 100 characters, lowercase start, no period at end
30
-
31
- You have the capability to call multiple tools in a single response. Stage and create the commit using a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.
@@ -1,81 +0,0 @@
1
- #!/bin/bash
2
- # RTK Auto-Wrapper Hook
3
- # Automatically wraps high-verbosity commands with RTK for token optimization
4
- #
5
- # Hook: PreToolUse
6
- # Matcher: Bash
7
- # Purpose: Intercept bash commands and suggest RTK wrapper if applicable
8
- #
9
- # Installation:
10
- # 1. Copy to .claude/hooks/bash/rtk-auto-wrapper.sh
11
- # 2. Make executable: chmod +x .claude/hooks/bash/rtk-auto-wrapper.sh
12
- # 3. Add to settings.json:
13
- # {
14
- # "hooks": {
15
- # "PreToolUse": [{
16
- # "matcher": "Bash",
17
- # "hooks": [".claude/hooks/bash/rtk-auto-wrapper.sh"]
18
- # }]
19
- # }
20
- # }
21
- #
22
- # Or use `rtk init` for automatic hook setup.
23
-
24
- # Check if RTK is installed
25
- if ! command -v rtk &> /dev/null; then
26
- # RTK not installed, skip silently
27
- exit 0
28
- fi
29
-
30
- # Parse tool input to get the bash command
31
- COMMAND=$(echo "$TOOL_INPUT" | jq -r '.command // empty' 2>/dev/null)
32
-
33
- if [ -z "$COMMAND" ]; then
34
- # No command found, continue
35
- exit 0
36
- fi
37
-
38
- # Define RTK-optimizable commands with their savings
39
- declare -A RTK_COMMANDS=(
40
- ["git log"]="92.3"
41
- ["git status"]="76.0"
42
- ["git diff"]="55.9"
43
- ["find"]="76.3"
44
- ["cargo test"]="90.0"
45
- ["cargo build"]="80.0"
46
- ["cargo clippy"]="80.0"
47
- ["pnpm list"]="82.0"
48
- ["pnpm outdated"]="90.0"
49
- ["pnpm test"]="90.0"
50
- ["python pytest"]="90.0"
51
- ["python -m pytest"]="90.0"
52
- ["go test"]="90.0"
53
- )
54
-
55
- # Check if command matches RTK-optimizable pattern
56
- for cmd in "${!RTK_COMMANDS[@]}"; do
57
- if [[ "$COMMAND" == "$cmd"* ]] && [[ "$COMMAND" != "rtk "* ]]; then
58
- savings="${RTK_COMMANDS[$cmd]}"
59
-
60
- # Suggest RTK wrapper
61
- cat << EOF
62
- RTK Optimization Available
63
-
64
- Command: $COMMAND
65
- Suggested: rtk $COMMAND
66
- Token Savings: ~${savings}%
67
-
68
- Using RTK wrapper automatically.
69
- EOF
70
-
71
- # Modify command to use RTK
72
- # Note: This is informational only - actual command modification
73
- # requires additionalContext return (Claude Code v2.1.9+)
74
-
75
- # For now, just inform user
76
- exit 0
77
- fi
78
- done
79
-
80
- # Continue with original command
81
- exit 0
@@ -1,30 +0,0 @@
1
- /**
2
- * Claude Thinking Transformer Plugin
3
- * Priority: 16 (runs after Request Sanitizer at 15, before header injection at 20)
4
- *
5
- * Transforms thinking parameters for Claude models that require the new adaptive
6
- * thinking API (e.g. claude-opus-4-7).
7
- *
8
- * Problem: Claude Code sends `thinking: { type: "enabled", budget_tokens: N }`
9
- * for Opus models. claude-opus-4-7 rejects this with HTTP 400:
10
- * "thinking.type.enabled" is not supported for this model. Use
11
- * "thinking.type.adaptive" and "output_config.effort" instead.
12
- *
13
- * Fix: When the request model matches a Claude 4.7+ pattern:
14
- * - "enabled" → thinking: { type: "adaptive" } + output_config.effort (derived
15
- * from budget_tokens; only written if not already present)
16
- * - "disabled" → delete the thinking field entirely (model does not accept this value)
17
- *
18
- * Scope: Only enabled for codemie-claude agent (Claude Code via SSO proxy).
19
- *
20
- * To add support for a new model: append a pattern to ADAPTIVE_THINKING_MODEL_PATTERNS.
21
- */
22
- import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
23
- export declare class ClaudeThinkingTransformerPlugin implements ProxyPlugin {
24
- id: string;
25
- name: string;
26
- version: string;
27
- priority: number;
28
- createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
29
- }
30
- //# sourceMappingURL=claude-thinking-transformer.plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-thinking-transformer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiC1E,qBAAa,+BAAgC,YAAW,WAAW;IACjE,EAAE,SAAgD;IAClD,IAAI,SAAiC;IACrC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAS3E"}
@@ -1,111 +0,0 @@
1
- /**
2
- * Claude Thinking Transformer Plugin
3
- * Priority: 16 (runs after Request Sanitizer at 15, before header injection at 20)
4
- *
5
- * Transforms thinking parameters for Claude models that require the new adaptive
6
- * thinking API (e.g. claude-opus-4-7).
7
- *
8
- * Problem: Claude Code sends `thinking: { type: "enabled", budget_tokens: N }`
9
- * for Opus models. claude-opus-4-7 rejects this with HTTP 400:
10
- * "thinking.type.enabled" is not supported for this model. Use
11
- * "thinking.type.adaptive" and "output_config.effort" instead.
12
- *
13
- * Fix: When the request model matches a Claude 4.7+ pattern:
14
- * - "enabled" → thinking: { type: "adaptive" } + output_config.effort (derived
15
- * from budget_tokens; only written if not already present)
16
- * - "disabled" → delete the thinking field entirely (model does not accept this value)
17
- *
18
- * Scope: Only enabled for codemie-claude agent (Claude Code via SSO proxy).
19
- *
20
- * To add support for a new model: append a pattern to ADAPTIVE_THINKING_MODEL_PATTERNS.
21
- */
22
- import { logger } from '../../../../../utils/logger.js';
23
- /**
24
- * Model name patterns that require the adaptive thinking API.
25
- * Matches claude-opus-4-7, claude-opus-4-7-20250514, and future date-tagged variants.
26
- * Extend this list as Anthropic migrates additional models — see EPMCDME-11821.
27
- */
28
- const ADAPTIVE_THINKING_MODEL_PATTERNS = [
29
- /claude-opus-4-[7-9](?:[^0-9]|$)/i, // claude-opus-4-7/8/9 and date-tagged variants (e.g. claude-opus-4-7-20250514); excludes claude-opus-4-70+
30
- ];
31
- function modelRequiresAdaptiveThinking(modelName) {
32
- return ADAPTIVE_THINKING_MODEL_PATTERNS.some(p => p.test(modelName));
33
- }
34
- /**
35
- * Map legacy budget_tokens to the closest output_config.effort level.
36
- *
37
- * budget_tokens was the maximum token budget for thinking in the old API.
38
- * effort is a coarser control in the new API: low / medium / high.
39
- */
40
- function budgetTokensToEffort(budgetTokens) {
41
- const tokens = typeof budgetTokens === 'number' ? budgetTokens : 0;
42
- if (tokens <= 2048)
43
- return 'low';
44
- if (tokens <= 8192)
45
- return 'medium';
46
- return 'high';
47
- }
48
- /** Agent that sends Claude API requests through the codemie proxy */
49
- const ALLOWED_AGENT = 'codemie-claude';
50
- export class ClaudeThinkingTransformerPlugin {
51
- id = '@codemie/proxy-claude-thinking-transformer';
52
- name = 'Claude Thinking Transformer';
53
- version = '1.0.0';
54
- priority = 16; // After RequestSanitizer (15), before HeaderInjection (20)
55
- async createInterceptor(context) {
56
- const clientType = context.config.clientType;
57
- if (!clientType || clientType !== ALLOWED_AGENT) {
58
- throw new Error(`Plugin disabled for agent: ${clientType}`);
59
- }
60
- // Pass the configured model as a fallback for requests that omit body.model
61
- const configModel = context.config.model;
62
- return new ClaudeThinkingTransformerInterceptor(configModel);
63
- }
64
- }
65
- class ClaudeThinkingTransformerInterceptor {
66
- configModel;
67
- name = 'claude-thinking-transformer';
68
- constructor(configModel) {
69
- this.configModel = configModel;
70
- }
71
- async onRequest(context) {
72
- if (!context.requestBody || !context.headers['content-type']?.includes('application/json')) {
73
- return;
74
- }
75
- try {
76
- const bodyStr = context.requestBody.toString('utf-8');
77
- const body = JSON.parse(bodyStr);
78
- const thinkingType = body.thinking?.type;
79
- if (thinkingType !== 'enabled' && thinkingType !== 'disabled') {
80
- return;
81
- }
82
- // Resolve model: prefer request body, fall back to proxy config
83
- const model = (typeof body.model === 'string' && body.model) || this.configModel || '';
84
- if (!model || !modelRequiresAdaptiveThinking(model)) {
85
- return;
86
- }
87
- if (thinkingType === 'enabled') {
88
- const effort = budgetTokensToEffort(body.thinking.budget_tokens);
89
- // Replace old thinking object with new adaptive format
90
- body.thinking = { type: 'adaptive' };
91
- // Set output_config.effort only if the caller hasn't already specified it
92
- if (!body.output_config?.effort) {
93
- body.output_config = { ...(body.output_config ?? {}), effort };
94
- }
95
- logger.debug(`[${this.name}] Transformed thinking: "enabled" → "adaptive", effort="${effort}" for model: ${model}`);
96
- }
97
- else {
98
- // thinking.type === 'disabled': model does not accept this value — remove the field
99
- delete body.thinking;
100
- logger.debug(`[${this.name}] Removed unsupported thinking.type="disabled" for model: ${model}`);
101
- }
102
- const newBodyStr = JSON.stringify(body);
103
- context.requestBody = Buffer.from(newBodyStr, 'utf-8');
104
- context.headers['content-length'] = String(context.requestBody.length);
105
- }
106
- catch {
107
- // Not valid JSON or unexpected structure — pass through unchanged
108
- }
109
- }
110
- }
111
- //# sourceMappingURL=claude-thinking-transformer.plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-thinking-transformer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.ts"],"names":[],"mappings":"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"}