@modular-prompt/driver 0.4.5

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +597 -0
  3. package/dist/anthropic/anthropic-driver.d.ts +47 -0
  4. package/dist/anthropic/anthropic-driver.d.ts.map +1 -0
  5. package/dist/anthropic/anthropic-driver.js +217 -0
  6. package/dist/anthropic/anthropic-driver.js.map +1 -0
  7. package/dist/driver-registry/ai-service.d.ts +43 -0
  8. package/dist/driver-registry/ai-service.d.ts.map +1 -0
  9. package/dist/driver-registry/ai-service.js +77 -0
  10. package/dist/driver-registry/ai-service.js.map +1 -0
  11. package/dist/driver-registry/config-based-factory.d.ts +64 -0
  12. package/dist/driver-registry/config-based-factory.d.ts.map +1 -0
  13. package/dist/driver-registry/config-based-factory.js +90 -0
  14. package/dist/driver-registry/config-based-factory.js.map +1 -0
  15. package/dist/driver-registry/factory-helper.d.ts +49 -0
  16. package/dist/driver-registry/factory-helper.d.ts.map +1 -0
  17. package/dist/driver-registry/factory-helper.js +109 -0
  18. package/dist/driver-registry/factory-helper.js.map +1 -0
  19. package/dist/driver-registry/index.d.ts +9 -0
  20. package/dist/driver-registry/index.d.ts.map +1 -0
  21. package/dist/driver-registry/index.js +8 -0
  22. package/dist/driver-registry/index.js.map +1 -0
  23. package/dist/driver-registry/registry.d.ts +50 -0
  24. package/dist/driver-registry/registry.d.ts.map +1 -0
  25. package/dist/driver-registry/registry.js +208 -0
  26. package/dist/driver-registry/registry.js.map +1 -0
  27. package/dist/driver-registry/types.d.ts +108 -0
  28. package/dist/driver-registry/types.d.ts.map +1 -0
  29. package/dist/driver-registry/types.js +6 -0
  30. package/dist/driver-registry/types.js.map +1 -0
  31. package/dist/echo-driver.d.ts +88 -0
  32. package/dist/echo-driver.d.ts.map +1 -0
  33. package/dist/echo-driver.js +198 -0
  34. package/dist/echo-driver.js.map +1 -0
  35. package/dist/formatter/completion-formatter.d.ts +27 -0
  36. package/dist/formatter/completion-formatter.d.ts.map +1 -0
  37. package/dist/formatter/completion-formatter.js +84 -0
  38. package/dist/formatter/completion-formatter.js.map +1 -0
  39. package/dist/formatter/converter.d.ts +20 -0
  40. package/dist/formatter/converter.d.ts.map +1 -0
  41. package/dist/formatter/converter.js +176 -0
  42. package/dist/formatter/converter.js.map +1 -0
  43. package/dist/formatter/element-formatters/base.d.ts +34 -0
  44. package/dist/formatter/element-formatters/base.d.ts.map +1 -0
  45. package/dist/formatter/element-formatters/base.js +36 -0
  46. package/dist/formatter/element-formatters/base.js.map +1 -0
  47. package/dist/formatter/element-formatters/chunk.d.ts +11 -0
  48. package/dist/formatter/element-formatters/chunk.d.ts.map +1 -0
  49. package/dist/formatter/element-formatters/chunk.js +12 -0
  50. package/dist/formatter/element-formatters/chunk.js.map +1 -0
  51. package/dist/formatter/element-formatters/index.d.ts +14 -0
  52. package/dist/formatter/element-formatters/index.d.ts.map +1 -0
  53. package/dist/formatter/element-formatters/index.js +15 -0
  54. package/dist/formatter/element-formatters/index.js.map +1 -0
  55. package/dist/formatter/element-formatters/json.d.ts +11 -0
  56. package/dist/formatter/element-formatters/json.d.ts.map +1 -0
  57. package/dist/formatter/element-formatters/json.js +27 -0
  58. package/dist/formatter/element-formatters/json.js.map +1 -0
  59. package/dist/formatter/element-formatters/material.d.ts +11 -0
  60. package/dist/formatter/element-formatters/material.d.ts.map +1 -0
  61. package/dist/formatter/element-formatters/material.js +35 -0
  62. package/dist/formatter/element-formatters/material.js.map +1 -0
  63. package/dist/formatter/element-formatters/message.d.ts +13 -0
  64. package/dist/formatter/element-formatters/message.d.ts.map +1 -0
  65. package/dist/formatter/element-formatters/message.js +35 -0
  66. package/dist/formatter/element-formatters/message.js.map +1 -0
  67. package/dist/formatter/element-formatters/registry.d.ts +29 -0
  68. package/dist/formatter/element-formatters/registry.d.ts.map +1 -0
  69. package/dist/formatter/element-formatters/registry.js +82 -0
  70. package/dist/formatter/element-formatters/registry.js.map +1 -0
  71. package/dist/formatter/element-formatters/section.d.ts +18 -0
  72. package/dist/formatter/element-formatters/section.d.ts.map +1 -0
  73. package/dist/formatter/element-formatters/section.js +46 -0
  74. package/dist/formatter/element-formatters/section.js.map +1 -0
  75. package/dist/formatter/element-formatters/string-pattern.d.ts +22 -0
  76. package/dist/formatter/element-formatters/string-pattern.d.ts.map +1 -0
  77. package/dist/formatter/element-formatters/string-pattern.js +124 -0
  78. package/dist/formatter/element-formatters/string-pattern.js.map +1 -0
  79. package/dist/formatter/element-formatters/text.d.ts +11 -0
  80. package/dist/formatter/element-formatters/text.d.ts.map +1 -0
  81. package/dist/formatter/element-formatters/text.js +11 -0
  82. package/dist/formatter/element-formatters/text.js.map +1 -0
  83. package/dist/formatter/formatter.d.ts +24 -0
  84. package/dist/formatter/formatter.d.ts.map +1 -0
  85. package/dist/formatter/formatter.js +252 -0
  86. package/dist/formatter/formatter.js.map +1 -0
  87. package/dist/formatter/types.d.ts +91 -0
  88. package/dist/formatter/types.d.ts.map +1 -0
  89. package/dist/formatter/types.js +2 -0
  90. package/dist/formatter/types.js.map +1 -0
  91. package/dist/google-genai/google-genai-driver.d.ts +67 -0
  92. package/dist/google-genai/google-genai-driver.d.ts.map +1 -0
  93. package/dist/google-genai/google-genai-driver.js +351 -0
  94. package/dist/google-genai/google-genai-driver.js.map +1 -0
  95. package/dist/index.d.ts +17 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +23 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/mlx-ml/mlx-driver.d.ts +65 -0
  100. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -0
  101. package/dist/mlx-ml/mlx-driver.js +235 -0
  102. package/dist/mlx-ml/mlx-driver.js.map +1 -0
  103. package/dist/mlx-ml/model-spec/index.d.ts +7 -0
  104. package/dist/mlx-ml/model-spec/index.d.ts.map +1 -0
  105. package/dist/mlx-ml/model-spec/index.js +7 -0
  106. package/dist/mlx-ml/model-spec/index.js.map +1 -0
  107. package/dist/mlx-ml/model-spec/types.d.ts +30 -0
  108. package/dist/mlx-ml/model-spec/types.d.ts.map +1 -0
  109. package/dist/mlx-ml/model-spec/types.js +7 -0
  110. package/dist/mlx-ml/model-spec/types.js.map +1 -0
  111. package/dist/mlx-ml/process/index.d.ts +33 -0
  112. package/dist/mlx-ml/process/index.d.ts.map +1 -0
  113. package/dist/mlx-ml/process/index.js +65 -0
  114. package/dist/mlx-ml/process/index.js.map +1 -0
  115. package/dist/mlx-ml/process/model-handlers.d.ts +58 -0
  116. package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -0
  117. package/dist/mlx-ml/process/model-handlers.js +197 -0
  118. package/dist/mlx-ml/process/model-handlers.js.map +1 -0
  119. package/dist/mlx-ml/process/model-specific.d.ts +35 -0
  120. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -0
  121. package/dist/mlx-ml/process/model-specific.js +35 -0
  122. package/dist/mlx-ml/process/model-specific.js.map +1 -0
  123. package/dist/mlx-ml/process/parameter-mapper.d.ts +17 -0
  124. package/dist/mlx-ml/process/parameter-mapper.d.ts.map +1 -0
  125. package/dist/mlx-ml/process/parameter-mapper.js +91 -0
  126. package/dist/mlx-ml/process/parameter-mapper.js.map +1 -0
  127. package/dist/mlx-ml/process/parameter-validator.d.ts +55 -0
  128. package/dist/mlx-ml/process/parameter-validator.d.ts.map +1 -0
  129. package/dist/mlx-ml/process/parameter-validator.js +203 -0
  130. package/dist/mlx-ml/process/parameter-validator.js.map +1 -0
  131. package/dist/mlx-ml/process/process-communication.d.ts +25 -0
  132. package/dist/mlx-ml/process/process-communication.d.ts.map +1 -0
  133. package/dist/mlx-ml/process/process-communication.js +117 -0
  134. package/dist/mlx-ml/process/process-communication.js.map +1 -0
  135. package/dist/mlx-ml/process/queue.d.ts +30 -0
  136. package/dist/mlx-ml/process/queue.d.ts.map +1 -0
  137. package/dist/mlx-ml/process/queue.js +147 -0
  138. package/dist/mlx-ml/process/queue.js.map +1 -0
  139. package/dist/mlx-ml/process/types.d.ts +97 -0
  140. package/dist/mlx-ml/process/types.d.ts.map +1 -0
  141. package/dist/mlx-ml/process/types.js +2 -0
  142. package/dist/mlx-ml/process/types.js.map +1 -0
  143. package/dist/mlx-ml/types.d.ts +66 -0
  144. package/dist/mlx-ml/types.d.ts.map +1 -0
  145. package/dist/mlx-ml/types.js +7 -0
  146. package/dist/mlx-ml/types.js.map +1 -0
  147. package/dist/ollama/ollama-driver.d.ts +15 -0
  148. package/dist/ollama/ollama-driver.d.ts.map +1 -0
  149. package/dist/ollama/ollama-driver.js +15 -0
  150. package/dist/ollama/ollama-driver.js.map +1 -0
  151. package/dist/openai/openai-driver.d.ts +71 -0
  152. package/dist/openai/openai-driver.d.ts.map +1 -0
  153. package/dist/openai/openai-driver.js +230 -0
  154. package/dist/openai/openai-driver.js.map +1 -0
  155. package/dist/test-driver.d.ts +78 -0
  156. package/dist/test-driver.d.ts.map +1 -0
  157. package/dist/test-driver.js +193 -0
  158. package/dist/test-driver.js.map +1 -0
  159. package/dist/types.d.ts +90 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +2 -0
  162. package/dist/types.js.map +1 -0
  163. package/dist/vertexai/vertexai-driver.d.ts +63 -0
  164. package/dist/vertexai/vertexai-driver.d.ts.map +1 -0
  165. package/dist/vertexai/vertexai-driver.js +335 -0
  166. package/dist/vertexai/vertexai-driver.js.map +1 -0
  167. package/package.json +61 -0
  168. package/scripts/download-model.js +40 -0
  169. package/scripts/setup-mlx.js +53 -0
  170. package/src/mlx-ml/python/.python-version +1 -0
  171. package/src/mlx-ml/python/__main__.py +312 -0
  172. package/src/mlx-ml/python/chat_template_constraints.py +164 -0
  173. package/src/mlx-ml/python/pyproject.toml +19 -0
  174. package/src/mlx-ml/python/token_utils.py +262 -0
  175. package/src/mlx-ml/python/uv.lock +1029 -0
@@ -0,0 +1,351 @@
1
+ import { GoogleGenAI } from '@google/genai';
2
+ /**
3
+ * Map finish reasons from GoogleGenAI to our format
4
+ */
5
+ const finishReasonMap = {
6
+ 'FINISH_REASON_UNSPECIFIED': 'error',
7
+ 'STOP': 'stop',
8
+ 'MAX_TOKENS': 'length',
9
+ 'SAFETY': 'stop',
10
+ 'RECITATION': 'stop',
11
+ 'LANGUAGE': 'error',
12
+ 'OTHER': 'error',
13
+ 'BLOCKLIST': 'error',
14
+ 'PROHIBITED_CONTENT': 'error',
15
+ 'MALFORMED_FUNCTION_CALL': 'error',
16
+ 'error': 'error'
17
+ };
18
+ /**
19
+ * GoogleGenAI driver
20
+ */
21
+ export class GoogleGenAIDriver {
22
+ client;
23
+ defaultModel;
24
+ defaultTemperature;
25
+ defaultOptions;
26
+ constructor(config = {}) {
27
+ const apiKey = config.apiKey || process.env.GOOGLE_GENAI_API_KEY;
28
+ if (!apiKey) {
29
+ throw new Error('GoogleGenAI API key is required. Set it in config or GOOGLE_GENAI_API_KEY environment variable.');
30
+ }
31
+ this.client = new GoogleGenAI({ apiKey });
32
+ this.defaultModel = config.model || 'gemma-3-27b';
33
+ this.defaultTemperature = config.temperature ?? 0.7;
34
+ this.defaultOptions = config.defaultOptions || {};
35
+ }
36
+ /**
37
+ * Convert content (string or Attachment[]) to string
38
+ */
39
+ contentToString(content) {
40
+ if (typeof content === 'string') {
41
+ return content;
42
+ }
43
+ // For Attachment[], extract text content
44
+ // TODO: In the future, handle image_url and file attachments for multimodal support
45
+ return content
46
+ .filter((att) => {
47
+ const a = att;
48
+ return a.type === 'text' && a.text;
49
+ })
50
+ .map((att) => att.text)
51
+ .join('\n');
52
+ }
53
+ /**
54
+ * Convert Element to Part (flat text conversion)
55
+ * Used for systemInstruction and simple data
56
+ */
57
+ elementToPart(element) {
58
+ if (typeof element === 'string') {
59
+ return { text: element };
60
+ }
61
+ switch (element.type) {
62
+ case 'text':
63
+ return { text: element.content };
64
+ case 'message': {
65
+ // Flatten message as text
66
+ const messageContent = this.contentToString(element.content);
67
+ return { text: `${element.role}: ${messageContent}` };
68
+ }
69
+ case 'material': {
70
+ const materialContent = this.contentToString(element.content);
71
+ return { text: `# ${element.title}\n${materialContent}` };
72
+ }
73
+ case 'chunk': {
74
+ const chunkContent = this.contentToString(element.content);
75
+ const chunkHeader = element.index !== undefined && element.total !== undefined
76
+ ? `[Chunk ${element.index + 1}/${element.total} of ${element.partOf}]`
77
+ : `[Chunk of ${element.partOf}]`;
78
+ return { text: `${chunkHeader}\n${chunkContent}` };
79
+ }
80
+ case 'section':
81
+ case 'subsection': {
82
+ // Section/SubSection elements should be compiled before reaching here
83
+ // If they do reach here, flatten their items recursively
84
+ const flattenItems = (items) => {
85
+ return items.map(item => {
86
+ if (typeof item === 'string')
87
+ return item;
88
+ if (typeof item === 'function')
89
+ return ''; // DynamicContent should be resolved before this point
90
+ return this.elementToPart(item).text || '';
91
+ }).filter(Boolean).join('\n');
92
+ };
93
+ return { text: flattenItems(element.items) };
94
+ }
95
+ case 'json':
96
+ return { text: typeof element.content === 'string' ? element.content : JSON.stringify(element.content, null, 2) };
97
+ default:
98
+ return { text: JSON.stringify(element) };
99
+ }
100
+ }
101
+ /**
102
+ * Convert Element to Content (structure-preserving conversion)
103
+ * Used for conversation history where role matters
104
+ */
105
+ elementToContent(element) {
106
+ if (typeof element === 'string') {
107
+ return { parts: [{ text: element }] };
108
+ }
109
+ if (element.type === 'message') {
110
+ // Role conversion:
111
+ // - assistant → model
112
+ // - system → user (Gemini API doesn't support system role in contents)
113
+ // - user → user
114
+ const role = element.role === 'assistant' ? 'model' : 'user';
115
+ const messageContent = this.contentToString(element.content);
116
+ return {
117
+ role,
118
+ parts: [{ text: messageContent }]
119
+ };
120
+ }
121
+ // Non-message elements: convert to Part and wrap in Content without role
122
+ return {
123
+ parts: [this.elementToPart(element)]
124
+ };
125
+ }
126
+ /**
127
+ * Convert JSON Schema to GoogleGenAI Schema format
128
+ */
129
+ convertJsonSchema(schema) {
130
+ if (!schema || typeof schema !== 'object')
131
+ return undefined;
132
+ // GoogleGenAI uses a specific schema format
133
+ // For now, we'll pass it through and let the API handle it
134
+ return schema;
135
+ }
136
+ /**
137
+ * Query implementation
138
+ */
139
+ async query(prompt, options = {}) {
140
+ try {
141
+ // Merge options with defaults
142
+ const mergedOptions = { ...this.defaultOptions, ...options };
143
+ // Convert prompt to GoogleGenAI format
144
+ // Instructions → systemInstruction (Part[])
145
+ const systemInstructionParts = prompt.instructions?.map(el => this.elementToPart(el));
146
+ // Data + Output → contents (Content[])
147
+ const allDataElements = [...(prompt.data || []), ...(prompt.output || [])];
148
+ const contents = allDataElements.length > 0
149
+ ? allDataElements.map(el => this.elementToContent(el))
150
+ : [{ parts: [{ text: 'Please process according to the instructions.' }] }];
151
+ // Create generation config
152
+ const config = {
153
+ temperature: mergedOptions.temperature ?? this.defaultTemperature,
154
+ maxOutputTokens: mergedOptions.maxTokens,
155
+ topP: mergedOptions.topP,
156
+ topK: mergedOptions.topK,
157
+ candidateCount: mergedOptions.candidateCount,
158
+ stopSequences: mergedOptions.stopSequences,
159
+ thinkingConfig: mergedOptions.thinkingConfig,
160
+ };
161
+ // Add system instruction if present
162
+ if (systemInstructionParts && systemInstructionParts.length > 0) {
163
+ config.systemInstruction = systemInstructionParts;
164
+ }
165
+ // Handle structured outputs
166
+ if (prompt.metadata?.outputSchema) {
167
+ config.responseMimeType = 'application/json';
168
+ config.responseSchema = this.convertJsonSchema(prompt.metadata.outputSchema);
169
+ }
170
+ // Remove undefined values
171
+ Object.keys(config).forEach(key => {
172
+ if (config[key] === undefined) {
173
+ delete config[key];
174
+ }
175
+ });
176
+ // Get model name
177
+ const model = mergedOptions.model || this.defaultModel;
178
+ // Generate content
179
+ const response = await this.client.models.generateContent({
180
+ model,
181
+ contents,
182
+ config
183
+ });
184
+ // Extract text content using convenience property
185
+ const content = response.text || '';
186
+ // Extract candidate for finish reason
187
+ const candidate = response.candidates?.[0];
188
+ // Map finish reason
189
+ const finishReason = finishReasonMap[candidate?.finishReason || 'error'] || 'error';
190
+ // Handle structured outputs
191
+ let structuredOutput;
192
+ if (prompt.metadata?.outputSchema && content) {
193
+ try {
194
+ structuredOutput = JSON.parse(content);
195
+ }
196
+ catch {
197
+ // Keep as text if not valid JSON
198
+ }
199
+ }
200
+ return {
201
+ content,
202
+ finishReason,
203
+ structuredOutput,
204
+ usage: response.usageMetadata ? {
205
+ promptTokens: response.usageMetadata.promptTokenCount || 0,
206
+ completionTokens: response.usageMetadata.candidatesTokenCount || 0,
207
+ totalTokens: response.usageMetadata.totalTokenCount || 0
208
+ } : undefined
209
+ };
210
+ }
211
+ catch (error) {
212
+ console.error('[GoogleGenAIDriver] Query error:', error);
213
+ if (error instanceof Error) {
214
+ console.error('[GoogleGenAIDriver] Error message:', error.message);
215
+ console.error('[GoogleGenAIDriver] Error stack:', error.stack);
216
+ }
217
+ return {
218
+ content: '',
219
+ finishReason: 'error'
220
+ };
221
+ }
222
+ }
223
+ /**
224
+ * Stream query implementation
225
+ */
226
+ async streamQuery(prompt, options) {
227
+ const mergedOptions = { ...this.defaultOptions, ...options };
228
+ // Convert prompt to GoogleGenAI format
229
+ // Instructions → systemInstruction (Part[])
230
+ const systemInstructionParts = prompt.instructions?.map(el => this.elementToPart(el));
231
+ // Data + Output → contents (Content[])
232
+ const allDataElements = [...(prompt.data || []), ...(prompt.output || [])];
233
+ const contents = allDataElements.length > 0
234
+ ? allDataElements.map(el => this.elementToContent(el))
235
+ : [{ parts: [{ text: 'Please process according to the instructions.' }] }];
236
+ // Create generation config
237
+ const config = {
238
+ temperature: mergedOptions.temperature ?? this.defaultTemperature,
239
+ maxOutputTokens: mergedOptions.maxTokens,
240
+ topP: mergedOptions.topP,
241
+ topK: mergedOptions.topK,
242
+ candidateCount: mergedOptions.candidateCount,
243
+ stopSequences: mergedOptions.stopSequences,
244
+ thinkingConfig: mergedOptions.thinkingConfig,
245
+ };
246
+ // Add system instruction if present
247
+ if (systemInstructionParts && systemInstructionParts.length > 0) {
248
+ config.systemInstruction = systemInstructionParts;
249
+ }
250
+ // Handle structured outputs
251
+ if (prompt.metadata?.outputSchema) {
252
+ config.responseMimeType = 'application/json';
253
+ config.responseSchema = this.convertJsonSchema(prompt.metadata.outputSchema);
254
+ }
255
+ // Remove undefined values
256
+ Object.keys(config).forEach(key => {
257
+ if (config[key] === undefined) {
258
+ delete config[key];
259
+ }
260
+ });
261
+ // Get model name
262
+ const model = mergedOptions.model || this.defaultModel;
263
+ // Generate content stream
264
+ const streamResponse = await this.client.models.generateContentStream({
265
+ model,
266
+ contents,
267
+ config
268
+ });
269
+ // Shared state for accumulating content and metadata
270
+ let fullContent = '';
271
+ let usage;
272
+ let finishReason = 'stop';
273
+ let streamConsumed = false;
274
+ const chunks = [];
275
+ // Process the stream and cache chunks
276
+ const processStream = async () => {
277
+ try {
278
+ for await (const chunk of streamResponse) {
279
+ const text = chunk.text;
280
+ if (text) {
281
+ fullContent += text;
282
+ chunks.push(text);
283
+ }
284
+ // Update finish reason if provided
285
+ if (chunk.candidates?.[0]?.finishReason) {
286
+ const reason = chunk.candidates[0].finishReason;
287
+ finishReason = finishReasonMap[reason] || 'error';
288
+ }
289
+ // Accumulate usage if provided
290
+ if (chunk.usageMetadata) {
291
+ usage = {
292
+ promptTokens: chunk.usageMetadata.promptTokenCount || 0,
293
+ completionTokens: chunk.usageMetadata.candidatesTokenCount || 0,
294
+ totalTokens: chunk.usageMetadata.totalTokenCount || 0
295
+ };
296
+ }
297
+ }
298
+ }
299
+ catch {
300
+ finishReason = 'error';
301
+ }
302
+ streamConsumed = true;
303
+ };
304
+ // Start processing the stream
305
+ const processingPromise = processStream();
306
+ // Create the stream generator that yields cached chunks
307
+ const streamGenerator = async function* () {
308
+ let index = 0;
309
+ while (!streamConsumed || index < chunks.length) {
310
+ if (index < chunks.length) {
311
+ yield chunks[index++];
312
+ }
313
+ else {
314
+ // Wait a bit for more chunks
315
+ await new Promise(resolve => setTimeout(resolve, 10));
316
+ }
317
+ }
318
+ };
319
+ // Create result promise
320
+ const resultPromise = (async () => {
321
+ await processingPromise;
322
+ // Handle structured outputs
323
+ let structuredOutput;
324
+ if (prompt.metadata?.outputSchema && fullContent) {
325
+ try {
326
+ structuredOutput = JSON.parse(fullContent);
327
+ }
328
+ catch {
329
+ // Keep as undefined if parsing fails
330
+ }
331
+ }
332
+ return {
333
+ content: fullContent,
334
+ structuredOutput,
335
+ usage,
336
+ finishReason
337
+ };
338
+ })();
339
+ return {
340
+ stream: streamGenerator(),
341
+ result: resultPromise
342
+ };
343
+ }
344
+ /**
345
+ * Close the client
346
+ */
347
+ async close() {
348
+ // GoogleGenAI client doesn't need explicit closing
349
+ }
350
+ }
351
+ //# sourceMappingURL=google-genai-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-genai-driver.js","sourceRoot":"","sources":["../../src/google-genai/google-genai-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type { AIDriver, ChatMessage, QueryResult, QueryOptions, DriverConfig, Role } from './types.js';
2
+ export { TestDriver, type TestDriverOptions, type ResponseProvider } from './test-driver.js';
3
+ export { EchoDriver, type EchoDriverConfig } from './echo-driver.js';
4
+ export { OpenAIDriver, type OpenAIDriverConfig, type OpenAIQueryOptions } from './openai/openai-driver.js';
5
+ export { OllamaDriver, type OllamaDriverConfig } from './ollama/ollama-driver.js';
6
+ export { AnthropicDriver, type AnthropicDriverConfig, type AnthropicQueryOptions } from './anthropic/anthropic-driver.js';
7
+ export { MlxDriver, type MlxDriverConfig } from './mlx-ml/mlx-driver.js';
8
+ export { MlxProcess } from './mlx-ml/process/index.js';
9
+ export type { MlxMessage } from './mlx-ml/types.js';
10
+ export { VertexAIDriver, type VertexAIDriverConfig, type VertexAIQueryOptions } from './vertexai/vertexai-driver.js';
11
+ export { GoogleGenAIDriver, type GoogleGenAIDriverConfig, type GoogleGenAIQueryOptions } from './google-genai/google-genai-driver.js';
12
+ export type { FormatterOptions, ElementFormatter, ChatMessage as FormatterChatMessage } from './formatter/types.js';
13
+ export { DefaultFormatter } from './formatter/formatter.js';
14
+ export { formatPromptAsMessages, formatCompletionPrompt, defaultFormatterTexts, ECHO_SPECIAL_TOKENS } from './formatter/converter.js';
15
+ export { AIService, DriverRegistry, registerFactories, type SelectionOptions, type ApplicationConfig } from './driver-registry/index.js';
16
+ export type { DriverProvider, DriverCapability, ModelSpec, DriverFactory } from './driver-registry/index.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,EACL,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,SAAS,EACT,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAC;AAG/C,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,IAAI,oBAAoB,EACpC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACd,MAAM,4BAA4B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ // Test driver
2
+ export { TestDriver } from './test-driver.js';
3
+ // Echo driver
4
+ export { EchoDriver } from './echo-driver.js';
5
+ // OpenAI driver
6
+ export { OpenAIDriver } from './openai/openai-driver.js';
7
+ // Ollama driver
8
+ export { OllamaDriver } from './ollama/ollama-driver.js';
9
+ // Anthropic driver
10
+ export { AnthropicDriver } from './anthropic/anthropic-driver.js';
11
+ // MLX ML driver
12
+ export { MlxDriver } from './mlx-ml/mlx-driver.js';
13
+ // MLX ML low-level process API
14
+ export { MlxProcess } from './mlx-ml/process/index.js';
15
+ // VertexAI driver
16
+ export { VertexAIDriver } from './vertexai/vertexai-driver.js';
17
+ // GoogleGenAI driver
18
+ export { GoogleGenAIDriver } from './google-genai/google-genai-driver.js';
19
+ export { DefaultFormatter } from './formatter/formatter.js';
20
+ export { formatPromptAsMessages, formatCompletionPrompt, defaultFormatterTexts, ECHO_SPECIAL_TOKENS } from './formatter/converter.js';
21
+ // Driver Registry and AI Service exports
22
+ export { AIService, DriverRegistry, registerFactories } from './driver-registry/index.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,cAAc;AACd,OAAO,EACL,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EACL,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAE1B,gBAAgB;AAChB,OAAO,EACL,YAAY,EAGb,MAAM,2BAA2B,CAAC;AAEnC,gBAAgB;AAChB,OAAO,EACL,YAAY,EAEb,MAAM,2BAA2B,CAAC;AAEnC,mBAAmB;AACnB,OAAO,EACL,eAAe,EAGhB,MAAM,iCAAiC,CAAC;AAEzC,gBAAgB;AAChB,OAAO,EACL,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAEhC,+BAA+B;AAC/B,OAAO,EACL,UAAU,EACX,MAAM,2BAA2B,CAAC;AAMnC,kBAAkB;AAClB,OAAO,EACL,cAAc,EAGf,MAAM,+BAA+B,CAAC;AAEvC,qBAAqB;AACrB,OAAO,EACL,iBAAiB,EAGlB,MAAM,uCAAuC,CAAC;AAS/C,OAAO,EACL,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,yCAAyC;AACzC,OAAO,EACL,SAAS,EACT,cAAc,EACd,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { AIDriver, QueryOptions, QueryResult, StreamResult } from '../types.js';
2
+ import type { FormatterOptions, ChatMessage } from '../formatter/types.js';
3
+ import type { MlxMessage, MlxMlModelOptions, MlxModelCapabilities } from './types.js';
4
+ import type { CompiledPrompt } from '@modular-prompt/core';
5
+ /**
6
+ * Check if the prompt contains MessageElement
7
+ */
8
+ export declare function hasMessageElement(prompt: CompiledPrompt): boolean;
9
+ /**
10
+ * Convert ChatMessage format to MLX format
11
+ */
12
+ export declare function convertMessages(messages: ChatMessage[]): MlxMessage[];
13
+ /**
14
+ * MLX ML driver configuration
15
+ */
16
+ export interface MlxDriverConfig {
17
+ model: string;
18
+ defaultOptions?: Partial<MlxMlModelOptions>;
19
+ formatterOptions?: FormatterOptions;
20
+ }
21
+ /**
22
+ * MLX ML driver using Python subprocess
23
+ */
24
+ export declare class MlxDriver implements AIDriver {
25
+ private process;
26
+ private model;
27
+ private defaultOptions;
28
+ private runtimeInfo;
29
+ private modelProcessor;
30
+ private formatterOptions;
31
+ constructor(config: MlxDriverConfig);
32
+ /**
33
+ * Initialize process and cache runtime info
34
+ */
35
+ private ensureInitialized;
36
+ /**
37
+ * Determine which API to use (chat or completion)
38
+ * Simple logic based on runtime info only
39
+ */
40
+ private determineApi;
41
+ /**
42
+ * Execute query and return stream
43
+ * Common logic for query and streamQuery
44
+ */
45
+ private executeQuery;
46
+ /**
47
+ * Query the AI model with a compiled prompt
48
+ */
49
+ query(prompt: CompiledPrompt, options?: QueryOptions): Promise<QueryResult>;
50
+ /**
51
+ * Stream query implementation
52
+ */
53
+ streamQuery(prompt: CompiledPrompt, options?: QueryOptions): Promise<StreamResult>;
54
+ /**
55
+ * Get model capabilities (public API)
56
+ *
57
+ * Returns runtime information converted to camelCase
58
+ */
59
+ getCapabilities(): Promise<MlxModelCapabilities>;
60
+ /**
61
+ * Close the process
62
+ */
63
+ close(): Promise<void>;
64
+ }
65
+ //# sourceMappingURL=mlx-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mlx-driver.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI3E,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAYjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAKrE;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAsCD;;GAEG;AACH,qBAAa,SAAU,YAAW,QAAQ;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,gBAAgB,CAAmB;gBAG/B,MAAM,EAAE,eAAe;IAQnC;;OAEG;YACW,iBAAiB;IAmB/B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAUpB;;;OAGG;YACW,YAAY;IA2B1B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAajF;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IA8CxB;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAgCtD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}