@accordproject/template-engine 4.0.0 → 5.0.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 (41) hide show
  1. package/lib/JavaScriptEvaluator.js +14 -17
  2. package/lib/JavaScriptEvaluator.js.map +1 -1
  3. package/lib/TemplateArchiveProcessor.d.ts +93 -3
  4. package/lib/TemplateArchiveProcessor.js +322 -27
  5. package/lib/TemplateArchiveProcessor.js.map +1 -1
  6. package/lib/TypeScriptCompilationContext.d.ts +27 -0
  7. package/lib/TypeScriptCompilationContext.js +116 -3
  8. package/lib/TypeScriptCompilationContext.js.map +1 -1
  9. package/lib/drafting/MonetaryAmount/formatTokens.d.ts +13 -0
  10. package/lib/drafting/MonetaryAmount/formatTokens.js +44 -0
  11. package/lib/drafting/MonetaryAmount/formatTokens.js.map +1 -0
  12. package/lib/drafting/MonetaryAmount/index.js +2 -18
  13. package/lib/drafting/MonetaryAmount/index.js.map +1 -1
  14. package/lib/drafting/PreciseAmount/index.d.ts +17 -0
  15. package/lib/drafting/PreciseAmount/index.js +113 -0
  16. package/lib/drafting/PreciseAmount/index.js.map +1 -0
  17. package/lib/drafting/index.js +24 -4
  18. package/lib/drafting/index.js.map +1 -1
  19. package/lib/llm/LLMConfig.d.ts +121 -0
  20. package/lib/llm/LLMConfig.js +30 -0
  21. package/lib/llm/LLMConfig.js.map +1 -0
  22. package/lib/llm/LLMExecutor.d.ts +77 -0
  23. package/lib/llm/LLMExecutor.js +603 -0
  24. package/lib/llm/LLMExecutor.js.map +1 -0
  25. package/lib/llm/ModelManagerSchema.d.ts +14 -0
  26. package/lib/llm/ModelManagerSchema.js +67 -0
  27. package/lib/llm/ModelManagerSchema.js.map +1 -0
  28. package/lib/llm/Reasoners.d.ts +190 -0
  29. package/lib/llm/Reasoners.js +643 -0
  30. package/lib/llm/Reasoners.js.map +1 -0
  31. package/lib/model-gen/concerto@1.0.0.d.ts +2 -2
  32. package/lib/runtime/declarations.d.ts +0 -1
  33. package/lib/runtime/declarations.js +1 -2
  34. package/lib/runtime/declarations.js.map +1 -1
  35. package/lib/slc/model-gen/concerto@1.0.0.d.ts +2 -2
  36. package/lib/utils.d.ts +29 -0
  37. package/lib/utils.js +51 -0
  38. package/lib/utils.js.map +1 -1
  39. package/package.json +19 -9
  40. package/umd/template-engine.js +8 -8
  41. package/umd/template-engine.js.LICENSE.txt +1 -7
@@ -0,0 +1,643 @@
1
+ "use strict";
2
+ /*
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+ /* eslint-disable @typescript-eslint/no-explicit-any */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.MistralReasoner = exports.GoogleReasoner = exports.OpenAICompatibleCustomReasoner = exports.OllamaReasoner = exports.OpenRouterReasoner = exports.OpenAICompatibleReasoner = exports.AnthropicReasoner = exports.OpenAIReasoner = exports.GroqReasoner = exports.BaseReasoner = void 0;
51
+ exports.createReasoner = createReasoner;
52
+ const LLMConfig_1 = require("./LLMConfig");
53
+ /**
54
+ * Base interface for provider-specific reasoners.
55
+ */
56
+ class BaseReasoner {
57
+ }
58
+ exports.BaseReasoner = BaseReasoner;
59
+ /**
60
+ * Loads an optional dependency at runtime.
61
+ * @param specifier - module specifier
62
+ * @returns imported module
63
+ */
64
+ function loadOptionalModule(specifier) {
65
+ return Promise.resolve(`${specifier}`).then(s => __importStar(require(s)));
66
+ }
67
+ /**
68
+ * Narrows a configured effort level to the ones a provider's API accepts,
69
+ * throwing rather than silently falling back to the provider default.
70
+ * @param effort - the configured effort level, if any
71
+ * @param supported - the levels this provider accepts
72
+ * @param providerLabel - provider name, used in the error message
73
+ * @returns the effort level, or undefined when none was configured
74
+ * @throws {Error} if the level is not one the provider supports
75
+ */
76
+ function resolveEffort(effort, supported, providerLabel) {
77
+ if (!effort)
78
+ return undefined;
79
+ if (!supported.includes(effort)) {
80
+ throw new Error(`The ${providerLabel} provider does not support effort '${effort}'. ` +
81
+ `Supported levels: ${supported.join(', ')}`);
82
+ }
83
+ return effort;
84
+ }
85
+ /**
86
+ * Groq-backed reasoner.
87
+ */
88
+ class GroqReasoner extends BaseReasoner {
89
+ constructor(config) {
90
+ super();
91
+ const apiKey = config.apiKey ||
92
+ (typeof process !== 'undefined' ? process.env.GROQ_API_KEY : '') ||
93
+ '';
94
+ if (!apiKey)
95
+ throw new Error('Missing apiKey for Groq provider');
96
+ this.config = {
97
+ apiKey,
98
+ model: config.model,
99
+ baseUrl: config.baseUrl ?? 'https://api.groq.com/openai/v1',
100
+ temperature: config.temperature ?? 0,
101
+ maxTokens: config.maxTokens ?? 4096,
102
+ topP: config.topP ?? 1,
103
+ effort: resolveEffort(config.effort, LLMConfig_1.GROQ_EFFORT_LEVELS, 'groq'),
104
+ timeoutMs: config.timeoutMs ?? 60000,
105
+ };
106
+ }
107
+ /**
108
+ * Loads the Groq client on first use.
109
+ */
110
+ getClient() {
111
+ if (!this.clientPromise) {
112
+ this.clientPromise = (async () => {
113
+ let mod;
114
+ try {
115
+ mod = await loadOptionalModule('groq-sdk');
116
+ }
117
+ catch {
118
+ throw new Error("The 'groq-sdk' package is required to use the Groq provider. Install it with: npm install groq-sdk");
119
+ }
120
+ const Groq = mod.default ?? mod.Groq;
121
+ if (!Groq) {
122
+ throw new Error("Unable to load the Groq SDK constructor from 'groq-sdk'");
123
+ }
124
+ return new Groq({
125
+ apiKey: this.config.apiKey,
126
+ baseURL: this.config.baseUrl,
127
+ });
128
+ })();
129
+ }
130
+ return this.clientPromise;
131
+ }
132
+ async complete(messages, schema) {
133
+ const options = {
134
+ model: this.config.model,
135
+ messages,
136
+ temperature: this.config.temperature,
137
+ max_tokens: this.config.maxTokens,
138
+ top_p: this.config.topP,
139
+ };
140
+ if (this.config.effort) {
141
+ options.reasoning_effort = this.config.effort;
142
+ }
143
+ if (schema) {
144
+ options.response_format = {
145
+ type: 'json_schema',
146
+ json_schema: {
147
+ name: 'structured_output',
148
+ strict: true,
149
+ schema,
150
+ },
151
+ };
152
+ }
153
+ const client = await this.getClient();
154
+ let timeoutId;
155
+ const timeoutPromise = new Promise((_, reject) => {
156
+ timeoutId = setTimeout(() => reject(new Error(`Groq request timed out after ${this.config.timeoutMs}ms`)), this.config.timeoutMs);
157
+ });
158
+ try {
159
+ const response = await Promise.race([
160
+ client.chat.completions.create(options),
161
+ timeoutPromise,
162
+ ]);
163
+ const content = response?.choices?.[0]?.message?.content;
164
+ if (!content || typeof content !== 'string') {
165
+ throw new Error('Groq API returned no assistant content');
166
+ }
167
+ return { content };
168
+ }
169
+ catch (error) {
170
+ if (error instanceof Error) {
171
+ throw error;
172
+ }
173
+ throw new Error(`Groq API error: ${String(error)}`);
174
+ }
175
+ finally {
176
+ if (timeoutId) {
177
+ clearTimeout(timeoutId);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ exports.GroqReasoner = GroqReasoner;
183
+ /**
184
+ * Formats messages for OpenAI-style chat APIs.
185
+ * @param messages - chat messages to convert
186
+ * @returns provider-ready messages
187
+ */
188
+ function formatOpenAIMessages(messages) {
189
+ const systemMessages = messages.filter(message => message.role === 'system');
190
+ const conversationMessages = messages.filter(message => message.role !== 'system');
191
+ return [
192
+ ...(systemMessages.length > 0
193
+ ? [
194
+ {
195
+ role: 'system',
196
+ content: systemMessages.map(message => message.content).join('\n\n'),
197
+ },
198
+ ]
199
+ : []),
200
+ ...conversationMessages.map(message => ({
201
+ role: message.role,
202
+ content: message.content,
203
+ })),
204
+ ];
205
+ }
206
+ /**
207
+ * Builds a structured-output payload for OpenAI-style providers.
208
+ * @param schema - JSON Schema to attach
209
+ * @param strict - whether the provider should enforce strict output
210
+ * @returns response format payload
211
+ */
212
+ function createOpenAIResponseFormat(schema, strict) {
213
+ return {
214
+ type: 'json_schema',
215
+ json_schema: {
216
+ name: 'structured_output',
217
+ strict,
218
+ schema,
219
+ },
220
+ };
221
+ }
222
+ /**
223
+ * OpenAI-backed reasoner.
224
+ */
225
+ class OpenAIReasoner extends BaseReasoner {
226
+ constructor(config) {
227
+ super();
228
+ if (!config.apiKey)
229
+ throw new Error('Missing apiKey for OpenAI provider');
230
+ this.apiKey = config.apiKey;
231
+ this.model = config.model;
232
+ this.maxTokens = config.maxTokens ?? 4096;
233
+ this.effort = resolveEffort(config.effort, LLMConfig_1.OPENAI_EFFORT_LEVELS, 'openai');
234
+ }
235
+ /**
236
+ * Loads the OpenAI client on first use.
237
+ */
238
+ getClient() {
239
+ if (!this.clientPromise) {
240
+ this.clientPromise = (async () => {
241
+ let mod;
242
+ try {
243
+ mod = await loadOptionalModule('openai');
244
+ }
245
+ catch {
246
+ throw new Error("The 'openai' package is required to use the OpenAI provider. Install it with: npm install openai");
247
+ }
248
+ return new mod.default({
249
+ apiKey: this.apiKey,
250
+ baseURL: 'https://api.openai.com/v1',
251
+ });
252
+ })();
253
+ }
254
+ return this.clientPromise;
255
+ }
256
+ async complete(messages, schema) {
257
+ const options = {
258
+ model: this.model,
259
+ messages: formatOpenAIMessages(messages),
260
+ max_completion_tokens: this.maxTokens,
261
+ stream: false,
262
+ };
263
+ if (this.effort) {
264
+ options.reasoning_effort = this.effort;
265
+ }
266
+ if (schema) {
267
+ options.response_format = createOpenAIResponseFormat(schema, false);
268
+ }
269
+ const client = await this.getClient();
270
+ const response = await client.chat.completions.create(options);
271
+ const content = response.choices?.[0]?.message?.content;
272
+ if (!content)
273
+ throw new Error('OpenAIReasoner: no content in response');
274
+ return { content };
275
+ }
276
+ }
277
+ exports.OpenAIReasoner = OpenAIReasoner;
278
+ /**
279
+ * Anthropic-backed reasoner.
280
+ */
281
+ class AnthropicReasoner extends BaseReasoner {
282
+ constructor(config) {
283
+ super();
284
+ if (!config.apiKey)
285
+ throw new Error('Missing apiKey for Anthropic provider');
286
+ this.apiKey = config.apiKey;
287
+ this.model = config.model;
288
+ // Thinking tokens share this budget with the answer, so leave room for both.
289
+ this.maxTokens = config.maxTokens ?? 16000;
290
+ this.effort = resolveEffort(config.effort, LLMConfig_1.ANTHROPIC_EFFORT_LEVELS, 'anthropic');
291
+ this.thinking = config.thinking ?? true;
292
+ }
293
+ /**
294
+ * Loads the Anthropic client on first use.
295
+ */
296
+ getClient() {
297
+ if (!this.clientPromise) {
298
+ this.clientPromise = (async () => {
299
+ let mod;
300
+ try {
301
+ mod = await loadOptionalModule('@anthropic-ai/sdk');
302
+ }
303
+ catch {
304
+ throw new Error("The '@anthropic-ai/sdk' package is required to use the Anthropic provider. Install it with: npm install @anthropic-ai/sdk");
305
+ }
306
+ return new mod.default({ apiKey: this.apiKey });
307
+ })();
308
+ }
309
+ return this.clientPromise;
310
+ }
311
+ async complete(messages, schema) {
312
+ const systemContent = messages
313
+ .filter(m => m.role === 'system')
314
+ .map(m => m.content)
315
+ .join('\n\n');
316
+ const formattedMessages = messages
317
+ .filter(m => m.role === 'user' || m.role === 'assistant')
318
+ .map(m => ({ role: m.role, content: m.content }));
319
+ const params = {
320
+ model: this.model,
321
+ max_tokens: this.maxTokens,
322
+ ...(systemContent ? { system: systemContent } : {}),
323
+ messages: formattedMessages,
324
+ };
325
+ // Extended thinking is opt-in; without it `effort` has nothing to deepen.
326
+ if (this.thinking) {
327
+ params.thinking = { type: 'adaptive' };
328
+ }
329
+ const outputConfig = {};
330
+ if (schema) {
331
+ outputConfig.format = {
332
+ type: 'json_schema',
333
+ schema,
334
+ };
335
+ }
336
+ if (this.effort) {
337
+ outputConfig.effort = this.effort;
338
+ }
339
+ if (Object.keys(outputConfig).length > 0) {
340
+ params.output_config = outputConfig;
341
+ }
342
+ const client = await this.getClient();
343
+ const response = await client.messages.create(params);
344
+ if (response.stop_reason === 'refusal') {
345
+ throw new Error('Anthropic refused to produce structured output for this request');
346
+ }
347
+ // An exhausted budget surfaces as truncated JSON; report it as such rather
348
+ // than leaving the caller with a JSON.parse syntax error.
349
+ if (response.stop_reason === 'max_tokens') {
350
+ throw new Error(`Anthropic response hit the ${this.maxTokens}-token limit before completing. ` +
351
+ 'Raise maxTokens, lower effort, or set thinking: false.');
352
+ }
353
+ const block = response.content.find(b => b.type === 'text');
354
+ if (!block || !block.text) {
355
+ throw new Error('Anthropic: no text block in response');
356
+ }
357
+ return { content: block.text };
358
+ }
359
+ }
360
+ exports.AnthropicReasoner = AnthropicReasoner;
361
+ /**
362
+ * Base reasoner for providers that expose an OpenAI-compatible chat API.
363
+ */
364
+ class OpenAICompatibleReasoner extends BaseReasoner {
365
+ constructor(config, baseUrl, defaultApiKey = '') {
366
+ super();
367
+ const apiKey = config.apiKey || defaultApiKey;
368
+ if (!apiKey)
369
+ throw new Error('Missing apiKey for OpenAI-compatible provider');
370
+ this.apiKey = apiKey;
371
+ this.model = config.model;
372
+ this.maxTokens = config.maxTokens ?? 4096;
373
+ this.baseUrl = baseUrl;
374
+ }
375
+ /**
376
+ * Loads the OpenAI-compatible client on first use.
377
+ */
378
+ getClient() {
379
+ if (!this.clientPromise) {
380
+ this.clientPromise = (async () => {
381
+ let mod;
382
+ try {
383
+ mod = await loadOptionalModule('openai');
384
+ }
385
+ catch {
386
+ throw new Error("The 'openai' package is required to use this provider. Install it with: npm install openai");
387
+ }
388
+ return new mod.default({
389
+ apiKey: this.apiKey,
390
+ baseURL: this.baseUrl,
391
+ });
392
+ })();
393
+ }
394
+ return this.clientPromise;
395
+ }
396
+ async complete(messages, schema) {
397
+ const options = {
398
+ model: this.model,
399
+ messages: formatOpenAIMessages(messages),
400
+ max_tokens: this.maxTokens,
401
+ stream: false,
402
+ };
403
+ if (schema) {
404
+ options.response_format = createOpenAIResponseFormat(schema, false);
405
+ }
406
+ const client = await this.getClient();
407
+ const response = await client.chat.completions.create(options);
408
+ const content = response.choices?.[0]?.message?.content;
409
+ if (!content)
410
+ throw new Error(`${this.constructor.name}: no content in response`);
411
+ return { content };
412
+ }
413
+ }
414
+ exports.OpenAICompatibleReasoner = OpenAICompatibleReasoner;
415
+ /**
416
+ * OpenRouter-backed reasoner.
417
+ */
418
+ class OpenRouterReasoner extends BaseReasoner {
419
+ constructor(config) {
420
+ super();
421
+ if (!config.apiKey)
422
+ throw new Error('Missing apiKey for OpenRouter provider');
423
+ this.apiKey = config.apiKey;
424
+ this.model = config.model;
425
+ this.maxTokens = config.maxTokens ?? 4096;
426
+ }
427
+ /**
428
+ * Loads the OpenRouter client on first use.
429
+ */
430
+ getClient() {
431
+ if (!this.clientPromise) {
432
+ this.clientPromise = (async () => {
433
+ let mod;
434
+ try {
435
+ mod = await loadOptionalModule('@openrouter/sdk');
436
+ }
437
+ catch {
438
+ throw new Error("The '@openrouter/sdk' package is required to use the OpenRouter provider. Install it with: npm install @openrouter/sdk");
439
+ }
440
+ return new mod.OpenRouter({ apiKey: this.apiKey });
441
+ })();
442
+ }
443
+ return this.clientPromise;
444
+ }
445
+ async complete(messages, schema) {
446
+ const formattedMessages = messages.map(m => ({ role: m.role, content: m.content }));
447
+ const chatRequest = {
448
+ model: this.model,
449
+ messages: formattedMessages,
450
+ maxTokens: this.maxTokens,
451
+ };
452
+ if (schema) {
453
+ chatRequest.responseFormat = {
454
+ type: 'json_schema',
455
+ jsonSchema: {
456
+ name: 'structured_output',
457
+ strict: true,
458
+ schema,
459
+ },
460
+ };
461
+ }
462
+ const client = await this.getClient();
463
+ const response = await client.chat.send({ chatRequest });
464
+ const content = response.choices?.[0]?.message?.content;
465
+ if (!content || typeof content !== 'string') {
466
+ throw new Error('OpenRouterReasoner: no content in response');
467
+ }
468
+ return { content };
469
+ }
470
+ }
471
+ exports.OpenRouterReasoner = OpenRouterReasoner;
472
+ /**
473
+ * Ollama-backed reasoner.
474
+ */
475
+ class OllamaReasoner extends OpenAICompatibleReasoner {
476
+ constructor(config) {
477
+ super(config, config.baseUrl ?? 'http://localhost:11434/v1', 'ollama');
478
+ }
479
+ }
480
+ exports.OllamaReasoner = OllamaReasoner;
481
+ /**
482
+ * Reasoner for arbitrary OpenAI-compatible endpoints.
483
+ */
484
+ class OpenAICompatibleCustomReasoner extends OpenAICompatibleReasoner {
485
+ constructor(config) {
486
+ if (!config.customEndpoint) {
487
+ throw new Error('customEndpoint is required for the openai-compatible provider');
488
+ }
489
+ super(config, config.customEndpoint);
490
+ }
491
+ }
492
+ exports.OpenAICompatibleCustomReasoner = OpenAICompatibleCustomReasoner;
493
+ /**
494
+ * Google-backed reasoner.
495
+ */
496
+ class GoogleReasoner extends BaseReasoner {
497
+ constructor(config) {
498
+ super();
499
+ if (!config.apiKey)
500
+ throw new Error('Missing apiKey for Google provider');
501
+ this.apiKey = config.apiKey;
502
+ this.model = config.model;
503
+ this.maxTokens = config.maxTokens ?? 4096;
504
+ }
505
+ /**
506
+ * Loads the Google client on first use.
507
+ */
508
+ getClient() {
509
+ if (!this.clientPromise) {
510
+ this.clientPromise = (async () => {
511
+ let mod;
512
+ try {
513
+ mod = await loadOptionalModule('@google/genai');
514
+ }
515
+ catch {
516
+ throw new Error("The '@google/genai' package is required to use the Google provider. Install it with: npm install @google/genai");
517
+ }
518
+ return new mod.GoogleGenAI({ apiKey: this.apiKey });
519
+ })();
520
+ }
521
+ return this.clientPromise;
522
+ }
523
+ async complete(messages, schema) {
524
+ const systemInstruction = messages
525
+ .filter(m => m.role === 'system')
526
+ .map(m => m.content)
527
+ .join('\n\n');
528
+ const contents = messages
529
+ .filter(m => m.role === 'user' || m.role === 'assistant')
530
+ .map(m => ({
531
+ role: m.role === 'assistant' ? 'model' : 'user',
532
+ parts: [{ text: m.content }],
533
+ }));
534
+ const generationConfig = {
535
+ maxOutputTokens: this.maxTokens,
536
+ };
537
+ if (systemInstruction) {
538
+ generationConfig.systemInstruction = systemInstruction;
539
+ }
540
+ if (schema) {
541
+ generationConfig.responseMimeType = 'application/json';
542
+ generationConfig.responseJsonSchema = schema;
543
+ }
544
+ const client = await this.getClient();
545
+ const response = await client.models.generateContent({
546
+ model: this.model,
547
+ contents,
548
+ config: generationConfig,
549
+ });
550
+ const content = response.text;
551
+ if (!content)
552
+ throw new Error('GoogleReasoner: no content in response');
553
+ return { content };
554
+ }
555
+ }
556
+ exports.GoogleReasoner = GoogleReasoner;
557
+ /**
558
+ * Mistral-backed reasoner.
559
+ */
560
+ class MistralReasoner extends BaseReasoner {
561
+ constructor(config) {
562
+ super();
563
+ if (!config.apiKey)
564
+ throw new Error('Missing apiKey for Mistral provider');
565
+ this.apiKey = config.apiKey;
566
+ this.model = config.model;
567
+ this.maxTokens = config.maxTokens ?? 4096;
568
+ }
569
+ /**
570
+ * Loads the Mistral client on first use.
571
+ */
572
+ getClient() {
573
+ if (!this.clientPromise) {
574
+ this.clientPromise = (async () => {
575
+ let mod;
576
+ try {
577
+ mod = await loadOptionalModule('@mistralai/mistralai');
578
+ }
579
+ catch {
580
+ throw new Error("The '@mistralai/mistralai' package is required to use the Mistral provider. Install it with: npm install @mistralai/mistralai");
581
+ }
582
+ return new mod.Mistral({ apiKey: this.apiKey });
583
+ })();
584
+ }
585
+ return this.clientPromise;
586
+ }
587
+ async complete(messages, schema) {
588
+ const formattedMessages = messages.map(m => ({ role: m.role, content: m.content }));
589
+ const options = {
590
+ model: this.model,
591
+ messages: formattedMessages,
592
+ maxTokens: this.maxTokens,
593
+ };
594
+ if (schema) {
595
+ options.responseFormat = {
596
+ type: 'json_schema',
597
+ jsonSchema: {
598
+ name: 'structured_output',
599
+ strict: true,
600
+ schemaDefinition: schema,
601
+ },
602
+ };
603
+ }
604
+ const client = await this.getClient();
605
+ const response = await client.chat.complete(options);
606
+ const content = response.choices?.[0]?.message?.content;
607
+ if (!content || typeof content !== 'string') {
608
+ throw new Error('MistralReasoner: no content in response');
609
+ }
610
+ return { content };
611
+ }
612
+ }
613
+ exports.MistralReasoner = MistralReasoner;
614
+ /**
615
+ * Creates a provider-specific reasoner.
616
+ * @param config - provider configuration
617
+ * @returns a reasoner for the selected provider
618
+ */
619
+ function createReasoner(config) {
620
+ switch (config.provider) {
621
+ case 'groq':
622
+ return new GroqReasoner(config);
623
+ case 'openai':
624
+ return new OpenAIReasoner(config);
625
+ case 'anthropic':
626
+ return new AnthropicReasoner(config);
627
+ case 'google':
628
+ return new GoogleReasoner(config);
629
+ case 'mistral':
630
+ return new MistralReasoner(config);
631
+ case 'openrouter':
632
+ return new OpenRouterReasoner(config);
633
+ case 'ollama':
634
+ return new OllamaReasoner(config);
635
+ case 'openai-compatible':
636
+ return new OpenAICompatibleCustomReasoner(config);
637
+ default: {
638
+ const _exhaustive = config;
639
+ throw new Error(`Unsupported provider: ${_exhaustive.provider}`);
640
+ }
641
+ }
642
+ }
643
+ //# sourceMappingURL=Reasoners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reasoners.js","sourceRoot":"","sources":["../../src/llm/Reasoners.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,8 @@ export interface IParticipant extends IConcept {
12
12
  $identifier: string;
13
13
  }
14
14
  export interface ITransaction extends IConcept {
15
- $timestamp: Date;
15
+ $timestamp: string;
16
16
  }
17
17
  export interface IEvent extends IConcept {
18
- $timestamp: Date;
18
+ $timestamp: string;
19
19
  }