@codemieai/code 0.0.15 → 0.0.16

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 (296) hide show
  1. package/README.md +24 -9
  2. package/dist/agents/codemie-code/agent.js +2 -2
  3. package/dist/agents/codemie-code/agent.js.map +1 -1
  4. package/dist/agents/codemie-code/config.d.ts.map +1 -1
  5. package/dist/agents/codemie-code/config.js +12 -4
  6. package/dist/agents/codemie-code/config.js.map +1 -1
  7. package/dist/agents/codemie-code/tools/planning.d.ts +1 -1
  8. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  9. package/dist/agents/core/AgentCLI.js +5 -4
  10. package/dist/agents/core/AgentCLI.js.map +1 -1
  11. package/dist/agents/core/BaseAgentAdapter.d.ts +1 -5
  12. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  13. package/dist/agents/core/BaseAgentAdapter.js +5 -26
  14. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  15. package/dist/agents/plugins/claude.plugin.js +1 -1
  16. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  17. package/dist/agents/plugins/codemie-code.plugin.js +1 -1
  18. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  19. package/dist/agents/plugins/codex.plugin.js +2 -2
  20. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  21. package/dist/agents/plugins/deepagents.plugin.js +1 -1
  22. package/dist/agents/plugins/deepagents.plugin.js.map +1 -1
  23. package/dist/agents/plugins/gemini.plugin.js +1 -1
  24. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  25. package/dist/analytics/index.d.ts.map +1 -1
  26. package/dist/analytics/index.js +3 -11
  27. package/dist/analytics/index.js.map +1 -1
  28. package/dist/analytics/remote-submission/cursor-manager.d.ts +1 -1
  29. package/dist/analytics/remote-submission/cursor-manager.js +2 -2
  30. package/dist/analytics/remote-submission/cursor-manager.js.map +1 -1
  31. package/dist/analytics/remote-submission/index.d.ts +2 -2
  32. package/dist/analytics/remote-submission/index.d.ts.map +1 -1
  33. package/dist/analytics/remote-submission/index.js +1 -1
  34. package/dist/analytics/remote-submission/index.js.map +1 -1
  35. package/dist/analytics/remote-submission/lock-manager.d.ts +1 -1
  36. package/dist/analytics/remote-submission/lock-manager.js +2 -2
  37. package/dist/analytics/remote-submission/lock-manager.js.map +1 -1
  38. package/dist/analytics/remote-submission/metric-transformer.d.ts +2 -30
  39. package/dist/analytics/remote-submission/metric-transformer.d.ts.map +1 -1
  40. package/dist/analytics/remote-submission/metric-transformer.js +24 -117
  41. package/dist/analytics/remote-submission/metric-transformer.js.map +1 -1
  42. package/dist/analytics/remote-submission/submitter.d.ts +1 -0
  43. package/dist/analytics/remote-submission/submitter.d.ts.map +1 -1
  44. package/dist/analytics/remote-submission/submitter.js +18 -37
  45. package/dist/analytics/remote-submission/submitter.js.map +1 -1
  46. package/dist/analytics/remote-submission/types.d.ts +5 -51
  47. package/dist/analytics/remote-submission/types.d.ts.map +1 -1
  48. package/dist/analytics/remote-submission/types.js.map +1 -1
  49. package/dist/cli/commands/auth.d.ts.map +1 -1
  50. package/dist/cli/commands/auth.js +10 -5
  51. package/dist/cli/commands/auth.js.map +1 -1
  52. package/dist/cli/commands/doctor/checks/AIConfigCheck.d.ts.map +1 -1
  53. package/dist/cli/commands/doctor/checks/AIConfigCheck.js +12 -5
  54. package/dist/cli/commands/doctor/checks/AIConfigCheck.js.map +1 -1
  55. package/dist/cli/commands/doctor/formatter.d.ts +1 -1
  56. package/dist/cli/commands/doctor/formatter.d.ts.map +1 -1
  57. package/dist/cli/commands/doctor/formatter.js +1 -6
  58. package/dist/cli/commands/doctor/formatter.js.map +1 -1
  59. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  60. package/dist/cli/commands/doctor/index.js +23 -8
  61. package/dist/cli/commands/doctor/index.js.map +1 -1
  62. package/dist/cli/commands/doctor/type-adapters.d.ts +18 -0
  63. package/dist/cli/commands/doctor/type-adapters.d.ts.map +1 -0
  64. package/dist/cli/commands/doctor/type-adapters.js +75 -0
  65. package/dist/cli/commands/doctor/type-adapters.js.map +1 -0
  66. package/dist/cli/commands/install.d.ts.map +1 -1
  67. package/dist/cli/commands/install.js +1 -6
  68. package/dist/cli/commands/install.js.map +1 -1
  69. package/dist/cli/commands/list.d.ts.map +1 -1
  70. package/dist/cli/commands/list.js +0 -5
  71. package/dist/cli/commands/list.js.map +1 -1
  72. package/dist/cli/commands/profile.js +90 -12
  73. package/dist/cli/commands/profile.js.map +1 -1
  74. package/dist/cli/commands/setup.d.ts.map +1 -1
  75. package/dist/cli/commands/setup.js +159 -660
  76. package/dist/cli/commands/setup.js.map +1 -1
  77. package/dist/cli/index.d.ts +1 -1
  78. package/dist/cli/index.d.ts.map +1 -1
  79. package/dist/cli/index.js +4 -1
  80. package/dist/cli/index.js.map +1 -1
  81. package/dist/providers/core/base/BaseHealthCheck.d.ts +57 -0
  82. package/dist/providers/core/base/BaseHealthCheck.d.ts.map +1 -0
  83. package/dist/providers/core/base/BaseHealthCheck.js +121 -0
  84. package/dist/providers/core/base/BaseHealthCheck.js.map +1 -0
  85. package/dist/providers/core/base/BaseModelProxy.d.ts +45 -0
  86. package/dist/providers/core/base/BaseModelProxy.d.ts.map +1 -0
  87. package/dist/providers/core/base/BaseModelProxy.js +43 -0
  88. package/dist/providers/core/base/BaseModelProxy.js.map +1 -0
  89. package/dist/providers/core/base/http-client.d.ts +57 -0
  90. package/dist/providers/core/base/http-client.d.ts.map +1 -0
  91. package/dist/providers/core/base/http-client.js +240 -0
  92. package/dist/providers/core/base/http-client.js.map +1 -0
  93. package/dist/providers/core/decorators.d.ts +13 -0
  94. package/dist/providers/core/decorators.d.ts.map +1 -0
  95. package/dist/providers/core/decorators.js +15 -0
  96. package/dist/providers/core/decorators.js.map +1 -0
  97. package/dist/providers/core/index.d.ts +13 -0
  98. package/dist/providers/core/index.d.ts.map +1 -0
  99. package/dist/providers/core/index.js +14 -0
  100. package/dist/providers/core/index.js.map +1 -0
  101. package/dist/providers/core/registry.d.ts +66 -0
  102. package/dist/providers/core/registry.d.ts.map +1 -0
  103. package/dist/providers/core/registry.js +105 -0
  104. package/dist/providers/core/registry.js.map +1 -0
  105. package/dist/providers/core/types.d.ts +285 -0
  106. package/dist/providers/core/types.d.ts.map +1 -0
  107. package/dist/providers/core/types.js +7 -0
  108. package/dist/providers/core/types.js.map +1 -0
  109. package/dist/providers/index.d.ts +20 -0
  110. package/dist/providers/index.d.ts.map +1 -0
  111. package/dist/providers/index.js +22 -0
  112. package/dist/providers/index.js.map +1 -0
  113. package/dist/providers/integration/setup-ui.d.ts +76 -0
  114. package/dist/providers/integration/setup-ui.d.ts.map +1 -0
  115. package/dist/providers/integration/setup-ui.js +141 -0
  116. package/dist/providers/integration/setup-ui.js.map +1 -0
  117. package/dist/providers/plugins/litellm/index.d.ts +8 -0
  118. package/dist/providers/plugins/litellm/index.d.ts.map +1 -0
  119. package/dist/providers/plugins/litellm/index.js +12 -0
  120. package/dist/providers/plugins/litellm/index.js.map +1 -0
  121. package/dist/providers/plugins/litellm/litellm.models.d.ts +27 -0
  122. package/dist/providers/plugins/litellm/litellm.models.d.ts.map +1 -0
  123. package/dist/providers/plugins/litellm/litellm.models.js +48 -0
  124. package/dist/providers/plugins/litellm/litellm.models.js.map +1 -0
  125. package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts +8 -0
  126. package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -0
  127. package/dist/providers/plugins/litellm/litellm.setup-steps.js +52 -0
  128. package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -0
  129. package/dist/providers/plugins/litellm/litellm.template.d.ts +11 -0
  130. package/dist/providers/plugins/litellm/litellm.template.d.ts.map +1 -0
  131. package/dist/providers/plugins/litellm/litellm.template.js +59 -0
  132. package/dist/providers/plugins/litellm/litellm.template.js.map +1 -0
  133. package/dist/providers/plugins/ollama/index.d.ts +11 -0
  134. package/dist/providers/plugins/ollama/index.d.ts.map +1 -0
  135. package/dist/providers/plugins/ollama/index.js +11 -0
  136. package/dist/providers/plugins/ollama/index.js.map +1 -0
  137. package/dist/providers/plugins/ollama/ollama.health.d.ts +48 -0
  138. package/dist/providers/plugins/ollama/ollama.health.d.ts.map +1 -0
  139. package/dist/providers/plugins/ollama/ollama.health.js +87 -0
  140. package/dist/providers/plugins/ollama/ollama.health.js.map +1 -0
  141. package/dist/providers/plugins/ollama/ollama.models.d.ts +47 -0
  142. package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -0
  143. package/dist/providers/plugins/ollama/ollama.models.js +252 -0
  144. package/dist/providers/plugins/ollama/ollama.models.js.map +1 -0
  145. package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts +16 -0
  146. package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -0
  147. package/dist/providers/plugins/ollama/ollama.setup-steps.js +164 -0
  148. package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -0
  149. package/dist/providers/plugins/ollama/ollama.template.d.ts +11 -0
  150. package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -0
  151. package/dist/providers/plugins/ollama/ollama.template.js +87 -0
  152. package/dist/providers/plugins/ollama/ollama.template.js.map +1 -0
  153. package/dist/providers/plugins/sso/index.d.ts +12 -0
  154. package/dist/providers/plugins/sso/index.d.ts.map +1 -0
  155. package/dist/providers/plugins/sso/index.js +12 -0
  156. package/dist/providers/plugins/sso/index.js.map +1 -0
  157. package/dist/providers/plugins/sso/sso.auth.d.ts +50 -0
  158. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -0
  159. package/dist/{utils/sso-auth.js → providers/plugins/sso/sso.auth.js} +37 -2
  160. package/dist/providers/plugins/sso/sso.auth.js.map +1 -0
  161. package/dist/providers/plugins/sso/sso.health.d.ts +44 -0
  162. package/dist/providers/plugins/sso/sso.health.d.ts.map +1 -0
  163. package/dist/providers/plugins/sso/sso.health.js +178 -0
  164. package/dist/providers/plugins/sso/sso.health.js.map +1 -0
  165. package/dist/{utils/codemie-model-fetcher.d.ts → providers/plugins/sso/sso.http-client.d.ts} +16 -5
  166. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -0
  167. package/dist/providers/plugins/sso/sso.http-client.js +187 -0
  168. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -0
  169. package/dist/providers/plugins/sso/sso.models.d.ts +48 -0
  170. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -0
  171. package/dist/providers/plugins/sso/sso.models.js +139 -0
  172. package/dist/providers/plugins/sso/sso.models.js.map +1 -0
  173. package/dist/providers/plugins/sso/sso.setup-steps.d.ts +16 -0
  174. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -0
  175. package/dist/providers/plugins/sso/sso.setup-steps.js +145 -0
  176. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -0
  177. package/dist/providers/plugins/sso/sso.template.d.ts +11 -0
  178. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -0
  179. package/dist/providers/plugins/sso/sso.template.js +35 -0
  180. package/dist/providers/plugins/sso/sso.template.js.map +1 -0
  181. package/dist/proxy/errors.d.ts.map +1 -0
  182. package/dist/proxy/errors.js.map +1 -0
  183. package/dist/proxy/http-client.d.ts.map +1 -0
  184. package/dist/{utils/proxy → proxy}/http-client.js +1 -1
  185. package/dist/proxy/http-client.js.map +1 -0
  186. package/dist/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
  187. package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.js +7 -3
  188. package/dist/proxy/plugins/header-injection.plugin.js.map +1 -0
  189. package/dist/{utils/proxy → proxy}/plugins/index.d.ts +2 -2
  190. package/dist/proxy/plugins/index.d.ts.map +1 -0
  191. package/dist/{utils/proxy → proxy}/plugins/index.js +3 -5
  192. package/dist/proxy/plugins/index.js.map +1 -0
  193. package/dist/proxy/plugins/logging.plugin.d.ts +22 -0
  194. package/dist/proxy/plugins/logging.plugin.d.ts.map +1 -0
  195. package/dist/proxy/plugins/logging.plugin.js +92 -0
  196. package/dist/proxy/plugins/logging.plugin.js.map +1 -0
  197. package/dist/proxy/plugins/registry.d.ts.map +1 -0
  198. package/dist/{utils/proxy → proxy}/plugins/registry.js +1 -1
  199. package/dist/proxy/plugins/registry.js.map +1 -0
  200. package/dist/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
  201. package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.js +1 -1
  202. package/dist/proxy/plugins/sso-auth.plugin.js.map +1 -0
  203. package/dist/{utils/proxy → proxy}/plugins/types.d.ts +3 -3
  204. package/dist/proxy/plugins/types.d.ts.map +1 -0
  205. package/dist/proxy/plugins/types.js.map +1 -0
  206. package/dist/proxy/types.d.ts.map +1 -0
  207. package/dist/proxy/types.js.map +1 -0
  208. package/dist/utils/codemie-proxy.d.ts +5 -4
  209. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  210. package/dist/utils/codemie-proxy.js +31 -26
  211. package/dist/utils/codemie-proxy.js.map +1 -1
  212. package/dist/utils/config-loader.d.ts +1 -6
  213. package/dist/utils/config-loader.d.ts.map +1 -1
  214. package/dist/utils/config-loader.js +30 -90
  215. package/dist/utils/config-loader.js.map +1 -1
  216. package/dist/utils/credential-store.d.ts +1 -1
  217. package/dist/utils/credential-store.d.ts.map +1 -1
  218. package/dist/utils/logger.d.ts.map +1 -1
  219. package/dist/utils/logger.js +0 -2
  220. package/dist/utils/logger.js.map +1 -1
  221. package/package.json +1 -1
  222. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts +0 -11
  223. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +0 -1
  224. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +0 -264
  225. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +0 -1
  226. package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts +0 -12
  227. package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts.map +0 -1
  228. package/dist/cli/commands/doctor/providers/BaseProviderCheck.js +0 -12
  229. package/dist/cli/commands/doctor/providers/BaseProviderCheck.js.map +0 -1
  230. package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts +0 -11
  231. package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts.map +0 -1
  232. package/dist/cli/commands/doctor/providers/StandardProviderCheck.js +0 -97
  233. package/dist/cli/commands/doctor/providers/StandardProviderCheck.js.map +0 -1
  234. package/dist/cli/commands/doctor/providers/index.d.ts +0 -30
  235. package/dist/cli/commands/doctor/providers/index.d.ts.map +0 -1
  236. package/dist/cli/commands/doctor/providers/index.js +0 -66
  237. package/dist/cli/commands/doctor/providers/index.js.map +0 -1
  238. package/dist/types/sso.d.ts +0 -42
  239. package/dist/types/sso.d.ts.map +0 -1
  240. package/dist/types/sso.js +0 -2
  241. package/dist/types/sso.js.map +0 -1
  242. package/dist/utils/async-tips.d.ts +0 -64
  243. package/dist/utils/async-tips.d.ts.map +0 -1
  244. package/dist/utils/async-tips.js +0 -203
  245. package/dist/utils/async-tips.js.map +0 -1
  246. package/dist/utils/codemie-integration-validator.d.ts +0 -18
  247. package/dist/utils/codemie-integration-validator.d.ts.map +0 -1
  248. package/dist/utils/codemie-integration-validator.js +0 -119
  249. package/dist/utils/codemie-integration-validator.js.map +0 -1
  250. package/dist/utils/codemie-model-fetcher.d.ts.map +0 -1
  251. package/dist/utils/codemie-model-fetcher.js +0 -317
  252. package/dist/utils/codemie-model-fetcher.js.map +0 -1
  253. package/dist/utils/health-checker.d.ts +0 -20
  254. package/dist/utils/health-checker.d.ts.map +0 -1
  255. package/dist/utils/health-checker.js +0 -172
  256. package/dist/utils/health-checker.js.map +0 -1
  257. package/dist/utils/model-fetcher.d.ts +0 -21
  258. package/dist/utils/model-fetcher.d.ts.map +0 -1
  259. package/dist/utils/model-fetcher.js +0 -148
  260. package/dist/utils/model-fetcher.js.map +0 -1
  261. package/dist/utils/proxy/errors.d.ts.map +0 -1
  262. package/dist/utils/proxy/errors.js.map +0 -1
  263. package/dist/utils/proxy/http-client.d.ts.map +0 -1
  264. package/dist/utils/proxy/http-client.js.map +0 -1
  265. package/dist/utils/proxy/plugins/analytics.plugin.d.ts +0 -19
  266. package/dist/utils/proxy/plugins/analytics.plugin.d.ts.map +0 -1
  267. package/dist/utils/proxy/plugins/analytics.plugin.js +0 -84
  268. package/dist/utils/proxy/plugins/analytics.plugin.js.map +0 -1
  269. package/dist/utils/proxy/plugins/header-injection.plugin.d.ts.map +0 -1
  270. package/dist/utils/proxy/plugins/header-injection.plugin.js.map +0 -1
  271. package/dist/utils/proxy/plugins/index.d.ts.map +0 -1
  272. package/dist/utils/proxy/plugins/index.js.map +0 -1
  273. package/dist/utils/proxy/plugins/registry.d.ts.map +0 -1
  274. package/dist/utils/proxy/plugins/registry.js.map +0 -1
  275. package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts.map +0 -1
  276. package/dist/utils/proxy/plugins/sso-auth.plugin.js.map +0 -1
  277. package/dist/utils/proxy/plugins/types.d.ts.map +0 -1
  278. package/dist/utils/proxy/plugins/types.js.map +0 -1
  279. package/dist/utils/proxy/types.d.ts.map +0 -1
  280. package/dist/utils/proxy/types.js.map +0 -1
  281. package/dist/utils/sso-auth.d.ts +0 -15
  282. package/dist/utils/sso-auth.d.ts.map +0 -1
  283. package/dist/utils/sso-auth.js.map +0 -1
  284. package/dist/utils/tips.d.ts +0 -35
  285. package/dist/utils/tips.d.ts.map +0 -1
  286. package/dist/utils/tips.js +0 -93
  287. package/dist/utils/tips.js.map +0 -1
  288. /package/dist/{utils/proxy → proxy}/errors.d.ts +0 -0
  289. /package/dist/{utils/proxy → proxy}/errors.js +0 -0
  290. /package/dist/{utils/proxy → proxy}/http-client.d.ts +0 -0
  291. /package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.d.ts +0 -0
  292. /package/dist/{utils/proxy → proxy}/plugins/registry.d.ts +0 -0
  293. /package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.d.ts +0 -0
  294. /package/dist/{utils/proxy → proxy}/plugins/types.js +0 -0
  295. /package/dist/{utils/proxy → proxy}/types.d.ts +0 -0
  296. /package/dist/{utils/proxy → proxy}/types.js +0 -0
@@ -0,0 +1,285 @@
1
+ /**
2
+ * Core Types for Provider Plugin Architecture
3
+ *
4
+ * Defines all TypeScript interfaces and types for the provider plugin system.
5
+ */
6
+ import type { CodeMieConfigOptions } from '../../env/types.js';
7
+ /**
8
+ * Provider capabilities
9
+ */
10
+ export type ProviderCapability = 'streaming' | 'tools' | 'vision' | 'embeddings' | 'model-management' | 'fine-tuning' | 'function-calling' | 'json-mode' | 'sso-auth';
11
+ /**
12
+ * Model metadata for enriched display
13
+ */
14
+ export interface ModelMetadata {
15
+ name: string;
16
+ description?: string;
17
+ popular?: boolean;
18
+ contextWindow?: number;
19
+ pricing?: {
20
+ input: number;
21
+ output: number;
22
+ };
23
+ }
24
+ /**
25
+ * Authentication type for providers
26
+ */
27
+ export type AuthenticationType = 'api-key' | 'sso' | 'oauth' | 'none';
28
+ /**
29
+ * Provider template - declarative metadata
30
+ *
31
+ * Auto-registers with ProviderRegistry via @registerProvider decorator
32
+ */
33
+ export interface ProviderTemplate {
34
+ name: string;
35
+ displayName: string;
36
+ description: string;
37
+ defaultPort?: number;
38
+ defaultBaseUrl: string;
39
+ requiresAuth?: boolean;
40
+ authType?: AuthenticationType;
41
+ priority?: number;
42
+ defaultProfileName?: string;
43
+ recommendedModels: string[];
44
+ modelMetadata?: Record<string, ModelMetadata>;
45
+ capabilities: ProviderCapability[];
46
+ supportsModelInstallation: boolean;
47
+ supportsStreaming?: boolean;
48
+ envMapping?: {
49
+ baseUrl?: string[];
50
+ apiKey?: string[];
51
+ model?: string[];
52
+ };
53
+ healthCheckEndpoint?: string;
54
+ setupInstructions?: string;
55
+ customProperties?: Record<string, unknown>;
56
+ }
57
+ /**
58
+ * Model information
59
+ */
60
+ export interface ModelInfo {
61
+ id: string;
62
+ name: string;
63
+ description?: string;
64
+ size?: number;
65
+ contextWindow?: number;
66
+ popular?: boolean;
67
+ metadata?: Record<string, unknown>;
68
+ }
69
+ /**
70
+ * Health check result
71
+ */
72
+ export interface HealthCheckResult {
73
+ provider: string;
74
+ status: 'healthy' | 'unhealthy' | 'unreachable';
75
+ message: string;
76
+ version?: string;
77
+ models?: ModelInfo[];
78
+ remediation?: string;
79
+ details?: HealthCheckDetail[];
80
+ }
81
+ /**
82
+ * Health check detail
83
+ */
84
+ export interface HealthCheckDetail {
85
+ status: 'ok' | 'warning' | 'error';
86
+ message: string;
87
+ hint?: string;
88
+ }
89
+ /**
90
+ * Health check configuration
91
+ */
92
+ export interface HealthCheckConfig {
93
+ provider: string;
94
+ baseUrl: string;
95
+ timeout?: number;
96
+ headers?: Record<string, string>;
97
+ }
98
+ /**
99
+ * Provider health check interface
100
+ *
101
+ * Extends base implementation for common patterns
102
+ */
103
+ export interface ProviderHealthCheck {
104
+ /**
105
+ * Check if this health check supports the given provider
106
+ */
107
+ supports(provider: string): boolean;
108
+ /**
109
+ * Run health check against provider
110
+ */
111
+ check(config: CodeMieConfigOptions): Promise<HealthCheckResult>;
112
+ }
113
+ /**
114
+ * Installation progress callback
115
+ */
116
+ export interface InstallProgress {
117
+ status: 'downloading' | 'installing' | 'complete' | 'error';
118
+ progress?: number;
119
+ message?: string;
120
+ }
121
+ /**
122
+ * Model installer interface
123
+ *
124
+ * For providers that support local model installation (Ollama, LM Studio)
125
+ */
126
+ export interface ModelInstallerProxy {
127
+ /**
128
+ * Check if installation is supported
129
+ */
130
+ supportsInstallation(): boolean;
131
+ /**
132
+ * List installed models
133
+ */
134
+ listModels(): Promise<ModelInfo[]>;
135
+ /**
136
+ * Install model with progress tracking
137
+ */
138
+ installModel(modelName: string, onProgress?: (status: InstallProgress) => void): Promise<void>;
139
+ /**
140
+ * Remove model
141
+ */
142
+ removeModel(modelName: string): Promise<void>;
143
+ /**
144
+ * Get detailed model information
145
+ */
146
+ getModelInfo(modelName: string): Promise<ModelInfo | null>;
147
+ }
148
+ /**
149
+ * Provider model fetcher interface
150
+ *
151
+ * For setup wizard - discover available models
152
+ */
153
+ export interface ProviderModelFetcher {
154
+ /**
155
+ * Check if this fetcher supports the given provider
156
+ */
157
+ supports(provider: string): boolean;
158
+ /**
159
+ * Fetch available models for setup wizard
160
+ *
161
+ * Returns installed models if available, otherwise recommended models
162
+ */
163
+ fetchModels(config: CodeMieConfigOptions): Promise<ModelInfo[]>;
164
+ }
165
+ /**
166
+ * Provider credentials result
167
+ */
168
+ export interface ProviderCredentials {
169
+ baseUrl?: string;
170
+ apiKey?: string;
171
+ additionalConfig?: Record<string, unknown>;
172
+ }
173
+ /**
174
+ * Validation result
175
+ */
176
+ export interface ValidationResult {
177
+ valid: boolean;
178
+ errors?: string[];
179
+ }
180
+ /**
181
+ * Provider setup steps interface
182
+ *
183
+ * Defines interactive setup flow for a provider
184
+ *
185
+ * Note: name should match the provider template name
186
+ * Display name and other metadata come from the template
187
+ */
188
+ export interface ProviderSetupSteps {
189
+ name: string;
190
+ /**
191
+ * Step 1: Gather credentials/configuration
192
+ *
193
+ * Interactive prompts for API keys, URLs, etc.
194
+ */
195
+ getCredentials(isUpdate?: boolean): Promise<ProviderCredentials>;
196
+ /**
197
+ * Step 2: Fetch available models
198
+ *
199
+ * Query provider API to discover models
200
+ */
201
+ fetchModels(credentials: ProviderCredentials): Promise<string[]>;
202
+ /**
203
+ * Step 3: Build final configuration
204
+ *
205
+ * Transform credentials + model selection into CodeMieConfigOptions
206
+ */
207
+ buildConfig(credentials: ProviderCredentials, selectedModel: string): Partial<CodeMieConfigOptions>;
208
+ /**
209
+ * Optional: Install model during setup
210
+ *
211
+ * For providers that support model installation (e.g., Ollama)
212
+ */
213
+ installModel?(credentials: ProviderCredentials, selectedModel: string, availableModels: string[]): Promise<void>;
214
+ /**
215
+ * Optional: Custom validation
216
+ */
217
+ validate?(config: Partial<CodeMieConfigOptions>): Promise<ValidationResult>;
218
+ /**
219
+ * Optional: Post-setup actions
220
+ */
221
+ postSetup?(config: Partial<CodeMieConfigOptions>): Promise<void>;
222
+ }
223
+ /**
224
+ * SSO Authentication Types
225
+ */
226
+ /**
227
+ * SSO authentication configuration
228
+ */
229
+ export interface SSOAuthConfig {
230
+ codeMieUrl: string;
231
+ timeout?: number;
232
+ }
233
+ /**
234
+ * SSO authentication result
235
+ */
236
+ export interface SSOAuthResult {
237
+ success: boolean;
238
+ apiUrl?: string;
239
+ cookies?: Record<string, string>;
240
+ error?: string;
241
+ }
242
+ /**
243
+ * CodeMie model metadata
244
+ */
245
+ export interface CodeMieModel {
246
+ id?: string;
247
+ base_name?: string;
248
+ deployment_name?: string;
249
+ label?: string;
250
+ name?: string;
251
+ description?: string;
252
+ context_length?: number;
253
+ provider?: string;
254
+ multimodal?: boolean;
255
+ react_agent?: boolean;
256
+ enabled?: boolean;
257
+ default?: boolean;
258
+ }
259
+ /**
260
+ * SSO credentials for storage
261
+ */
262
+ export interface SSOCredentials {
263
+ cookies: Record<string, string>;
264
+ apiUrl: string;
265
+ expiresAt?: number;
266
+ }
267
+ /**
268
+ * CodeMie integration metadata
269
+ */
270
+ export interface CodeMieIntegration {
271
+ id: string;
272
+ alias: string;
273
+ project_name: string;
274
+ credential_type: string;
275
+ created_at?: string;
276
+ updated_at?: string;
277
+ }
278
+ /**
279
+ * CodeMie integrations API response
280
+ */
281
+ export interface CodeMieIntegrationsResponse {
282
+ integrations?: CodeMieIntegration[];
283
+ [key: string]: any;
284
+ }
285
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core Types for Provider Plugin Architecture
3
+ *
4
+ * Defines all TypeScript interfaces and types for the provider plugin system.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/core/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Providers Module - Main Entry Point
3
+ *
4
+ * Imports all provider plugins to trigger auto-registration with ProviderRegistry.
5
+ * Exports core types and registry for external use.
6
+ */
7
+ export { ProviderRegistry } from './core/registry.js';
8
+ export type { ProviderTemplate, ProviderCapability, ModelMetadata, ModelInfo, HealthCheckResult, HealthCheckDetail, HealthCheckConfig, ProviderHealthCheck, InstallProgress, ModelInstallerProxy, ProviderModelFetcher, ProviderCredentials, ValidationResult, ProviderSetupSteps } from './core/types.js';
9
+ export { registerProvider } from './core/decorators.js';
10
+ export { BaseHealthCheck } from './core/base/BaseHealthCheck.js';
11
+ export { BaseModelProxy } from './core/base/BaseModelProxy.js';
12
+ export { HTTPClient } from './core/base/http-client.js';
13
+ export type { HTTPClientConfig, HTTPResponse } from './core/base/http-client.js';
14
+ import './plugins/ollama/index.js';
15
+ import './plugins/sso/index.js';
16
+ import './plugins/litellm/index.js';
17
+ export * as Ollama from './plugins/ollama/index.js';
18
+ export * as SSO from './plugins/sso/index.js';
19
+ export * as LiteLLM from './plugins/litellm/index.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAIjF,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AAGpC,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Providers Module - Main Entry Point
3
+ *
4
+ * Imports all provider plugins to trigger auto-registration with ProviderRegistry.
5
+ * Exports core types and registry for external use.
6
+ */
7
+ // Core exports
8
+ export { ProviderRegistry } from './core/registry.js';
9
+ export { registerProvider } from './core/decorators.js';
10
+ export { BaseHealthCheck } from './core/base/BaseHealthCheck.js';
11
+ export { BaseModelProxy } from './core/base/BaseModelProxy.js';
12
+ export { HTTPClient } from './core/base/http-client.js';
13
+ // Import plugins to trigger auto-registration
14
+ // Plugin imports execute their auto-registration code on import
15
+ import './plugins/ollama/index.js';
16
+ import './plugins/sso/index.js';
17
+ import './plugins/litellm/index.js';
18
+ // Re-export plugin modules for direct access if needed
19
+ export * as Ollama from './plugins/ollama/index.js';
20
+ export * as SSO from './plugins/sso/index.js';
21
+ export * as LiteLLM from './plugins/litellm/index.js';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiBtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,8CAA8C;AAC9C,gEAAgE;AAChE,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AAEpC,uDAAuD;AACvD,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Setup UI Utilities
3
+ *
4
+ * Auto-generates UI elements based on provider capabilities and metadata.
5
+ * Provides consistent, polished user experience across all providers.
6
+ */
7
+ import type { ProviderTemplate } from '../core/types.js';
8
+ /**
9
+ * Format provider choice for inquirer
10
+ *
11
+ * Auto-generates formatted choice with:
12
+ * - Auth indicator (🔐 for auth required, 🔓 for no auth)
13
+ * - Display name
14
+ * - Description
15
+ * - Capability hints (dimmed)
16
+ */
17
+ export declare function formatProviderChoice(template: ProviderTemplate): string;
18
+ /**
19
+ * Get provider choice object for inquirer
20
+ *
21
+ * Returns properly formatted choice with name and value
22
+ */
23
+ export declare function getProviderChoice(template: ProviderTemplate): {
24
+ name: string;
25
+ value: string;
26
+ };
27
+ /**
28
+ * Get all provider choices for inquirer
29
+ *
30
+ * Returns array of formatted choices sorted by:
31
+ * 1. Recommended providers first (SSO)
32
+ * 2. Alphabetically
33
+ */
34
+ export declare function getAllProviderChoices(providers: ProviderTemplate[]): Array<{
35
+ name: string;
36
+ value: string;
37
+ }>;
38
+ /**
39
+ * Display provider setup instructions
40
+ *
41
+ * Shows markdown-formatted instructions if available
42
+ */
43
+ export declare function displaySetupInstructions(template: ProviderTemplate): void;
44
+ /**
45
+ * Format model choice with metadata
46
+ *
47
+ * Enhances model display with metadata if available
48
+ */
49
+ export declare function formatModelChoice(modelId: string, template?: ProviderTemplate): {
50
+ name: string;
51
+ value: string;
52
+ };
53
+ /**
54
+ * Get all model choices with metadata
55
+ *
56
+ * Returns array of formatted model choices, sorted by:
57
+ * 1. Recommended models first (template.recommendedModels)
58
+ * 2. Alphabetically by model ID
59
+ */
60
+ export declare function getAllModelChoices(models: string[], template?: ProviderTemplate): Array<{
61
+ name: string;
62
+ value: string;
63
+ }>;
64
+ /**
65
+ * Display success message
66
+ *
67
+ * Shows formatted success message with configuration summary
68
+ */
69
+ export declare function displaySetupSuccess(profileName: string, provider: string, model: string): void;
70
+ /**
71
+ * Display error with remediation
72
+ *
73
+ * Shows formatted error message with actionable steps
74
+ */
75
+ export declare function displaySetupError(error: Error, remediation?: string): void;
76
+ //# sourceMappingURL=setup-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-ui.d.ts","sourceRoot":"","sources":["../../../src/providers/integration/setup-ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAK7F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB3G;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAQzE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,gBAAgB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA4BjC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBxC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAMN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ1E"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Setup UI Utilities
3
+ *
4
+ * Auto-generates UI elements based on provider capabilities and metadata.
5
+ * Provides consistent, polished user experience across all providers.
6
+ */
7
+ import chalk from 'chalk';
8
+ /**
9
+ * Format provider choice for inquirer
10
+ *
11
+ * Auto-generates formatted choice with:
12
+ * - Auth indicator (🔐 for auth required, 🔓 for no auth)
13
+ * - Display name
14
+ * - Description
15
+ * - Capability hints (dimmed)
16
+ */
17
+ export function formatProviderChoice(template) {
18
+ return `${template.displayName} - ${template.description}`;
19
+ }
20
+ /**
21
+ * Get provider choice object for inquirer
22
+ *
23
+ * Returns properly formatted choice with name and value
24
+ */
25
+ export function getProviderChoice(template) {
26
+ return {
27
+ name: formatProviderChoice(template),
28
+ value: template.name
29
+ };
30
+ }
31
+ /**
32
+ * Get all provider choices for inquirer
33
+ *
34
+ * Returns array of formatted choices sorted by:
35
+ * 1. Recommended providers first (SSO)
36
+ * 2. Alphabetically
37
+ */
38
+ export function getAllProviderChoices(providers) {
39
+ // Sort providers: by priority (lower number = higher priority), then alphabetically
40
+ const sorted = [...providers].sort((a, b) => {
41
+ // First, sort by priority (default to 999 if not specified)
42
+ const priorityA = a.priority ?? 999;
43
+ const priorityB = b.priority ?? 999;
44
+ if (priorityA !== priorityB) {
45
+ return priorityA - priorityB; // Lower priority number comes first
46
+ }
47
+ // If priority is the same, sort alphabetically by display name
48
+ return a.displayName.localeCompare(b.displayName);
49
+ });
50
+ return sorted.map(getProviderChoice);
51
+ }
52
+ /**
53
+ * Display provider setup instructions
54
+ *
55
+ * Shows markdown-formatted instructions if available
56
+ */
57
+ export function displaySetupInstructions(template) {
58
+ if (!template.setupInstructions) {
59
+ return;
60
+ }
61
+ console.log(chalk.cyan('\n📖 Setup Instructions:\n'));
62
+ console.log(template.setupInstructions);
63
+ console.log('');
64
+ }
65
+ /**
66
+ * Format model choice with metadata
67
+ *
68
+ * Enhances model display with metadata if available
69
+ */
70
+ export function formatModelChoice(modelId, template) {
71
+ const metadata = template?.modelMetadata?.[modelId];
72
+ // Check if model is recommended (either via metadata or recommendedModels array)
73
+ const isRecommended = metadata?.popular || template?.recommendedModels?.includes(modelId) || false;
74
+ // If no metadata and not recommended, return plain format
75
+ if (!metadata && !isRecommended) {
76
+ return { name: modelId, value: modelId };
77
+ }
78
+ const popularBadge = isRecommended ? chalk.yellow('⭐ ') : '';
79
+ const mainLine = `${popularBadge}${chalk.white.bold(metadata?.name || modelId)}`;
80
+ const details = [];
81
+ if (metadata?.description) {
82
+ details.push(metadata.description);
83
+ }
84
+ if (metadata?.contextWindow) {
85
+ details.push(`${metadata.contextWindow.toLocaleString()} tokens`);
86
+ }
87
+ const detailLine = details.length > 0 ? `\n ${chalk.dim(details.join(' • '))}` : '';
88
+ return {
89
+ name: mainLine + detailLine,
90
+ value: modelId
91
+ };
92
+ }
93
+ /**
94
+ * Get all model choices with metadata
95
+ *
96
+ * Returns array of formatted model choices, sorted by:
97
+ * 1. Recommended models first (template.recommendedModels)
98
+ * 2. Alphabetically by model ID
99
+ */
100
+ export function getAllModelChoices(models, template) {
101
+ // Sort models using common rules
102
+ const sortedModels = [...models].sort((a, b) => {
103
+ // Check if models are recommended
104
+ const aRecommended = template?.recommendedModels?.includes(a) || false;
105
+ const bRecommended = template?.recommendedModels?.includes(b) || false;
106
+ // Recommended models first
107
+ if (aRecommended && !bRecommended)
108
+ return -1;
109
+ if (!aRecommended && bRecommended)
110
+ return 1;
111
+ // Then sort alphabetically
112
+ return a.localeCompare(b);
113
+ });
114
+ return sortedModels.map(model => formatModelChoice(model, template));
115
+ }
116
+ /**
117
+ * Display success message
118
+ *
119
+ * Shows formatted success message with configuration summary
120
+ */
121
+ export function displaySetupSuccess(profileName, provider, model) {
122
+ console.log(chalk.bold.green(`\n✅ Profile "${profileName}" configured successfully!\n`));
123
+ console.log(chalk.cyan(`🔗 Provider: ${provider}`));
124
+ console.log(chalk.cyan(`🤖 Model: ${model}`));
125
+ console.log(chalk.cyan(`📁 Config: ~/.codemie/config.json\n`));
126
+ console.log(chalk.bold(`🚀 Ready to use! Try: ${chalk.white('codemie-code "test task"')}\n`));
127
+ }
128
+ /**
129
+ * Display error with remediation
130
+ *
131
+ * Shows formatted error message with actionable steps
132
+ */
133
+ export function displaySetupError(error, remediation) {
134
+ console.log(chalk.red(`\n❌ Setup failed: ${error.message}\n`));
135
+ if (remediation) {
136
+ console.log(chalk.yellow('💡 How to fix:\n'));
137
+ console.log(remediation);
138
+ console.log('');
139
+ }
140
+ }
141
+ //# sourceMappingURL=setup-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-ui.js","sourceRoot":"","sources":["../../../src/providers/integration/setup-ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA0B;IAC7D,OAAO,GAAG,QAAQ,CAAC,WAAW,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA0B;IAC1D,OAAO;QACL,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC;QACpC,KAAK,EAAE,QAAQ,CAAC,IAAI;KACrB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAA6B;IACjE,oFAAoF;IACpF,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1C,4DAA4D;QAC5D,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;QACpC,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;QAEpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,SAAS,GAAG,SAAS,CAAC,CAAC,oCAAoC;QACpE,CAAC;QAED,+DAA+D;QAC/D,OAAO,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA0B;IACjE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,QAA2B;IAE3B,MAAM,QAAQ,GAAG,QAAQ,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;IAEpD,iFAAiF;IACjF,MAAM,aAAa,GAAG,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;IAEnG,0DAA0D;IAC1D,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;IAEjF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,OAAO;QACL,IAAI,EAAE,QAAQ,GAAG,UAAU;QAC3B,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAgB,EAChB,QAA2B;IAE3B,iCAAiC;IACjC,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7C,kCAAkC;QAClC,MAAM,YAAY,GAAG,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QACvE,MAAM,YAAY,GAAG,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QAEvE,2BAA2B;QAC3B,IAAI,YAAY,IAAI,CAAC,YAAY;YAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,IAAI,YAAY;YAAE,OAAO,CAAC,CAAC;QAE5C,2BAA2B;QAC3B,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,QAAgB,EAChB,KAAa;IAEb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,WAAW,8BAA8B,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;AAChG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY,EAAE,WAAoB;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE/D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * LiteLLM Provider - Complete Provider Implementation
3
+ *
4
+ * Auto-registers with ProviderRegistry on import.
5
+ */
6
+ export { LiteLLMTemplate } from './litellm.template.js';
7
+ export { LiteLLMSetupSteps } from './litellm.setup-steps.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/litellm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * LiteLLM Provider - Complete Provider Implementation
3
+ *
4
+ * Auto-registers with ProviderRegistry on import.
5
+ */
6
+ import { ProviderRegistry } from '../../core/registry.js';
7
+ import { LiteLLMSetupSteps } from './litellm.setup-steps.js';
8
+ export { LiteLLMTemplate } from './litellm.template.js';
9
+ export { LiteLLMSetupSteps } from './litellm.setup-steps.js';
10
+ // Register setup steps
11
+ ProviderRegistry.registerSetupSteps('litellm', LiteLLMSetupSteps);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/plugins/litellm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,uBAAuB;AACvB,gBAAgB,CAAC,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * LiteLLM Model Proxy
3
+ *
4
+ * Fetches available models from LiteLLM proxy server via /v1/models endpoint.
5
+ */
6
+ import type { CodeMieConfigOptions } from '../../../env/types.js';
7
+ import type { ModelInfo } from '../../core/types.js';
8
+ import { BaseModelProxy } from '../../core/base/BaseModelProxy.js';
9
+ /**
10
+ * LiteLLM model proxy implementation
11
+ *
12
+ * Fetches models from LiteLLM's OpenAI-compatible /v1/models endpoint
13
+ */
14
+ export declare class LiteLLMModelProxy extends BaseModelProxy {
15
+ constructor(baseUrl: string, apiKey?: string);
16
+ private apiKey?;
17
+ supports(provider: string): boolean;
18
+ /**
19
+ * List models from LiteLLM proxy
20
+ */
21
+ listModels(): Promise<ModelInfo[]>;
22
+ /**
23
+ * Fetch models for setup wizard
24
+ */
25
+ fetchModels(_config: CodeMieConfigOptions): Promise<ModelInfo[]>;
26
+ }
27
+ //# sourceMappingURL=litellm.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litellm.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/litellm/litellm.models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK5C,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBxC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAGvE"}