@nodetool-ai/runtime 0.8.2 → 0.8.3

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 (200) hide show
  1. package/dist/.nodetool-build-stamp +1 -1
  2. package/dist/context.d.ts.map +1 -1
  3. package/dist/context.js +3 -2
  4. package/dist/context.js.map +1 -1
  5. package/dist/image-model-tasks.d.ts +20 -0
  6. package/dist/image-model-tasks.d.ts.map +1 -1
  7. package/dist/image-model-tasks.js +44 -1
  8. package/dist/image-model-tasks.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/prompt-asset-refs.d.ts +12 -1
  14. package/dist/prompt-asset-refs.d.ts.map +1 -1
  15. package/dist/prompt-asset-refs.js +9 -4
  16. package/dist/prompt-asset-refs.js.map +1 -1
  17. package/dist/providers/api-route-provider.d.ts +22 -0
  18. package/dist/providers/api-route-provider.d.ts.map +1 -0
  19. package/dist/providers/api-route-provider.js +56 -0
  20. package/dist/providers/api-route-provider.js.map +1 -0
  21. package/dist/providers/base-provider.d.ts.map +1 -1
  22. package/dist/providers/base-provider.js +22 -3
  23. package/dist/providers/base-provider.js.map +1 -1
  24. package/dist/providers/chatgpt-provider.d.ts +48 -0
  25. package/dist/providers/chatgpt-provider.d.ts.map +1 -0
  26. package/dist/providers/chatgpt-provider.js +506 -0
  27. package/dist/providers/chatgpt-provider.js.map +1 -0
  28. package/dist/providers/context-window.d.ts.map +1 -1
  29. package/dist/providers/context-window.js +1 -0
  30. package/dist/providers/context-window.js.map +1 -1
  31. package/dist/providers/cost-calculator.d.ts.map +1 -1
  32. package/dist/providers/cost-calculator.js +9 -0
  33. package/dist/providers/cost-calculator.js.map +1 -1
  34. package/dist/providers/credential-check.d.ts +8 -0
  35. package/dist/providers/credential-check.d.ts.map +1 -1
  36. package/dist/providers/credential-check.js +22 -0
  37. package/dist/providers/credential-check.js.map +1 -1
  38. package/dist/providers/custom-openai-provider.d.ts.map +1 -1
  39. package/dist/providers/custom-openai-provider.js +19 -1
  40. package/dist/providers/custom-openai-provider.js.map +1 -1
  41. package/dist/providers/dreamina-provider.d.ts +5 -3
  42. package/dist/providers/dreamina-provider.d.ts.map +1 -1
  43. package/dist/providers/dreamina-provider.js +245 -34
  44. package/dist/providers/dreamina-provider.js.map +1 -1
  45. package/dist/providers/extension-tab.d.ts +29 -0
  46. package/dist/providers/extension-tab.d.ts.map +1 -0
  47. package/dist/providers/extension-tab.js +144 -0
  48. package/dist/providers/extension-tab.js.map +1 -0
  49. package/dist/providers/fake-provider.d.ts +3 -1
  50. package/dist/providers/fake-provider.d.ts.map +1 -1
  51. package/dist/providers/fake-provider.js +63 -9
  52. package/dist/providers/fake-provider.js.map +1 -1
  53. package/dist/providers/fake-schema-answer.d.ts +10 -0
  54. package/dist/providers/fake-schema-answer.d.ts.map +1 -0
  55. package/dist/providers/fake-schema-answer.js +64 -0
  56. package/dist/providers/fake-schema-answer.js.map +1 -0
  57. package/dist/providers/fal-provider.d.ts.map +1 -1
  58. package/dist/providers/fal-provider.js +5 -2
  59. package/dist/providers/fal-provider.js.map +1 -1
  60. package/dist/providers/gemini-web-provider.d.ts +76 -0
  61. package/dist/providers/gemini-web-provider.d.ts.map +1 -0
  62. package/dist/providers/gemini-web-provider.js +752 -0
  63. package/dist/providers/gemini-web-provider.js.map +1 -0
  64. package/dist/providers/huggingface-provider.d.ts.map +1 -1
  65. package/dist/providers/huggingface-provider.js +17 -1
  66. package/dist/providers/huggingface-provider.js.map +1 -1
  67. package/dist/providers/index.d.ts +10 -2
  68. package/dist/providers/index.d.ts.map +1 -1
  69. package/dist/providers/index.js +36 -8
  70. package/dist/providers/index.js.map +1 -1
  71. package/dist/providers/llama-provider.d.ts +8 -0
  72. package/dist/providers/llama-provider.d.ts.map +1 -1
  73. package/dist/providers/llama-provider.js +23 -5
  74. package/dist/providers/llama-provider.js.map +1 -1
  75. package/dist/providers/lmstudio-provider.js +2 -2
  76. package/dist/providers/lmstudio-provider.js.map +1 -1
  77. package/dist/providers/manifest-models.d.ts +2 -12
  78. package/dist/providers/manifest-models.d.ts.map +1 -1
  79. package/dist/providers/manifest-models.js +45 -3
  80. package/dist/providers/manifest-models.js.map +1 -1
  81. package/dist/providers/meta-provider.d.ts +53 -6
  82. package/dist/providers/meta-provider.d.ts.map +1 -1
  83. package/dist/providers/meta-provider.js +289 -6
  84. package/dist/providers/meta-provider.js.map +1 -1
  85. package/dist/providers/meta-segmentation.d.ts +27 -0
  86. package/dist/providers/meta-segmentation.d.ts.map +1 -0
  87. package/dist/providers/meta-segmentation.js +141 -0
  88. package/dist/providers/meta-segmentation.js.map +1 -0
  89. package/dist/providers/meta-transcription.d.ts +31 -0
  90. package/dist/providers/meta-transcription.d.ts.map +1 -0
  91. package/dist/providers/meta-transcription.js +187 -0
  92. package/dist/providers/meta-transcription.js.map +1 -0
  93. package/dist/providers/node-llama-cpp-provider.d.ts +6 -3
  94. package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -1
  95. package/dist/providers/node-llama-cpp-provider.js +75 -58
  96. package/dist/providers/node-llama-cpp-provider.js.map +1 -1
  97. package/dist/providers/ollama-provider.d.ts +23 -0
  98. package/dist/providers/ollama-provider.d.ts.map +1 -1
  99. package/dist/providers/ollama-provider.js +140 -27
  100. package/dist/providers/ollama-provider.js.map +1 -1
  101. package/dist/providers/openai-compat/client.d.ts +10 -1
  102. package/dist/providers/openai-compat/client.d.ts.map +1 -1
  103. package/dist/providers/openai-compat/client.js +21 -3
  104. package/dist/providers/openai-compat/client.js.map +1 -1
  105. package/dist/providers/openai-compat/index.d.ts +1 -1
  106. package/dist/providers/openai-compat/index.d.ts.map +1 -1
  107. package/dist/providers/openai-compat/index.js +1 -1
  108. package/dist/providers/openai-compat/index.js.map +1 -1
  109. package/dist/providers/openai-compat/types.d.ts +4 -0
  110. package/dist/providers/openai-compat/types.d.ts.map +1 -1
  111. package/dist/providers/openai-compat-provider.d.ts +11 -0
  112. package/dist/providers/openai-compat-provider.d.ts.map +1 -1
  113. package/dist/providers/openai-compat-provider.js +47 -2
  114. package/dist/providers/openai-compat-provider.js.map +1 -1
  115. package/dist/providers/openai-provider.d.ts +13 -0
  116. package/dist/providers/openai-provider.d.ts.map +1 -1
  117. package/dist/providers/openai-provider.js +41 -7
  118. package/dist/providers/openai-provider.js.map +1 -1
  119. package/dist/providers/opper-provider.d.ts +31 -0
  120. package/dist/providers/opper-provider.d.ts.map +1 -0
  121. package/dist/providers/opper-provider.js +91 -0
  122. package/dist/providers/opper-provider.js.map +1 -0
  123. package/dist/providers/provider-request-log.d.ts.map +1 -1
  124. package/dist/providers/provider-request-log.js +3 -2
  125. package/dist/providers/provider-request-log.js.map +1 -1
  126. package/dist/providers/python-provider.d.ts.map +1 -1
  127. package/dist/providers/python-provider.js +5 -3
  128. package/dist/providers/python-provider.js.map +1 -1
  129. package/dist/providers/responses-api.d.ts +12 -2
  130. package/dist/providers/responses-api.d.ts.map +1 -1
  131. package/dist/providers/responses-api.js +54 -3
  132. package/dist/providers/responses-api.js.map +1 -1
  133. package/dist/providers/scripted-provider.d.ts.map +1 -1
  134. package/dist/providers/scripted-provider.js +6 -1
  135. package/dist/providers/scripted-provider.js.map +1 -1
  136. package/dist/providers/types.d.ts +16 -0
  137. package/dist/providers/types.d.ts.map +1 -1
  138. package/dist/providers/types.js.map +1 -1
  139. package/dist/providers/vllm-provider.d.ts +7 -0
  140. package/dist/providers/vllm-provider.d.ts.map +1 -1
  141. package/dist/providers/vllm-provider.js +15 -3
  142. package/dist/providers/vllm-provider.js.map +1 -1
  143. package/dist/python-bridge-base.d.ts +16 -6
  144. package/dist/python-bridge-base.d.ts.map +1 -1
  145. package/dist/python-bridge-base.js +117 -40
  146. package/dist/python-bridge-base.js.map +1 -1
  147. package/dist/python-bridge-codec.d.ts +16 -1
  148. package/dist/python-bridge-codec.d.ts.map +1 -1
  149. package/dist/python-bridge-codec.js +60 -2
  150. package/dist/python-bridge-codec.js.map +1 -1
  151. package/dist/python-bridge-framing.d.ts +10 -1
  152. package/dist/python-bridge-framing.d.ts.map +1 -1
  153. package/dist/python-bridge-framing.js +33 -8
  154. package/dist/python-bridge-framing.js.map +1 -1
  155. package/dist/python-bridge-types.d.ts +26 -5
  156. package/dist/python-bridge-types.d.ts.map +1 -1
  157. package/dist/python-bridge-types.js.map +1 -1
  158. package/dist/python-node-executor.d.ts +14 -3
  159. package/dist/python-node-executor.d.ts.map +1 -1
  160. package/dist/python-node-executor.js +185 -3
  161. package/dist/python-node-executor.js.map +1 -1
  162. package/dist/python-stdio-bridge.d.ts +6 -0
  163. package/dist/python-stdio-bridge.d.ts.map +1 -1
  164. package/dist/python-stdio-bridge.js +25 -2
  165. package/dist/python-stdio-bridge.js.map +1 -1
  166. package/dist/run-trace-context.d.ts +2 -27
  167. package/dist/run-trace-context.d.ts.map +1 -1
  168. package/dist/run-trace-context.js +4 -51
  169. package/dist/run-trace-context.js.map +1 -1
  170. package/dist/run-trace-processor.d.ts.map +1 -1
  171. package/dist/run-trace-processor.js +7 -6
  172. package/dist/run-trace-processor.js.map +1 -1
  173. package/dist/run-trace-scope.d.ts +28 -0
  174. package/dist/run-trace-scope.d.ts.map +1 -0
  175. package/dist/run-trace-scope.js +51 -0
  176. package/dist/run-trace-scope.js.map +1 -0
  177. package/dist/run-trace-serialization.d.ts.map +1 -1
  178. package/dist/run-trace-serialization.js +4 -3
  179. package/dist/run-trace-serialization.js.map +1 -1
  180. package/dist/span-record.d.ts +4 -0
  181. package/dist/span-record.d.ts.map +1 -0
  182. package/dist/span-record.js +48 -0
  183. package/dist/span-record.js.map +1 -0
  184. package/dist/swappable-python-bridge.d.ts +6 -6
  185. package/dist/swappable-python-bridge.d.ts.map +1 -1
  186. package/dist/swappable-python-bridge.js +10 -10
  187. package/dist/swappable-python-bridge.js.map +1 -1
  188. package/dist/testing.d.ts +1 -1
  189. package/dist/testing.d.ts.map +1 -1
  190. package/dist/testing.js +55 -3
  191. package/dist/testing.js.map +1 -1
  192. package/dist/trace-exporters.d.ts +1 -2
  193. package/dist/trace-exporters.d.ts.map +1 -1
  194. package/dist/trace-exporters.js +1 -47
  195. package/dist/trace-exporters.js.map +1 -1
  196. package/dist/traced-storage.d.ts +17 -0
  197. package/dist/traced-storage.d.ts.map +1 -0
  198. package/dist/traced-storage.js +41 -0
  199. package/dist/traced-storage.js.map +1 -0
  200. package/package.json +7 -5
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Audio preparation and response decoding for Meta's Muse Voice Transcribe
3
+ * model (`POST /v1/asr/transcribe`).
4
+ *
5
+ * The endpoint takes only RIFF/WAVE, mono, 16-bit integer PCM at 16 or 24 kHz.
6
+ * Audio already in that shape is sent as is; anything else is transcoded with
7
+ * ffmpeg first, the conversion Meta's docs give
8
+ * (`-ac 1 -ar 24000 -c:a pcm_s16le -map_metadata -1`).
9
+ * See https://dev.meta.ai/docs/speech-to-text.
10
+ *
11
+ * The ffmpeg argv is ours and its only input is a temp file this module
12
+ * wrote, as in `video-frames.ts`. `-protocol_whitelist file` and `-nostdin`
13
+ * still go in.
14
+ */
15
+ import { importNodeBuiltin } from "@nodetool-ai/config";
16
+ import { isNumber, isRecord, isString } from "@nodetool-ai/protocol";
17
+ const TRANSCRIBE_SAMPLE_RATES = new Set([16000, 24000]);
18
+ const FFMPEG_MAX_BUFFER = 8 * 1024 * 1024;
19
+ function ascii(bytes, offset, length) {
20
+ return String.fromCharCode(...bytes.subarray(offset, offset + length));
21
+ }
22
+ /**
23
+ * Whether `bytes` is a WAV file the transcribe endpoint accepts unchanged.
24
+ * Walks the RIFF chunks by their declared sizes (word-aligned) to find `fmt `,
25
+ * and answers false for anything it cannot read, which sends the audio
26
+ * through ffmpeg rather than to a 400.
27
+ */
28
+ export function isTranscribeReadyWav(bytes) {
29
+ if (bytes.length < 12)
30
+ return false;
31
+ if (ascii(bytes, 0, 4) !== "RIFF" || ascii(bytes, 8, 4) !== "WAVE") {
32
+ return false;
33
+ }
34
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
35
+ let offset = 12;
36
+ while (offset + 8 <= bytes.length) {
37
+ const id = ascii(bytes, offset, 4);
38
+ const size = view.getUint32(offset + 4, true);
39
+ if (id === "fmt ") {
40
+ if (size < 16 || offset + 8 + 16 > bytes.length)
41
+ return false;
42
+ const body = offset + 8;
43
+ const audioFormat = view.getUint16(body, true);
44
+ const channels = view.getUint16(body + 2, true);
45
+ const sampleRate = view.getUint32(body + 4, true);
46
+ const bitsPerSample = view.getUint16(body + 14, true);
47
+ return (audioFormat === 1 &&
48
+ channels === 1 &&
49
+ bitsPerSample === 16 &&
50
+ TRANSCRIBE_SAMPLE_RATES.has(sampleRate));
51
+ }
52
+ offset += 8 + size + (size & 1);
53
+ }
54
+ return false;
55
+ }
56
+ /** ffmpeg is not installed. Names what needed it and the way out. */
57
+ export class TranscribeAudioConversionUnavailableError extends Error {
58
+ constructor() {
59
+ super("ffmpeg is not installed or not on PATH. Meta's transcription endpoint " +
60
+ "only reads mono 16-bit WAV at 16 or 24 kHz, and other audio is " +
61
+ "converted with ffmpeg first. Install ffmpeg (the Package Manager UI " +
62
+ "can do this), or pass audio that is already in that format.");
63
+ this.name = "TranscribeAudioConversionUnavailableError";
64
+ }
65
+ }
66
+ /** Convert any audio ffmpeg can read to mono 16-bit PCM WAV at 24 kHz. */
67
+ async function transcodeToTranscribeWav(bytes, signal) {
68
+ const [cp, fs, os, path] = await Promise.all([
69
+ importNodeBuiltin("node:child_process"),
70
+ importNodeBuiltin("node:fs/promises"),
71
+ importNodeBuiltin("node:os"),
72
+ importNodeBuiltin("node:path")
73
+ ]);
74
+ if (!cp || !fs || !os || !path) {
75
+ throw new Error("Audio conversion requires Node built-in modules");
76
+ }
77
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "nodetool-meta-asr-"));
78
+ const input = path.join(dir, "input.bin");
79
+ const output = path.join(dir, "output.wav");
80
+ try {
81
+ await fs.writeFile(input, bytes);
82
+ await new Promise((resolve, reject) => {
83
+ cp.execFile("ffmpeg", [
84
+ "-nostdin",
85
+ "-y",
86
+ "-v",
87
+ "error",
88
+ "-protocol_whitelist",
89
+ "file",
90
+ "-i",
91
+ input,
92
+ "-ac",
93
+ "1",
94
+ "-ar",
95
+ "24000",
96
+ "-c:a",
97
+ "pcm_s16le",
98
+ "-map_metadata",
99
+ "-1",
100
+ output
101
+ ], { maxBuffer: FFMPEG_MAX_BUFFER, signal, windowsHide: true }, (error) => {
102
+ if (error?.code === "ENOENT") {
103
+ reject(new TranscribeAudioConversionUnavailableError());
104
+ return;
105
+ }
106
+ if (error) {
107
+ reject(error);
108
+ return;
109
+ }
110
+ resolve();
111
+ });
112
+ });
113
+ return new Uint8Array(await fs.readFile(output));
114
+ }
115
+ finally {
116
+ // Cleanup failure must not replace the conversion result or its error.
117
+ await fs.rm(dir, { recursive: true, force: true }).catch(() => { });
118
+ }
119
+ }
120
+ /** `bytes` in the one WAV shape the transcribe endpoint accepts. */
121
+ export async function toTranscribeWav(bytes, signal) {
122
+ if (isTranscribeReadyWav(bytes))
123
+ return bytes;
124
+ return transcodeToTranscribeWav(bytes, signal);
125
+ }
126
+ /**
127
+ * Meta's `languageBias` takes English language names ("English", "French"),
128
+ * while NodeTool's ASR callers pass ISO 639 codes ("en", "fr-CA"). A value
129
+ * that is already a name, or a code Intl cannot name, passes through.
130
+ */
131
+ export function languageBiasName(language) {
132
+ const trimmed = language.trim();
133
+ const primary = trimmed.split(/[-_]/)[0];
134
+ if (!/^[a-z]{2,3}$/i.test(primary))
135
+ return trimmed;
136
+ try {
137
+ const name = new Intl.DisplayNames(["en"], { type: "language" }).of(primary.toLowerCase());
138
+ return name && name.toLowerCase() !== primary.toLowerCase()
139
+ ? name
140
+ : trimmed;
141
+ }
142
+ catch {
143
+ // An invalid tag throws a RangeError; send what the caller gave.
144
+ return trimmed;
145
+ }
146
+ }
147
+ /** Recognition-bias terms from a free-text prompt: comma or line separated. */
148
+ export function keywordsFromPrompt(prompt) {
149
+ return prompt
150
+ .split(/[,\n]/)
151
+ .map((term) => term.trim())
152
+ .filter((term) => term.length > 0);
153
+ }
154
+ /**
155
+ * Decode the transcribe endpoint's JSON answer. `turns` carry millisecond
156
+ * timings in ENDPOINTING and DIARIZATION modes and become chunks in seconds.
157
+ */
158
+ export function decodeTranscribeResponse(payload) {
159
+ if (!isRecord(payload) || !isString(payload.transcript)) {
160
+ throw new Error("Meta transcription response has no transcript");
161
+ }
162
+ const chunks = [];
163
+ if (Array.isArray(payload.turns)) {
164
+ for (const turn of payload.turns) {
165
+ if (!isRecord(turn) ||
166
+ !isNumber(turn.startMs) ||
167
+ !isNumber(turn.endMs) ||
168
+ !isString(turn.transcript)) {
169
+ continue;
170
+ }
171
+ chunks.push({
172
+ timestamp: [turn.startMs / 1000, turn.endMs / 1000],
173
+ text: turn.transcript
174
+ });
175
+ }
176
+ }
177
+ const result = { text: payload.transcript };
178
+ if (chunks.length > 0)
179
+ result.chunks = chunks;
180
+ return {
181
+ result,
182
+ audioDurationMs: isNumber(payload.audioDurationMs)
183
+ ? payload.audioDurationMs
184
+ : null
185
+ };
186
+ }
187
+ //# sourceMappingURL=meta-transcription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-transcription.js","sourceRoot":"","sources":["../../src/providers/meta-transcription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGrE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,SAAS,KAAK,CAAC,KAAiB,EAAE,MAAc,EAAE,MAAc;IAC9D,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAiB;IACpD,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5E,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,OAAO,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YACtD,OAAO,CACL,WAAW,KAAK,CAAC;gBACjB,QAAQ,KAAK,CAAC;gBACd,aAAa,KAAK,EAAE;gBACpB,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CACxC,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qEAAqE;AACrE,MAAM,OAAO,yCAA0C,SAAQ,KAAK;IAClE;QACE,KAAK,CACH,wEAAwE;YACtE,iEAAiE;YACjE,sEAAsE;YACtE,6DAA6D,CAChE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,2CAA2C,CAAC;IAC1D,CAAC;CACF;AAED,0EAA0E;AAC1E,KAAK,UAAU,wBAAwB,CACrC,KAAiB,EACjB,MAAoB;IAEpB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3C,iBAAiB,CACf,oBAAoB,CACrB;QACD,iBAAiB,CAAoC,kBAAkB,CAAC;QACxE,iBAAiB,CAA2B,SAAS,CAAC;QACtD,iBAAiB,CAA6B,WAAW,CAAC;KAC3D,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,EAAE,CAAC,QAAQ,CACT,QAAQ,EACR;gBACE,UAAU;gBACV,IAAI;gBACJ,IAAI;gBACJ,OAAO;gBACP,qBAAqB;gBACrB,MAAM;gBACN,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,GAAG;gBACH,KAAK;gBACL,OAAO;gBACP,MAAM;gBACN,WAAW;gBACX,eAAe;gBACf,IAAI;gBACJ,MAAM;aACP,EACD,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAC3D,CAAC,KAAK,EAAE,EAAE;gBACR,IAAK,KAAmC,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,yCAAyC,EAAE,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,uEAAuE;QACvE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAiB,EACjB,MAAoB;IAEpB,IAAI,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CACjE,OAAO,CAAC,WAAW,EAAE,CACtB,CAAC;QACF,OAAO,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE;YACzD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IAIvD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,IACE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnD,IAAI,EAAE,IAAI,CAAC,UAAU;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAc,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IAC9C,OAAO;QACL,MAAM;QACN,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;YAChD,CAAC,CAAC,OAAO,CAAC,eAAe;YACzB,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC"}
@@ -1,5 +1,10 @@
1
1
  import { BaseProvider, type ProviderCapability } from "./base-provider.js";
2
2
  import type { EmbeddingModel, LanguageModel, Message, ProviderStreamItem, ProviderTool } from "./types.js";
3
+ /**
4
+ * Dispose every model loaded by any {@link NodeLlamaCppProvider} and drop the
5
+ * cache. Call on shutdown; the next generation reloads what it needs.
6
+ */
7
+ export declare function disposeNodeLlamaCppModels(): Promise<void>;
3
8
  /**
4
9
  * In-process llama.cpp provider backed by the native `node-llama-cpp` binding.
5
10
  * Unlike {@link LlamaProvider} (an HTTP client for a remote `llama-server`),
@@ -20,8 +25,6 @@ export declare class NodeLlamaCppProvider extends BaseProvider {
20
25
  static requiredSecrets(): string[];
21
26
  private readonly modelsDir?;
22
27
  private readonly gpuBackend?;
23
- private _llama;
24
- private readonly _models;
25
28
  constructor(secrets?: {
26
29
  NODE_LLAMA_CPP_MODELS_DIR?: string;
27
30
  NODE_LLAMA_CPP_GPU_BACKEND?: string;
@@ -31,7 +34,7 @@ export declare class NodeLlamaCppProvider extends BaseProvider {
31
34
  private resolveModelsDir;
32
35
  private getLlama;
33
36
  /** Resolve a model id (absolute path, or a GGUF filename under the models
34
- * directory) to a loaded model, caching the handle for reuse. */
37
+ * directory) to a loaded model, shared process-wide. */
35
38
  private getOrLoadModel;
36
39
  /** Split a message array into a system prompt, the prior-turn history, and
37
40
  * the final user turn to prompt with. An assistant turn that called tools is
@@ -1 +1 @@
1
- {"version":3,"file":"node-llama-cpp-provider.d.ts","sourceRoot":"","sources":["../../src/providers/node-llama-cpp-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,OAAO,EAEP,kBAAkB,EAClB,YAAY,EAEb,MAAM,YAAY,CAAC;AA6PpB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,UAAmB,oBAAoB,IAAI,SAAS,kBAAkB,EAAE,CAIvE;IAED,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE,CAEjC;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA+C;IAC3E,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D,YACE,OAAO,GAAE;QACP,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;KAChC,EAoBP;IAED,eAAe,OAEd;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKrD;YAEa,gBAAgB;YAIhB,QAAQ;IActB;qEACiE;YACnD,cAAc;IAoB5B;;;;oCAIgC;IAChC,OAAO,CAAC,SAAS;YAgDH,aAAa;IA8B3B;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IA2BnB,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAkFrC;IAEK,eAAe,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC,CAanB;IAEK,iBAAiB,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CActB;IAEK,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAG3D;IAEK,2BAA2B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAG7D;IAED;;;;;OAKG;YACW,aAAa;IAY3B,yEAAyE;YAC3D,aAAa;IAiB3B;;;;;OAKG;YACW,cAAc;IAkC5B,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS5C;CACF"}
1
+ {"version":3,"file":"node-llama-cpp-provider.d.ts","sourceRoot":"","sources":["../../src/providers/node-llama-cpp-provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,OAAO,EAEP,kBAAkB,EAClB,YAAY,EAEb,MAAM,YAAY,CAAC;AA8LpB;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAY/D;AAsED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,UAAmB,oBAAoB,IAAI,SAAS,kBAAkB,EAAE,CAIvE;IAED,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE,CAEjC;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IAEzC,YACE,OAAO,GAAE;QACP,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;KAChC,EAoBP;IAED,eAAe,OAEd;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKrD;YAEa,gBAAgB;IAI9B,OAAO,CAAC,QAAQ;IAahB;4DACwD;YAC1C,cAAc;IAkB5B;;;;oCAIgC;IAChC,OAAO,CAAC,SAAS;YAqDH,aAAa;IA8B3B;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAkCnB,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAkFrC;IAEK,eAAe,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC,CAanB;IAEK,iBAAiB,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CActB;IAEK,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAG3D;IAEK,2BAA2B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAG7D;IAED;;;;;OAKG;YACW,aAAa;IAY3B,yEAAyE;YAC3D,aAAa;IAiB3B;;;;;OAKG;YACW,cAAc;IAkC5B,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS5C;CACF"}
@@ -1,6 +1,10 @@
1
- import { importOptionalModule, importNodeBuiltin } from "@nodetool-ai/config";
1
+ import { getHfHubCacheDir as getConfigHfHubCacheDir, getLlamaCppCacheDir, importOptionalModule, importNodeBuiltin } from "@nodetool-ai/config";
2
2
  import { BaseProvider } from "./base-provider.js";
3
3
  import { MissingRuntimePackageError, isString } from "@nodetool-ai/protocol";
4
+ /** Process-wide counter for tool-call ids. */
5
+ let toolCallSeq = 0;
6
+ /** Output cap when the caller sets none. Matches Ollama's default. */
7
+ const DEFAULT_MAX_TOKENS = 8192;
4
8
  let _modulePromise = null;
5
9
  async function loadNodeLlamaCpp() {
6
10
  if (!_modulePromise) {
@@ -23,44 +27,52 @@ async function loadNodeLlamaCpp() {
23
27
  }
24
28
  return _modulePromise;
25
29
  }
26
- /** Platform default directory for downloaded GGUF models. Mirrors the location
27
- * `@nodetool-ai/huggingface`'s `getLlamaCppCacheDir` writes to, so models
28
- * fetched through the existing download path resolve without extra config. */
30
+ /**
31
+ * Process-wide llama runtimes (one per GPU backend) and loaded models (one per
32
+ * backend and model path). Provider instances are rebuilt freely (per
33
+ * ProcessingContext, per configured-providers refresh), so a per-instance
34
+ * cache reloaded a multi-GB GGUF on every run and left the old handle alive.
35
+ * Promises are cached, not results, so concurrent first uses share one load.
36
+ */
37
+ const _llamas = new Map();
38
+ const _models = new Map();
39
+ function cacheOnce(cache, key, load) {
40
+ const cached = cache.get(key);
41
+ if (cached)
42
+ return cached;
43
+ const pending = load();
44
+ cache.set(key, pending);
45
+ // A failed load must not poison the cache for the next attempt.
46
+ pending.catch(() => {
47
+ if (cache.get(key) === pending)
48
+ cache.delete(key);
49
+ });
50
+ return pending;
51
+ }
52
+ /**
53
+ * Dispose every model loaded by any {@link NodeLlamaCppProvider} and drop the
54
+ * cache. Call on shutdown; the next generation reloads what it needs.
55
+ */
56
+ export async function disposeNodeLlamaCppModels() {
57
+ const pending = [..._models.values()];
58
+ _models.clear();
59
+ await Promise.all(pending.map(async (p) => {
60
+ try {
61
+ await (await p).dispose();
62
+ }
63
+ catch {
64
+ // A load that failed or a model already disposed has nothing to free.
65
+ }
66
+ }));
67
+ }
68
+ /** Default directory for downloaded GGUF models: llama.cpp's own cache
69
+ * directory, the one `@nodetool-ai/huggingface`'s download path writes to. */
29
70
  async function getDefaultModelsDir() {
30
- const os = await importNodeBuiltin("node:os");
31
- const path = await importNodeBuiltin("node:path");
32
- if (!os || !path) {
33
- throw new Error("node-llama-cpp provider requires a Node.js runtime");
34
- }
35
- const home = os.homedir();
36
- if (process.platform === "darwin") {
37
- return path.join(home, "Library", "Caches", "llama.cpp");
38
- }
39
- if (process.platform === "win32") {
40
- const localAppData = process.env.LOCALAPPDATA;
41
- return localAppData
42
- ? path.join(localAppData, "llama.cpp")
43
- : path.join(home, ".cache", "llama.cpp");
44
- }
45
- return path.join(home, ".cache", "llama.cpp");
71
+ return getLlamaCppCacheDir();
46
72
  }
47
- /** Default HuggingFace hub cache. Mirrors `@nodetool-ai/huggingface`'s
48
- * `getDefaultHfCacheDir`; that package sits above runtime in the dependency
49
- * order, so the resolution is duplicated rather than imported — same reason as
50
- * {@link getDefaultModelsDir}. */
73
+ /** HuggingFace hub cache root, from the resolver every hub reader shares. */
51
74
  async function getHfHubCacheDir() {
52
- const os = await importNodeBuiltin("node:os");
53
- const path = await importNodeBuiltin("node:path");
54
- if (!os || !path)
55
- return null;
56
- const expand = (p) => p.startsWith("~") ? path.join(os.homedir(), p.slice(1)) : p;
57
- const envCache = process.env.HF_HUB_CACHE;
58
- if (envCache)
59
- return expand(envCache);
60
- const hfHome = process.env.HF_HOME;
61
- if (hfHome)
62
- return path.join(expand(hfHome), "hub");
63
- return path.join(os.homedir(), ".cache", "huggingface", "hub");
75
+ return getConfigHfHubCacheDir();
64
76
  }
65
77
  /** A directory entry that is a GGUF file. Symlinks count: the HuggingFace hub
66
78
  * cache stores every snapshot file as a link into `blobs/`, so requiring a
@@ -129,8 +141,6 @@ export class NodeLlamaCppProvider extends BaseProvider {
129
141
  }
130
142
  modelsDir;
131
143
  gpuBackend;
132
- _llama = null;
133
- _models = new Map();
134
144
  constructor(secrets = {}) {
135
145
  super("node_llama_cpp");
136
146
  this.modelsDir =
@@ -161,24 +171,20 @@ export class NodeLlamaCppProvider extends BaseProvider {
161
171
  async resolveModelsDir() {
162
172
  return this.modelsDir ?? (await getDefaultModelsDir());
163
173
  }
164
- async getLlama() {
165
- if (!this._llama) {
174
+ getLlama() {
175
+ return cacheOnce(_llamas, this.gpuBackend ?? "", async () => {
166
176
  const { getLlama } = await loadNodeLlamaCpp();
167
177
  const gpu = this.gpuBackend === "cpu"
168
178
  ? false
169
179
  : this.gpuBackend === undefined
170
180
  ? undefined
171
181
  : this.gpuBackend;
172
- this._llama = await getLlama(gpu === undefined ? undefined : { gpu });
173
- }
174
- return this._llama;
182
+ return getLlama(gpu === undefined ? undefined : { gpu });
183
+ });
175
184
  }
176
185
  /** Resolve a model id (absolute path, or a GGUF filename under the models
177
- * directory) to a loaded model, caching the handle for reuse. */
186
+ * directory) to a loaded model, shared process-wide. */
178
187
  async getOrLoadModel(model) {
179
- const cached = this._models.get(model);
180
- if (cached)
181
- return cached;
182
188
  const path = await importNodeBuiltin("node:path");
183
189
  if (!path) {
184
190
  throw new Error("node-llama-cpp provider requires a Node.js runtime");
@@ -186,10 +192,7 @@ export class NodeLlamaCppProvider extends BaseProvider {
186
192
  const modelPath = path.isAbsolute(model)
187
193
  ? model
188
194
  : path.join(await this.resolveModelsDir(), model);
189
- const llama = await this.getLlama();
190
- const loaded = await llama.loadModel({ modelPath });
191
- this._models.set(model, loaded);
192
- return loaded;
195
+ return cacheOnce(_models, `${this.gpuBackend ?? ""}\0${modelPath}`, async () => (await this.getLlama()).loadModel({ modelPath }));
193
196
  }
194
197
  /** Split a message array into a system prompt, the prior-turn history, and
195
198
  * the final user turn to prompt with. An assistant turn that called tools is
@@ -198,18 +201,25 @@ export class NodeLlamaCppProvider extends BaseProvider {
198
201
  * in the model's own syntax. */
199
202
  buildChat(messages) {
200
203
  const systemParts = [];
201
- const results = new Map();
202
204
  for (const msg of messages) {
203
205
  if (msg.role === "system")
204
206
  systemParts.push(asText(msg.content));
205
- else if (msg.role === "tool" && msg.toolCallId)
206
- results.set(msg.toolCallId, asText(msg.content));
207
207
  }
208
208
  const history = [];
209
- for (const msg of messages) {
209
+ for (const [i, msg] of messages.entries()) {
210
210
  if (msg.role === "system" || msg.role === "tool")
211
211
  continue;
212
212
  if (msg.role === "assistant") {
213
+ // Pair calls only with the tool results that follow this turn, so a
214
+ // call id reused in another round can't pick up that round's result.
215
+ const results = new Map();
216
+ for (let j = i + 1; j < messages.length; j++) {
217
+ const next = messages[j];
218
+ if (next.role !== "tool")
219
+ break;
220
+ if (next.toolCallId)
221
+ results.set(next.toolCallId, asText(next.content));
222
+ }
213
223
  const text = asText(msg.content);
214
224
  const response = text ? [text] : [];
215
225
  (msg.toolCalls ?? []).forEach((tc, index) => {
@@ -277,7 +287,6 @@ export class NodeLlamaCppProvider extends BaseProvider {
277
287
  if (tools.length === 0)
278
288
  return undefined;
279
289
  const functions = {};
280
- let seq = 0;
281
290
  for (const tool of tools) {
282
291
  functions[tool.name] = defineChatSessionFunction({
283
292
  description: tool.description,
@@ -286,7 +295,15 @@ export class NodeLlamaCppProvider extends BaseProvider {
286
295
  if (onToolCall) {
287
296
  return await onToolCall(tool.name, params);
288
297
  }
289
- pendingCalls.push({ id: `call_${++seq}`, name: tool.name, args: params });
298
+ // Ids must be unique across rounds: history replay pairs each call
299
+ // with its result by id, so a per-call `call_1` made every earlier
300
+ // call replay with the latest result.
301
+ toolCallSeq += 1;
302
+ pendingCalls.push({
303
+ id: `call_${Date.now().toString(36)}_${toolCallSeq}`,
304
+ name: tool.name,
305
+ args: params
306
+ });
290
307
  stopGeneration();
291
308
  return "";
292
309
  }
@@ -295,7 +312,7 @@ export class NodeLlamaCppProvider extends BaseProvider {
295
312
  return functions;
296
313
  }
297
314
  async *generateMessages(args) {
298
- const { model, tools = [], maxTokens = 1024, onToolCall } = args;
315
+ const { model, tools = [], maxTokens = DEFAULT_MAX_TOKENS, onToolCall } = args;
299
316
  const { session, lastUserText, dispose } = await this.createSession(model, args.messages);
300
317
  this.recordRequestPayload({ model, messages: args.messages, maxTokens });
301
318
  const { defineChatSessionFunction } = await loadNodeLlamaCpp();
@@ -1 +1 @@
1
- {"version":3,"file":"node-llama-cpp-provider.js","sourceRoot":"","sources":["../../src/providers/node-llama-cpp-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAU3E,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAoH7E,IAAI,cAAc,GAIN,IAAI,CAAC;AAEjB,KAAK,UAAU,gBAAgB;IAK7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAInC,gBAAgB,CAAC,CAAC;gBACrB,OAAO;oBACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;oBACtC,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;iBACzD,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,cAAc,GAAG,IAAI,CAAC;gBACtB,MAAM,IAAI,0BAA0B,CAClC,sEAAsE;oBACpE,+DAA+D;oBAC/D,wCAAwC,EAC1C,gBAAgB,EAChB,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;8EAE8E;AAC9E,KAAK,UAAU,mBAAmB;IAChC,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAA2B,SAAS,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAA6B,WAAW,CAAC,CAAC;IAC9E,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC9C,OAAO,YAAY;YACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED;;;kCAGkC;AAClC,KAAK,UAAU,gBAAgB;IAC7B,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAA2B,SAAS,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAA6B,WAAW,CAAC,CAAC;IAC9E,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAC3B,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC1C,IAAI,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACnC,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AAUD;;2CAE2C;AAC3C,SAAS,WAAW,CAAC,KAA+B;IAClD,OAAO,CACL,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED;yEACyE;AACzE,KAAK,UAAU,aAAa,CAC1B,GAAsC,EACtC,IAAgC,EAChC,GAAW,EACX,KAAK,GAAG,CAAC;IAET,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,MAAM,CAAC,OAA2B;IACzC,IAAI,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO;SACX,MAAM,CACL,CAAC,CAAC,EAAwD,EAAE,CAC1D,CAAC,CAAC,IAAI,KAAK,MAAM,CACpB;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACjC,oBAAoB;QACrC,OAAO;YACL,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEgB,SAAS,CAAU;IACnB,UAAU,CAAgD;IACnE,MAAM,GAAqB,IAAI,CAAC;IACvB,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE7D,YACE,OAAO,GAGH,EAAE;QAEN,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS;YACZ,OAAO,CAAC,yBAAyB;gBACjC,OAAO,CAAC,GAAG,CAAC,yBAAyB;gBACrC,SAAS,CAAC;QACZ,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,0BAA0B;YAClC,OAAO,CAAC,GAAG,CAAC,0BAA0B;YACtC,EAAE,CACH,CAAC,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU;YACb,OAAO,KAAK,OAAO;gBACnB,OAAO,KAAK,MAAM;gBAClB,OAAO,KAAK,QAAQ;gBACpB,OAAO,KAAK,KAAK;gBACjB,OAAO,KAAK,MAAM;gBAChB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAC;IAClB,CAAC;IAED,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,wEAAwE;QACxE,0EAA0E;QAC1E,4DAA4D;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;YAC9C,MAAM,GAAG,GACP,IAAI,CAAC,UAAU,KAAK,KAAK;gBACvB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS;oBAC7B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;qEACiE;IACzD,KAAK,CAAC,cAAc,CAAC,KAAa;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAClC,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;oCAIgC;IACxB,SAAS,CAAC,QAAmB;QACnC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;gBAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU;gBAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC3D,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAuC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;oBAC1C,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE;wBACrB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE;wBAChC,cAAc,EAAE,KAAK,KAAK,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,qEAAqE;QACrE,0EAA0E;QAC1E,2EAA2E;QAC3E,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;YACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO;YACL,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,OAAO;YACP,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,KAAa,EACb,QAAmB;QAMnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;YACnC,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE;YACtC,YAAY,EAAE,YAAY,IAAI,SAAS;SACxC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,cAAc,CACpB,YAAY;gBACV,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,OAAO,CAAC;gBACtD,CAAC,CAAC,OAAO,CACZ,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO;YACP,YAAY;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SACjC,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,kBAAkB,CACxB,KAAqB,EACrB,UAA0F,EAC1F,yBAAoD,EACpD,YAAwB,EACxB,cAA0B;QAE1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,MAAM,SAAS,GAA8B,EAAE,CAAC;QAChD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC;gBAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9D,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAE,EAAE;oBACjD,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC7C,CAAC;oBACD,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC1E,cAAc,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAYvB;QACC,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACjE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CACjE,KAAK,EACL,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAEzE,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC/D,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CACvC,KAAK,EACL,UAAU,EACV,yBAAyB,EACzB,YAAY,EACZ,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CACzB,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;YACxB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACnD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAEtB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,WAAW,GAAwB,IAAI,CAAC;QAC5C,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAY,IAAI,CAAC;QAE1B,MAAM,aAAa,GAAG,OAAO;aAC1B,MAAM,CAAC,YAAY,EAAE;YACpB,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM;YACN,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,WAAW,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,WAAW,EAAE,EAAE,CAAC;YAClB,CAAC;SACF,CAAC;aACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACpB,mEAAmE;YACnE,wEAAwE;YACxE,sEAAsE;YACtE,iDAAiD;YACjD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO;gBAAE,OAAO,EAAE,CAAC;YAClE,KAAK,GAAG,CAAC,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,GAAG,IAAI,CAAC;YACZ,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,WAAW,GAAG,OAAO,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,WAAW,GAAG,IAAI,CAAC;oBACnB,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;gBAC/B,MAAM,GAAG,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC3D,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,MAAM,aAAa,CAAC;YACpB,IAAI,KAAK;gBACP,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAElE,MAAM,SAAS,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACpE,MAAM,SAAS,CAAC;YAEhB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAYrB;QACC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,MAAM,IAAI,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpC,IAAI,SAAS,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBAClD,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAC5B,CAAC;QACD,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,OAAO;YACP,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC/C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAIvB;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,GAAG,GAAe,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,2BAA2B;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SACjC,CAAC;QACF,wEAAwE;QACxE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aAChE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,yEAAyE;IACjE,KAAK,CAAC,aAAa;QACzB,MAAM,GAAG,GAAG,MAAM,iBAAiB,CACjC,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,OAAmC,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,GAAG,GAAG,MAAM,iBAAiB,CACjC,kBAAkB,CACnB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAClC,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,IAAI,KAAiC,CAAC;QACtC,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAqB,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,SAAS;YACvE,wEAAwE;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC5D,KAAK,MAAM,IAAI,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC;oBACP,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG;iBAC1C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oBAAoB,CAAC,KAAc;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC9B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"node-llama-cpp-provider.js","sourceRoot":"","sources":["../../src/providers/node-llama-cpp-provider.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,14 @@ import type { EmbeddingModel, LanguageModel, Message, ProviderStreamItem, Provid
3
3
  interface OllamaProviderOptions {
4
4
  fetchFn?: typeof fetch;
5
5
  }
6
+ /**
7
+ * Context window sent as `num_ctx` when neither `OLLAMA_CONTEXT_LENGTH` nor
8
+ * the model's Modelfile sets one. Ollama's own default is a few thousand
9
+ * tokens, which silently truncates a long chat. The model's trained length is
10
+ * often 128k or more, and a KV cache that large can exhaust VRAM, so the
11
+ * default is capped here.
12
+ */
13
+ export declare const OLLAMA_DEFAULT_NUM_CTX = 32768;
6
14
  export declare class OllamaProvider extends BaseProvider {
7
15
  protected declaredCapabilities(): readonly ProviderCapability[];
8
16
  static requiredSecrets(): string[];
@@ -16,8 +24,12 @@ export declare class OllamaProvider extends BaseProvider {
16
24
  */
17
25
  readonly keepAlive: string;
18
26
  private _fetch;
27
+ /** Explicit `num_ctx` from OLLAMA_CONTEXT_LENGTH, or null to derive it per model. */
28
+ readonly contextLength: number | null;
19
29
  constructor(secrets: {
20
30
  OLLAMA_API_URL?: string;
31
+ OLLAMA_CONTEXT_LENGTH?: string;
32
+ OLLAMA_KEEP_ALIVE?: string;
21
33
  }, options?: OllamaProviderOptions);
22
34
  getContainerEnv(): {
23
35
  OLLAMA_API_URL: string;
@@ -25,6 +37,17 @@ export declare class OllamaProvider extends BaseProvider {
25
37
  /** Release cached model metadata held by this provider. */
26
38
  close(): Promise<void>;
27
39
  private _modelInfoCache;
40
+ /** `/api/show` for `model`, cached on success; null when it can't be read. */
41
+ private getModelInfo;
42
+ /**
43
+ * The `num_ctx` sent with every chat request: OLLAMA_CONTEXT_LENGTH when
44
+ * set, else the Modelfile's `num_ctx`, else the model's trained length
45
+ * capped at {@link OLLAMA_DEFAULT_NUM_CTX}. Sent explicitly because Ollama's
46
+ * server default silently drops the oldest tokens of a long prompt.
47
+ */
48
+ resolveNumCtx(model: string): Promise<number>;
49
+ /** The window this provider runs `model` at, so compaction fires before Ollama truncates. */
50
+ getContextWindow(model: string): Promise<number | null>;
28
51
  /**
29
52
  * Check if a model supports native tool calling by querying /api/show.
30
53
  * Falls back to true if capabilities can't be determined.
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ollama-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ollama-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK3E,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,OAAO,EAIP,kBAAkB,EAClB,YAAY,EAEb,MAAM,YAAY,CAAC;AAEpB,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAkED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAoD7C,qBAAa,cAAe,SAAQ,YAAY;IAC9C,UAAmB,oBAAoB,IAAI,SAAS,kBAAkB,EAAE,CAIvE;IAED,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE,CAEjC;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAe;IAE7B,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC,YACE,OAAO,EAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,EACD,OAAO,GAAE,qBAA0B,EAgBpC;IAED,eAAe;QACJ,cAAc;MACxB;IAED,2DAA2D;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;IAED,OAAO,CAAC,eAAe,CAA8C;IAErE,8EAA8E;YAChE,YAAY;IA4B1B;;;;;OAKG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASlD;IAED,6FAA6F;IAC9E,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAErE;IAED;;;OAGG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBpD;IAED;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;YA2DjB,aAAa;IA8BrB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqEvE;IAED,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASjE;YAEa,QAAQ;IAmBhB,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAiB3D;IAED;;;;;OAKG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcjD;IAEK,2BAA2B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ7D;IAED,OAAO,CAAC,WAAW;IAmBnB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;YAOV,gBAAgB;IA4CxB,eAAe,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC,CAyDnB;IAED;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAuC3B,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAyJrC;IAEK,iBAAiB,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAatB;IAED,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS5C;CACF"}