blazen 0.6.3 → 0.6.4

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 CHANGED
@@ -130,20 +130,20 @@ console.log(result.data); // { status: "done" }
130
130
 
131
131
  ## LLM Integration
132
132
 
133
- `Model` provides a unified interface to 15 LLM providers. Create a model instance with a static factory method and call `complete()` or `completeWithOptions()`. All messages and responses are fully typed.
133
+ Blazen exposes a unified interface across 15+ LLM providers. All messages and responses are fully typed.
134
134
 
135
- ### ChatMessage and Role
135
+ ### Tier 1: construct a provider, call `complete()`
136
136
 
137
- Build messages with the `ChatMessage` class and `Role` enum:
137
+ Each provider class has a static `create({...})` constructor:
138
138
 
139
139
  ```typescript
140
- import { Model, ChatMessage, Role } from "blazen";
140
+ import { OpenAiProvider, ChatMessage } from "blazen";
141
141
  import type { ModelResponse, ToolCall, TokenUsage } from "blazen";
142
142
 
143
- const model = Model.openrouter({ apiKey: process.env.OPENROUTER_API_KEY! });
144
- // or rely on the OPENROUTER_API_KEY env var: Model.openrouter();
143
+ const model = OpenAiProvider.create({ apiKey: "sk-..." });
144
+ // also: AnthropicProvider, GroqProvider, OpenRouterProvider, FalProvider, ...
145
+ // omit the arg to read the key from the provider's env var (OPENAI_API_KEY, ...)
145
146
 
146
- // Using static factory methods (recommended)
147
147
  const response: ModelResponse = await model.complete([
148
148
  ChatMessage.system("You are helpful."),
149
149
  ChatMessage.user("What is 2+2?"),
@@ -156,7 +156,26 @@ console.log(response.finishReason); // "stop", "tool_calls", etc.
156
156
  console.log(response.toolCalls); // ToolCall[] | undefined
157
157
  ```
158
158
 
159
- You can also construct messages with the `ChatMessage` constructor:
159
+ ### Tier 2: register many providers in one `ModelManager`
160
+
161
+ Scaling past a single model? Register providers — **local and remote** — under names in one manager and dispatch by name. Fetch an instance back with `get()` to pass around or compose:
162
+
163
+ ```typescript
164
+ import { ModelManager, FalProvider, AnthropicProvider, ChatMessage } from "blazen";
165
+
166
+ const mgr = new ModelManager();
167
+ await mgr.register("fast", FalProvider.create({ apiKey: "fal-..." }));
168
+ await mgr.register("smart", AnthropicProvider.create({ apiKey: "sk-ant-..." }));
169
+
170
+ const response = await mgr.complete("fast", [ChatMessage.user("What is 2+2?")]);
171
+ const smart = await mgr.get("smart"); // the AnthropicProvider, to call or compose directly
172
+ ```
173
+
174
+ > Shorthand: `Model.openai(...)`, `Model.anthropic(...)`, `Model.fal(...)`, etc. are optional static factories that build the same providers — use whichever reads better.
175
+
176
+ ### ChatMessage and Role
177
+
178
+ Build messages with the `ChatMessage` class and `Role` enum. You can also construct messages with the `ChatMessage` constructor:
160
179
 
161
180
  ```typescript
162
181
  const msg = new ChatMessage({ role: Role.User, content: "Hello" });
package/blazen.workers.js CHANGED
@@ -55,12 +55,18 @@ const __wasi = new __WASI({ version: 'preview1' })
55
55
  const __emnapiContext = __emnapiGetDefaultContext()
56
56
 
57
57
  const __sharedMemory = new WebAssembly.Memory({
58
- // 256 pages * 64 KiB = 16 MiB initial (grows on demand up to `maximum`).
59
- // napi-rs's default is 4000 pages (~250 MiB), which exceeds a Cloudflare
60
- // Workers isolate's 128 MiB cap and fails to instantiate (RangeError CF
61
- // 10021). Keep this in lockstep with napi.wasm.initialMemory in package.json
62
- // (which controls the napi-generated blazen.wasi*.{cjs,js}).
63
- initial: 256,
58
+ // 1152 pages * 64 KiB = 72 MiB initial (grows on demand up to `maximum`).
59
+ // This MUST be >= the wasm module's own declared minimum memory (the
60
+ // `(import "env" "memory" (memory <min> ...))` field), or workerd rejects
61
+ // instantiation with `LinkError: memory import has N pages which is smaller
62
+ // than the declared initial of M`. The blazen wasm declares ~988 pages
63
+ // (lean) / ~1094 pages (the -tiktoken variant), so 1152 covers both with a
64
+ // small margin. It must ALSO stay <= 2048 pages (128 MiB), the Cloudflare
65
+ // Workers isolate cap — napi-rs's own 4000-page (~250 MiB) default exceeds
66
+ // it and fails with RangeError CF 10021. Valid window: [1094, 2048].
67
+ // Keep this in lockstep with napi.wasm.initialMemory in package.json (which
68
+ // controls the napi-generated blazen.wasi*.{cjs,js}).
69
+ initial: 1152,
64
70
  maximum: 65536,
65
71
  shared: true,
66
72
  })
@@ -100,10 +106,6 @@ export const AnthropicProvider = __napiModule.exports.AnthropicProvider
100
106
  export const JsAnthropicProvider = __napiModule.exports.JsAnthropicProvider
101
107
  export const ApiProtocol = __napiModule.exports.ApiProtocol
102
108
  export const JsApiProtocol = __napiModule.exports.JsApiProtocol
103
- export const AssignmentContext = __napiModule.exports.AssignmentContext
104
- export const JsAssignmentContext = __napiModule.exports.JsAssignmentContext
105
- export const AudioGenBackend = __napiModule.exports.AudioGenBackend
106
- export const JsAudioGenBackend = __napiModule.exports.JsAudioGenBackend
107
109
  export const AudioMusicProviderDefaults = __napiModule.exports.AudioMusicProviderDefaults
108
110
  export const JsAudioMusicProviderDefaults = __napiModule.exports.JsAudioMusicProviderDefaults
109
111
  export const AudioSpeechProviderDefaults = __napiModule.exports.AudioSpeechProviderDefaults
@@ -122,52 +124,28 @@ export const BatchResult = __napiModule.exports.BatchResult
122
124
  export const JsBatchResult = __napiModule.exports.JsBatchResult
123
125
  export const BedrockProvider = __napiModule.exports.BedrockProvider
124
126
  export const JsBedrockProvider = __napiModule.exports.JsBedrockProvider
125
- export const BlazenPeerClient = __napiModule.exports.BlazenPeerClient
126
- export const JsBlazenPeerClient = __napiModule.exports.JsBlazenPeerClient
127
- export const BlazenPeerServer = __napiModule.exports.BlazenPeerServer
128
- export const JsBlazenPeerServer = __napiModule.exports.JsBlazenPeerServer
129
127
  export const BytesWrapper = __napiModule.exports.BytesWrapper
130
128
  export const JsBytesWrapper = __napiModule.exports.JsBytesWrapper
131
129
  export const CachedModel = __napiModule.exports.CachedModel
132
130
  export const JsCachedModel = __napiModule.exports.JsCachedModel
133
131
  export const CacheMiddleware = __napiModule.exports.CacheMiddleware
134
132
  export const JsCacheMiddleware = __napiModule.exports.JsCacheMiddleware
135
- export const CandleEmbedProvider = __napiModule.exports.CandleEmbedProvider
136
- export const JsCandleEmbedProvider = __napiModule.exports.JsCandleEmbedProvider
137
- export const CandleInferenceResult = __napiModule.exports.CandleInferenceResult
138
- export const JsCandleInferenceResult = __napiModule.exports.JsCandleInferenceResult
139
- export const CandleLlmProvider = __napiModule.exports.CandleLlmProvider
140
- export const JsCandleLlmProvider = __napiModule.exports.JsCandleLlmProvider
141
133
  export const ChatMessage = __napiModule.exports.ChatMessage
142
134
  export const JsChatMessage = __napiModule.exports.JsChatMessage
143
- export const ChatMessageInput = __napiModule.exports.ChatMessageInput
144
- export const JsChatMessageInput = __napiModule.exports.JsChatMessageInput
145
135
  export const ChatWindow = __napiModule.exports.ChatWindow
146
136
  export const JsChatWindow = __napiModule.exports.JsChatWindow
147
- export const CheckpointStore = __napiModule.exports.CheckpointStore
148
- export const JsCheckpointStore = __napiModule.exports.JsCheckpointStore
149
137
  export const Citation = __napiModule.exports.Citation
150
138
  export const JsCitationClass = __napiModule.exports.JsCitationClass
151
- export const CodecBackendHandle = __napiModule.exports.CodecBackendHandle
152
- export const JsCodecBackendHandle = __napiModule.exports.JsCodecBackendHandle
153
139
  export const CohereProvider = __napiModule.exports.CohereProvider
154
140
  export const JsCohereProvider = __napiModule.exports.JsCohereProvider
155
141
  export const ContentStore = __napiModule.exports.ContentStore
156
142
  export const JsContentStore = __napiModule.exports.JsContentStore
157
143
  export const Context = __napiModule.exports.Context
158
144
  export const JsContext = __napiModule.exports.JsContext
159
- export const ControlPlaneClient = __napiModule.exports.ControlPlaneClient
160
- export const JsControlPlaneClient = __napiModule.exports.JsControlPlaneClient
161
- export const ControlPlaneWorker = __napiModule.exports.ControlPlaneWorker
162
- export const JsControlPlaneWorker = __napiModule.exports.JsControlPlaneWorker
163
- export const ControlPlaneWorkerConfig = __napiModule.exports.ControlPlaneWorkerConfig
164
- export const JsControlPlaneWorkerConfig = __napiModule.exports.JsControlPlaneWorkerConfig
165
145
  export const CustomProvider = __napiModule.exports.CustomProvider
166
146
  export const JsCustomProvider = __napiModule.exports.JsCustomProvider
167
147
  export const DeepSeekProvider = __napiModule.exports.DeepSeekProvider
168
148
  export const JsDeepSeekProvider = __napiModule.exports.JsDeepSeekProvider
169
- export const DiffusionProvider = __napiModule.exports.DiffusionProvider
170
- export const JsDiffusionProvider = __napiModule.exports.JsDiffusionProvider
171
149
  export const DynamicEvent = __napiModule.exports.DynamicEvent
172
150
  export const JsDynamicEvent = __napiModule.exports.JsDynamicEvent
173
151
  export const EmbeddingModel = __napiModule.exports.EmbeddingModel
@@ -176,8 +154,6 @@ export const EmbeddingProvider = __napiModule.exports.EmbeddingProvider
176
154
  export const JsEmbeddingProvider = __napiModule.exports.JsEmbeddingProvider
177
155
  export const EmbeddingProviderDefaults = __napiModule.exports.EmbeddingProviderDefaults
178
156
  export const JsEmbeddingProviderDefaults = __napiModule.exports.JsEmbeddingProviderDefaults
179
- export const EmbedProvider = __napiModule.exports.EmbedProvider
180
- export const JsEmbedProvider = __napiModule.exports.JsEmbedProvider
181
157
  export const EstimateCounter = __napiModule.exports.EstimateCounter
182
158
  export const JsEstimateCounter = __napiModule.exports.JsEstimateCounter
183
159
  export const FalEmbeddingModel = __napiModule.exports.FalEmbeddingModel
@@ -186,10 +162,6 @@ export const FallbackModel = __napiModule.exports.FallbackModel
186
162
  export const JsFallbackModel = __napiModule.exports.JsFallbackModel
187
163
  export const FalProvider = __napiModule.exports.FalProvider
188
164
  export const JsFalProvider = __napiModule.exports.JsFalProvider
189
- export const FastEmbedModel = __napiModule.exports.FastEmbedModel
190
- export const JsFastEmbedModel = __napiModule.exports.JsFastEmbedModel
191
- export const FasterWhisperBackend = __napiModule.exports.FasterWhisperBackend
192
- export const JsFasterWhisperBackend = __napiModule.exports.JsFasterWhisperBackend
193
165
  export const FireworksProvider = __napiModule.exports.FireworksProvider
194
166
  export const JsFireworksProvider = __napiModule.exports.JsFireworksProvider
195
167
  export const GeminiProvider = __napiModule.exports.GeminiProvider
@@ -212,42 +184,12 @@ export const ImageProvider = __napiModule.exports.ImageProvider
212
184
  export const JsImageProvider = __napiModule.exports.JsImageProvider
213
185
  export const ImageUpscaleProviderDefaults = __napiModule.exports.ImageUpscaleProviderDefaults
214
186
  export const JsImageUpscaleProviderDefaults = __napiModule.exports.JsImageUpscaleProviderDefaults
215
- export const InferenceChunk = __napiModule.exports.InferenceChunk
216
- export const JsInferenceChunk = __napiModule.exports.JsInferenceChunk
217
- export const InferenceChunkStream = __napiModule.exports.InferenceChunkStream
218
- export const JsInferenceChunkStream = __napiModule.exports.JsInferenceChunkStream
219
- export const InferenceImage = __napiModule.exports.InferenceImage
220
- export const JsInferenceImage = __napiModule.exports.JsInferenceImage
221
- export const InferenceImageSource = __napiModule.exports.InferenceImageSource
222
- export const JsInferenceImageSource = __napiModule.exports.JsInferenceImageSource
223
- export const InferenceResult = __napiModule.exports.InferenceResult
224
- export const JsInferenceResult = __napiModule.exports.JsInferenceResult
225
- export const InferenceToolCall = __napiModule.exports.InferenceToolCall
226
- export const JsInferenceToolCall = __napiModule.exports.JsInferenceToolCall
227
- export const InferenceUsage = __napiModule.exports.InferenceUsage
228
- export const JsInferenceUsage = __napiModule.exports.JsInferenceUsage
229
187
  export const InMemoryBackend = __napiModule.exports.InMemoryBackend
230
188
  export const JsInMemoryBackend = __napiModule.exports.JsInMemoryBackend
231
189
  export const JobHandle = __napiModule.exports.JobHandle
232
190
  export const JsJobHandleClass = __napiModule.exports.JsJobHandleClass
233
- export const JsonlBackend = __napiModule.exports.JsonlBackend
234
- export const JsJsonlBackend = __napiModule.exports.JsJsonlBackend
235
- export const JsonlDataset = __napiModule.exports.JsonlDataset
236
- export const JsJsonlDataset = __napiModule.exports.JsJsonlDataset
237
191
  export const LangfuseConfig = __napiModule.exports.LangfuseConfig
238
192
  export const JsLangfuseConfig = __napiModule.exports.JsLangfuseConfig
239
- export const LlamaCppChatMessageInput = __napiModule.exports.LlamaCppChatMessageInput
240
- export const JsLlamaCppChatMessageInput = __napiModule.exports.JsLlamaCppChatMessageInput
241
- export const LlamaCppInferenceChunk = __napiModule.exports.LlamaCppInferenceChunk
242
- export const JsLlamaCppInferenceChunk = __napiModule.exports.JsLlamaCppInferenceChunk
243
- export const LlamaCppInferenceChunkStream = __napiModule.exports.LlamaCppInferenceChunkStream
244
- export const JsLlamaCppInferenceChunkStream = __napiModule.exports.JsLlamaCppInferenceChunkStream
245
- export const LlamaCppInferenceResult = __napiModule.exports.LlamaCppInferenceResult
246
- export const JsLlamaCppInferenceResult = __napiModule.exports.JsLlamaCppInferenceResult
247
- export const LlamaCppInferenceUsage = __napiModule.exports.LlamaCppInferenceUsage
248
- export const JsLlamaCppInferenceUsage = __napiModule.exports.JsLlamaCppInferenceUsage
249
- export const LlamaCppProvider = __napiModule.exports.LlamaCppProvider
250
- export const JsLlamaCppProvider = __napiModule.exports.JsLlamaCppProvider
251
193
  export const LLMProvider = __napiModule.exports.LLMProvider
252
194
  export const JsLLMProvider = __napiModule.exports.JsLLMProvider
253
195
  export const LlmProviderDefaults = __napiModule.exports.LlmProviderDefaults
@@ -268,24 +210,12 @@ export const MiddlewareStack = __napiModule.exports.MiddlewareStack
268
210
  export const JsMiddlewareStack = __napiModule.exports.JsMiddlewareStack
269
211
  export const MistralProvider = __napiModule.exports.MistralProvider
270
212
  export const JsMistralProvider = __napiModule.exports.JsMistralProvider
271
- export const MistralRsProvider = __napiModule.exports.MistralRsProvider
272
- export const JsMistralRsProvider = __napiModule.exports.JsMistralRsProvider
273
213
  export const Model = __napiModule.exports.Model
274
214
  export const JsModel = __napiModule.exports.JsModel
275
- export const ModelCache = __napiModule.exports.ModelCache
276
- export const JsModelCache = __napiModule.exports.JsModelCache
277
- export const ModelClient = __napiModule.exports.ModelClient
278
- export const JsModelClient = __napiModule.exports.JsModelClient
279
215
  export const ModelManager = __napiModule.exports.ModelManager
280
216
  export const JsModelManager = __napiModule.exports.JsModelManager
281
217
  export const ModelRegistry = __napiModule.exports.ModelRegistry
282
218
  export const JsModelRegistry = __napiModule.exports.JsModelRegistry
283
- export const MusicBackendHandle = __napiModule.exports.MusicBackendHandle
284
- export const JsMusicBackendHandle = __napiModule.exports.JsMusicBackendHandle
285
- export const MusicgenBackend = __napiModule.exports.MusicgenBackend
286
- export const JsMusicgenBackend = __napiModule.exports.JsMusicgenBackend
287
- export const MusicModel = __napiModule.exports.MusicModel
288
- export const JsMusicModel = __napiModule.exports.JsMusicModel
289
219
  export const MusicProvider = __napiModule.exports.MusicProvider
290
220
  export const JsMusicProvider = __napiModule.exports.JsMusicProvider
291
221
  export const NoopUsageEmitter = __napiModule.exports.NoopUsageEmitter
@@ -304,8 +234,6 @@ export const ParallelStage = __napiModule.exports.ParallelStage
304
234
  export const JsParallelStage = __napiModule.exports.JsParallelStage
305
235
  export const ParallelSubWorkflowsStep = __napiModule.exports.ParallelSubWorkflowsStep
306
236
  export const JsParallelSubWorkflowsStep = __napiModule.exports.JsParallelSubWorkflowsStep
307
- export const PeerClient = __napiModule.exports.PeerClient
308
- export const JsPeerClient = __napiModule.exports.JsPeerClient
309
237
  export const PerplexityProvider = __napiModule.exports.PerplexityProvider
310
238
  export const JsPerplexityProvider = __napiModule.exports.JsPerplexityProvider
311
239
  export const Pipeline = __napiModule.exports.Pipeline
@@ -320,10 +248,6 @@ export const PipelineResult = __napiModule.exports.PipelineResult
320
248
  export const JsPipelineResult = __napiModule.exports.JsPipelineResult
321
249
  export const PipelineSnapshot = __napiModule.exports.PipelineSnapshot
322
250
  export const JsPipelineSnapshot = __napiModule.exports.JsPipelineSnapshot
323
- export const PreferenceJsonlDataset = __napiModule.exports.PreferenceJsonlDataset
324
- export const JsPreferenceJsonlDataset = __napiModule.exports.JsPreferenceJsonlDataset
325
- export const ProgressCallback = __napiModule.exports.ProgressCallback
326
- export const JsProgressCallback = __napiModule.exports.JsProgressCallback
327
251
  export const PromptFile = __napiModule.exports.PromptFile
328
252
  export const JsPromptFile = __napiModule.exports.JsPromptFile
329
253
  export const PromptRegistry = __napiModule.exports.PromptRegistry
@@ -332,12 +256,8 @@ export const PromptTemplate = __napiModule.exports.PromptTemplate
332
256
  export const JsPromptTemplate = __napiModule.exports.JsPromptTemplate
333
257
  export const ProviderDefaults = __napiModule.exports.ProviderDefaults
334
258
  export const JsProviderDefaults = __napiModule.exports.JsProviderDefaults
335
- export const RatedJsonlDataset = __napiModule.exports.RatedJsonlDataset
336
- export const JsRatedJsonlDataset = __napiModule.exports.JsRatedJsonlDataset
337
259
  export const ReasoningTrace = __napiModule.exports.ReasoningTrace
338
260
  export const JsReasoningTraceClass = __napiModule.exports.JsReasoningTraceClass
339
- export const RedbCheckpointStore = __napiModule.exports.RedbCheckpointStore
340
- export const JsRedbCheckpointStore = __napiModule.exports.JsRedbCheckpointStore
341
261
  export const RegistryKey = __napiModule.exports.RegistryKey
342
262
  export const JsRegistryKey = __napiModule.exports.JsRegistryKey
343
263
  export const RequestTiming = __napiModule.exports.RequestTiming
@@ -348,16 +268,10 @@ export const RetryMiddleware = __napiModule.exports.RetryMiddleware
348
268
  export const JsRetryMiddleware = __napiModule.exports.JsRetryMiddleware
349
269
  export const RetryModel = __napiModule.exports.RetryModel
350
270
  export const JsRetryModel = __napiModule.exports.JsRetryModel
351
- export const RvcBackend = __napiModule.exports.RvcBackend
352
- export const JsRvcBackend = __napiModule.exports.JsRvcBackend
353
271
  export const SessionNamespace = __napiModule.exports.SessionNamespace
354
272
  export const JsSessionNamespace = __napiModule.exports.JsSessionNamespace
355
273
  export const SessionRefRegistry = __napiModule.exports.SessionRefRegistry
356
274
  export const JsSessionRefRegistry = __napiModule.exports.JsSessionRefRegistry
357
- export const SparkTtsBackend = __napiModule.exports.SparkTtsBackend
358
- export const JsSparkTtsBackend = __napiModule.exports.JsSparkTtsBackend
359
- export const StableAudioBackend = __napiModule.exports.StableAudioBackend
360
- export const JsStableAudioBackend = __napiModule.exports.JsStableAudioBackend
361
275
  export const Stage = __napiModule.exports.Stage
362
276
  export const JsStage = __napiModule.exports.JsStage
363
277
  export const StageResult = __napiModule.exports.StageResult
@@ -378,8 +292,6 @@ export const StopEvent = __napiModule.exports.StopEvent
378
292
  export const JsStopEventClass = __napiModule.exports.JsStopEventClass
379
293
  export const StructuredOutput = __napiModule.exports.StructuredOutput
380
294
  export const JsStructuredOutput = __napiModule.exports.JsStructuredOutput
381
- export const SttBackendHandle = __napiModule.exports.SttBackendHandle
382
- export const JsSttBackendHandle = __napiModule.exports.JsSttBackendHandle
383
295
  export const SubExecutable = __napiModule.exports.SubExecutable
384
296
  export const JsSubExecutable = __napiModule.exports.JsSubExecutable
385
297
  export const SubPipelineStep = __napiModule.exports.SubPipelineStep
@@ -404,16 +316,10 @@ export const ToolCall = __napiModule.exports.ToolCall
404
316
  export const JsToolCallClass = __napiModule.exports.JsToolCallClass
405
317
  export const ToolDefinition = __napiModule.exports.ToolDefinition
406
318
  export const JsToolDefinitionClass = __napiModule.exports.JsToolDefinitionClass
407
- export const TractEmbedModel = __napiModule.exports.TractEmbedModel
408
- export const JsTractEmbedModel = __napiModule.exports.JsTractEmbedModel
409
319
  export const Transcription = __napiModule.exports.Transcription
410
320
  export const JsTranscription = __napiModule.exports.JsTranscription
411
321
  export const TranscriptionProviderDefaults = __napiModule.exports.TranscriptionProviderDefaults
412
322
  export const JsTranscriptionProviderDefaults = __napiModule.exports.JsTranscriptionProviderDefaults
413
- export const TtsBackendHandle = __napiModule.exports.TtsBackendHandle
414
- export const JsTtsBackendHandle = __napiModule.exports.JsTtsBackendHandle
415
- export const TtsProvider = __napiModule.exports.TtsProvider
416
- export const JsTtsProvider = __napiModule.exports.JsTtsProvider
417
323
  export const TTSProvider = __napiModule.exports.TTSProvider
418
324
  export const JsTTSProvider = __napiModule.exports.JsTTSProvider
419
325
  export const TypedTool = __napiModule.exports.TypedTool
@@ -426,12 +332,6 @@ export const UsageRecordingEmbeddingModel = __napiModule.exports.UsageRecordingE
426
332
  export const JsUsageRecordingEmbeddingModel = __napiModule.exports.JsUsageRecordingEmbeddingModel
427
333
  export const UsageRecordingModel = __napiModule.exports.UsageRecordingModel
428
334
  export const JsUsageRecordingModel = __napiModule.exports.JsUsageRecordingModel
429
- export const ValkeyBackend = __napiModule.exports.ValkeyBackend
430
- export const JsValkeyBackend = __napiModule.exports.JsValkeyBackend
431
- export const ValkeyCheckpointStore = __napiModule.exports.ValkeyCheckpointStore
432
- export const JsValkeyCheckpointStore = __napiModule.exports.JsValkeyCheckpointStore
433
- export const VcModel = __napiModule.exports.VcModel
434
- export const JsVcModel = __napiModule.exports.JsVcModel
435
335
  export const VcProvider = __napiModule.exports.VcProvider
436
336
  export const JsVcProvider = __napiModule.exports.JsVcProvider
437
337
  export const VideoProvider = __napiModule.exports.VideoProvider
@@ -442,14 +342,10 @@ export const VoiceCloningProviderDefaults = __napiModule.exports.VoiceCloningPro
442
342
  export const JsVoiceCloningProviderDefaults = __napiModule.exports.JsVoiceCloningProviderDefaults
443
343
  export const VoiceProvider = __napiModule.exports.VoiceProvider
444
344
  export const JsVoiceProvider = __napiModule.exports.JsVoiceProvider
445
- export const WhisperCppProvider = __napiModule.exports.WhisperCppProvider
446
- export const JsWhisperCppProvider = __napiModule.exports.JsWhisperCppProvider
447
345
  export const Workflow = __napiModule.exports.Workflow
448
346
  export const JsWorkflow = __napiModule.exports.JsWorkflow
449
347
  export const WorkflowBuilder = __napiModule.exports.WorkflowBuilder
450
348
  export const JsWorkflowBuilder = __napiModule.exports.JsWorkflowBuilder
451
- export const WorkflowCheckpoint = __napiModule.exports.WorkflowCheckpoint
452
- export const JsWorkflowCheckpoint = __napiModule.exports.JsWorkflowCheckpoint
453
349
  export const WorkflowHandler = __napiModule.exports.WorkflowHandler
454
350
  export const JsWorkflowHandler = __napiModule.exports.JsWorkflowHandler
455
351
  export const WorkflowHistory = __napiModule.exports.WorkflowHistory
@@ -458,13 +354,12 @@ export const WorkflowSnapshot = __napiModule.exports.WorkflowSnapshot
458
354
  export const JsWorkflowSnapshot = __napiModule.exports.JsWorkflowSnapshot
459
355
  export const XaiProvider = __napiModule.exports.XaiProvider
460
356
  export const JsXaiProvider = __napiModule.exports.JsXaiProvider
357
+ export const __blazenDrainAsyncQueue = __napiModule.exports.__blazenDrainAsyncQueue
461
358
  export const addUsageToTokenUsage = __napiModule.exports.addUsageToTokenUsage
462
359
  export const audioInput = __napiModule.exports.audioInput
463
360
  export const cadInput = __napiModule.exports.cadInput
464
361
  export const CapabilityKind = __napiModule.exports.CapabilityKind
465
362
  export const JsCapabilityKind = __napiModule.exports.JsCapabilityKind
466
- export const ChatRole = __napiModule.exports.ChatRole
467
- export const JsChatRole = __napiModule.exports.JsChatRole
468
363
  export const completeBatch = __napiModule.exports.completeBatch
469
364
  export const completeBatchConfig = __napiModule.exports.completeBatchConfig
470
365
  export const computeAudioCost = __napiModule.exports.computeAudioCost
@@ -492,31 +387,15 @@ export const HistoryEventKindTag = __napiModule.exports.HistoryEventKindTag
492
387
  export const JsHistoryEventKindTag = __napiModule.exports.JsHistoryEventKindTag
493
388
  export const imageInput = __napiModule.exports.imageInput
494
389
  export const initLangfuse = __napiModule.exports.initLangfuse
495
- export const initOtlp = __napiModule.exports.initOtlp
496
- export const initPrometheus = __napiModule.exports.initPrometheus
497
390
  export const internEventType = __napiModule.exports.internEventType
498
391
  export const JoinStrategy = __napiModule.exports.JoinStrategy
499
392
  export const JsJoinStrategy = __napiModule.exports.JsJoinStrategy
500
- export const JsAdmissionModeTag = __napiModule.exports.JsAdmissionModeTag
501
393
  export const JsAuthMethod = __napiModule.exports.JsAuthMethod
502
- export const JsBackendHint = __napiModule.exports.JsBackendHint
503
394
  export const JsCacheStrategy = __napiModule.exports.JsCacheStrategy
504
395
  export const JsContentKind = __napiModule.exports.JsContentKind
505
- export const JsDiffusionScheduler = __napiModule.exports.JsDiffusionScheduler
506
396
  export const JsFalLlmEndpointKind = __napiModule.exports.JsFalLlmEndpointKind
507
397
  export const JsJobStatus = __napiModule.exports.JsJobStatus
508
- export const JsMixedPrecision = __napiModule.exports.JsMixedPrecision
509
- export const JsMusicgenVariant = __napiModule.exports.JsMusicgenVariant
510
398
  export const JsRole = __napiModule.exports.JsRole
511
- export const JsRunStatus = __napiModule.exports.JsRunStatus
512
- export const JsSchedulerKind = __napiModule.exports.JsSchedulerKind
513
- export const JsStableAudioVariant = __napiModule.exports.JsStableAudioVariant
514
- export const JsTtsModel = __napiModule.exports.JsTtsModel
515
- export const JsWhisperModel = __napiModule.exports.JsWhisperModel
516
- export const LlamaCppChatRole = __napiModule.exports.LlamaCppChatRole
517
- export const JsLlamaCppChatRole = __napiModule.exports.JsLlamaCppChatRole
518
- export const loadClientTls = __napiModule.exports.loadClientTls
519
- export const loadServerTls = __napiModule.exports.loadServerTls
520
399
  export const lookupPricing = __napiModule.exports.lookupPricing
521
400
  export const lookupStepBuilder = __napiModule.exports.lookupStepBuilder
522
401
  export const LoopDecision = __napiModule.exports.LoopDecision
@@ -525,12 +404,8 @@ export const Modality = __napiModule.exports.Modality
525
404
  export const JsModality = __napiModule.exports.JsModality
526
405
  export const newRetryStack = __napiModule.exports.newRetryStack
527
406
  export const newUsageEvent = __napiModule.exports.newUsageEvent
528
- export const OtlpProtocol = __napiModule.exports.OtlpProtocol
529
- export const JsOtlpProtocol = __napiModule.exports.JsOtlpProtocol
530
407
  export const PauseReason = __napiModule.exports.PauseReason
531
408
  export const JsPauseReason = __napiModule.exports.JsPauseReason
532
- export const peerEnvelopeVersion = __napiModule.exports.peerEnvelopeVersion
533
- export const peerTokenEnv = __napiModule.exports.peerTokenEnv
534
409
  export const ProgressKind = __napiModule.exports.ProgressKind
535
410
  export const JsProgressKind = __napiModule.exports.JsProgressKind
536
411
  export const providerEnvVars = __napiModule.exports.providerEnvVars
@@ -548,12 +423,12 @@ export const registerNativeSerializer = __napiModule.exports.registerNativeSeria
548
423
  export const registerPricing = __napiModule.exports.registerPricing
549
424
  export const registerStepBuilder = __napiModule.exports.registerStepBuilder
550
425
  export const resolveApiKey = __napiModule.exports.resolveApiKey
551
- export const resolvePeerToken = __napiModule.exports.resolvePeerToken
552
426
  export const resolveRetryStack = __napiModule.exports.resolveRetryStack
553
427
  export const runAgent = __napiModule.exports.runAgent
554
428
  export const runAgentWithCallback = __napiModule.exports.runAgentWithCallback
555
429
  export const SessionPausePolicy = __napiModule.exports.SessionPausePolicy
556
430
  export const JsSessionPausePolicy = __napiModule.exports.JsSessionPausePolicy
431
+ export const setDefaultHttpClient = __napiModule.exports.setDefaultHttpClient
557
432
  export const simhashFromHex = __napiModule.exports.simhashFromHex
558
433
  export const simhashToHex = __napiModule.exports.simhashToHex
559
434
  export const StateValueKind = __napiModule.exports.StateValueKind
package/index.d.ts CHANGED
@@ -3750,19 +3750,41 @@ export declare class ModelManager {
3750
3750
  */
3751
3751
  constructor(config?: ModelManagerConfig | undefined | null)
3752
3752
  /**
3753
- * Register a `Model`-backed local model with the manager.
3754
- *
3755
- * The model starts in the unloaded state. An optional
3756
- * `memoryEstimateBytes` overrides the model's self-reported
3757
- * estimate.
3758
- *
3759
- * Only local in-process providers (mistral.rs, llama.cpp, candle)
3760
- * can be registered — remote HTTP providers will throw. To
3761
- * register an arbitrary JS-managed resource (embedding model,
3762
- * tokenizer, custom runtime, …), use
3753
+ * Register a provider under `id` so it can be dispatched by name with
3754
+ * [`Self::complete`] / [`Self::stream`].
3755
+ *
3756
+ * Works for **both** tiers in one place:
3757
+ * - **Remote providers** (`Model.openai()`, `FalProvider.create()`, …)
3758
+ * register as dispatch-only entries — they own no local weights, so
3759
+ * they never count against a memory budget.
3760
+ * - **Local in-process providers** (mistral.rs, llama.cpp, candle)
3761
+ * additionally participate in load/unload lifecycle and per-pool LRU
3762
+ * eviction; `memoryEstimateBytes` reports their footprint.
3763
+ *
3764
+ * To register an arbitrary JS-managed resource (embedding model,
3765
+ * tokenizer, custom runtime, …) with raw lifecycle callbacks, use
3763
3766
  * [`Self::register_local_model`] instead.
3764
3767
  */
3765
3768
  register(id: string, model: JsModel, memoryEstimateBytes?: bigint | undefined | null): Promise<void>
3769
+ /**
3770
+ * Run a chat completion against the provider registered under `id`.
3771
+ *
3772
+ * Local entries are auto-loaded on first use; remote entries dispatch
3773
+ * straight through. Throws if `id` is not registered or was registered
3774
+ * for lifecycle only.
3775
+ */
3776
+ complete(id: string, messages: Array<JsChatMessage>): Promise<JsModelResponse>
3777
+ /**
3778
+ * Streaming counterpart to [`Self::complete`]. The `onChunk` callback
3779
+ * receives each chunk as a typed `StreamChunk`.
3780
+ */
3781
+ stream(id: string, messages: Array<JsChatMessage>, onChunk: StreamChunkCallbackTsfn): Promise<void>
3782
+ /**
3783
+ * Fetch the chat interface registered under `id` to use or compose
3784
+ * directly. Returns `null` if `id` is unknown or was registered for
3785
+ * lifecycle only (no chat `Model`).
3786
+ */
3787
+ get(id: string): Promise<JsModel | null>
3766
3788
  /**
3767
3789
  * Register an arbitrary JS-managed local model with the manager.
3768
3790
  *
@@ -4278,16 +4300,15 @@ export declare class OpenAiEmbeddingModel {
4278
4300
  export type JsOpenAiEmbeddingModel = OpenAiEmbeddingModel
4279
4301
 
4280
4302
  /**
4281
- * An `OpenAI` compute provider exposing text-to-speech.
4303
+ * An `OpenAI` provider exposing chat completion, streaming, and text-to-speech.
4282
4304
  *
4283
- * For chat completions and embeddings, use
4284
- * [`Model.openai`](crate::providers::model::JsModel::openai)
4285
- * instead — this class is the standalone entry point for the compute
4286
- * capabilities (currently text-to-speech) that the `OpenAI` provider
4287
- * implements directly.
4305
+ * This is the standalone class form of
4306
+ * [`Model.openai`](crate::providers::model::JsModel::openai); both surfaces
4307
+ * wrap the same Rust provider.
4288
4308
  *
4289
4309
  * ```typescript
4290
4310
  * const openai = OpenAiProvider.create({ apiKey: "sk-..." });
4311
+ * const response = await openai.complete([ChatMessage.user("Hi")]);
4291
4312
  * const audio = await openai.textToSpeech({
4292
4313
  * text: "Hello, world!",
4293
4314
  * voice: "alloy",
@@ -4304,6 +4325,16 @@ export declare class OpenAiProvider {
4304
4325
  * [`OpenAiProvider::from_options`] are applied.
4305
4326
  */
4306
4327
  static create(options?: JsProviderOptions | undefined | null): OpenAiProvider
4328
+ /** Get the model ID. */
4329
+ get modelId(): string
4330
+ /** Perform a chat completion. */
4331
+ complete(messages: Array<JsChatMessage>): Promise<JsModelResponse>
4332
+ /** Perform a chat completion with additional options. */
4333
+ completeWithOptions(messages: Array<JsChatMessage>, options: JsModelOptions): Promise<JsModelResponse>
4334
+ /** Stream a chat completion. */
4335
+ stream(messages: Array<JsChatMessage>, onChunk: StreamChunkCallbackTsfn): Promise<void>
4336
+ /** Stream a chat completion with additional options. */
4337
+ streamWithOptions(messages: Array<JsChatMessage>, onChunk: StreamChunkCallbackTsfn, options: JsModelOptions): Promise<void>
4307
4338
  /** Synthesize speech from text via `OpenAI`'s `/v1/audio/speech`. */
4308
4339
  textToSpeech(request: JsSpeechRequest): Promise<JsAudioResult>
4309
4340
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blazen",
3
- "version": "0.6.3",
3
+ "version": "0.6.4",
4
4
  "description": "Blazen - Event-driven AI workflow framework for Node.js/TypeScript",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -30,7 +30,7 @@
30
30
  "wasm32-wasi"
31
31
  ],
32
32
  "wasm": {
33
- "initialMemory": 256
33
+ "initialMemory": 1152
34
34
  }
35
35
  },
36
36
  "publishConfig": {
@@ -90,13 +90,13 @@
90
90
  "verbose": true
91
91
  },
92
92
  "optionalDependencies": {
93
- "@blazen-dev/blazen-linux-x64-gnu": "0.6.3",
94
- "@blazen-dev/blazen-linux-x64-musl": "0.6.3",
95
- "@blazen-dev/blazen-linux-arm64-gnu": "0.6.3",
96
- "@blazen-dev/blazen-linux-arm64-musl": "0.6.3",
97
- "@blazen-dev/blazen-darwin-arm64": "0.6.3",
98
- "@blazen-dev/blazen-win32-x64-msvc": "0.6.3",
99
- "@blazen-dev/blazen-wasm32-wasi": "0.6.3"
93
+ "@blazen-dev/blazen-linux-x64-gnu": "0.6.4",
94
+ "@blazen-dev/blazen-linux-x64-musl": "0.6.4",
95
+ "@blazen-dev/blazen-linux-arm64-gnu": "0.6.4",
96
+ "@blazen-dev/blazen-linux-arm64-musl": "0.6.4",
97
+ "@blazen-dev/blazen-darwin-arm64": "0.6.4",
98
+ "@blazen-dev/blazen-win32-x64-msvc": "0.6.4",
99
+ "@blazen-dev/blazen-wasm32-wasi": "0.6.4"
100
100
  },
101
101
  "scripts": {
102
102
  "build": "napi build --release --platform --features local-all,langfuse --js index.js && node scripts/post-build.mjs",