@codemieai/code 0.15.2 → 0.15.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 (302) hide show
  1. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  2. package/dist/agents/core/AgentCLI.js +9 -0
  3. package/dist/agents/core/AgentCLI.js.map +1 -1
  4. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  5. package/dist/agents/core/BaseAgentAdapter.js +34 -9
  6. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  7. package/dist/agents/plugins/claude/claude.models.d.ts +58 -0
  8. package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
  9. package/dist/agents/plugins/claude/claude.models.js +196 -10
  10. package/dist/agents/plugins/claude/claude.models.js.map +1 -1
  11. package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -1
  12. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  13. package/dist/agents/plugins/claude/claude.plugin.js +149 -47
  14. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  15. package/dist/agents/plugins/claude/claude.session.d.ts +17 -1
  16. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  17. package/dist/agents/plugins/claude/claude.session.js +4 -0
  18. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  19. package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
  20. package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
  21. package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/statusline-installer.js +41 -3
  23. package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
  24. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
  25. package/dist/agents/plugins/codex/codex-models.js +109 -8
  26. package/dist/agents/plugins/codex/codex-models.js.map +1 -1
  27. package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
  28. package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
  29. package/dist/agents/plugins/codex/codex.correlation.js +150 -0
  30. package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
  31. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  32. package/dist/agents/plugins/codex/codex.plugin.js +8 -40
  33. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  34. package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
  35. package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
  36. package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
  37. package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
  38. package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
  39. package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
  40. package/dist/agents/plugins/kimi/kimi.session.js +24 -2
  41. package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
  42. package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
  43. package/dist/agents/plugins/opencode/opencode-dynamic-models.js +4 -5
  44. package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
  45. package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
  46. package/dist/agents/plugins/pi/pi.models.js +3 -3
  47. package/dist/agents/plugins/pi/pi.models.js.map +1 -1
  48. package/dist/bin/proxy-daemon.js +8 -1
  49. package/dist/bin/proxy-daemon.js.map +1 -1
  50. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
  51. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  52. package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
  53. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  54. package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
  55. package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
  56. package/dist/cli/commands/analytics/cost/local-models.js +21 -0
  57. package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
  58. package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
  59. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  60. package/dist/cli/commands/analytics/cost/types.js.map +1 -1
  61. package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
  62. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  63. package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
  64. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  65. package/dist/cli/commands/analytics/formatter.d.ts +11 -0
  66. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
  67. package/dist/cli/commands/analytics/formatter.js +28 -0
  68. package/dist/cli/commands/analytics/formatter.js.map +1 -1
  69. package/dist/cli/commands/analytics/index.d.ts.map +1 -1
  70. package/dist/cli/commands/analytics/index.js +70 -73
  71. package/dist/cli/commands/analytics/index.js.map +1 -1
  72. package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
  73. package/dist/cli/commands/analytics/otel-loader.js +60 -14
  74. package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
  75. package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
  76. package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
  77. package/dist/cli/commands/analytics/otel-pricing.js +33 -0
  78. package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
  79. package/dist/cli/commands/analytics/report/client/app.js +279 -18
  80. package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
  81. package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
  82. package/dist/cli/commands/analytics/report/output-target.js +56 -0
  83. package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
  84. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  85. package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
  86. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  87. package/dist/cli/commands/analytics/report/report-generator.d.ts +1 -1
  88. package/dist/cli/commands/analytics/report/report-generator.js +1 -1
  89. package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
  90. package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
  91. package/dist/cli/commands/analytics/report/session-report.js +1 -3
  92. package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
  93. package/dist/cli/commands/analytics/report/template.html +6 -6
  94. package/dist/cli/commands/analytics/report/types.d.ts +17 -1
  95. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  96. package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
  97. package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
  98. package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
  99. package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
  100. package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
  101. package/dist/cli/commands/analytics/types.d.ts +8 -8
  102. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  103. package/dist/cli/commands/assistants/constants.d.ts +4 -0
  104. package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
  105. package/dist/cli/commands/assistants/constants.js +4 -0
  106. package/dist/cli/commands/assistants/constants.js.map +1 -1
  107. package/dist/cli/commands/assistants/setup/data.d.ts +1 -0
  108. package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
  109. package/dist/cli/commands/assistants/setup/data.js +55 -10
  110. package/dist/cli/commands/assistants/setup/data.js.map +1 -1
  111. package/dist/cli/commands/assistants/setup/helpers.d.ts +1 -1
  112. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
  113. package/dist/cli/commands/assistants/setup/helpers.js +2 -5
  114. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
  115. package/dist/cli/commands/assistants/setup/index.d.ts +12 -0
  116. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
  117. package/dist/cli/commands/assistants/setup/index.js +148 -20
  118. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  119. package/dist/cli/commands/models.d.ts.map +1 -1
  120. package/dist/cli/commands/models.js +16 -3
  121. package/dist/cli/commands/models.js.map +1 -1
  122. package/dist/cli/commands/profile/display.d.ts +5 -1
  123. package/dist/cli/commands/profile/display.d.ts.map +1 -1
  124. package/dist/cli/commands/profile/display.js +5 -1
  125. package/dist/cli/commands/profile/display.js.map +1 -1
  126. package/dist/cli/commands/profile/index.d.ts.map +1 -1
  127. package/dist/cli/commands/profile/index.js +7 -4
  128. package/dist/cli/commands/profile/index.js.map +1 -1
  129. package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
  130. package/dist/cli/commands/proxy/connect-orchestrator.js +3 -4
  131. package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
  132. package/dist/cli/commands/proxy/connectors/desktop.d.ts +2 -3
  133. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
  134. package/dist/cli/commands/proxy/connectors/desktop.js +9 -25
  135. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
  136. package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts +19 -0
  137. package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts.map +1 -0
  138. package/dist/cli/commands/proxy/connectors/model-name-resolver.js +126 -0
  139. package/dist/cli/commands/proxy/connectors/model-name-resolver.js.map +1 -0
  140. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +23 -0
  141. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -0
  142. package/dist/cli/commands/proxy/connectors/tenant-catalog.js +136 -0
  143. package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -0
  144. package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts.map +1 -1
  145. package/dist/cli/commands/proxy/connectors/vscode-claude-code.js +49 -19
  146. package/dist/cli/commands/proxy/connectors/vscode-claude-code.js.map +1 -1
  147. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +21 -3
  148. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
  149. package/dist/cli/commands/proxy/connectors/vscode-models.js +86 -28
  150. package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
  151. package/dist/cli/commands/proxy/connectors/vscode.d.ts +3 -2
  152. package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
  153. package/dist/cli/commands/proxy/connectors/vscode.js +67 -39
  154. package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
  155. package/dist/cli/commands/shared/headless.d.ts +69 -0
  156. package/dist/cli/commands/shared/headless.d.ts.map +1 -0
  157. package/dist/cli/commands/shared/headless.js +83 -0
  158. package/dist/cli/commands/shared/headless.js.map +1 -0
  159. package/dist/cli/commands/shared/helpers.d.ts +21 -0
  160. package/dist/cli/commands/shared/helpers.d.ts.map +1 -1
  161. package/dist/cli/commands/shared/helpers.js +73 -1
  162. package/dist/cli/commands/shared/helpers.js.map +1 -1
  163. package/dist/cli/commands/shared/identifier-resolution.d.ts +23 -0
  164. package/dist/cli/commands/shared/identifier-resolution.d.ts.map +1 -0
  165. package/dist/cli/commands/shared/identifier-resolution.js +55 -0
  166. package/dist/cli/commands/shared/identifier-resolution.js.map +1 -0
  167. package/dist/cli/commands/skills/setup/data.d.ts +3 -2
  168. package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
  169. package/dist/cli/commands/skills/setup/data.js +75 -13
  170. package/dist/cli/commands/skills/setup/data.js.map +1 -1
  171. package/dist/cli/commands/skills/setup/helpers.d.ts +1 -1
  172. package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
  173. package/dist/cli/commands/skills/setup/helpers.js +2 -5
  174. package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
  175. package/dist/cli/commands/skills/setup/index.d.ts +17 -1
  176. package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
  177. package/dist/cli/commands/skills/setup/index.js +190 -19
  178. package/dist/cli/commands/skills/setup/index.js.map +1 -1
  179. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
  180. package/dist/providers/core/codemie-auth-helpers.js +6 -1
  181. package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
  182. package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
  183. package/dist/providers/core/default-agent-hooks.js +9 -0
  184. package/dist/providers/core/default-agent-hooks.js.map +1 -1
  185. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  186. package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
  187. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  188. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
  189. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
  190. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
  191. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
  192. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts +41 -0
  193. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts.map +1 -0
  194. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js +115 -0
  195. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js.map +1 -0
  196. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -1
  197. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +101 -7
  198. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
  199. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts +4 -0
  200. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -1
  201. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +28 -3
  202. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
  203. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  204. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  205. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  206. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  207. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
  208. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
  209. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
  210. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
  211. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +5 -0
  212. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  213. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  214. package/dist/providers/plugins/sso/proxy/sso.proxy.js +1 -0
  215. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  216. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
  217. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +11 -2
  218. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
  219. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  220. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -1
  221. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  222. package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
  223. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  224. package/dist/providers/plugins/sso/sso.http-client.js +79 -0
  225. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  226. package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
  227. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
  228. package/dist/providers/plugins/sso/sso.models.js +22 -14
  229. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  230. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +1 -0
  231. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
  232. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +30 -6
  233. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
  234. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -1
  235. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +33 -3
  236. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -1
  237. package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts +58 -0
  238. package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts.map +1 -0
  239. package/dist/telemetry/runtime/DesktopRepositoryResolver.js +370 -0
  240. package/dist/telemetry/runtime/DesktopRepositoryResolver.js.map +1 -0
  241. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +1 -0
  242. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
  243. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +89 -6
  244. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
  245. package/dist/telemetry/runtime/types.d.ts +2 -0
  246. package/dist/telemetry/runtime/types.d.ts.map +1 -1
  247. package/dist/utils/auth.d.ts +13 -2
  248. package/dist/utils/auth.d.ts.map +1 -1
  249. package/dist/utils/auth.js +7 -3
  250. package/dist/utils/auth.js.map +1 -1
  251. package/dist/utils/bedrock-pricing.mjs +111 -0
  252. package/dist/utils/cli-updater.d.ts.map +1 -1
  253. package/dist/utils/cli-updater.js +32 -7
  254. package/dist/utils/cli-updater.js.map +1 -1
  255. package/dist/utils/config.d.ts +21 -0
  256. package/dist/utils/config.d.ts.map +1 -1
  257. package/dist/utils/config.js +69 -7
  258. package/dist/utils/config.js.map +1 -1
  259. package/dist/utils/credential-crypto.d.ts +51 -0
  260. package/dist/utils/credential-crypto.d.ts.map +1 -0
  261. package/dist/utils/credential-crypto.js +96 -0
  262. package/dist/utils/credential-crypto.js.map +1 -0
  263. package/dist/utils/errors.d.ts +14 -0
  264. package/dist/utils/errors.d.ts.map +1 -1
  265. package/dist/utils/errors.js +25 -0
  266. package/dist/utils/errors.js.map +1 -1
  267. package/dist/utils/model-normalizer.d.ts +6 -0
  268. package/dist/utils/model-normalizer.d.ts.map +1 -1
  269. package/dist/utils/model-normalizer.js +37 -19
  270. package/dist/utils/model-normalizer.js.map +1 -1
  271. package/dist/utils/paths.d.ts +2 -2
  272. package/dist/utils/paths.d.ts.map +1 -1
  273. package/dist/utils/paths.js +11 -9
  274. package/dist/utils/paths.js.map +1 -1
  275. package/dist/utils/price-resolution.d.ts +42 -0
  276. package/dist/utils/price-resolution.d.ts.map +1 -0
  277. package/dist/utils/price-resolution.js +112 -0
  278. package/dist/utils/price-resolution.js.map +1 -0
  279. package/dist/utils/pricing.d.ts +65 -6
  280. package/dist/utils/pricing.d.ts.map +1 -1
  281. package/dist/utils/pricing.js +91 -117
  282. package/dist/utils/pricing.js.map +1 -1
  283. package/dist/utils/pricing.json +201 -20
  284. package/dist/utils/processes.d.ts +12 -0
  285. package/dist/utils/processes.d.ts.map +1 -1
  286. package/dist/utils/processes.js +15 -0
  287. package/dist/utils/processes.js.map +1 -1
  288. package/dist/utils/routing-headers.mjs +104 -0
  289. package/dist/utils/security.d.ts +0 -32
  290. package/dist/utils/security.d.ts.map +1 -1
  291. package/dist/utils/security.js +20 -102
  292. package/dist/utils/security.js.map +1 -1
  293. package/package.json +5 -2
  294. package/scripts/bundle-statusline.mjs +37 -0
  295. package/scripts/copy-plugins.js +19 -2
  296. package/src/utils/tips.json +9 -9
  297. package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
  298. package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
  299. package/dist/cli/commands/analytics/exporter.d.ts +0 -20
  300. package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
  301. package/dist/cli/commands/analytics/exporter.js +0 -91
  302. package/dist/cli/commands/analytics/exporter.js.map +0 -1
@@ -3,7 +3,8 @@ import { mkdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promis
3
3
  import { homedir } from 'node:os';
4
4
  import { dirname, join } from 'node:path';
5
5
  import { ConfigurationError } from '../../../../utils/errors.js';
6
- import { VS_CODE_SUPPORTED_MODELS, } from './vscode-models.js';
6
+ import { fetchTenantModelDescriptors } from './tenant-catalog.js';
7
+ import { buildDefaultVsCodeCapability, findVsCodeCapabilityEntry, } from './vscode-models.js';
7
8
  const SECRET_REFERENCE_PATTERN = /^\$\{input:chat\.lm\.secret\.[^}]+\}$/;
8
9
  function isRecord(value) {
9
10
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -49,39 +50,65 @@ function getApiPath(apiType) {
49
50
  return '/v1/messages';
50
51
  return '/v1/chat/completions';
51
52
  }
52
- function buildManagedModels(proxyUrl) {
53
- return VS_CODE_SUPPORTED_MODELS.map(definition => {
54
- const model = {
55
- id: definition.id,
56
- name: definition.id,
57
- url: new URL(getApiPath(definition.apiType), proxyUrl).toString(),
58
- apiType: definition.apiType,
59
- toolCalling: true,
60
- vision: definition.vision,
61
- streaming: true,
62
- thinking: definition.thinking,
63
- maxInputTokens: definition.maxInputTokens,
64
- maxOutputTokens: definition.maxOutputTokens,
65
- };
66
- if (definition.adaptiveThinking)
67
- model.adaptiveThinking = true;
68
- if (definition.zeroDataRetentionEnabled !== undefined) {
69
- model.zeroDataRetentionEnabled = definition.zeroDataRetentionEnabled;
70
- }
71
- if (definition.modelOptions)
72
- model.modelOptions = definition.modelOptions;
73
- if (definition.requestHeaders)
74
- model.requestHeaders = definition.requestHeaders;
75
- if (definition.supportsReasoningEffort) {
76
- model.supportsReasoningEffort = definition.supportsReasoningEffort;
77
- }
78
- if (definition.reasoningEffortFormat) {
79
- model.reasoningEffortFormat = definition.reasoningEffortFormat;
80
- }
81
- return model;
82
- });
53
+ function buildManagedModel(entry, tenantId, name, proxyUrl) {
54
+ const model = {
55
+ id: tenantId,
56
+ name,
57
+ url: new URL(getApiPath(entry.apiType), proxyUrl).toString(),
58
+ apiType: entry.apiType,
59
+ toolCalling: entry.toolCalling ?? true,
60
+ vision: entry.vision,
61
+ streaming: true,
62
+ thinking: entry.thinking,
63
+ maxInputTokens: entry.maxInputTokens,
64
+ maxOutputTokens: entry.maxOutputTokens,
65
+ };
66
+ if (entry.adaptiveThinking)
67
+ model.adaptiveThinking = true;
68
+ if (entry.zeroDataRetentionEnabled !== undefined) {
69
+ model.zeroDataRetentionEnabled = entry.zeroDataRetentionEnabled;
70
+ }
71
+ if (entry.modelOptions)
72
+ model.modelOptions = entry.modelOptions;
73
+ if (entry.requestHeaders)
74
+ model.requestHeaders = entry.requestHeaders;
75
+ if (entry.supportsReasoningEffort) {
76
+ model.supportsReasoningEffort = entry.supportsReasoningEffort;
77
+ }
78
+ if (entry.reasoningEffortFormat) {
79
+ model.reasoningEffortFormat = entry.reasoningEffortFormat;
80
+ }
81
+ return model;
82
+ }
83
+ const GITHUB_COPILOT_DEPLOYMENT_PATTERN = /^github-copilot-/i;
84
+ /**
85
+ * Fetch the tenant's live model catalog and write one VS Code model per
86
+ * enabled deployment, in catalog order. The capability table only enriches a
87
+ * model whose family it knows ({@link findVsCodeCapabilityEntry}); any other
88
+ * model gets conservative defaults ({@link buildDefaultVsCodeCapability}).
89
+ * The list is rebuilt from the live catalog on every call — never narrowed to
90
+ * the profile model, reordered, or marked with a default.
91
+ *
92
+ * `github-copilot-*` deployments stay excluded (kept product-owner decision).
93
+ * Throws when no enabled model remains, mirroring `desktop.ts`'s zero-match throw.
94
+ */
95
+ async function resolveManagedModels(proxyUrl, gatewayKey) {
96
+ const descriptors = await fetchTenantModelDescriptors(proxyUrl, gatewayKey);
97
+ const models = [];
98
+ for (const descriptor of descriptors) {
99
+ if (GITHUB_COPILOT_DEPLOYMENT_PATTERN.test(descriptor.id))
100
+ continue;
101
+ const known = findVsCodeCapabilityEntry(descriptor.id);
102
+ const entry = known ?? buildDefaultVsCodeCapability(descriptor);
103
+ const name = known ? descriptor.id : (descriptor.label?.trim() || descriptor.id);
104
+ models.push(buildManagedModel(entry, descriptor.id, name, proxyUrl));
105
+ }
106
+ if (models.length === 0) {
107
+ throw new ConfigurationError('Local proxy discovered no enabled tenant models to offer in VS Code Copilot.');
108
+ }
109
+ return models;
83
110
  }
84
- function mergeManagedProviders(providers, proxyUrl) {
111
+ function mergeManagedProviders(providers, models) {
85
112
  const existingProvider = Object.assign({}, ...providers);
86
113
  const existingSettings = Object.assign({}, ...providers.map(provider => isRecord(provider.settings) ? provider.settings : {}));
87
114
  const existingSecretReference = providers
@@ -92,7 +119,7 @@ function mergeManagedProviders(providers, proxyUrl) {
92
119
  name: 'CodeMie',
93
120
  vendor: 'customendpoint',
94
121
  apiType: 'chat-completions',
95
- models: buildManagedModels(proxyUrl),
122
+ models,
96
123
  };
97
124
  // VS Code owns effort selections. Preserve them instead of racing with the editor.
98
125
  if (Object.keys(existingSettings).length > 0)
@@ -155,18 +182,19 @@ export async function writeAtomically(configPath, content) {
155
182
  throw error;
156
183
  }
157
184
  }
158
- export async function writeVsCodeLanguageModelsConfig(proxyUrl, insiders = false) {
159
- return writeVsCodeLanguageModelsConfigAtPath(getVsCodeLanguageModelsPath(insiders), proxyUrl);
185
+ export async function writeVsCodeLanguageModelsConfig(proxyUrl, gatewayKey, insiders = false) {
186
+ return writeVsCodeLanguageModelsConfigAtPath(getVsCodeLanguageModelsPath(insiders), proxyUrl, gatewayKey);
160
187
  }
161
- export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl) {
188
+ export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl, gatewayKey) {
162
189
  const providers = await readProviders(configPath);
190
+ const models = await resolveManagedModels(proxyUrl, gatewayKey);
163
191
  const managedProviderIndexes = providers
164
192
  .map((provider, index) => isManagedProvider(provider) ? index : -1)
165
193
  .filter(index => index >= 0);
166
194
  const managedProviders = managedProviderIndexes
167
195
  .map(index => providers[index])
168
196
  .filter(isManagedProvider);
169
- const { provider: managedProvider, requiresSecretConfiguration } = mergeManagedProviders(managedProviders, proxyUrl);
197
+ const { provider: managedProvider, requiresSecretConfiguration } = mergeManagedProviders(managedProviders, models);
170
198
  const firstManagedProviderIndex = managedProviderIndexes[0] ?? providers.length;
171
199
  const managedProviderIndexSet = new Set(managedProviderIndexes);
172
200
  const reconciledProviders = providers.flatMap((provider, index) => {
@@ -185,6 +213,6 @@ export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl
185
213
  throw new ConfigurationError(`Failed to update VS Code language model configuration at ${configPath}: ` +
186
214
  `${error instanceof Error ? error.message : String(error)}`);
187
215
  }
188
- return { configPath, requiresSecretConfiguration };
216
+ return { configPath, requiresSecretConfiguration, modelCount: models.length };
189
217
  }
190
218
  //# sourceMappingURL=vscode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Headless-mode detection and flag validation shared by `codemie setup assistants`
3
+ * and `codemie setup skills`.
4
+ */
5
+ import { StorageScope } from '../../../env/types.js';
6
+ import { type AgentSetupTarget, type TargetAgent } from '../../../cli/commands/shared/agent-targets.js';
7
+ export interface HeadlessFlags {
8
+ yes?: boolean;
9
+ assistant?: string;
10
+ skill?: string;
11
+ /**
12
+ * Accepted so callers can hand over their whole options object, but deliberately
13
+ * not part of the headless decision — see `isHeadlessMode`.
14
+ */
15
+ scope?: string;
16
+ agent?: string;
17
+ mode?: string;
18
+ }
19
+ /**
20
+ * Determines whether a command should run in non-interactive (headless) mode:
21
+ * true when stdin is not a TTY, or when a flag that only makes sense
22
+ * non-interactively is present — the item-selection flags (`--assistant` /
23
+ * `--skill`) or `-y/--yes`.
24
+ *
25
+ * `--agent`, `--scope` and `--mode` must NOT select headless mode. `--agent`
26
+ * shipped long before headless mode as a wizard preselector, so treating it as a
27
+ * headless trigger would break `codemie setup assistants --agent claude` at a
28
+ * TTY; `--scope` and `--mode` are preselectors on the same surface.
29
+ */
30
+ export declare function isHeadlessMode(flags: HeadlessFlags, isTty: boolean): boolean;
31
+ /**
32
+ * Returns the given flag value, or throws a ConfigurationError naming the flag when missing.
33
+ */
34
+ export declare function requireFlag(value: string | undefined, flagName: string): string;
35
+ /**
36
+ * Parses a scope flag value into a StorageScope, throwing a ConfigurationError for
37
+ * any other value.
38
+ */
39
+ export declare function parseScopeFlag(value: string): StorageScope;
40
+ /**
41
+ * Splits a comma-separated flag value into trimmed, de-duplicated, non-empty entries.
42
+ * Throws a ConfigurationError when no non-empty values remain.
43
+ */
44
+ export declare function parseListFlag(value: string): string[];
45
+ /**
46
+ * Resolves the headless agent target from `--agent`, falling back to the agent
47
+ * hosting the command (`codemie-<agent> setup ...` wires its adapter name in as
48
+ * `hostAgent`), which determines the target just as unambiguously as the flag.
49
+ * Throws a ConfigurationError naming `--agent` only when neither is available,
50
+ * so the generic `codemie setup` surface still requires an explicit target.
51
+ * Agent targets are never auto-detected on this path.
52
+ */
53
+ export declare function resolveHeadlessAgentTarget(value: string | undefined, hostAgent?: TargetAgent): AgentSetupTarget;
54
+ export interface RegisteredPartition<T> {
55
+ /** Already-registered records the request names, which will be re-registered. */
56
+ inScope: T[];
57
+ /** Already-registered records the request does not name, which must survive untouched. */
58
+ untouched: T[];
59
+ }
60
+ /**
61
+ * Splits already-registered records against the requested ids. Headless
62
+ * registration is purely additive, so the "currently registered" set handed to
63
+ * the change calculation must be narrowed to the overlap with the request —
64
+ * anything outside it would otherwise be derived as a removal.
65
+ */
66
+ export declare function partitionRegisteredByRequest<T extends {
67
+ id: string;
68
+ }>(registered: T[], selectedIds: string[]): RegisteredPartition<T>;
69
+ //# sourceMappingURL=headless.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/headless.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAM5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAY1D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQrD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,CAAC,EAAE,WAAW,GACtB,gBAAgB,CAElB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,iFAAiF;IACjF,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,0FAA0F;IAC1F,SAAS,EAAE,CAAC,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACnE,UAAU,EAAE,CAAC,EAAE,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,mBAAmB,CAAC,CAAC,CAAC,CAOxB"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Headless-mode detection and flag validation shared by `codemie setup assistants`
3
+ * and `codemie setup skills`.
4
+ */
5
+ import { ConfigurationError } from '../../../utils/errors.js';
6
+ import { StorageScope } from '../../../env/types.js';
7
+ import { parseAgentSetupTarget, } from '../../../cli/commands/shared/agent-targets.js';
8
+ /**
9
+ * Determines whether a command should run in non-interactive (headless) mode:
10
+ * true when stdin is not a TTY, or when a flag that only makes sense
11
+ * non-interactively is present — the item-selection flags (`--assistant` /
12
+ * `--skill`) or `-y/--yes`.
13
+ *
14
+ * `--agent`, `--scope` and `--mode` must NOT select headless mode. `--agent`
15
+ * shipped long before headless mode as a wizard preselector, so treating it as a
16
+ * headless trigger would break `codemie setup assistants --agent claude` at a
17
+ * TTY; `--scope` and `--mode` are preselectors on the same surface.
18
+ */
19
+ export function isHeadlessMode(flags, isTty) {
20
+ if (!isTty) {
21
+ return true;
22
+ }
23
+ return Boolean(flags.yes || flags.assistant || flags.skill);
24
+ }
25
+ /**
26
+ * Returns the given flag value, or throws a ConfigurationError naming the flag when missing.
27
+ */
28
+ export function requireFlag(value, flagName) {
29
+ if (!value) {
30
+ throw new ConfigurationError(`Missing required flag: ${flagName}`);
31
+ }
32
+ return value;
33
+ }
34
+ /**
35
+ * Parses a scope flag value into a StorageScope, throwing a ConfigurationError for
36
+ * any other value.
37
+ */
38
+ export function parseScopeFlag(value) {
39
+ const normalized = value.trim().toLowerCase();
40
+ if (normalized === StorageScope.GLOBAL) {
41
+ return StorageScope.GLOBAL;
42
+ }
43
+ if (normalized === StorageScope.LOCAL) {
44
+ return StorageScope.LOCAL;
45
+ }
46
+ throw new ConfigurationError(`Invalid scope: "${value}". Expected "global" or "local".`);
47
+ }
48
+ /**
49
+ * Splits a comma-separated flag value into trimmed, de-duplicated, non-empty entries.
50
+ * Throws a ConfigurationError when no non-empty values remain.
51
+ */
52
+ export function parseListFlag(value) {
53
+ const items = Array.from(new Set(value.split(',').map((item) => item.trim()).filter((item) => item.length > 0)));
54
+ if (items.length === 0) {
55
+ throw new ConfigurationError(`Expected a comma-separated list of values, got: "${value}"`);
56
+ }
57
+ return items;
58
+ }
59
+ /**
60
+ * Resolves the headless agent target from `--agent`, falling back to the agent
61
+ * hosting the command (`codemie-<agent> setup ...` wires its adapter name in as
62
+ * `hostAgent`), which determines the target just as unambiguously as the flag.
63
+ * Throws a ConfigurationError naming `--agent` only when neither is available,
64
+ * so the generic `codemie setup` surface still requires an explicit target.
65
+ * Agent targets are never auto-detected on this path.
66
+ */
67
+ export function resolveHeadlessAgentTarget(value, hostAgent) {
68
+ return parseAgentSetupTarget(requireFlag(value ?? hostAgent, '--agent'));
69
+ }
70
+ /**
71
+ * Splits already-registered records against the requested ids. Headless
72
+ * registration is purely additive, so the "currently registered" set handed to
73
+ * the change calculation must be narrowed to the overlap with the request —
74
+ * anything outside it would otherwise be derived as a removal.
75
+ */
76
+ export function partitionRegisteredByRequest(registered, selectedIds) {
77
+ const selected = new Set(selectedIds);
78
+ return {
79
+ inScope: registered.filter((item) => selected.has(item.id)),
80
+ untouched: registered.filter((item) => !selected.has(item.id)),
81
+ };
82
+ }
83
+ //# sourceMappingURL=headless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/headless.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,qBAAqB,GAGtB,MAAM,wCAAwC,CAAC;AAehD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,KAAc;IACjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAyB,EAAE,QAAgB;IACrE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,UAAU,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,UAAU,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,OAAO,YAAY,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,KAAK,kCAAkC,CAAC,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,kBAAkB,CAAC,oDAAoD,KAAK,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAyB,EACzB,SAAuB;IAEvB,OAAO,qBAAqB,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC3E,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAe,EACf,WAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC/D,CAAC;AACJ,CAAC"}
@@ -1,4 +1,25 @@
1
1
  export declare function executeWithSpinner<T>(spinnerMessage: string, operation: () => Promise<T>, successMessage: string, errorMessage: string, onError?: (error: unknown) => void): Promise<T | null>;
2
+ /**
3
+ * Runs `operation` behind a spinner and **rethrows** the original error after
4
+ * invoking `onError`, in deliberate contrast to `executeWithSpinner`, which
5
+ * swallows the failure and returns `null` (a `null` a caller easily reads as
6
+ * "skip this one" and reports as success). Use this variant wherever a failed
7
+ * write must abort the run.
8
+ */
9
+ export declare function executeWithSpinnerStrict<T>(spinnerMessage: string, operation: () => Promise<T>, successMessage: string, errorMessage: string, onError?: (error: unknown) => void): Promise<T>;
10
+ /**
11
+ * Writes items sequentially and stops at the first failure, so a caller never
12
+ * reports success for items that were never written. There is no rollback:
13
+ * items already written before the failure stay written on disk.
14
+ */
15
+ export declare function registerAllOrAbort<TItem, TResult>(items: TItem[], nameOf: (item: TItem) => string, writeOne: (item: TItem) => Promise<TResult>): Promise<TResult[]>;
16
+ /**
17
+ * Records the items a batch already wrote before it aborted, so the saved config
18
+ * never claims less than what exists on disk (an artifact with no config entry can
19
+ * neither be listed nor unregistered). A failure to save is logged and swallowed:
20
+ * it must never mask the registration error the caller is about to rethrow.
21
+ */
22
+ export declare function persistPartialWrites<T>(written: T[], untouched: T[], save: (items: T[]) => Promise<void>): Promise<void>;
2
23
  export declare function determineChanges<TItem extends {
3
24
  id: string;
4
25
  }, TRegistered extends {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAyBnB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5B,WAAW,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAElC,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,KAAK,EAAE,EACjB,eAAe,EAAE,WAAW,EAAE,GAC7B;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAQtD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAU,GAAG,KAAK,CAKvE"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAyBnB;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EACrD,KAAK,EAAE,KAAK,EAAE,EACd,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,EAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC1C,OAAO,CAAC,OAAO,EAAE,CAAC,CAepB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,CAAC,EAAE,EACZ,SAAS,EAAE,CAAC,EAAE,EACd,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5B,WAAW,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAElC,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,KAAK,EAAE,EACjB,eAAe,EAAE,WAAW,EAAE,GAC7B;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAQtD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAU,GAAG,KAAK,CAKvE"}
@@ -1,7 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
3
  import { logger } from '../../../utils/logger.js';
4
- import { createErrorContext, formatErrorForUser } from '../../../utils/errors.js';
4
+ import { createErrorContext, formatErrorForUser, PartialRegistrationError } from '../../../utils/errors.js';
5
5
  export async function executeWithSpinner(spinnerMessage, operation, successMessage, errorMessage, onError) {
6
6
  const isVerbose = process.env.CODEMIE_DEBUG === 'true';
7
7
  const spinner = ora(spinnerMessage).start();
@@ -30,6 +30,78 @@ export async function executeWithSpinner(spinnerMessage, operation, successMessa
30
30
  return null;
31
31
  }
32
32
  }
33
+ /**
34
+ * Runs `operation` behind a spinner and **rethrows** the original error after
35
+ * invoking `onError`, in deliberate contrast to `executeWithSpinner`, which
36
+ * swallows the failure and returns `null` (a `null` a caller easily reads as
37
+ * "skip this one" and reports as success). Use this variant wherever a failed
38
+ * write must abort the run.
39
+ */
40
+ export async function executeWithSpinnerStrict(spinnerMessage, operation, successMessage, errorMessage, onError) {
41
+ const isVerbose = process.env.CODEMIE_DEBUG === 'true';
42
+ const spinner = ora(spinnerMessage).start();
43
+ try {
44
+ const result = await operation();
45
+ if (isVerbose) {
46
+ spinner.succeed(chalk.green(successMessage));
47
+ }
48
+ else {
49
+ spinner.clear();
50
+ spinner.stop();
51
+ }
52
+ return result;
53
+ }
54
+ catch (error) {
55
+ if (isVerbose) {
56
+ spinner.fail(chalk.red(errorMessage));
57
+ }
58
+ else {
59
+ spinner.clear();
60
+ spinner.stop();
61
+ }
62
+ if (onError) {
63
+ onError(error);
64
+ }
65
+ throw error;
66
+ }
67
+ }
68
+ /**
69
+ * Writes items sequentially and stops at the first failure, so a caller never
70
+ * reports success for items that were never written. There is no rollback:
71
+ * items already written before the failure stay written on disk.
72
+ */
73
+ export async function registerAllOrAbort(items, nameOf, writeOne) {
74
+ const results = [];
75
+ const written = [];
76
+ for (const item of items) {
77
+ try {
78
+ const result = await writeOne(item);
79
+ results.push(result);
80
+ written.push(nameOf(item));
81
+ }
82
+ catch (error) {
83
+ throw new PartialRegistrationError(written, error);
84
+ }
85
+ }
86
+ return results;
87
+ }
88
+ /**
89
+ * Records the items a batch already wrote before it aborted, so the saved config
90
+ * never claims less than what exists on disk (an artifact with no config entry can
91
+ * neither be listed nor unregistered). A failure to save is logged and swallowed:
92
+ * it must never mask the registration error the caller is about to rethrow.
93
+ */
94
+ export async function persistPartialWrites(written, untouched, save) {
95
+ if (written.length === 0) {
96
+ return;
97
+ }
98
+ try {
99
+ await save([...untouched, ...written]);
100
+ }
101
+ catch (error) {
102
+ logger.error('Failed to record partially written registrations', { error });
103
+ }
104
+ }
33
105
  export function determineChanges(selectedIds, allItems, registeredItems) {
34
106
  const selectedSet = new Set(selectedIds);
35
107
  const registeredIds = new Set(registeredItems.map(item => item.id));
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,cAAsB,EACtB,SAA2B,EAC3B,cAAsB,EACtB,YAAoB,EACpB,OAAkC;IAElC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAI9B,WAAqB,EACrB,QAAiB,EACjB,eAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,YAAY,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IAC5C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,WAAW,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,KAAK,GAAG,OAAO;IAC9D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Pure identifier resolution shared by `codemie setup assistants` and `codemie setup skills`.
3
+ *
4
+ * Resolves user-supplied identifiers (id, slug, or exact name) against a catalog,
5
+ * failing loudly instead of guessing when an identifier is unknown or ambiguous.
6
+ */
7
+ export interface ResolvableItem {
8
+ id: string;
9
+ name: string;
10
+ slug?: string;
11
+ }
12
+ /**
13
+ * Resolves each requested identifier against the catalog, matching case-insensitively
14
+ * by id, then slug, then exact name. Results are ordered like `identifiers`.
15
+ *
16
+ * Throws `RegistrationItemNotFoundError` when an identifier matches nothing, and
17
+ * `AmbiguousIdentifierError` — listing every candidate rather than picking one —
18
+ * whenever an identifier matches multiple catalog entries, whether they collide on
19
+ * id, slug or name. Since matching is case-insensitive throughout, entries whose
20
+ * keys differ only in case collide too.
21
+ */
22
+ export declare function resolveIdentifiers<T extends ResolvableItem>(kind: 'assistant' | 'skill', identifiers: string[], catalog: T[]): T[];
23
+ //# sourceMappingURL=identifier-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier-resolution.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/identifier-resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,cAAc,EACzD,IAAI,EAAE,WAAW,GAAG,OAAO,EAC3B,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAoCL"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Pure identifier resolution shared by `codemie setup assistants` and `codemie setup skills`.
3
+ *
4
+ * Resolves user-supplied identifiers (id, slug, or exact name) against a catalog,
5
+ * failing loudly instead of guessing when an identifier is unknown or ambiguous.
6
+ */
7
+ import { RegistrationItemNotFoundError, AmbiguousIdentifierError } from '../../../utils/errors.js';
8
+ function bucket(map, key, item) {
9
+ const existing = map.get(key);
10
+ if (existing) {
11
+ existing.push(item);
12
+ }
13
+ else {
14
+ map.set(key, [item]);
15
+ }
16
+ }
17
+ /**
18
+ * Resolves each requested identifier against the catalog, matching case-insensitively
19
+ * by id, then slug, then exact name. Results are ordered like `identifiers`.
20
+ *
21
+ * Throws `RegistrationItemNotFoundError` when an identifier matches nothing, and
22
+ * `AmbiguousIdentifierError` — listing every candidate rather than picking one —
23
+ * whenever an identifier matches multiple catalog entries, whether they collide on
24
+ * id, slug or name. Since matching is case-insensitive throughout, entries whose
25
+ * keys differ only in case collide too.
26
+ */
27
+ export function resolveIdentifiers(kind, identifiers, catalog) {
28
+ const byId = new Map();
29
+ const bySlug = new Map();
30
+ const byName = new Map();
31
+ for (const item of catalog) {
32
+ bucket(byId, item.id.toLowerCase(), item);
33
+ if (item.slug) {
34
+ bucket(bySlug, item.slug.toLowerCase(), item);
35
+ }
36
+ bucket(byName, item.name.toLowerCase(), item);
37
+ }
38
+ return identifiers.map((identifier) => {
39
+ const key = identifier.toLowerCase();
40
+ if (!key) {
41
+ throw new RegistrationItemNotFoundError(kind, identifier);
42
+ }
43
+ for (const candidates of [byId.get(key), bySlug.get(key), byName.get(key)]) {
44
+ if (!candidates) {
45
+ continue;
46
+ }
47
+ if (candidates.length > 1) {
48
+ throw new AmbiguousIdentifierError(kind, identifier, candidates);
49
+ }
50
+ return candidates[0];
51
+ }
52
+ throw new RegistrationItemNotFoundError(kind, identifier);
53
+ });
54
+ }
55
+ //# sourceMappingURL=identifier-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier-resolution.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/identifier-resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAQ5F,SAAS,MAAM,CAAI,GAAqB,EAAE,GAAW,EAAE,IAAO;IAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA2B,EAC3B,WAAqB,EACrB,OAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,IAAI,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Handles all data fetching for skills setup
5
5
  */
6
- import type { SkillListItem, SkillDetail, CodeMieClient } from 'codemie-sdk';
6
+ import { type SkillListItem, type SkillDetail, type CodeMieClient } from 'codemie-sdk';
7
7
  import type { CodemieSkill } from '../../../../env/types.js';
8
8
  export interface FetchSkillsParams {
9
9
  scope: 'registered' | 'project' | 'marketplace';
@@ -18,7 +18,8 @@ export interface FetchSkillsResult {
18
18
  export interface SkillDataFetcher {
19
19
  fetchSkills: (params: FetchSkillsParams) => Promise<FetchSkillsResult>;
20
20
  fetchSkillById: (id: string) => Promise<SkillDetail>;
21
- fetchSkillsByIds: (ids: string[], registeredSkills: CodemieSkill[]) => Promise<SkillListItem[]>;
21
+ fetchSkillsByIds: (ids: string[], registeredSkills: CodemieSkill[]) => Promise<SkillDetail[]>;
22
+ fetchAllVisibleSkills: () => Promise<SkillListItem[]>;
22
23
  }
23
24
  export interface SkillDataFetcherConfig {
24
25
  client: CodeMieClient;
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/skills/setup/data.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAenD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CA4FvF"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/skills/setup/data.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+CnD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,qBAAqB,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CA6IvF"}