hoomanjs 1.41.1 → 1.42.1
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 +3 -3
- package/dist/acp/acp-agent.js +23 -2
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/chat/app.js +11 -2
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/components/BottomChrome.d.ts +4 -1
- package/dist/chat/components/BottomChrome.js +3 -2
- package/dist/chat/components/BottomChrome.js.map +1 -1
- package/dist/chat/components/DownloadPanel.d.ts +9 -0
- package/dist/chat/components/DownloadPanel.js +16 -0
- package/dist/chat/components/DownloadPanel.js.map +1 -0
- package/dist/cli.js +21 -23
- package/dist/cli.js.map +1 -1
- package/dist/configure/app.js +37 -2
- package/dist/configure/app.js.map +1 -1
- package/dist/core/config.d.ts +60 -0
- package/dist/core/config.js +28 -5
- package/dist/core/config.js.map +1 -1
- package/dist/core/mcp/manager.js.map +1 -1
- package/dist/core/models/download-progress.d.ts +65 -0
- package/dist/core/models/download-progress.js +154 -0
- package/dist/core/models/download-progress.js.map +1 -0
- package/dist/core/models/index.js +1 -0
- package/dist/core/models/index.js.map +1 -1
- package/dist/core/models/llama-cpp/gbnf-schema.d.ts +32 -0
- package/dist/core/models/llama-cpp/gbnf-schema.js +272 -0
- package/dist/core/models/llama-cpp/gbnf-schema.js.map +1 -0
- package/dist/core/models/llama-cpp/index.d.ts +8 -0
- package/dist/core/models/llama-cpp/index.js +37 -0
- package/dist/core/models/llama-cpp/index.js.map +1 -0
- package/dist/core/models/llama-cpp/resolve-model.d.ts +28 -0
- package/dist/core/models/llama-cpp/resolve-model.js +307 -0
- package/dist/core/models/llama-cpp/resolve-model.js.map +1 -0
- package/dist/core/models/llama-cpp/strands-llama-cpp.d.ts +40 -0
- package/dist/core/models/llama-cpp/strands-llama-cpp.js +422 -0
- package/dist/core/models/llama-cpp/strands-llama-cpp.js.map +1 -0
- package/dist/core/models/types.d.ts +124 -1
- package/dist/core/models/types.js +32 -0
- package/dist/core/models/types.js.map +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +26 -7
- package/dist/core/skills/built-in/hooman-config/providers.md +3 -0
- package/dist/core/utils/billing.d.ts +7 -1
- package/dist/core/utils/billing.js +21 -3
- package/dist/core/utils/billing.js.map +1 -1
- package/dist/core/utils/logging.d.ts +29 -0
- package/dist/core/utils/logging.js +64 -0
- package/dist/core/utils/logging.js.map +1 -0
- package/dist/core/utils/reasoning-effort.d.ts +1 -0
- package/dist/daemon/index.js +5 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
import { ContextWindowOverflowError, Model, ModelError, } from "@strands-agents/sdk";
|
|
2
|
+
import { ModelContentBlockDeltaEvent, ModelContentBlockStartEvent, ModelContentBlockStopEvent, ModelMessageStartEvent, ModelMessageStopEvent, ModelMetadataEvent, } from "@strands-agents/sdk";
|
|
3
|
+
import { jsonSchemaToGbnf, pruneOptionalNulls } from "./gbnf-schema.js";
|
|
4
|
+
import { resolveModelFile } from "./resolve-model.js";
|
|
5
|
+
/**
|
|
6
|
+
* Loaded llama.cpp runtimes are expensive (weights in RAM/VRAM), so share them
|
|
7
|
+
* process-wide keyed by resolved GGUF path. Contexts stay per Strands model
|
|
8
|
+
* instance so concurrent agents (e.g. subagents) get independent sequences.
|
|
9
|
+
*/
|
|
10
|
+
const llamaRuntimePromises = new Map();
|
|
11
|
+
const loadedModelPromises = new Map();
|
|
12
|
+
function extractSystemText(system) {
|
|
13
|
+
if (system === undefined) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
if (typeof system === "string") {
|
|
17
|
+
return system;
|
|
18
|
+
}
|
|
19
|
+
const parts = [];
|
|
20
|
+
for (const block of system) {
|
|
21
|
+
if (block.type === "textBlock") {
|
|
22
|
+
parts.push(block.text);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const joined = parts.join("\n").trim();
|
|
26
|
+
return joined.length > 0 ? joined : undefined;
|
|
27
|
+
}
|
|
28
|
+
function contentBlockToText(block) {
|
|
29
|
+
if (block.type === "textBlock") {
|
|
30
|
+
return block.text;
|
|
31
|
+
}
|
|
32
|
+
if (block.type === "imageBlock") {
|
|
33
|
+
return "(llama.cpp: image content is not supported by this provider)";
|
|
34
|
+
}
|
|
35
|
+
if (block.type === "videoBlock" || block.type === "documentBlock") {
|
|
36
|
+
return `(llama.cpp: ${block.type} content is not supported by this provider)`;
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
function toolResultToText(block) {
|
|
41
|
+
const parts = [];
|
|
42
|
+
for (const c of block.content) {
|
|
43
|
+
if (c.type === "textBlock") {
|
|
44
|
+
parts.push(c.text);
|
|
45
|
+
}
|
|
46
|
+
else if (c.type === "jsonBlock") {
|
|
47
|
+
parts.push(JSON.stringify(c.json));
|
|
48
|
+
}
|
|
49
|
+
else if (c.type === "imageBlock") {
|
|
50
|
+
parts.push("(llama.cpp: image tool results are not supported)");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const joined = parts.join("\n");
|
|
54
|
+
if (joined.length > 0) {
|
|
55
|
+
return joined;
|
|
56
|
+
}
|
|
57
|
+
return block.status === "error" ? "(tool error)" : "";
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Convert Strands conversation history to node-llama-cpp `ChatHistoryItem[]`.
|
|
61
|
+
* Tool calls are paired with their results (`ChatModelFunctionCall` requires
|
|
62
|
+
* both) by `toolUseId`: the toolUse blocks live on assistant messages and the
|
|
63
|
+
* matching toolResult blocks on the following user message, so results are
|
|
64
|
+
* folded back into the preceding model response.
|
|
65
|
+
*/
|
|
66
|
+
function strandsMessagesToHistory(messages, systemText) {
|
|
67
|
+
const history = [];
|
|
68
|
+
if (systemText) {
|
|
69
|
+
history.push({ type: "system", text: systemText });
|
|
70
|
+
}
|
|
71
|
+
const pendingToolUses = new Map();
|
|
72
|
+
const lastModelResponse = () => {
|
|
73
|
+
const last = history.at(-1);
|
|
74
|
+
if (last?.type === "model") {
|
|
75
|
+
return last;
|
|
76
|
+
}
|
|
77
|
+
const created = { type: "model", response: [] };
|
|
78
|
+
history.push(created);
|
|
79
|
+
return created;
|
|
80
|
+
};
|
|
81
|
+
const pushUserText = (text) => {
|
|
82
|
+
const last = history.at(-1);
|
|
83
|
+
if (last?.type === "user") {
|
|
84
|
+
last.text = last.text.length > 0 ? `${last.text}\n${text}` : text;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
history.push({ type: "user", text });
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
for (const msg of messages) {
|
|
91
|
+
for (const block of msg.content) {
|
|
92
|
+
if (msg.role === "assistant") {
|
|
93
|
+
if (block.type === "toolUseBlock") {
|
|
94
|
+
const b = block;
|
|
95
|
+
pendingToolUses.set(b.toolUseId, b);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (block.type === "reasoningBlock") {
|
|
99
|
+
// Prior turns' chain of thought is not replayed into the context.
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const text = contentBlockToText(block);
|
|
103
|
+
if (text !== undefined && text.length > 0) {
|
|
104
|
+
lastModelResponse().response.push(text);
|
|
105
|
+
}
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// user role
|
|
109
|
+
if (block.type === "toolResultBlock") {
|
|
110
|
+
const b = block;
|
|
111
|
+
const use = pendingToolUses.get(b.toolUseId);
|
|
112
|
+
pendingToolUses.delete(b.toolUseId);
|
|
113
|
+
const call = {
|
|
114
|
+
type: "functionCall",
|
|
115
|
+
name: use?.name ?? b.toolUseId,
|
|
116
|
+
params: use?.input ?? {},
|
|
117
|
+
result: toolResultToText(b),
|
|
118
|
+
};
|
|
119
|
+
const model = lastModelResponse();
|
|
120
|
+
if (model.response.filter((item) => typeof item !== "string").length === 0) {
|
|
121
|
+
call.startsNewChunk = true;
|
|
122
|
+
}
|
|
123
|
+
model.response.push(call);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const text = contentBlockToText(block);
|
|
127
|
+
if (text !== undefined && text.length > 0) {
|
|
128
|
+
pushUserText(text);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return history;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Convert Strands tool specs to node-llama-cpp function definitions. Tool
|
|
136
|
+
* inputSchemas are standard JSON Schema (Strands emits them via
|
|
137
|
+
* `z.toJSONSchema`), while node-llama-cpp only accepts its GBNF subset —
|
|
138
|
+
* passing e.g. `anyOf` through unconverted fails generation with
|
|
139
|
+
* `Unknown immutable type undefined`. See `gbnf-schema.ts`.
|
|
140
|
+
*/
|
|
141
|
+
function strandsToolsToFunctions(toolSpecs) {
|
|
142
|
+
if (!toolSpecs?.length) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
const functions = {};
|
|
146
|
+
for (const spec of toolSpecs) {
|
|
147
|
+
functions[spec.name] = {
|
|
148
|
+
...(spec.description ? { description: spec.description } : {}),
|
|
149
|
+
...(spec.inputSchema
|
|
150
|
+
? { params: jsonSchemaToGbnf(spec.inputSchema) }
|
|
151
|
+
: {}),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return functions;
|
|
155
|
+
}
|
|
156
|
+
/** Strands {@link Model} backed by in-process llama.cpp via `node-llama-cpp`. */
|
|
157
|
+
export class StrandsLlamaCppModel extends Model {
|
|
158
|
+
config;
|
|
159
|
+
chatPromise;
|
|
160
|
+
context;
|
|
161
|
+
constructor(config) {
|
|
162
|
+
super();
|
|
163
|
+
this.config = { ...config };
|
|
164
|
+
}
|
|
165
|
+
updateConfig(modelConfig) {
|
|
166
|
+
const chatKey = (c) => JSON.stringify([c.modelId, c.gpu, c.context, c.reasoning ?? null]);
|
|
167
|
+
const before = chatKey(this.config);
|
|
168
|
+
this.config = { ...this.config, ...modelConfig };
|
|
169
|
+
if (chatKey(this.config) !== before) {
|
|
170
|
+
// The chat wrapper bakes in reasoning settings and the context bakes in
|
|
171
|
+
// its size, so drop the lazily-built chat/context and rebuild on the
|
|
172
|
+
// next stream call (loaded weights are cached process-wide).
|
|
173
|
+
this.chatPromise = undefined;
|
|
174
|
+
this.context = undefined;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
getConfig() {
|
|
178
|
+
return { ...this.config };
|
|
179
|
+
}
|
|
180
|
+
getChat() {
|
|
181
|
+
this.chatPromise ??= this.initChat();
|
|
182
|
+
return this.chatPromise;
|
|
183
|
+
}
|
|
184
|
+
async initChat() {
|
|
185
|
+
const modelId = this.config.modelId;
|
|
186
|
+
if (!modelId) {
|
|
187
|
+
throw new ModelError("llama.cpp model is not configured");
|
|
188
|
+
}
|
|
189
|
+
const { getLlama, LlamaChat, LlamaLogLevel, resolveChatWrapper } = await import("node-llama-cpp");
|
|
190
|
+
const modelPath = await resolveModelFile(modelId, this.config.hfToken);
|
|
191
|
+
const gpu = this.config.gpu ?? "auto";
|
|
192
|
+
const runtimeKey = JSON.stringify(gpu);
|
|
193
|
+
let llamaPromise = llamaRuntimePromises.get(runtimeKey);
|
|
194
|
+
if (!llamaPromise) {
|
|
195
|
+
// Keep llama.cpp's native logging out of the TUI transcript.
|
|
196
|
+
llamaPromise = getLlama({ gpu, logLevel: LlamaLogLevel.error });
|
|
197
|
+
llamaRuntimePromises.set(runtimeKey, llamaPromise);
|
|
198
|
+
}
|
|
199
|
+
const llama = await llamaPromise;
|
|
200
|
+
let modelPromise = loadedModelPromises.get(modelPath);
|
|
201
|
+
if (!modelPromise) {
|
|
202
|
+
modelPromise = llama.loadModel({ modelPath });
|
|
203
|
+
loadedModelPromises.set(modelPath, modelPromise);
|
|
204
|
+
}
|
|
205
|
+
const model = await modelPromise;
|
|
206
|
+
this.context = await model.createContext({
|
|
207
|
+
...(this.config.context !== undefined
|
|
208
|
+
? { contextSize: this.config.context }
|
|
209
|
+
: {}),
|
|
210
|
+
});
|
|
211
|
+
// Reasoning on/off lives in the chat template, so resolve the wrapper
|
|
212
|
+
// explicitly (same auto-detection LlamaChat would do) with per-wrapper
|
|
213
|
+
// thinking settings derived from the shared `reasoning` option.
|
|
214
|
+
const reasoningEnabled = this.config.reasoning !== undefined;
|
|
215
|
+
const effort = this.config.reasoning?.effort;
|
|
216
|
+
const harmonyEffort = effort === "high" || effort === "medium" ? effort : "low";
|
|
217
|
+
const chatWrapper = resolveChatWrapper(model, {
|
|
218
|
+
customWrapperSettings: {
|
|
219
|
+
qwen: { thoughts: reasoningEnabled ? "auto" : "discourage" },
|
|
220
|
+
gemma4: { reasoning: reasoningEnabled },
|
|
221
|
+
harmony: {
|
|
222
|
+
reasoningEffort: reasoningEnabled ? harmonyEffort : "low",
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
return new LlamaChat({
|
|
227
|
+
contextSequence: this.context.getSequence(),
|
|
228
|
+
chatWrapper,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
async *stream(messages, options) {
|
|
232
|
+
let chat;
|
|
233
|
+
try {
|
|
234
|
+
chat = await this.getChat();
|
|
235
|
+
}
|
|
236
|
+
catch (e) {
|
|
237
|
+
// Let a failed init (bad model spec, download failure) be retried.
|
|
238
|
+
this.chatPromise = undefined;
|
|
239
|
+
if (e instanceof ModelError) {
|
|
240
|
+
throw e;
|
|
241
|
+
}
|
|
242
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
243
|
+
throw new ModelError(`llama.cpp initialization failed: ${msg}`, {
|
|
244
|
+
cause: e,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
const systemText = extractSystemText(options?.systemPrompt);
|
|
248
|
+
const history = strandsMessagesToHistory(messages, systemText);
|
|
249
|
+
if (history.at(-1)?.type === "user") {
|
|
250
|
+
history.push({ type: "model", response: [] });
|
|
251
|
+
}
|
|
252
|
+
const functions = strandsToolsToFunctions(options?.toolSpecs);
|
|
253
|
+
const originalSchemas = new Map((options?.toolSpecs ?? []).map((spec) => [spec.name, spec.inputSchema]));
|
|
254
|
+
yield new ModelMessageStartEvent({
|
|
255
|
+
type: "modelMessageStartEvent",
|
|
256
|
+
role: "assistant",
|
|
257
|
+
});
|
|
258
|
+
const queue = [];
|
|
259
|
+
let wake;
|
|
260
|
+
const push = (event) => {
|
|
261
|
+
queue.push(event);
|
|
262
|
+
wake?.();
|
|
263
|
+
};
|
|
264
|
+
let textBlockOpen = false;
|
|
265
|
+
let reasoningBlockOpen = false;
|
|
266
|
+
const closeOpenBlocks = () => {
|
|
267
|
+
if (reasoningBlockOpen) {
|
|
268
|
+
push(new ModelContentBlockStopEvent({
|
|
269
|
+
type: "modelContentBlockStopEvent",
|
|
270
|
+
}));
|
|
271
|
+
reasoningBlockOpen = false;
|
|
272
|
+
}
|
|
273
|
+
if (textBlockOpen) {
|
|
274
|
+
push(new ModelContentBlockStopEvent({
|
|
275
|
+
type: "modelContentBlockStopEvent",
|
|
276
|
+
}));
|
|
277
|
+
textBlockOpen = false;
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
const meterBefore = {
|
|
281
|
+
input: chat.sequence.tokenMeter.usedInputTokens,
|
|
282
|
+
output: chat.sequence.tokenMeter.usedOutputTokens,
|
|
283
|
+
};
|
|
284
|
+
// Budget 0 closes any thought segment as soon as it opens, covering models
|
|
285
|
+
// whose template ignores the wrapper's discourage setting (e.g. DeepSeek
|
|
286
|
+
// R1 distills that always think).
|
|
287
|
+
const thoughtBudget = this.config.reasoning === undefined ? 0 : this.config.thoughtBudgetTokens;
|
|
288
|
+
let done = false;
|
|
289
|
+
let failure;
|
|
290
|
+
const generation = chat
|
|
291
|
+
.generateResponse(history, {
|
|
292
|
+
...(functions ? { functions } : {}),
|
|
293
|
+
...(this.config.maxTokens !== undefined
|
|
294
|
+
? { maxTokens: this.config.maxTokens }
|
|
295
|
+
: {}),
|
|
296
|
+
...(this.config.temperature !== undefined
|
|
297
|
+
? { temperature: this.config.temperature }
|
|
298
|
+
: {}),
|
|
299
|
+
...(this.config.topP !== undefined ? { topP: this.config.topP } : {}),
|
|
300
|
+
...(thoughtBudget !== undefined
|
|
301
|
+
? { budgets: { thoughtTokens: thoughtBudget } }
|
|
302
|
+
: {}),
|
|
303
|
+
onResponseChunk: (chunk) => {
|
|
304
|
+
if (chunk.type === "segment") {
|
|
305
|
+
if (chunk.segmentType !== "thought" || chunk.text.length === 0) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (textBlockOpen) {
|
|
309
|
+
push(new ModelContentBlockStopEvent({
|
|
310
|
+
type: "modelContentBlockStopEvent",
|
|
311
|
+
}));
|
|
312
|
+
textBlockOpen = false;
|
|
313
|
+
}
|
|
314
|
+
if (!reasoningBlockOpen) {
|
|
315
|
+
push(new ModelContentBlockStartEvent({
|
|
316
|
+
type: "modelContentBlockStartEvent",
|
|
317
|
+
}));
|
|
318
|
+
reasoningBlockOpen = true;
|
|
319
|
+
}
|
|
320
|
+
push(new ModelContentBlockDeltaEvent({
|
|
321
|
+
type: "modelContentBlockDeltaEvent",
|
|
322
|
+
delta: { type: "reasoningContentDelta", text: chunk.text },
|
|
323
|
+
}));
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
if (chunk.text.length === 0) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
if (reasoningBlockOpen) {
|
|
330
|
+
push(new ModelContentBlockStopEvent({
|
|
331
|
+
type: "modelContentBlockStopEvent",
|
|
332
|
+
}));
|
|
333
|
+
reasoningBlockOpen = false;
|
|
334
|
+
}
|
|
335
|
+
if (!textBlockOpen) {
|
|
336
|
+
push(new ModelContentBlockStartEvent({
|
|
337
|
+
type: "modelContentBlockStartEvent",
|
|
338
|
+
}));
|
|
339
|
+
textBlockOpen = true;
|
|
340
|
+
}
|
|
341
|
+
push(new ModelContentBlockDeltaEvent({
|
|
342
|
+
type: "modelContentBlockDeltaEvent",
|
|
343
|
+
delta: { type: "textDelta", text: chunk.text },
|
|
344
|
+
}));
|
|
345
|
+
},
|
|
346
|
+
})
|
|
347
|
+
.then((res) => {
|
|
348
|
+
closeOpenBlocks();
|
|
349
|
+
const functionCalls = res.functionCalls ?? [];
|
|
350
|
+
let toolIndex = 0;
|
|
351
|
+
for (const call of functionCalls) {
|
|
352
|
+
const name = call.functionName;
|
|
353
|
+
const toolUseId = functionCalls.length > 1 ? `${name}_${toolIndex}` : name;
|
|
354
|
+
toolIndex += 1;
|
|
355
|
+
// Drop the `null` markers the GBNF grammar uses for optional keys
|
|
356
|
+
// (see gbnf-schema.ts) so tools receive clean params.
|
|
357
|
+
const params = pruneOptionalNulls(call.params ?? {}, originalSchemas.get(name));
|
|
358
|
+
push(new ModelContentBlockStartEvent({
|
|
359
|
+
type: "modelContentBlockStartEvent",
|
|
360
|
+
start: { type: "toolUseStart", name, toolUseId },
|
|
361
|
+
}));
|
|
362
|
+
push(new ModelContentBlockDeltaEvent({
|
|
363
|
+
type: "modelContentBlockDeltaEvent",
|
|
364
|
+
delta: {
|
|
365
|
+
type: "toolUseInputDelta",
|
|
366
|
+
input: JSON.stringify(params ?? {}),
|
|
367
|
+
},
|
|
368
|
+
}));
|
|
369
|
+
push(new ModelContentBlockStopEvent({
|
|
370
|
+
type: "modelContentBlockStopEvent",
|
|
371
|
+
}));
|
|
372
|
+
}
|
|
373
|
+
const stopReason = functionCalls.length > 0
|
|
374
|
+
? "toolUse"
|
|
375
|
+
: res.metadata.stopReason === "maxTokens"
|
|
376
|
+
? "maxTokens"
|
|
377
|
+
: "endTurn";
|
|
378
|
+
push(new ModelMessageStopEvent({
|
|
379
|
+
type: "modelMessageStopEvent",
|
|
380
|
+
stopReason,
|
|
381
|
+
}));
|
|
382
|
+
const inputTokens = chat.sequence.tokenMeter.usedInputTokens - meterBefore.input;
|
|
383
|
+
const outputTokens = chat.sequence.tokenMeter.usedOutputTokens - meterBefore.output;
|
|
384
|
+
push(new ModelMetadataEvent({
|
|
385
|
+
type: "modelMetadataEvent",
|
|
386
|
+
usage: {
|
|
387
|
+
inputTokens,
|
|
388
|
+
outputTokens,
|
|
389
|
+
totalTokens: inputTokens + outputTokens,
|
|
390
|
+
},
|
|
391
|
+
}));
|
|
392
|
+
})
|
|
393
|
+
.catch((e) => {
|
|
394
|
+
failure = e;
|
|
395
|
+
})
|
|
396
|
+
.finally(() => {
|
|
397
|
+
done = true;
|
|
398
|
+
wake?.();
|
|
399
|
+
});
|
|
400
|
+
while (!done || queue.length > 0) {
|
|
401
|
+
if (queue.length > 0) {
|
|
402
|
+
yield queue.shift();
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
await new Promise((resolve) => {
|
|
406
|
+
wake = resolve;
|
|
407
|
+
});
|
|
408
|
+
wake = undefined;
|
|
409
|
+
}
|
|
410
|
+
await generation;
|
|
411
|
+
if (failure !== undefined) {
|
|
412
|
+
const msg = failure instanceof Error ? failure.message : String(failure);
|
|
413
|
+
if (msg.toLowerCase().includes("context size")) {
|
|
414
|
+
throw new ContextWindowOverflowError(msg);
|
|
415
|
+
}
|
|
416
|
+
throw new ModelError(`llama.cpp generation error: ${msg}`, {
|
|
417
|
+
cause: failure,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=strands-llama-cpp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strands-llama-cpp.js","sourceRoot":"","sources":["../../../../src/core/models/llama-cpp/strands-llama-cpp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,EACL,UAAU,GACX,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA0BtD;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA0B,CAAC;AAC/D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAEnE,SAAS,iBAAiB,CAAC,MAAqB;IAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmB;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,8DAA8D,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClE,OAAO,eAAe,KAAK,CAAC,IAAI,6CAA6C,CAAC;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAC/B,QAAmB,EACnB,UAA8B;IAE9B,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IAExD,MAAM,iBAAiB,GAAG,GAAsB,EAAE;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAClC,MAAM,CAAC,GAAG,KAAqB,CAAC;oBAChC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBACpC,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACpC,kEAAkE;oBAClE,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1C,iBAAiB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;gBACD,SAAS;YACX,CAAC;YACD,YAAY;YACZ,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,KAAwB,CAAC;gBACnC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC7C,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACpC,MAAM,IAAI,GAA0B;oBAClC,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,SAAS;oBAC9B,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;oBACxB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;iBAC5B,CAAC;gBACF,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;gBAClC,IACE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EACtE,CAAC;oBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC7B,CAAC;gBACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,SAAiC;IAEjC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GACb,EAAE,CAAC;IACL,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACrB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IACD,OAAO,SAA+B,CAAC;AACzC,CAAC;AAED,iFAAiF;AACjF,MAAM,OAAO,oBAAqB,SAAQ,KAA0B;IAC1D,MAAM,CAAsB;IAC5B,WAAW,CAAiC;IAC5C,OAAO,CAA2B;IAE1C,YAAY,MAA2B;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,WAAgC;QAC3C,MAAM,OAAO,GAAG,CAAC,CAAsB,EAAE,EAAE,CACzC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACjD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;YACpC,wEAAwE;YACxE,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAC9D,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,6DAA6D;YAC7D,YAAY,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YAChE,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QACjC,IAAI,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9C,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;gBACnC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,sEAAsE;QACtE,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7C,MAAM,aAAa,GACjB,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE;YAC5C,qBAAqB,EAAE;gBACrB,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE;gBAC5D,MAAM,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACvC,OAAO,EAAE;oBACP,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;iBAC1D;aACF;SACF,CAAC,CAAC;QACH,OAAO,IAAI,SAAS,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3C,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CACX,QAAmB,EACnB,OAAuB;QAEvB,IAAI,IAAe,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,mEAAmE;YACnE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;gBAC5B,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,UAAU,CAAC,oCAAoC,GAAG,EAAE,EAAE;gBAC9D,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CACxE,CAAC;QAEF,MAAM,IAAI,sBAAsB,CAAC;YAC/B,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAuB,EAAE,CAAC;QACrC,IAAI,IAA8B,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,KAAuB,EAAE,EAAE;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,EAAE,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,IAAI,kBAAkB,EAAE,CAAC;gBACvB,IAAI,CACF,IAAI,0BAA0B,CAAC;oBAC7B,IAAI,EAAE,4BAA4B;iBACnC,CAAC,CACH,CAAC;gBACF,kBAAkB,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CACF,IAAI,0BAA0B,CAAC;oBAC7B,IAAI,EAAE,4BAA4B;iBACnC,CAAC,CACH,CAAC;gBACF,aAAa,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG;YAClB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe;YAC/C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB;SAClD,CAAC;QAEF,2EAA2E;QAC3E,yEAAyE;QACzE,kCAAkC;QAClC,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAE5E,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,OAAgB,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI;aACpB,gBAAgB,CAAC,OAAO,EAAE;YACzB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,aAAa,KAAK,SAAS;gBAC7B,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACP,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;gBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7B,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC/D,OAAO;oBACT,CAAC;oBACD,IAAI,aAAa,EAAE,CAAC;wBAClB,IAAI,CACF,IAAI,0BAA0B,CAAC;4BAC7B,IAAI,EAAE,4BAA4B;yBACnC,CAAC,CACH,CAAC;wBACF,aAAa,GAAG,KAAK,CAAC;oBACxB,CAAC;oBACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBACxB,IAAI,CACF,IAAI,2BAA2B,CAAC;4BAC9B,IAAI,EAAE,6BAA6B;yBACpC,CAAC,CACH,CAAC;wBACF,kBAAkB,GAAG,IAAI,CAAC;oBAC5B,CAAC;oBACD,IAAI,CACF,IAAI,2BAA2B,CAAC;wBAC9B,IAAI,EAAE,6BAA6B;wBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;qBAC3D,CAAC,CACH,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBACD,IAAI,kBAAkB,EAAE,CAAC;oBACvB,IAAI,CACF,IAAI,0BAA0B,CAAC;wBAC7B,IAAI,EAAE,4BAA4B;qBACnC,CAAC,CACH,CAAC;oBACF,kBAAkB,GAAG,KAAK,CAAC;gBAC7B,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,IAAI,CACF,IAAI,2BAA2B,CAAC;wBAC9B,IAAI,EAAE,6BAA6B;qBACpC,CAAC,CACH,CAAC;oBACF,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;gBACD,IAAI,CACF,IAAI,2BAA2B,CAAC;oBAC9B,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;iBAC/C,CAAC,CACH,CAAC;YACJ,CAAC;SACF,CAAC;aACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,eAAe,EAAE,CAAC;YAElB,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;YAC9C,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC/B,MAAM,SAAS,GACb,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3D,SAAS,IAAI,CAAC,CAAC;gBACf,kEAAkE;gBAClE,sDAAsD;gBACtD,MAAM,MAAM,GAAG,kBAAkB,CAC/B,IAAI,CAAC,MAAM,IAAI,EAAE,EACjB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1B,CAAC;gBACF,IAAI,CACF,IAAI,2BAA2B,CAAC;oBAC9B,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;iBACjD,CAAC,CACH,CAAC;gBACF,IAAI,CACF,IAAI,2BAA2B,CAAC;oBAC9B,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE;wBACL,IAAI,EAAE,mBAAmB;wBACzB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;qBACpC;iBACF,CAAC,CACH,CAAC;gBACF,IAAI,CACF,IAAI,0BAA0B,CAAC;oBAC7B,IAAI,EAAE,4BAA4B;iBACnC,CAAC,CACH,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GACd,aAAa,CAAC,MAAM,GAAG,CAAC;gBACtB,CAAC,CAAE,SAAmB;gBACtB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,WAAW;oBACvC,CAAC,CAAE,WAAqB;oBACxB,CAAC,CAAE,SAAmB,CAAC;YAC7B,IAAI,CACF,IAAI,qBAAqB,CAAC;gBACxB,IAAI,EAAE,uBAAuB;gBAC7B,UAAU;aACX,CAAC,CACH,CAAC;YAEF,MAAM,WAAW,GACf,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC;YAC/D,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC;YACjE,IAAI,CACF,IAAI,kBAAkB,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE;oBACL,WAAW;oBACX,YAAY;oBACZ,WAAW,EAAE,WAAW,GAAG,YAAY;iBACxC;aACF,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACpB,OAAO,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,EAAE,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEL,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,KAAK,EAAG,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,GAAG,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,UAAU,CAAC;QAEjB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,0BAA0B,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,IAAI,UAAU,CAAC,+BAA+B,GAAG,EAAE,EAAE;gBACzD,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
|
@@ -5,6 +5,7 @@ export declare enum LlmProvider {
|
|
|
5
5
|
Bedrock = "bedrock",
|
|
6
6
|
Google = "google",
|
|
7
7
|
Groq = "groq",
|
|
8
|
+
LlamaCpp = "llama-cpp",
|
|
8
9
|
Minimax = "minimax",
|
|
9
10
|
Moonshot = "moonshot",
|
|
10
11
|
Ollama = "ollama",
|
|
@@ -48,6 +49,12 @@ export type LlmOptions = {
|
|
|
48
49
|
model: string;
|
|
49
50
|
temperature?: number;
|
|
50
51
|
maxTokens?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Context size in tokens for this model. Only honored by the `llama-cpp`
|
|
54
|
+
* provider (overrides the provider-level `context`); other providers
|
|
55
|
+
* ignore it.
|
|
56
|
+
*/
|
|
57
|
+
context?: number;
|
|
51
58
|
};
|
|
52
59
|
/**
|
|
53
60
|
* Per-million-token USD prices for a model. `cache/m` is the cached-input
|
|
@@ -130,6 +137,33 @@ export type GroqProviderOptions = {
|
|
|
130
137
|
*/
|
|
131
138
|
reasoning?: ReasoningOptions;
|
|
132
139
|
};
|
|
140
|
+
export type LlamaCppProviderOptions = {
|
|
141
|
+
/**
|
|
142
|
+
* Hugging Face access token used when downloading GGUF weights from the Hub
|
|
143
|
+
* (gated/private repos). Falls back to the `HF_TOKEN` env var when unset.
|
|
144
|
+
*/
|
|
145
|
+
hfToken?: string;
|
|
146
|
+
/**
|
|
147
|
+
* GPU backend forwarded to node-llama-cpp's `getLlama`. Defaults to
|
|
148
|
+
* `"auto"` when unset. Set `false` to force CPU-only inference.
|
|
149
|
+
*/
|
|
150
|
+
gpu?: "auto" | "metal" | "cuda" | "vulkan" | false;
|
|
151
|
+
/**
|
|
152
|
+
* Context size in tokens for the llama.cpp context. Per-LLM
|
|
153
|
+
* `options.context` takes precedence; when both are omitted,
|
|
154
|
+
* node-llama-cpp adapts it to the model's training context and free memory.
|
|
155
|
+
*/
|
|
156
|
+
context?: number;
|
|
157
|
+
/**
|
|
158
|
+
* Reasoning controls. Providing `reasoning` enables thinking: the chat
|
|
159
|
+
* template is configured to allow thought segments (Qwen `thoughts: "auto"`,
|
|
160
|
+
* Gemma 4 `reasoning: true`, gpt-oss/Harmony native reasoning-effort) and
|
|
161
|
+
* `effort` caps thought tokens via node-llama-cpp's thought budget
|
|
162
|
+
* (1024/2048/4096/8192, default `medium`). Omit `reasoning` to disable
|
|
163
|
+
* thinking (templates discourage thoughts, thought budget forced to 0).
|
|
164
|
+
*/
|
|
165
|
+
reasoning?: ReasoningOptions;
|
|
166
|
+
};
|
|
133
167
|
export type MinimaxProviderOptions = {
|
|
134
168
|
apiKey?: string;
|
|
135
169
|
baseURL?: string;
|
|
@@ -211,7 +245,7 @@ export type XaiProviderOptions = {
|
|
|
211
245
|
*/
|
|
212
246
|
reasoning?: ReasoningOptions;
|
|
213
247
|
};
|
|
214
|
-
export type ProviderOptions = AnthropicProviderOptions | AzureProviderOptions | BedrockProviderOptions | GoogleProviderOptions | GroqProviderOptions | MinimaxProviderOptions | MoonshotProviderOptions | OllamaProviderOptions | OpenAIProviderOptions | OpenRouterProviderOptions | XaiProviderOptions;
|
|
248
|
+
export type ProviderOptions = AnthropicProviderOptions | AzureProviderOptions | BedrockProviderOptions | GoogleProviderOptions | GroqProviderOptions | LlamaCppProviderOptions | MinimaxProviderOptions | MoonshotProviderOptions | OllamaProviderOptions | OpenAIProviderOptions | OpenRouterProviderOptions | XaiProviderOptions;
|
|
215
249
|
export declare const OpenAIApiSchema: z.ZodEnum<{
|
|
216
250
|
chat: "chat";
|
|
217
251
|
responses: "responses";
|
|
@@ -254,6 +288,7 @@ export declare const LlmOptionsSchema: z.ZodObject<{
|
|
|
254
288
|
model: z.ZodString;
|
|
255
289
|
temperature: z.ZodOptional<z.ZodNumber>;
|
|
256
290
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
291
|
+
context: z.ZodOptional<z.ZodNumber>;
|
|
257
292
|
}, z.core.$strict>;
|
|
258
293
|
export declare const LlmBillingCostsSchema: z.ZodObject<{
|
|
259
294
|
"input/m": z.ZodNumber;
|
|
@@ -387,6 +422,34 @@ export declare const GroqProviderOptionsSchema: z.ZodObject<{
|
|
|
387
422
|
}>>;
|
|
388
423
|
}, z.core.$strict>>;
|
|
389
424
|
}, z.core.$strict>;
|
|
425
|
+
export declare const LlamaCppProviderOptionsSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
|
|
426
|
+
hfToken: z.ZodOptional<z.ZodString>;
|
|
427
|
+
gpu: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
428
|
+
auto: "auto";
|
|
429
|
+
metal: "metal";
|
|
430
|
+
cuda: "cuda";
|
|
431
|
+
vulkan: "vulkan";
|
|
432
|
+
}>, z.ZodLiteral<false>]>>;
|
|
433
|
+
context: z.ZodOptional<z.ZodNumber>;
|
|
434
|
+
reasoning: z.ZodOptional<z.ZodObject<{
|
|
435
|
+
effort: z.ZodOptional<z.ZodEnum<{
|
|
436
|
+
minimal: "minimal";
|
|
437
|
+
low: "low";
|
|
438
|
+
medium: "medium";
|
|
439
|
+
high: "high";
|
|
440
|
+
}>>;
|
|
441
|
+
summary: z.ZodOptional<z.ZodEnum<{
|
|
442
|
+
auto: "auto";
|
|
443
|
+
concise: "concise";
|
|
444
|
+
detailed: "detailed";
|
|
445
|
+
none: "none";
|
|
446
|
+
}>>;
|
|
447
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
448
|
+
summarized: "summarized";
|
|
449
|
+
omitted: "omitted";
|
|
450
|
+
}>>;
|
|
451
|
+
}, z.core.$strict>>;
|
|
452
|
+
}, z.core.$strict>>;
|
|
390
453
|
export declare const MinimaxProviderOptionsSchema: z.ZodObject<{
|
|
391
454
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
392
455
|
baseURL: z.ZodOptional<z.ZodString>;
|
|
@@ -646,6 +709,34 @@ export declare const ProviderOptionsSchemas: {
|
|
|
646
709
|
}>>;
|
|
647
710
|
}, z.core.$strict>>;
|
|
648
711
|
}, z.core.$strict>;
|
|
712
|
+
readonly "llama-cpp": z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
|
|
713
|
+
hfToken: z.ZodOptional<z.ZodString>;
|
|
714
|
+
gpu: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
715
|
+
auto: "auto";
|
|
716
|
+
metal: "metal";
|
|
717
|
+
cuda: "cuda";
|
|
718
|
+
vulkan: "vulkan";
|
|
719
|
+
}>, z.ZodLiteral<false>]>>;
|
|
720
|
+
context: z.ZodOptional<z.ZodNumber>;
|
|
721
|
+
reasoning: z.ZodOptional<z.ZodObject<{
|
|
722
|
+
effort: z.ZodOptional<z.ZodEnum<{
|
|
723
|
+
minimal: "minimal";
|
|
724
|
+
low: "low";
|
|
725
|
+
medium: "medium";
|
|
726
|
+
high: "high";
|
|
727
|
+
}>>;
|
|
728
|
+
summary: z.ZodOptional<z.ZodEnum<{
|
|
729
|
+
auto: "auto";
|
|
730
|
+
concise: "concise";
|
|
731
|
+
detailed: "detailed";
|
|
732
|
+
none: "none";
|
|
733
|
+
}>>;
|
|
734
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
735
|
+
summarized: "summarized";
|
|
736
|
+
omitted: "omitted";
|
|
737
|
+
}>>;
|
|
738
|
+
}, z.core.$strict>>;
|
|
739
|
+
}, z.core.$strict>>;
|
|
649
740
|
readonly minimax: z.ZodObject<{
|
|
650
741
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
651
742
|
baseURL: z.ZodOptional<z.ZodString>;
|
|
@@ -920,6 +1011,37 @@ export declare const NamedProviderConfigSchema: z.ZodDiscriminatedUnion<[z.ZodOb
|
|
|
920
1011
|
}>>;
|
|
921
1012
|
}, z.core.$strict>>;
|
|
922
1013
|
}, z.core.$strict>;
|
|
1014
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
1015
|
+
name: z.ZodString;
|
|
1016
|
+
provider: z.ZodLiteral<LlmProvider.LlamaCpp>;
|
|
1017
|
+
options: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
|
|
1018
|
+
hfToken: z.ZodOptional<z.ZodString>;
|
|
1019
|
+
gpu: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
1020
|
+
auto: "auto";
|
|
1021
|
+
metal: "metal";
|
|
1022
|
+
cuda: "cuda";
|
|
1023
|
+
vulkan: "vulkan";
|
|
1024
|
+
}>, z.ZodLiteral<false>]>>;
|
|
1025
|
+
context: z.ZodOptional<z.ZodNumber>;
|
|
1026
|
+
reasoning: z.ZodOptional<z.ZodObject<{
|
|
1027
|
+
effort: z.ZodOptional<z.ZodEnum<{
|
|
1028
|
+
minimal: "minimal";
|
|
1029
|
+
low: "low";
|
|
1030
|
+
medium: "medium";
|
|
1031
|
+
high: "high";
|
|
1032
|
+
}>>;
|
|
1033
|
+
summary: z.ZodOptional<z.ZodEnum<{
|
|
1034
|
+
auto: "auto";
|
|
1035
|
+
concise: "concise";
|
|
1036
|
+
detailed: "detailed";
|
|
1037
|
+
none: "none";
|
|
1038
|
+
}>>;
|
|
1039
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
1040
|
+
summarized: "summarized";
|
|
1041
|
+
omitted: "omitted";
|
|
1042
|
+
}>>;
|
|
1043
|
+
}, z.core.$strict>>;
|
|
1044
|
+
}, z.core.$strict>>;
|
|
923
1045
|
}, z.core.$strict>, z.ZodObject<{
|
|
924
1046
|
name: z.ZodString;
|
|
925
1047
|
provider: z.ZodLiteral<LlmProvider.Minimax>;
|
|
@@ -1086,6 +1208,7 @@ export declare const NamedLlmConfigSchema: z.ZodObject<{
|
|
|
1086
1208
|
model: z.ZodString;
|
|
1087
1209
|
temperature: z.ZodOptional<z.ZodNumber>;
|
|
1088
1210
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
1211
|
+
context: z.ZodOptional<z.ZodNumber>;
|
|
1089
1212
|
}, z.core.$strict>;
|
|
1090
1213
|
billing: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
1091
1214
|
name: z.ZodString;
|