@intentsolutions/blueprint 2.6.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/analytics/collector.d.ts +73 -0
  2. package/dist/analytics/collector.d.ts.map +1 -0
  3. package/dist/analytics/collector.js +239 -0
  4. package/dist/analytics/collector.js.map +1 -0
  5. package/dist/analytics/dashboard.d.ts +62 -0
  6. package/dist/analytics/dashboard.d.ts.map +1 -0
  7. package/dist/analytics/dashboard.js +346 -0
  8. package/dist/analytics/dashboard.js.map +1 -0
  9. package/dist/analytics/index.d.ts +75 -0
  10. package/dist/analytics/index.d.ts.map +1 -0
  11. package/dist/analytics/index.js +115 -0
  12. package/dist/analytics/index.js.map +1 -0
  13. package/dist/analytics/types.d.ts +169 -0
  14. package/dist/analytics/types.d.ts.map +1 -0
  15. package/dist/analytics/types.js +16 -0
  16. package/dist/analytics/types.js.map +1 -0
  17. package/dist/cli.js +359 -1
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/analytics.d.ts +38 -0
  20. package/dist/commands/analytics.d.ts.map +1 -0
  21. package/dist/commands/analytics.js +196 -0
  22. package/dist/commands/analytics.js.map +1 -0
  23. package/dist/commands/index.d.ts +26 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +101 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/marketplace.d.ts +52 -0
  28. package/dist/commands/marketplace.d.ts.map +1 -0
  29. package/dist/commands/marketplace.js +356 -0
  30. package/dist/commands/marketplace.js.map +1 -0
  31. package/dist/enterprise/api/index.d.ts +8 -0
  32. package/dist/enterprise/api/index.d.ts.map +1 -0
  33. package/dist/enterprise/api/index.js +8 -0
  34. package/dist/enterprise/api/index.js.map +1 -0
  35. package/dist/enterprise/api/server.d.ts +79 -0
  36. package/dist/enterprise/api/server.d.ts.map +1 -0
  37. package/dist/enterprise/api/server.js +468 -0
  38. package/dist/enterprise/api/server.js.map +1 -0
  39. package/dist/enterprise/api/types.d.ts +269 -0
  40. package/dist/enterprise/api/types.d.ts.map +1 -0
  41. package/dist/enterprise/api/types.js +6 -0
  42. package/dist/enterprise/api/types.js.map +1 -0
  43. package/dist/enterprise/api/webhooks.d.ts +214 -0
  44. package/dist/enterprise/api/webhooks.d.ts.map +1 -0
  45. package/dist/enterprise/api/webhooks.js +308 -0
  46. package/dist/enterprise/api/webhooks.js.map +1 -0
  47. package/dist/enterprise/index.d.ts +9 -0
  48. package/dist/enterprise/index.d.ts.map +1 -0
  49. package/dist/enterprise/index.js +13 -0
  50. package/dist/enterprise/index.js.map +1 -0
  51. package/dist/enterprise/models/claude.d.ts +23 -0
  52. package/dist/enterprise/models/claude.d.ts.map +1 -0
  53. package/dist/enterprise/models/claude.js +176 -0
  54. package/dist/enterprise/models/claude.js.map +1 -0
  55. package/dist/enterprise/models/gemini.d.ts +25 -0
  56. package/dist/enterprise/models/gemini.d.ts.map +1 -0
  57. package/dist/enterprise/models/gemini.js +199 -0
  58. package/dist/enterprise/models/gemini.js.map +1 -0
  59. package/dist/enterprise/models/index.d.ts +11 -0
  60. package/dist/enterprise/models/index.d.ts.map +1 -0
  61. package/dist/enterprise/models/index.js +11 -0
  62. package/dist/enterprise/models/index.js.map +1 -0
  63. package/dist/enterprise/models/ollama.d.ts +32 -0
  64. package/dist/enterprise/models/ollama.d.ts.map +1 -0
  65. package/dist/enterprise/models/ollama.js +285 -0
  66. package/dist/enterprise/models/ollama.js.map +1 -0
  67. package/dist/enterprise/models/openai.d.ts +27 -0
  68. package/dist/enterprise/models/openai.d.ts.map +1 -0
  69. package/dist/enterprise/models/openai.js +222 -0
  70. package/dist/enterprise/models/openai.js.map +1 -0
  71. package/dist/enterprise/models/registry.d.ts +101 -0
  72. package/dist/enterprise/models/registry.d.ts.map +1 -0
  73. package/dist/enterprise/models/registry.js +263 -0
  74. package/dist/enterprise/models/registry.js.map +1 -0
  75. package/dist/enterprise/models/types.d.ts +141 -0
  76. package/dist/enterprise/models/types.d.ts.map +1 -0
  77. package/dist/enterprise/models/types.js +40 -0
  78. package/dist/enterprise/models/types.js.map +1 -0
  79. package/dist/enterprise/team/audit.d.ts +153 -0
  80. package/dist/enterprise/team/audit.d.ts.map +1 -0
  81. package/dist/enterprise/team/audit.js +346 -0
  82. package/dist/enterprise/team/audit.js.map +1 -0
  83. package/dist/enterprise/team/config.d.ts +83 -0
  84. package/dist/enterprise/team/config.d.ts.map +1 -0
  85. package/dist/enterprise/team/config.js +245 -0
  86. package/dist/enterprise/team/config.js.map +1 -0
  87. package/dist/enterprise/team/index.d.ts +7 -0
  88. package/dist/enterprise/team/index.d.ts.map +1 -0
  89. package/dist/enterprise/team/index.js +7 -0
  90. package/dist/enterprise/team/index.js.map +1 -0
  91. package/dist/enterprise/templates/engine.d.ts +100 -0
  92. package/dist/enterprise/templates/engine.d.ts.map +1 -0
  93. package/dist/enterprise/templates/engine.js +429 -0
  94. package/dist/enterprise/templates/engine.js.map +1 -0
  95. package/dist/enterprise/templates/index.d.ts +8 -0
  96. package/dist/enterprise/templates/index.d.ts.map +1 -0
  97. package/dist/enterprise/templates/index.js +8 -0
  98. package/dist/enterprise/templates/index.js.map +1 -0
  99. package/dist/enterprise/templates/loader.d.ts +65 -0
  100. package/dist/enterprise/templates/loader.d.ts.map +1 -0
  101. package/dist/enterprise/templates/loader.js +269 -0
  102. package/dist/enterprise/templates/loader.js.map +1 -0
  103. package/dist/enterprise/templates/types.d.ts +212 -0
  104. package/dist/enterprise/templates/types.d.ts.map +1 -0
  105. package/dist/enterprise/templates/types.js +55 -0
  106. package/dist/enterprise/templates/types.js.map +1 -0
  107. package/dist/marketplace/index.d.ts +86 -0
  108. package/dist/marketplace/index.d.ts.map +1 -0
  109. package/dist/marketplace/index.js +112 -0
  110. package/dist/marketplace/index.js.map +1 -0
  111. package/dist/marketplace/manager.d.ts +81 -0
  112. package/dist/marketplace/manager.d.ts.map +1 -0
  113. package/dist/marketplace/manager.js +292 -0
  114. package/dist/marketplace/manager.js.map +1 -0
  115. package/dist/marketplace/packs/fastapi.d.ts +8 -0
  116. package/dist/marketplace/packs/fastapi.d.ts.map +1 -0
  117. package/dist/marketplace/packs/fastapi.js +728 -0
  118. package/dist/marketplace/packs/fastapi.js.map +1 -0
  119. package/dist/marketplace/packs/fintech.d.ts +8 -0
  120. package/dist/marketplace/packs/fintech.d.ts.map +1 -0
  121. package/dist/marketplace/packs/fintech.js +366 -0
  122. package/dist/marketplace/packs/fintech.js.map +1 -0
  123. package/dist/marketplace/packs/gdpr.d.ts +8 -0
  124. package/dist/marketplace/packs/gdpr.d.ts.map +1 -0
  125. package/dist/marketplace/packs/gdpr.js +637 -0
  126. package/dist/marketplace/packs/gdpr.js.map +1 -0
  127. package/dist/marketplace/packs/healthtech.d.ts +8 -0
  128. package/dist/marketplace/packs/healthtech.d.ts.map +1 -0
  129. package/dist/marketplace/packs/healthtech.js +470 -0
  130. package/dist/marketplace/packs/healthtech.js.map +1 -0
  131. package/dist/marketplace/packs/hipaa.d.ts +8 -0
  132. package/dist/marketplace/packs/hipaa.d.ts.map +1 -0
  133. package/dist/marketplace/packs/hipaa.js +473 -0
  134. package/dist/marketplace/packs/hipaa.js.map +1 -0
  135. package/dist/marketplace/packs/index.d.ts +250 -0
  136. package/dist/marketplace/packs/index.d.ts.map +1 -0
  137. package/dist/marketplace/packs/index.js +205 -0
  138. package/dist/marketplace/packs/index.js.map +1 -0
  139. package/dist/marketplace/packs/nextjs.d.ts +8 -0
  140. package/dist/marketplace/packs/nextjs.d.ts.map +1 -0
  141. package/dist/marketplace/packs/nextjs.js +532 -0
  142. package/dist/marketplace/packs/nextjs.js.map +1 -0
  143. package/dist/marketplace/packs/rails.d.ts +8 -0
  144. package/dist/marketplace/packs/rails.d.ts.map +1 -0
  145. package/dist/marketplace/packs/rails.js +866 -0
  146. package/dist/marketplace/packs/rails.js.map +1 -0
  147. package/dist/marketplace/packs/saas.d.ts +8 -0
  148. package/dist/marketplace/packs/saas.d.ts.map +1 -0
  149. package/dist/marketplace/packs/saas.js +516 -0
  150. package/dist/marketplace/packs/saas.js.map +1 -0
  151. package/dist/marketplace/packs/soc2.d.ts +8 -0
  152. package/dist/marketplace/packs/soc2.d.ts.map +1 -0
  153. package/dist/marketplace/packs/soc2.js +455 -0
  154. package/dist/marketplace/packs/soc2.js.map +1 -0
  155. package/dist/marketplace/registry.d.ts +76 -0
  156. package/dist/marketplace/registry.d.ts.map +1 -0
  157. package/dist/marketplace/registry.js +454 -0
  158. package/dist/marketplace/registry.js.map +1 -0
  159. package/dist/marketplace/types.d.ts +202 -0
  160. package/dist/marketplace/types.d.ts.map +1 -0
  161. package/dist/marketplace/types.js +61 -0
  162. package/dist/marketplace/types.js.map +1 -0
  163. package/dist/mcp/index.js +1 -1
  164. package/dist/plugins/builtin/html-formatter.d.ts +11 -0
  165. package/dist/plugins/builtin/html-formatter.d.ts.map +1 -0
  166. package/dist/plugins/builtin/html-formatter.js +214 -0
  167. package/dist/plugins/builtin/html-formatter.js.map +1 -0
  168. package/dist/plugins/builtin/index.d.ts +21 -0
  169. package/dist/plugins/builtin/index.d.ts.map +1 -0
  170. package/dist/plugins/builtin/index.js +31 -0
  171. package/dist/plugins/builtin/index.js.map +1 -0
  172. package/dist/plugins/builtin/markdown-formatter.d.ts +11 -0
  173. package/dist/plugins/builtin/markdown-formatter.d.ts.map +1 -0
  174. package/dist/plugins/builtin/markdown-formatter.js +77 -0
  175. package/dist/plugins/builtin/markdown-formatter.js.map +1 -0
  176. package/dist/plugins/builtin/quality-validator.d.ts +11 -0
  177. package/dist/plugins/builtin/quality-validator.d.ts.map +1 -0
  178. package/dist/plugins/builtin/quality-validator.js +355 -0
  179. package/dist/plugins/builtin/quality-validator.js.map +1 -0
  180. package/dist/plugins/index.d.ts +98 -0
  181. package/dist/plugins/index.d.ts.map +1 -0
  182. package/dist/plugins/index.js +187 -0
  183. package/dist/plugins/index.js.map +1 -0
  184. package/dist/plugins/manager.d.ts +122 -0
  185. package/dist/plugins/manager.d.ts.map +1 -0
  186. package/dist/plugins/manager.js +349 -0
  187. package/dist/plugins/manager.js.map +1 -0
  188. package/dist/plugins/types.d.ts +348 -0
  189. package/dist/plugins/types.d.ts.map +1 -0
  190. package/dist/plugins/types.js +13 -0
  191. package/dist/plugins/types.js.map +1 -0
  192. package/package.json +5 -4
@@ -0,0 +1,222 @@
1
+ /**
2
+ * OpenAI Provider
3
+ * Implementation for GPT-4 and other OpenAI models
4
+ */
5
+ const OPENAI_API_URL = 'https://api.openai.com/v1';
6
+ export class OpenAIProvider {
7
+ name = 'openai';
8
+ apiKey;
9
+ model;
10
+ baseUrl;
11
+ organization;
12
+ constructor(config) {
13
+ this.apiKey = config.apiKey || process.env.OPENAI_API_KEY || '';
14
+ this.model = config.model || 'gpt-4o';
15
+ this.baseUrl = config.baseUrl || OPENAI_API_URL;
16
+ this.organization = config.organization || process.env.OPENAI_ORG_ID;
17
+ }
18
+ isConfigured() {
19
+ return !!this.apiKey;
20
+ }
21
+ async complete(request) {
22
+ const messages = this.buildMessages(request);
23
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
24
+ method: 'POST',
25
+ headers: this.buildHeaders(),
26
+ body: JSON.stringify({
27
+ model: this.model,
28
+ messages,
29
+ max_tokens: request.maxTokens,
30
+ temperature: request.temperature,
31
+ stop: request.stopSequences,
32
+ }),
33
+ });
34
+ if (!response.ok) {
35
+ const error = await response.text();
36
+ throw new Error(`OpenAI API error: ${response.status} - ${error}`);
37
+ }
38
+ const data = await response.json();
39
+ return {
40
+ content: data.choices[0]?.message?.content || '',
41
+ model: data.model,
42
+ usage: data.usage ? {
43
+ promptTokens: data.usage.prompt_tokens,
44
+ completionTokens: data.usage.completion_tokens,
45
+ totalTokens: data.usage.total_tokens,
46
+ } : undefined,
47
+ finishReason: this.mapFinishReason(data.choices[0]?.finish_reason),
48
+ meta: { id: data.id },
49
+ };
50
+ }
51
+ async *stream(request) {
52
+ const messages = this.buildMessages(request);
53
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
54
+ method: 'POST',
55
+ headers: this.buildHeaders(),
56
+ body: JSON.stringify({
57
+ model: this.model,
58
+ messages,
59
+ max_tokens: request.maxTokens,
60
+ temperature: request.temperature,
61
+ stop: request.stopSequences,
62
+ stream: true,
63
+ }),
64
+ });
65
+ if (!response.ok) {
66
+ const error = await response.text();
67
+ throw new Error(`OpenAI API error: ${response.status} - ${error}`);
68
+ }
69
+ const reader = response.body?.getReader();
70
+ if (!reader)
71
+ throw new Error('No response body');
72
+ const decoder = new TextDecoder();
73
+ let buffer = '';
74
+ while (true) {
75
+ const { done, value } = await reader.read();
76
+ if (done)
77
+ break;
78
+ buffer += decoder.decode(value, { stream: true });
79
+ const lines = buffer.split('\n');
80
+ buffer = lines.pop() || '';
81
+ for (const line of lines) {
82
+ if (!line.startsWith('data: '))
83
+ continue;
84
+ const data = line.slice(6);
85
+ if (data === '[DONE]') {
86
+ yield { content: '', done: true };
87
+ return;
88
+ }
89
+ try {
90
+ const event = JSON.parse(data);
91
+ const content = event.choices[0]?.delta?.content || '';
92
+ const done = event.choices[0]?.finish_reason !== null;
93
+ if (content) {
94
+ yield { content, done: false };
95
+ }
96
+ if (done) {
97
+ yield { content: '', done: true };
98
+ return;
99
+ }
100
+ }
101
+ catch {
102
+ // Ignore parse errors
103
+ }
104
+ }
105
+ }
106
+ }
107
+ async listModels() {
108
+ const response = await fetch(`${this.baseUrl}/models`, {
109
+ headers: this.buildHeaders(),
110
+ });
111
+ if (!response.ok) {
112
+ // Return known models if API fails
113
+ return this.getKnownModels();
114
+ }
115
+ const data = await response.json();
116
+ // Filter to chat models
117
+ const chatModels = data.data
118
+ .filter(m => m.id.includes('gpt') || m.id.includes('o1'))
119
+ .map(m => ({
120
+ id: m.id,
121
+ name: m.id,
122
+ provider: 'openai',
123
+ }));
124
+ return chatModels.length > 0 ? chatModels : this.getKnownModels();
125
+ }
126
+ async getModelInfo(model) {
127
+ const models = this.getKnownModels();
128
+ return models.find(m => m.id === model) || null;
129
+ }
130
+ buildHeaders() {
131
+ const headers = {
132
+ 'Content-Type': 'application/json',
133
+ 'Authorization': `Bearer ${this.apiKey}`,
134
+ };
135
+ if (this.organization) {
136
+ headers['OpenAI-Organization'] = this.organization;
137
+ }
138
+ return headers;
139
+ }
140
+ buildMessages(request) {
141
+ const messages = [];
142
+ if (request.system) {
143
+ messages.push({ role: 'system', content: request.system });
144
+ }
145
+ for (const msg of request.messages) {
146
+ messages.push({ role: msg.role, content: msg.content });
147
+ }
148
+ return messages;
149
+ }
150
+ mapFinishReason(reason) {
151
+ switch (reason) {
152
+ case 'stop':
153
+ return 'stop';
154
+ case 'length':
155
+ return 'length';
156
+ case 'content_filter':
157
+ return 'content_filter';
158
+ default:
159
+ return 'stop';
160
+ }
161
+ }
162
+ getKnownModels() {
163
+ return [
164
+ {
165
+ id: 'gpt-4o',
166
+ name: 'GPT-4o',
167
+ provider: 'openai',
168
+ contextWindow: 128000,
169
+ maxOutput: 16384,
170
+ capabilities: ['text', 'vision', 'code'],
171
+ pricing: { input: 2.5, output: 10 },
172
+ },
173
+ {
174
+ id: 'gpt-4-turbo',
175
+ name: 'GPT-4 Turbo',
176
+ provider: 'openai',
177
+ contextWindow: 128000,
178
+ maxOutput: 4096,
179
+ capabilities: ['text', 'vision', 'code'],
180
+ pricing: { input: 10, output: 30 },
181
+ },
182
+ {
183
+ id: 'gpt-3.5-turbo',
184
+ name: 'GPT-3.5 Turbo',
185
+ provider: 'openai',
186
+ contextWindow: 16385,
187
+ maxOutput: 4096,
188
+ capabilities: ['text', 'code'],
189
+ pricing: { input: 0.5, output: 1.5 },
190
+ },
191
+ {
192
+ id: 'o1',
193
+ name: 'o1',
194
+ provider: 'openai',
195
+ contextWindow: 200000,
196
+ maxOutput: 100000,
197
+ capabilities: ['text', 'code', 'reasoning'],
198
+ pricing: { input: 15, output: 60 },
199
+ },
200
+ {
201
+ id: 'o1-mini',
202
+ name: 'o1-mini',
203
+ provider: 'openai',
204
+ contextWindow: 128000,
205
+ maxOutput: 65536,
206
+ capabilities: ['text', 'code', 'reasoning'],
207
+ pricing: { input: 3, output: 12 },
208
+ },
209
+ ];
210
+ }
211
+ }
212
+ /**
213
+ * Create an OpenAI provider instance
214
+ */
215
+ export function createOpenAIProvider(config = {}) {
216
+ return new OpenAIProvider({
217
+ provider: 'openai',
218
+ model: config.model || 'gpt-4o',
219
+ ...config,
220
+ });
221
+ }
222
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/enterprise/models/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,cAAc,GAAG,2BAA2B,CAAC;AAEnD,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAiB,CAAC;IAC1B,MAAM,CAAS;IACf,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,YAAY,CAAU;IAE9B,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACvE,CAAC;IAED,YAAY;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ;gBACR,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,IAAI,EAAE,OAAO,CAAC,aAAa;aAC5B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAoB,CAAC;QAErD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACtC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC9C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;aACrC,CAAC,CAAC,CAAC,SAAS;YACb,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;YAClE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAA0B;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ;gBACR,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,IAAI,EAAE,OAAO,CAAC,aAAa;gBAC3B,MAAM,EAAE,IAAI;aACb,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;oBACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;oBACvD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;oBAEtD,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBACjC,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;wBAClC,OAAO;oBACT,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE;YACrD,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,mCAAmC;YACnC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAqC,CAAC;QAEtE,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,EAAE;YACV,QAAQ,EAAE,QAAiB;SAC5B,CAAC,CAAC,CAAC;QAEN,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;IAClD,CAAC;IAEO,YAAY;QAClB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACzC,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QACrD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,OAA0B;QAC9C,MAAM,QAAQ,GAA6C,EAAE,CAAC;QAE9D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,eAAe,CAAC,MAAe;QACrC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,gBAAgB;gBACnB,OAAO,gBAAgB,CAAC;YAC1B;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,OAAO;YACL;gBACE,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;gBACxC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;aACpC;YACD;gBACE,EAAE,EAAE,aAAa;gBACjB,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;gBACxC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;aACnC;YACD;gBACE,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;aACrC;YACD;gBACE,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,SAAS,EAAE,MAAM;gBACjB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;gBAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;aACnC;YACD;gBACE,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;gBAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;aAClC;SACF,CAAC;IACJ,CAAC;CACF;AAuBD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA+B,EAAE;IACpE,OAAO,IAAI,cAAc,CAAC;QACxB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;QAC/B,GAAG,MAAM;KACV,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Model Registry
3
+ * Unified interface for managing multiple model providers
4
+ */
5
+ import type { ModelProvider, ModelConfig, IModelProvider, CompletionRequest, CompletionResponse, StreamChunk, ModelInfo } from './types.js';
6
+ export interface RegistryConfig {
7
+ /** Default provider to use */
8
+ defaultProvider?: ModelProvider;
9
+ /** Provider-specific configurations */
10
+ providers?: {
11
+ claude?: Partial<ModelConfig>;
12
+ openai?: Partial<ModelConfig>;
13
+ gemini?: Partial<ModelConfig>;
14
+ ollama?: Partial<ModelConfig>;
15
+ };
16
+ }
17
+ export declare class ModelRegistry {
18
+ private providers;
19
+ private defaultProvider;
20
+ private configs;
21
+ constructor(config?: RegistryConfig);
22
+ /**
23
+ * Initialize all providers with configurations
24
+ */
25
+ private initializeProviders;
26
+ /**
27
+ * Get a provider by name
28
+ */
29
+ getProvider(name: ModelProvider): IModelProvider | undefined;
30
+ /**
31
+ * Get the default provider
32
+ */
33
+ getDefaultProvider(): IModelProvider;
34
+ /**
35
+ * Set the default provider
36
+ */
37
+ setDefaultProvider(name: ModelProvider): void;
38
+ /**
39
+ * List all available providers
40
+ */
41
+ listProviders(): Array<{
42
+ name: ModelProvider;
43
+ configured: boolean;
44
+ }>;
45
+ /**
46
+ * List configured (ready to use) providers
47
+ */
48
+ listConfiguredProviders(): ModelProvider[];
49
+ /**
50
+ * Complete using a specific provider or default
51
+ */
52
+ complete(request: CompletionRequest, providerName?: ModelProvider): Promise<CompletionResponse>;
53
+ /**
54
+ * Stream using a specific provider or default
55
+ */
56
+ stream(request: CompletionRequest, providerName?: ModelProvider): AsyncGenerator<StreamChunk>;
57
+ /**
58
+ * Complete with automatic provider selection based on model alias
59
+ */
60
+ completeWithAlias(alias: string, request: CompletionRequest): Promise<CompletionResponse>;
61
+ /**
62
+ * Resolve a model alias to provider and model
63
+ */
64
+ resolveAlias(alias: string): {
65
+ provider: ModelProvider;
66
+ model: string;
67
+ };
68
+ /**
69
+ * Create a provider instance
70
+ */
71
+ private createProvider;
72
+ /**
73
+ * List all available models across all providers
74
+ */
75
+ listAllModels(): Promise<ModelInfo[]>;
76
+ /**
77
+ * Get model info by ID (searches all providers)
78
+ */
79
+ getModelInfo(modelId: string): Promise<ModelInfo | null>;
80
+ /**
81
+ * Auto-select best available provider
82
+ */
83
+ selectBestProvider(): ModelProvider;
84
+ /**
85
+ * Configure a provider at runtime
86
+ */
87
+ configure(provider: ModelProvider, config: Partial<ModelConfig>): void;
88
+ }
89
+ /**
90
+ * Create a model registry instance
91
+ */
92
+ export declare function createModelRegistry(config?: RegistryConfig): ModelRegistry;
93
+ /**
94
+ * Get or create the global registry
95
+ */
96
+ export declare function getGlobalRegistry(): ModelRegistry;
97
+ /**
98
+ * Configure the global registry
99
+ */
100
+ export declare function configureGlobalRegistry(config: RegistryConfig): void;
101
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/enterprise/models/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACV,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,uCAAuC;IACvC,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAiD;IAClE,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,OAAO,CAA8C;gBAEjD,MAAM,GAAE,cAAmB;IAKvC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS;IAI5D;;OAEG;IACH,kBAAkB,IAAI,cAAc;IAIpC;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAO7C;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAOpE;;OAEG;IACH,uBAAuB,IAAI,aAAa,EAAE;IAM1C;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,YAAY,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAgB9B;;OAEG;IACH,MAAM,CACJ,OAAO,EAAE,iBAAiB,EAC1B,YAAY,CAAC,EAAE,aAAa,GAC3B,cAAc,CAAC,WAAW,CAAC;IAgB9B;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC;IAiB9B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAsBvE;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAe3C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAS9D;;OAEG;IACH,kBAAkB,IAAI,aAAa;IAcnC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;CAWvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,aAAa,CAE1E;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAKjD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAEpE"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Model Registry
3
+ * Unified interface for managing multiple model providers
4
+ */
5
+ import { MODEL_ALIASES } from './types.js';
6
+ import { ClaudeProvider } from './claude.js';
7
+ import { OpenAIProvider } from './openai.js';
8
+ import { GeminiProvider } from './gemini.js';
9
+ import { OllamaProvider } from './ollama.js';
10
+ export class ModelRegistry {
11
+ providers = new Map();
12
+ defaultProvider = 'claude';
13
+ configs = new Map();
14
+ constructor(config = {}) {
15
+ this.defaultProvider = config.defaultProvider || 'claude';
16
+ this.initializeProviders(config.providers);
17
+ }
18
+ /**
19
+ * Initialize all providers with configurations
20
+ */
21
+ initializeProviders(configs) {
22
+ // Claude
23
+ const claudeConfig = {
24
+ provider: 'claude',
25
+ model: configs?.claude?.model || 'claude-sonnet-4-20250514',
26
+ apiKey: configs?.claude?.apiKey,
27
+ baseUrl: configs?.claude?.baseUrl,
28
+ };
29
+ this.configs.set('claude', claudeConfig);
30
+ this.providers.set('claude', new ClaudeProvider(claudeConfig));
31
+ // OpenAI
32
+ const openaiConfig = {
33
+ provider: 'openai',
34
+ model: configs?.openai?.model || 'gpt-4o',
35
+ apiKey: configs?.openai?.apiKey,
36
+ baseUrl: configs?.openai?.baseUrl,
37
+ organization: configs?.openai?.organization,
38
+ };
39
+ this.configs.set('openai', openaiConfig);
40
+ this.providers.set('openai', new OpenAIProvider(openaiConfig));
41
+ // Gemini
42
+ const geminiConfig = {
43
+ provider: 'gemini',
44
+ model: configs?.gemini?.model || 'gemini-2.0-flash',
45
+ apiKey: configs?.gemini?.apiKey,
46
+ baseUrl: configs?.gemini?.baseUrl,
47
+ projectId: configs?.gemini?.projectId,
48
+ region: configs?.gemini?.region,
49
+ };
50
+ this.configs.set('gemini', geminiConfig);
51
+ this.providers.set('gemini', new GeminiProvider(geminiConfig));
52
+ // Ollama
53
+ const ollamaConfig = {
54
+ provider: 'ollama',
55
+ model: configs?.ollama?.model || 'llama3.2',
56
+ baseUrl: configs?.ollama?.baseUrl,
57
+ };
58
+ this.configs.set('ollama', ollamaConfig);
59
+ this.providers.set('ollama', new OllamaProvider(ollamaConfig));
60
+ }
61
+ /**
62
+ * Get a provider by name
63
+ */
64
+ getProvider(name) {
65
+ return this.providers.get(name);
66
+ }
67
+ /**
68
+ * Get the default provider
69
+ */
70
+ getDefaultProvider() {
71
+ return this.providers.get(this.defaultProvider);
72
+ }
73
+ /**
74
+ * Set the default provider
75
+ */
76
+ setDefaultProvider(name) {
77
+ if (!this.providers.has(name)) {
78
+ throw new Error(`Unknown provider: ${name}`);
79
+ }
80
+ this.defaultProvider = name;
81
+ }
82
+ /**
83
+ * List all available providers
84
+ */
85
+ listProviders() {
86
+ return Array.from(this.providers.entries()).map(([name, provider]) => ({
87
+ name,
88
+ configured: provider.isConfigured(),
89
+ }));
90
+ }
91
+ /**
92
+ * List configured (ready to use) providers
93
+ */
94
+ listConfiguredProviders() {
95
+ return Array.from(this.providers.entries())
96
+ .filter(([_, provider]) => provider.isConfigured())
97
+ .map(([name]) => name);
98
+ }
99
+ /**
100
+ * Complete using a specific provider or default
101
+ */
102
+ async complete(request, providerName) {
103
+ const provider = providerName
104
+ ? this.providers.get(providerName)
105
+ : this.getDefaultProvider();
106
+ if (!provider) {
107
+ throw new Error(`Provider not found: ${providerName}`);
108
+ }
109
+ if (!provider.isConfigured()) {
110
+ throw new Error(`Provider ${provider.name} is not configured`);
111
+ }
112
+ return provider.complete(request);
113
+ }
114
+ /**
115
+ * Stream using a specific provider or default
116
+ */
117
+ stream(request, providerName) {
118
+ const provider = providerName
119
+ ? this.providers.get(providerName)
120
+ : this.getDefaultProvider();
121
+ if (!provider) {
122
+ throw new Error(`Provider not found: ${providerName}`);
123
+ }
124
+ if (!provider.isConfigured()) {
125
+ throw new Error(`Provider ${provider.name} is not configured`);
126
+ }
127
+ return provider.stream(request);
128
+ }
129
+ /**
130
+ * Complete with automatic provider selection based on model alias
131
+ */
132
+ async completeWithAlias(alias, request) {
133
+ const { provider, model } = this.resolveAlias(alias);
134
+ // Temporarily set the model for this request
135
+ const providerInstance = this.providers.get(provider);
136
+ if (!providerInstance) {
137
+ throw new Error(`Provider not found: ${provider}`);
138
+ }
139
+ // Create a new provider with the specific model
140
+ const config = this.configs.get(provider);
141
+ const tempConfig = { ...config, model };
142
+ const tempProvider = this.createProvider(tempConfig);
143
+ return tempProvider.complete(request);
144
+ }
145
+ /**
146
+ * Resolve a model alias to provider and model
147
+ */
148
+ resolveAlias(alias) {
149
+ // Check aliases first
150
+ const aliasEntry = MODEL_ALIASES[alias];
151
+ if (aliasEntry) {
152
+ return aliasEntry;
153
+ }
154
+ // Check if it's a full model ID
155
+ if (alias.includes('claude')) {
156
+ return { provider: 'claude', model: alias };
157
+ }
158
+ if (alias.includes('gpt') || alias.includes('o1')) {
159
+ return { provider: 'openai', model: alias };
160
+ }
161
+ if (alias.includes('gemini')) {
162
+ return { provider: 'gemini', model: alias };
163
+ }
164
+ // Assume it's an Ollama model
165
+ return { provider: 'ollama', model: alias };
166
+ }
167
+ /**
168
+ * Create a provider instance
169
+ */
170
+ createProvider(config) {
171
+ switch (config.provider) {
172
+ case 'claude':
173
+ return new ClaudeProvider(config);
174
+ case 'openai':
175
+ return new OpenAIProvider(config);
176
+ case 'gemini':
177
+ return new GeminiProvider(config);
178
+ case 'ollama':
179
+ return new OllamaProvider(config);
180
+ default:
181
+ throw new Error(`Unknown provider: ${config.provider}`);
182
+ }
183
+ }
184
+ /**
185
+ * List all available models across all providers
186
+ */
187
+ async listAllModels() {
188
+ const allModels = [];
189
+ for (const [_, provider] of this.providers) {
190
+ try {
191
+ const models = await provider.listModels();
192
+ allModels.push(...models);
193
+ }
194
+ catch {
195
+ // Skip providers that fail to list models
196
+ }
197
+ }
198
+ return allModels;
199
+ }
200
+ /**
201
+ * Get model info by ID (searches all providers)
202
+ */
203
+ async getModelInfo(modelId) {
204
+ const { provider } = this.resolveAlias(modelId);
205
+ const providerInstance = this.providers.get(provider);
206
+ if (!providerInstance)
207
+ return null;
208
+ return providerInstance.getModelInfo(modelId);
209
+ }
210
+ /**
211
+ * Auto-select best available provider
212
+ */
213
+ selectBestProvider() {
214
+ // Priority: Claude > OpenAI > Gemini > Ollama
215
+ const priority = ['claude', 'openai', 'gemini', 'ollama'];
216
+ for (const provider of priority) {
217
+ const instance = this.providers.get(provider);
218
+ if (instance?.isConfigured()) {
219
+ return provider;
220
+ }
221
+ }
222
+ return 'ollama'; // Fallback to local
223
+ }
224
+ /**
225
+ * Configure a provider at runtime
226
+ */
227
+ configure(provider, config) {
228
+ const existing = this.configs.get(provider);
229
+ const newConfig = {
230
+ ...existing,
231
+ ...config,
232
+ provider,
233
+ };
234
+ this.configs.set(provider, newConfig);
235
+ this.providers.set(provider, this.createProvider(newConfig));
236
+ }
237
+ }
238
+ /**
239
+ * Create a model registry instance
240
+ */
241
+ export function createModelRegistry(config) {
242
+ return new ModelRegistry(config);
243
+ }
244
+ /**
245
+ * Singleton registry instance
246
+ */
247
+ let globalRegistry = null;
248
+ /**
249
+ * Get or create the global registry
250
+ */
251
+ export function getGlobalRegistry() {
252
+ if (!globalRegistry) {
253
+ globalRegistry = createModelRegistry();
254
+ }
255
+ return globalRegistry;
256
+ }
257
+ /**
258
+ * Configure the global registry
259
+ */
260
+ export function configureGlobalRegistry(config) {
261
+ globalRegistry = createModelRegistry(config);
262
+ }
263
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/enterprise/models/registry.ts"],"names":[],"mappings":"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"}