learngraph 0.2.0 → 0.4.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.
- package/README.md +82 -1
- package/dist/cjs/llm/adapters/anthropic.js +124 -0
- package/dist/cjs/llm/adapters/anthropic.js.map +1 -0
- package/dist/cjs/llm/adapters/base.js +100 -0
- package/dist/cjs/llm/adapters/base.js.map +1 -0
- package/dist/cjs/llm/adapters/gemini.js +156 -0
- package/dist/cjs/llm/adapters/gemini.js.map +1 -0
- package/dist/cjs/llm/adapters/index.js +33 -0
- package/dist/cjs/llm/adapters/index.js.map +1 -0
- package/dist/cjs/llm/adapters/mediapipe.js +290 -0
- package/dist/cjs/llm/adapters/mediapipe.js.map +1 -0
- package/dist/cjs/llm/adapters/ollama.js +149 -0
- package/dist/cjs/llm/adapters/ollama.js.map +1 -0
- package/dist/cjs/llm/adapters/openai.js +126 -0
- package/dist/cjs/llm/adapters/openai.js.map +1 -0
- package/dist/cjs/llm/adapters/openrouter.js +190 -0
- package/dist/cjs/llm/adapters/openrouter.js.map +1 -0
- package/dist/cjs/llm/index.js +42 -5
- package/dist/cjs/llm/index.js.map +1 -1
- package/dist/cjs/llm/orchestrator.js +219 -0
- package/dist/cjs/llm/orchestrator.js.map +1 -0
- package/dist/cjs/llm/prompts.js +367 -0
- package/dist/cjs/llm/prompts.js.map +1 -0
- package/dist/cjs/types/llm.js +8 -0
- package/dist/cjs/types/llm.js.map +1 -0
- package/dist/esm/llm/adapters/anthropic.js +119 -0
- package/dist/esm/llm/adapters/anthropic.js.map +1 -0
- package/dist/esm/llm/adapters/base.js +95 -0
- package/dist/esm/llm/adapters/base.js.map +1 -0
- package/dist/esm/llm/adapters/gemini.js +151 -0
- package/dist/esm/llm/adapters/gemini.js.map +1 -0
- package/dist/esm/llm/adapters/index.js +13 -0
- package/dist/esm/llm/adapters/index.js.map +1 -0
- package/dist/esm/llm/adapters/mediapipe.js +252 -0
- package/dist/esm/llm/adapters/mediapipe.js.map +1 -0
- package/dist/esm/llm/adapters/ollama.js +144 -0
- package/dist/esm/llm/adapters/ollama.js.map +1 -0
- package/dist/esm/llm/adapters/openai.js +121 -0
- package/dist/esm/llm/adapters/openai.js.map +1 -0
- package/dist/esm/llm/adapters/openrouter.js +185 -0
- package/dist/esm/llm/adapters/openrouter.js.map +1 -0
- package/dist/esm/llm/index.js +12 -6
- package/dist/esm/llm/index.js.map +1 -1
- package/dist/esm/llm/orchestrator.js +214 -0
- package/dist/esm/llm/orchestrator.js.map +1 -0
- package/dist/esm/llm/prompts.js +360 -0
- package/dist/esm/llm/prompts.js.map +1 -0
- package/dist/esm/types/llm.js +7 -0
- package/dist/esm/types/llm.js.map +1 -0
- package/dist/types/llm/adapters/anthropic.d.ts +21 -0
- package/dist/types/llm/adapters/anthropic.d.ts.map +1 -0
- package/dist/types/llm/adapters/base.d.ts +46 -0
- package/dist/types/llm/adapters/base.d.ts.map +1 -0
- package/dist/types/llm/adapters/gemini.d.ts +30 -0
- package/dist/types/llm/adapters/gemini.d.ts.map +1 -0
- package/dist/types/llm/adapters/index.d.ts +14 -0
- package/dist/types/llm/adapters/index.d.ts.map +1 -0
- package/dist/types/llm/adapters/mediapipe.d.ts +113 -0
- package/dist/types/llm/adapters/mediapipe.d.ts.map +1 -0
- package/dist/types/llm/adapters/ollama.d.ts +30 -0
- package/dist/types/llm/adapters/ollama.d.ts.map +1 -0
- package/dist/types/llm/adapters/openai.d.ts +22 -0
- package/dist/types/llm/adapters/openai.d.ts.map +1 -0
- package/dist/types/llm/adapters/openrouter.d.ts +58 -0
- package/dist/types/llm/adapters/openrouter.d.ts.map +1 -0
- package/dist/types/llm/index.d.ts +5 -0
- package/dist/types/llm/index.d.ts.map +1 -1
- package/dist/types/llm/orchestrator.d.ts +35 -0
- package/dist/types/llm/orchestrator.d.ts.map +1 -0
- package/dist/types/llm/prompts.d.ts +269 -0
- package/dist/types/llm/prompts.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/llm.d.ts +337 -0
- package/dist/types/types/llm.d.ts.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OpenRouter LLM adapter
|
|
4
|
+
*
|
|
5
|
+
* OpenRouter provides access to many models through a single API:
|
|
6
|
+
* - OpenAI (GPT-4, GPT-3.5)
|
|
7
|
+
* - Anthropic (Claude)
|
|
8
|
+
* - Google (Gemini, PaLM)
|
|
9
|
+
* - Meta (Llama)
|
|
10
|
+
* - Mistral
|
|
11
|
+
* - And many more
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.OpenRouterAdapter = exports.OPENROUTER_MODELS = void 0;
|
|
17
|
+
exports.createOpenRouterAdapter = createOpenRouterAdapter;
|
|
18
|
+
const base_js_1 = require("./base.js");
|
|
19
|
+
/**
|
|
20
|
+
* Popular models available on OpenRouter
|
|
21
|
+
*/
|
|
22
|
+
exports.OPENROUTER_MODELS = {
|
|
23
|
+
// OpenAI
|
|
24
|
+
'openai/gpt-4o': 'openai/gpt-4o',
|
|
25
|
+
'openai/gpt-4-turbo': 'openai/gpt-4-turbo',
|
|
26
|
+
'openai/gpt-3.5-turbo': 'openai/gpt-3.5-turbo',
|
|
27
|
+
// Anthropic
|
|
28
|
+
'anthropic/claude-3.5-sonnet': 'anthropic/claude-3.5-sonnet',
|
|
29
|
+
'anthropic/claude-3-opus': 'anthropic/claude-3-opus',
|
|
30
|
+
'anthropic/claude-3-haiku': 'anthropic/claude-3-haiku',
|
|
31
|
+
// Google
|
|
32
|
+
'google/gemini-pro': 'google/gemini-pro',
|
|
33
|
+
'google/gemini-pro-1.5': 'google/gemini-pro-1.5',
|
|
34
|
+
// Meta
|
|
35
|
+
'meta-llama/llama-3.1-70b-instruct': 'meta-llama/llama-3.1-70b-instruct',
|
|
36
|
+
'meta-llama/llama-3.1-8b-instruct': 'meta-llama/llama-3.1-8b-instruct',
|
|
37
|
+
// Mistral
|
|
38
|
+
'mistralai/mistral-large': 'mistralai/mistral-large',
|
|
39
|
+
'mistralai/mistral-medium': 'mistralai/mistral-medium',
|
|
40
|
+
'mistralai/mixtral-8x7b-instruct': 'mistralai/mixtral-8x7b-instruct',
|
|
41
|
+
// DeepSeek
|
|
42
|
+
'deepseek/deepseek-chat': 'deepseek/deepseek-chat',
|
|
43
|
+
'deepseek/deepseek-coder': 'deepseek/deepseek-coder',
|
|
44
|
+
// Qwen
|
|
45
|
+
'qwen/qwen-2.5-72b-instruct': 'qwen/qwen-2.5-72b-instruct',
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Adapter for OpenRouter API
|
|
49
|
+
*
|
|
50
|
+
* OpenRouter provides unified access to 100+ models from various providers.
|
|
51
|
+
* See https://openrouter.ai/docs for full documentation.
|
|
52
|
+
*/
|
|
53
|
+
class OpenRouterAdapter extends base_js_1.BaseLLMAdapter {
|
|
54
|
+
baseUrl;
|
|
55
|
+
siteUrl;
|
|
56
|
+
appName;
|
|
57
|
+
constructor(config) {
|
|
58
|
+
super(config);
|
|
59
|
+
this.baseUrl = config.baseUrl ?? 'https://openrouter.ai/api/v1';
|
|
60
|
+
if (config.siteUrl) {
|
|
61
|
+
this.siteUrl = config.siteUrl;
|
|
62
|
+
}
|
|
63
|
+
if (config.appName) {
|
|
64
|
+
this.appName = config.appName;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
get provider() {
|
|
68
|
+
return 'openrouter';
|
|
69
|
+
}
|
|
70
|
+
async complete(request) {
|
|
71
|
+
if (!this.isConfigured()) {
|
|
72
|
+
throw new base_js_1.LLMError('OpenRouter adapter is not configured. Set OPENROUTER_API_KEY environment variable.', 'NOT_CONFIGURED', this.provider);
|
|
73
|
+
}
|
|
74
|
+
const openRouterRequest = this.buildRequest(request);
|
|
75
|
+
try {
|
|
76
|
+
const response = await this.executeRequest(openRouterRequest);
|
|
77
|
+
return this.parseResponse(response);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error instanceof base_js_1.LLMError) {
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
throw new base_js_1.LLMError(`OpenRouter API request failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'API_ERROR', this.provider, error instanceof Error ? error : undefined);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
buildRequest(request) {
|
|
87
|
+
const openRouterRequest = {
|
|
88
|
+
model: this.config.model,
|
|
89
|
+
messages: request.messages.map((m) => ({
|
|
90
|
+
role: m.role,
|
|
91
|
+
content: m.content,
|
|
92
|
+
})),
|
|
93
|
+
max_tokens: request.maxTokens ?? this.config.maxTokens ?? 4096,
|
|
94
|
+
temperature: request.temperature ?? this.config.temperature ?? 0.3,
|
|
95
|
+
};
|
|
96
|
+
// Handle JSON response format
|
|
97
|
+
if (request.responseFormat === 'json') {
|
|
98
|
+
openRouterRequest.response_format = { type: 'json_object' };
|
|
99
|
+
}
|
|
100
|
+
return openRouterRequest;
|
|
101
|
+
}
|
|
102
|
+
async executeRequest(request) {
|
|
103
|
+
const headers = {
|
|
104
|
+
'Content-Type': 'application/json',
|
|
105
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
106
|
+
};
|
|
107
|
+
// Add optional OpenRouter-specific headers for rankings
|
|
108
|
+
if (this.siteUrl) {
|
|
109
|
+
headers['HTTP-Referer'] = this.siteUrl;
|
|
110
|
+
}
|
|
111
|
+
if (this.appName) {
|
|
112
|
+
headers['X-Title'] = this.appName;
|
|
113
|
+
}
|
|
114
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
115
|
+
method: 'POST',
|
|
116
|
+
headers,
|
|
117
|
+
body: JSON.stringify(request),
|
|
118
|
+
signal: AbortSignal.timeout(this.config.timeout ?? 60000),
|
|
119
|
+
});
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
const errorBody = await response.text();
|
|
122
|
+
let errorMessage = `HTTP ${response.status}`;
|
|
123
|
+
try {
|
|
124
|
+
const errorJson = JSON.parse(errorBody);
|
|
125
|
+
errorMessage = errorJson.error?.message ?? errorMessage;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
errorMessage = errorBody || errorMessage;
|
|
129
|
+
}
|
|
130
|
+
if (response.status === 429) {
|
|
131
|
+
throw new base_js_1.LLMError(`Rate limit exceeded: ${errorMessage}`, 'RATE_LIMIT', this.provider);
|
|
132
|
+
}
|
|
133
|
+
if (response.status === 402) {
|
|
134
|
+
throw new base_js_1.LLMError(`Payment required or insufficient credits: ${errorMessage}`, 'API_ERROR', this.provider);
|
|
135
|
+
}
|
|
136
|
+
throw new base_js_1.LLMError(`OpenRouter API error: ${errorMessage}`, 'API_ERROR', this.provider);
|
|
137
|
+
}
|
|
138
|
+
return response.json();
|
|
139
|
+
}
|
|
140
|
+
parseResponse(response) {
|
|
141
|
+
if (!response.choices || response.choices.length === 0) {
|
|
142
|
+
throw new base_js_1.LLMError('No choices in OpenRouter response', 'INVALID_RESPONSE', this.provider);
|
|
143
|
+
}
|
|
144
|
+
const choice = response.choices[0];
|
|
145
|
+
if (!choice) {
|
|
146
|
+
throw new base_js_1.LLMError('No choice in OpenRouter response', 'INVALID_RESPONSE', this.provider);
|
|
147
|
+
}
|
|
148
|
+
const content = choice.message.content;
|
|
149
|
+
// Try to parse JSON if present
|
|
150
|
+
let json;
|
|
151
|
+
try {
|
|
152
|
+
json = this.parseJSON(content);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Not JSON, that's fine
|
|
156
|
+
}
|
|
157
|
+
// Map finish reasons to our standard format
|
|
158
|
+
const finishReason = choice.finish_reason === 'stop' ? 'stop' :
|
|
159
|
+
choice.finish_reason === 'length' ? 'length' :
|
|
160
|
+
choice.finish_reason === 'content_filter' ? 'content_filter' : 'stop';
|
|
161
|
+
return {
|
|
162
|
+
content,
|
|
163
|
+
json,
|
|
164
|
+
usage: {
|
|
165
|
+
promptTokens: response.usage.prompt_tokens,
|
|
166
|
+
completionTokens: response.usage.completion_tokens,
|
|
167
|
+
totalTokens: response.usage.total_tokens,
|
|
168
|
+
},
|
|
169
|
+
model: response.model,
|
|
170
|
+
finishReason,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.OpenRouterAdapter = OpenRouterAdapter;
|
|
175
|
+
/**
|
|
176
|
+
* Create an OpenRouter adapter from environment variables
|
|
177
|
+
*/
|
|
178
|
+
function createOpenRouterAdapter(model = 'anthropic/claude-3.5-sonnet', overrides) {
|
|
179
|
+
const apiKey = typeof process !== 'undefined' ? process.env.OPENROUTER_API_KEY : undefined;
|
|
180
|
+
const config = {
|
|
181
|
+
provider: 'openrouter',
|
|
182
|
+
model,
|
|
183
|
+
...overrides,
|
|
184
|
+
};
|
|
185
|
+
if (apiKey) {
|
|
186
|
+
config.apiKey = apiKey;
|
|
187
|
+
}
|
|
188
|
+
return new OpenRouterAdapter(config);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=openrouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../../src/llm/adapters/openrouter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAoQH,0DAkBC;AA9QD,uCAAqD;AAqCrD;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,SAAS;IACT,eAAe,EAAE,eAAe;IAChC,oBAAoB,EAAE,oBAAoB;IAC1C,sBAAsB,EAAE,sBAAsB;IAE9C,YAAY;IACZ,6BAA6B,EAAE,6BAA6B;IAC5D,yBAAyB,EAAE,yBAAyB;IACpD,0BAA0B,EAAE,0BAA0B;IAEtD,SAAS;IACT,mBAAmB,EAAE,mBAAmB;IACxC,uBAAuB,EAAE,uBAAuB;IAEhD,OAAO;IACP,mCAAmC,EAAE,mCAAmC;IACxE,kCAAkC,EAAE,kCAAkC;IAEtE,UAAU;IACV,yBAAyB,EAAE,yBAAyB;IACpD,0BAA0B,EAAE,0BAA0B;IACtD,iCAAiC,EAAE,iCAAiC;IAEpE,WAAW;IACX,wBAAwB,EAAE,wBAAwB;IAClD,yBAAyB,EAAE,yBAAyB;IAEpD,OAAO;IACP,4BAA4B,EAAE,4BAA4B;CAClD,CAAC;AAEX;;;;;GAKG;AACH,MAAa,iBAAkB,SAAQ,wBAAc;IAClC,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,OAAO,CAAU;IAElC,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,8BAA8B,CAAC;QAChE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,kBAAQ,CAChB,oFAAoF,EACpF,gBAAgB,EAChB,IAAI,CAAC,QAAQ,CACd,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,kBAAQ,CAChB,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAC5F,WAAW,EACX,IAAI,CAAC,QAAQ,EACb,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,OAA0B;QAC7C,MAAM,iBAAiB,GAAsB;YAC3C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;YACH,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;YAC9D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;SACnE,CAAC;QAEF,8BAA8B;QAC9B,IAAI,OAAO,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACtC,iBAAiB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAA0B;QACrD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;SAC9C,CAAC;QAEF,wDAAwD;QACxD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YAE7C,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxC,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,YAAY,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,GAAG,SAAS,IAAI,YAAY,CAAC;YAC3C,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,kBAAQ,CAChB,wBAAwB,YAAY,EAAE,EACtC,YAAY,EACZ,IAAI,CAAC,QAAQ,CACd,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,kBAAQ,CAChB,6CAA6C,YAAY,EAAE,EAC3D,WAAW,EACX,IAAI,CAAC,QAAQ,CACd,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,kBAAQ,CAChB,yBAAyB,YAAY,EAAE,EACvC,WAAW,EACX,IAAI,CAAC,QAAQ,CACd,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAiC,CAAC;IACxD,CAAC;IAEO,aAAa,CAAC,QAA4B;QAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,kBAAQ,CAChB,mCAAmC,EACnC,kBAAkB,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,kBAAQ,CAChB,kCAAkC,EAClC,kBAAkB,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAEvC,+BAA+B;QAC/B,IAAI,IAAyC,CAAC;QAC9C,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAA0B,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QAED,4CAA4C;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,CAAC,aAAa,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1F,OAAO;YACL,OAAO;YACP,IAAI;YACJ,KAAK,EAAE;gBACL,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;gBAC1C,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB;gBAClD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;aACzC;YACD,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,YAAY;SACb,CAAC;IACJ,CAAC;CACF;AAzKD,8CAyKC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,KAAK,GAAG,6BAA6B,EACrC,SAAqC;IAErC,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,MAAM,MAAM,GAAqB;QAC/B,QAAQ,EAAE,YAAY;QACtB,KAAK;QACL,GAAG,SAAS;KACb,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/cjs/llm/index.js
CHANGED
|
@@ -4,9 +4,46 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @packageDocumentation
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.buildDecompositionPrompt = exports.buildBloomPrompt = exports.buildPrerequisitePrompt = exports.buildExtractionPrompt = exports.DECOMPOSITION_SCHEMA = exports.BLOOM_ANALYSIS_SCHEMA = exports.PREREQUISITE_SCHEMA = exports.EXTRACTION_SCHEMA = exports.SYSTEM_PROMPTS = exports.createOrchestrator = exports.LLMOrchestrator = exports.MEDIAPIPE_MODELS = exports.createMediaPipeAdapter = exports.MediaPipeAdapter = exports.OPENROUTER_MODELS = exports.createOpenRouterAdapter = exports.OpenRouterAdapter = exports.createGeminiAdapter = exports.GeminiAdapter = exports.createOllamaAdapter = exports.OllamaAdapter = exports.createAnthropicAdapter = exports.AnthropicAdapter = exports.createOpenAIAdapter = exports.OpenAIAdapter = exports.DEFAULT_CONFIG = exports.LLMError = exports.BaseLLMAdapter = void 0;
|
|
9
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
10
|
+
// Adapters
|
|
11
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
12
|
+
var index_js_1 = require("./adapters/index.js");
|
|
13
|
+
Object.defineProperty(exports, "BaseLLMAdapter", { enumerable: true, get: function () { return index_js_1.BaseLLMAdapter; } });
|
|
14
|
+
Object.defineProperty(exports, "LLMError", { enumerable: true, get: function () { return index_js_1.LLMError; } });
|
|
15
|
+
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return index_js_1.DEFAULT_CONFIG; } });
|
|
16
|
+
Object.defineProperty(exports, "OpenAIAdapter", { enumerable: true, get: function () { return index_js_1.OpenAIAdapter; } });
|
|
17
|
+
Object.defineProperty(exports, "createOpenAIAdapter", { enumerable: true, get: function () { return index_js_1.createOpenAIAdapter; } });
|
|
18
|
+
Object.defineProperty(exports, "AnthropicAdapter", { enumerable: true, get: function () { return index_js_1.AnthropicAdapter; } });
|
|
19
|
+
Object.defineProperty(exports, "createAnthropicAdapter", { enumerable: true, get: function () { return index_js_1.createAnthropicAdapter; } });
|
|
20
|
+
Object.defineProperty(exports, "OllamaAdapter", { enumerable: true, get: function () { return index_js_1.OllamaAdapter; } });
|
|
21
|
+
Object.defineProperty(exports, "createOllamaAdapter", { enumerable: true, get: function () { return index_js_1.createOllamaAdapter; } });
|
|
22
|
+
Object.defineProperty(exports, "GeminiAdapter", { enumerable: true, get: function () { return index_js_1.GeminiAdapter; } });
|
|
23
|
+
Object.defineProperty(exports, "createGeminiAdapter", { enumerable: true, get: function () { return index_js_1.createGeminiAdapter; } });
|
|
24
|
+
Object.defineProperty(exports, "OpenRouterAdapter", { enumerable: true, get: function () { return index_js_1.OpenRouterAdapter; } });
|
|
25
|
+
Object.defineProperty(exports, "createOpenRouterAdapter", { enumerable: true, get: function () { return index_js_1.createOpenRouterAdapter; } });
|
|
26
|
+
Object.defineProperty(exports, "OPENROUTER_MODELS", { enumerable: true, get: function () { return index_js_1.OPENROUTER_MODELS; } });
|
|
27
|
+
Object.defineProperty(exports, "MediaPipeAdapter", { enumerable: true, get: function () { return index_js_1.MediaPipeAdapter; } });
|
|
28
|
+
Object.defineProperty(exports, "createMediaPipeAdapter", { enumerable: true, get: function () { return index_js_1.createMediaPipeAdapter; } });
|
|
29
|
+
Object.defineProperty(exports, "MEDIAPIPE_MODELS", { enumerable: true, get: function () { return index_js_1.MEDIAPIPE_MODELS; } });
|
|
30
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
// Orchestrator
|
|
32
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
33
|
+
var orchestrator_js_1 = require("./orchestrator.js");
|
|
34
|
+
Object.defineProperty(exports, "LLMOrchestrator", { enumerable: true, get: function () { return orchestrator_js_1.LLMOrchestrator; } });
|
|
35
|
+
Object.defineProperty(exports, "createOrchestrator", { enumerable: true, get: function () { return orchestrator_js_1.createOrchestrator; } });
|
|
36
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
37
|
+
// Prompts
|
|
38
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
39
|
+
var prompts_js_1 = require("./prompts.js");
|
|
40
|
+
Object.defineProperty(exports, "SYSTEM_PROMPTS", { enumerable: true, get: function () { return prompts_js_1.SYSTEM_PROMPTS; } });
|
|
41
|
+
Object.defineProperty(exports, "EXTRACTION_SCHEMA", { enumerable: true, get: function () { return prompts_js_1.EXTRACTION_SCHEMA; } });
|
|
42
|
+
Object.defineProperty(exports, "PREREQUISITE_SCHEMA", { enumerable: true, get: function () { return prompts_js_1.PREREQUISITE_SCHEMA; } });
|
|
43
|
+
Object.defineProperty(exports, "BLOOM_ANALYSIS_SCHEMA", { enumerable: true, get: function () { return prompts_js_1.BLOOM_ANALYSIS_SCHEMA; } });
|
|
44
|
+
Object.defineProperty(exports, "DECOMPOSITION_SCHEMA", { enumerable: true, get: function () { return prompts_js_1.DECOMPOSITION_SCHEMA; } });
|
|
45
|
+
Object.defineProperty(exports, "buildExtractionPrompt", { enumerable: true, get: function () { return prompts_js_1.buildExtractionPrompt; } });
|
|
46
|
+
Object.defineProperty(exports, "buildPrerequisitePrompt", { enumerable: true, get: function () { return prompts_js_1.buildPrerequisitePrompt; } });
|
|
47
|
+
Object.defineProperty(exports, "buildBloomPrompt", { enumerable: true, get: function () { return prompts_js_1.buildBloomPrompt; } });
|
|
48
|
+
Object.defineProperty(exports, "buildDecompositionPrompt", { enumerable: true, get: function () { return prompts_js_1.buildDecompositionPrompt; } });
|
|
12
49
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/llm/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/llm/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAgCH,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAChF,gDAkB6B;AAjB3B,0GAAA,cAAc,OAAA;AACd,oGAAA,QAAQ,OAAA;AACR,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,4GAAA,gBAAgB,OAAA;AAChB,kHAAA,sBAAsB,OAAA;AACtB,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,6GAAA,iBAAiB,OAAA;AACjB,mHAAA,uBAAuB,OAAA;AACvB,6GAAA,iBAAiB,OAAA;AACjB,4GAAA,gBAAgB,OAAA;AAChB,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAIlB,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAChF,qDAAwE;AAA/D,kHAAA,eAAe,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAE5C,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAChF,2CAUsB;AATpB,4GAAA,cAAc,OAAA;AACd,+GAAA,iBAAiB,OAAA;AACjB,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA;AACrB,kHAAA,oBAAoB,OAAA;AACpB,mHAAA,qBAAqB,OAAA;AACrB,qHAAA,uBAAuB,OAAA;AACvB,8GAAA,gBAAgB,OAAA;AAChB,sHAAA,wBAAwB,OAAA"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM orchestrator for educational tasks
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.LLMOrchestrator = void 0;
|
|
9
|
+
exports.createOrchestrator = createOrchestrator;
|
|
10
|
+
const skill_js_1 = require("../types/skill.js");
|
|
11
|
+
const prompts_js_1 = require("./prompts.js");
|
|
12
|
+
/** Default estimated minutes for skill mastery */
|
|
13
|
+
const DEFAULT_ESTIMATED_MINUTES = 30;
|
|
14
|
+
/**
|
|
15
|
+
* Difficulty mapping for Bloom's levels
|
|
16
|
+
*/
|
|
17
|
+
const BLOOM_DIFFICULTY = {
|
|
18
|
+
remember: 0.2,
|
|
19
|
+
understand: 0.35,
|
|
20
|
+
apply: 0.5,
|
|
21
|
+
analyze: 0.65,
|
|
22
|
+
evaluate: 0.8,
|
|
23
|
+
create: 0.9,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* High-level orchestrator for LLM-based educational tasks
|
|
27
|
+
*/
|
|
28
|
+
class LLMOrchestrator {
|
|
29
|
+
adapter;
|
|
30
|
+
constructor(adapter) {
|
|
31
|
+
this.adapter = adapter;
|
|
32
|
+
}
|
|
33
|
+
getAdapter() {
|
|
34
|
+
return this.adapter;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract skills from curriculum content
|
|
38
|
+
*/
|
|
39
|
+
async extractSkills(request) {
|
|
40
|
+
const startTime = Date.now();
|
|
41
|
+
// Build options object conditionally to avoid undefined values
|
|
42
|
+
const extractionOptions = {};
|
|
43
|
+
if (request.domain)
|
|
44
|
+
extractionOptions.domain = request.domain;
|
|
45
|
+
if (request.gradeLevel)
|
|
46
|
+
extractionOptions.gradeLevel = request.gradeLevel;
|
|
47
|
+
if (request.context)
|
|
48
|
+
extractionOptions.context = request.context;
|
|
49
|
+
const messages = [
|
|
50
|
+
{ role: 'system', content: prompts_js_1.SYSTEM_PROMPTS.skillExtraction },
|
|
51
|
+
{
|
|
52
|
+
role: 'user',
|
|
53
|
+
content: (0, prompts_js_1.buildExtractionPrompt)(request.content, extractionOptions),
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
const response = await this.adapter.complete({
|
|
57
|
+
messages,
|
|
58
|
+
responseFormat: 'json',
|
|
59
|
+
jsonSchema: prompts_js_1.EXTRACTION_SCHEMA,
|
|
60
|
+
});
|
|
61
|
+
const parsed = response.json;
|
|
62
|
+
// Apply filters and defaults
|
|
63
|
+
let skills = parsed.skills.map((skill) => ({
|
|
64
|
+
...skill,
|
|
65
|
+
isThresholdConcept: skill.isThresholdConcept ?? false,
|
|
66
|
+
confidence: skill.confidence ?? 0.8,
|
|
67
|
+
}));
|
|
68
|
+
// Filter by minimum confidence
|
|
69
|
+
if (request.minConfidence) {
|
|
70
|
+
skills = skills.filter((s) => s.confidence >= request.minConfidence);
|
|
71
|
+
}
|
|
72
|
+
// Calculate overall confidence
|
|
73
|
+
const confidence = skills.length > 0 ? skills.reduce((acc, s) => acc + s.confidence, 0) / skills.length : 0;
|
|
74
|
+
return {
|
|
75
|
+
skills,
|
|
76
|
+
confidence,
|
|
77
|
+
usage: response.usage,
|
|
78
|
+
warnings: parsed.warnings ?? [],
|
|
79
|
+
durationMs: Date.now() - startTime,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Infer prerequisites between skills
|
|
84
|
+
*/
|
|
85
|
+
async inferPrerequisites(request) {
|
|
86
|
+
const startTime = Date.now();
|
|
87
|
+
// Build options object conditionally to avoid undefined values
|
|
88
|
+
const prerequisiteOptions = {};
|
|
89
|
+
if (request.domain)
|
|
90
|
+
prerequisiteOptions.domain = request.domain;
|
|
91
|
+
if (request.inferTransitive !== undefined)
|
|
92
|
+
prerequisiteOptions.inferTransitive = request.inferTransitive;
|
|
93
|
+
const messages = [
|
|
94
|
+
{ role: 'system', content: prompts_js_1.SYSTEM_PROMPTS.prerequisiteInference },
|
|
95
|
+
{
|
|
96
|
+
role: 'user',
|
|
97
|
+
content: (0, prompts_js_1.buildPrerequisitePrompt)(request.skills, prerequisiteOptions),
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
const response = await this.adapter.complete({
|
|
101
|
+
messages,
|
|
102
|
+
responseFormat: 'json',
|
|
103
|
+
jsonSchema: prompts_js_1.PREREQUISITE_SCHEMA,
|
|
104
|
+
});
|
|
105
|
+
const parsed = response.json;
|
|
106
|
+
// Filter by minimum confidence
|
|
107
|
+
let prerequisites = parsed.prerequisites;
|
|
108
|
+
if (request.minConfidence) {
|
|
109
|
+
prerequisites = prerequisites.filter((p) => p.confidence >= request.minConfidence);
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
prerequisites,
|
|
113
|
+
usage: response.usage,
|
|
114
|
+
durationMs: Date.now() - startTime,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Analyze Bloom's level of text
|
|
119
|
+
*/
|
|
120
|
+
async analyzeBloomLevel(request) {
|
|
121
|
+
const messages = [
|
|
122
|
+
{ role: 'system', content: prompts_js_1.SYSTEM_PROMPTS.bloomAnalysis },
|
|
123
|
+
{ role: 'user', content: (0, prompts_js_1.buildBloomPrompt)(request.text, request.context) },
|
|
124
|
+
];
|
|
125
|
+
const response = await this.adapter.complete({
|
|
126
|
+
messages,
|
|
127
|
+
responseFormat: 'json',
|
|
128
|
+
jsonSchema: prompts_js_1.BLOOM_ANALYSIS_SCHEMA,
|
|
129
|
+
});
|
|
130
|
+
const parsed = response.json;
|
|
131
|
+
return {
|
|
132
|
+
level: parsed.level,
|
|
133
|
+
confidence: parsed.confidence,
|
|
134
|
+
indicators: parsed.indicators,
|
|
135
|
+
reasoning: parsed.reasoning,
|
|
136
|
+
usage: response.usage,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Full curriculum decomposition into skill graph
|
|
141
|
+
*/
|
|
142
|
+
async decompose(request) {
|
|
143
|
+
const startTime = Date.now();
|
|
144
|
+
// Build options object conditionally to avoid undefined values
|
|
145
|
+
const decompositionOptions = {};
|
|
146
|
+
if (request.title)
|
|
147
|
+
decompositionOptions.title = request.title;
|
|
148
|
+
if (request.domain)
|
|
149
|
+
decompositionOptions.domain = request.domain;
|
|
150
|
+
if (request.gradeLevel)
|
|
151
|
+
decompositionOptions.gradeLevel = request.gradeLevel;
|
|
152
|
+
if (request.context)
|
|
153
|
+
decompositionOptions.context = request.context;
|
|
154
|
+
if (request.maxDepth !== undefined)
|
|
155
|
+
decompositionOptions.maxDepth = request.maxDepth;
|
|
156
|
+
const messages = [
|
|
157
|
+
{ role: 'system', content: prompts_js_1.SYSTEM_PROMPTS.curriculumDecomposition },
|
|
158
|
+
{
|
|
159
|
+
role: 'user',
|
|
160
|
+
content: (0, prompts_js_1.buildDecompositionPrompt)(request.content, decompositionOptions),
|
|
161
|
+
},
|
|
162
|
+
];
|
|
163
|
+
const response = await this.adapter.complete({
|
|
164
|
+
messages,
|
|
165
|
+
responseFormat: 'json',
|
|
166
|
+
jsonSchema: prompts_js_1.DECOMPOSITION_SCHEMA,
|
|
167
|
+
maxTokens: 8192, // Decomposition can be verbose
|
|
168
|
+
});
|
|
169
|
+
const parsed = response.json;
|
|
170
|
+
// Convert extracted skills to SkillNodeInput format
|
|
171
|
+
const skillInputs = parsed.skills.map((skill) => ({
|
|
172
|
+
name: skill.name,
|
|
173
|
+
description: skill.description,
|
|
174
|
+
bloomLevel: skill.bloomLevel,
|
|
175
|
+
difficulty: skill.difficulty ?? BLOOM_DIFFICULTY[skill.bloomLevel] ?? 0.5,
|
|
176
|
+
isThresholdConcept: skill.isThresholdConcept ?? false,
|
|
177
|
+
masteryThreshold: skill.isThresholdConcept
|
|
178
|
+
? skill_js_1.THRESHOLD_CONCEPT_MASTERY
|
|
179
|
+
: skill_js_1.SKILL_DEFAULTS.masteryThreshold,
|
|
180
|
+
estimatedMinutes: skill.estimatedMinutes ?? DEFAULT_ESTIMATED_MINUTES,
|
|
181
|
+
tags: skill.keywords ?? [],
|
|
182
|
+
metadata: {
|
|
183
|
+
llmExtracted: true,
|
|
184
|
+
llmId: skill.id,
|
|
185
|
+
confidence: skill.confidence ?? 0.8,
|
|
186
|
+
},
|
|
187
|
+
}));
|
|
188
|
+
// Convert prerequisites with confidence
|
|
189
|
+
const prerequisites = parsed.prerequisites.map((p) => ({
|
|
190
|
+
sourceId: p.sourceId,
|
|
191
|
+
targetId: p.targetId,
|
|
192
|
+
strength: p.strength,
|
|
193
|
+
type: p.type,
|
|
194
|
+
confidence: 0.8, // Default confidence for decomposition
|
|
195
|
+
reasoning: p.reasoning ?? 'Inferred from curriculum structure',
|
|
196
|
+
}));
|
|
197
|
+
return {
|
|
198
|
+
title: parsed.title || request.title || 'Untitled Curriculum',
|
|
199
|
+
skills: parsed.skills.map((s) => ({
|
|
200
|
+
...s,
|
|
201
|
+
isThresholdConcept: s.isThresholdConcept ?? false,
|
|
202
|
+
confidence: s.confidence ?? 0.8,
|
|
203
|
+
})),
|
|
204
|
+
prerequisites,
|
|
205
|
+
skillInputs,
|
|
206
|
+
usage: response.usage,
|
|
207
|
+
durationMs: Date.now() - startTime,
|
|
208
|
+
warnings: parsed.warnings ?? [],
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.LLMOrchestrator = LLMOrchestrator;
|
|
213
|
+
/**
|
|
214
|
+
* Create an orchestrator with a specific adapter
|
|
215
|
+
*/
|
|
216
|
+
function createOrchestrator(adapter) {
|
|
217
|
+
return new LLMOrchestrator(adapter);
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/llm/orchestrator.ts"],"names":[],"mappings":"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"}
|