@bratsos/workflow-engine 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-QBYB2PJJ.js → chunk-XS3ZX4KW.js} +12 -4
- package/dist/chunk-XS3ZX4KW.js.map +1 -0
- package/dist/{client-D4PoxADF.d.ts → client-DxNS_NoL.d.ts} +19 -2
- package/dist/client.d.ts +2 -1
- package/dist/client.js +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -2
- package/package.json +2 -1
- package/skills/workflow-engine/SKILL.md +7 -0
- package/skills/workflow-engine/references/04-ai-integration.md +34 -1
- package/dist/chunk-QBYB2PJJ.js.map +0 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { g as AIHelper, k as AVAILABLE_MODELS, l as AsyncBatchStageDefinition, D as DEFAULT_MODEL_KEY, m as EnhancedStageContext, I as InferInput,
|
|
1
|
+
export { g as AIHelper, k as AVAILABLE_MODELS, l as AsyncBatchStageDefinition, D as DEFAULT_MODEL_KEY, m as EnhancedStageContext, I as InferInput, X as LogPayload, n as ModelConfig, Y as ModelFilter, M as ModelKey, o as ModelRegistry, N as NoInputSchema, S as SimpleStageResult, Z as StageCompletedPayload, _ as StageFailedPayload, $ as StageStartedPayload, t as SyncStageDefinition, a0 as WorkflowCompletedPayload, W as WorkflowEventType, a1 as WorkflowFailedPayload, u as WorkflowSSEEvent, a2 as WorkflowStartedPayload, a3 as WorkflowSuspendedPayload, v as calculateCost, x as defineAsyncBatchStage, y as defineStage, H as listModels, K as modelSupportsBatch, U as registerModels } from './client-DxNS_NoL.js';
|
|
2
|
+
import '@ai-sdk/provider';
|
|
2
3
|
import 'ai';
|
|
3
4
|
import 'zod';
|
|
4
5
|
import './interface-MMqhfQQK.js';
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AVAILABLE_MODELS, DEFAULT_MODEL_KEY, ModelKey, NoInputSchema, calculateCost, defineAsyncBatchStage, defineStage, listModels, modelSupportsBatch, registerModels } from './chunk-
|
|
1
|
+
export { AVAILABLE_MODELS, DEFAULT_MODEL_KEY, ModelKey, NoInputSchema, calculateCost, defineAsyncBatchStage, defineStage, listModels, modelSupportsBatch, registerModels } from './chunk-XS3ZX4KW.js';
|
|
2
2
|
import './chunk-MUWP5SF2.js';
|
|
3
3
|
//# sourceMappingURL=client.js.map
|
|
4
4
|
//# sourceMappingURL=client.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as ModelKey } from './client-
|
|
2
|
-
export { A as AIBatch, a as AIBatchHandle, b as AIBatchProvider, c as AIBatchRequest, d as AIBatchResult, e as AICallType, f as AIEmbedResult, g as AIHelper, h as AIObjectResult, i as AIStreamResult, j as AITextResult, k as AVAILABLE_MODELS, l as AsyncBatchStageDefinition, B as BatchLogFn, D as DEFAULT_MODEL_KEY, E as EmbedOptions, m as EnhancedStageContext, I as InferInput, L as LogContext, n as ModelConfig, o as ModelRegistry, p as ModelStats, q as ModelStatsTracker, r as ModelSyncConfig, N as NoInputSchema, O as ObjectOptions, R as RecordCallParams, S as SimpleStageResult, s as StreamOptions, t as SyncStageDefinition, T as TextOptions, W as WorkflowEventType, u as WorkflowSSEEvent, v as calculateCost, w as createAIHelper, x as defineAsyncBatchStage, y as defineStage, z as getDefaultModel, C as getModel, F as getModelById, G as getRegisteredModel, H as listModels, J as listRegisteredModels, K as modelSupportsBatch, P as printAvailableModels, Q as
|
|
1
|
+
import { M as ModelKey } from './client-DxNS_NoL.js';
|
|
2
|
+
export { A as AIBatch, a as AIBatchHandle, b as AIBatchProvider, c as AIBatchRequest, d as AIBatchResult, e as AICallType, f as AIEmbedResult, g as AIHelper, h as AIObjectResult, i as AIStreamResult, j as AITextResult, k as AVAILABLE_MODELS, l as AsyncBatchStageDefinition, B as BatchLogFn, D as DEFAULT_MODEL_KEY, E as EmbedOptions, m as EnhancedStageContext, I as InferInput, L as LogContext, n as ModelConfig, o as ModelRegistry, p as ModelStats, q as ModelStatsTracker, r as ModelSyncConfig, N as NoInputSchema, O as ObjectOptions, R as RecordCallParams, S as SimpleStageResult, s as StreamOptions, t as SyncStageDefinition, T as TextOptions, W as WorkflowEventType, u as WorkflowSSEEvent, v as calculateCost, w as createAIHelper, x as defineAsyncBatchStage, y as defineStage, z as getDefaultModel, C as getModel, F as getModelById, G as getRegisteredModel, H as listModels, J as listRegisteredModels, K as modelSupportsBatch, P as printAvailableModels, Q as registerEmbeddingProvider, U as registerModels, V as requireStageOutput } from './client-DxNS_NoL.js';
|
|
3
3
|
import { L as LogLevel } from './stage-BPw7m9Wx.js';
|
|
4
4
|
export { S as Stage, a as StageResult } from './stage-BPw7m9Wx.js';
|
|
5
5
|
export { C as CommandResult, I as IdempotencyInProgressError, y as InferWorkflowStageIds, J as JobExecuteCommand, a as JobExecuteResult, b as Kernel, c as KernelCommand, d as KernelCommandType, e as KernelConfig, W as KernelWorkflowRegistry, L as LeaseReapStaleCommand, f as LeaseReapStaleResult, O as OutboxFlushCommand, g as OutboxFlushResult, P as PluginDefinition, h as PluginReplayDLQCommand, i as PluginReplayDLQResult, j as PluginRunner, k as PluginRunnerConfig, R as RunCancelCommand, l as RunCancelResult, m as RunClaimPendingCommand, n as RunClaimPendingResult, o as RunCreateCommand, p as RunCreateResult, q as RunRerunFromCommand, r as RunRerunFromResult, s as RunTransitionCommand, t as RunTransitionResult, S as StagePollSuspendedCommand, u as StagePollSuspendedResult, z as Workflow, A as WorkflowBuilder, v as createKernel, w as createPluginRunner, x as definePlugin } from './plugins-CPC-X0rR.js';
|
|
@@ -8,6 +8,7 @@ export { A as AICallLogger, i as AICallRecord, h as AIHelperStats, r as Artifact
|
|
|
8
8
|
export { P as PrismaAICallLogger, a as PrismaJobQueue, c as PrismaWorkflowPersistence, e as createPrismaAICallLogger, f as createPrismaJobQueue, g as createPrismaWorkflowPersistence } from './index-DAzCfO1R.js';
|
|
9
9
|
import { ToolSet } from 'ai';
|
|
10
10
|
export { B as BlobStore, C as Clock, E as EventSink, J as JobTransport, K as KernelEvent, a as KernelEventType, P as Persistence, S as Scheduler } from './ports-tU3rzPXJ.js';
|
|
11
|
+
import '@ai-sdk/provider';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Config Presets - Common configuration patterns for workflow stages
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ModelKey } from './chunk-
|
|
2
|
-
export { AVAILABLE_MODELS, AnthropicBatchProvider, DEFAULT_MODEL_KEY, GoogleBatchProvider, ModelKey, ModelStatsTracker, NoInputSchema, OpenAIBatchProvider, calculateCost, createAIHelper, defineAsyncBatchStage, defineStage, getBestProviderForModel, getDefaultModel, getModel, getModelById, getRegisteredModel, listModels, listRegisteredModels, modelSupportsBatch, printAvailableModels, registerModels, requireStageOutput, resolveModelForProvider } from './chunk-
|
|
1
|
+
import { ModelKey } from './chunk-XS3ZX4KW.js';
|
|
2
|
+
export { AVAILABLE_MODELS, AnthropicBatchProvider, DEFAULT_MODEL_KEY, GoogleBatchProvider, ModelKey, ModelStatsTracker, NoInputSchema, OpenAIBatchProvider, calculateCost, createAIHelper, defineAsyncBatchStage, defineStage, getBestProviderForModel, getDefaultModel, getModel, getModelById, getRegisteredModel, listModels, listRegisteredModels, modelSupportsBatch, printAvailableModels, registerEmbeddingProvider, registerModels, requireStageOutput, resolveModelForProvider } from './chunk-XS3ZX4KW.js';
|
|
3
3
|
import './chunk-D7RVRRM2.js';
|
|
4
4
|
export { PrismaAICallLogger, PrismaJobQueue, PrismaWorkflowPersistence, createPrismaAICallLogger, createPrismaJobQueue, createPrismaWorkflowPersistence } from './chunk-NYKMT46J.js';
|
|
5
5
|
import './chunk-MUWP5SF2.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bratsos/workflow-engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Type-safe, distributed workflow engine for AI-orchestrated processes with suspend/resume, parallel execution, and cost tracking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
],
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@ai-sdk/google": "^3.0.1",
|
|
81
|
+
"@ai-sdk/provider": "^3.0.0",
|
|
81
82
|
"@openrouter/ai-sdk-provider": "^2.1.1",
|
|
82
83
|
"ai": "^6.0.3",
|
|
83
84
|
"js-tiktoken": "^1.0.21",
|
|
@@ -108,6 +108,7 @@ await kernel.dispatch({
|
|
|
108
108
|
| `createNodeHost` | Function | `@bratsos/workflow-engine-host-node` | Create Node.js host |
|
|
109
109
|
| `createServerlessHost` | Function | `@bratsos/workflow-engine-host-serverless` | Create serverless host |
|
|
110
110
|
| `createAIHelper` | Function | `@bratsos/workflow-engine` | AI operations (text, object, embed, batch) |
|
|
111
|
+
| `registerEmbeddingProvider` | Function | `@bratsos/workflow-engine` | Register custom embedding providers (Voyage, Cohere, etc.) |
|
|
111
112
|
| `definePlugin` | Function | `@bratsos/workflow-engine/kernel` | Define kernel plugins |
|
|
112
113
|
| `createPluginRunner` | Function | `@bratsos/workflow-engine/kernel` | Create plugin event processor |
|
|
113
114
|
|
|
@@ -339,6 +340,12 @@ const { object } = await ai.generateObject("gemini-2.5-flash", prompt, schema);
|
|
|
339
340
|
const { embedding } = await ai.embed("text-embedding-004", ["text1"], { dimensions: 768 });
|
|
340
341
|
// OpenRouter embedding models (OpenAI, Cohere, etc.)
|
|
341
342
|
const { embedding } = await ai.embed("openai/text-embedding-3-small", ["text1"]);
|
|
343
|
+
|
|
344
|
+
// Custom embedding providers (Voyage, Cohere, Jina, etc.)
|
|
345
|
+
import { registerEmbeddingProvider } from "@bratsos/workflow-engine";
|
|
346
|
+
import { voyage } from "voyage-ai-provider";
|
|
347
|
+
registerEmbeddingProvider("voyage", (modelId) => voyage.embeddingModel(modelId));
|
|
348
|
+
// Then register models with provider: "voyage" and use ai.embed() as usual
|
|
342
349
|
```
|
|
343
350
|
|
|
344
351
|
## Persistence Setup
|
|
@@ -248,7 +248,7 @@ const result = await ai.generateObject(
|
|
|
248
248
|
|
|
249
249
|
## embed
|
|
250
250
|
|
|
251
|
-
Generate embeddings for text. Supports Google and OpenRouter
|
|
251
|
+
Generate embeddings for text. Supports Google and OpenRouter as built-in providers, plus any custom provider registered via `registerEmbeddingProvider()`.
|
|
252
252
|
|
|
253
253
|
```typescript
|
|
254
254
|
// Google embedding model (with Google-specific options)
|
|
@@ -287,6 +287,39 @@ console.log(result.embedding); // First embedding (convenience)
|
|
|
287
287
|
> OpenRouter embedding models work without provider-specific options. The provider is determined
|
|
288
288
|
> by the `provider` field in the model's `ModelConfig`.
|
|
289
289
|
|
|
290
|
+
### Custom Embedding Providers
|
|
291
|
+
|
|
292
|
+
Use `registerEmbeddingProvider()` to add support for any AI SDK community embedding provider (Voyage, Cohere, Jina, etc.) without modifying the library. Call this once at application startup, before any `embed()` calls.
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
import { registerEmbeddingProvider, registerModels } from "@bratsos/workflow-engine";
|
|
296
|
+
import { voyage } from "voyage-ai-provider";
|
|
297
|
+
|
|
298
|
+
// 1. Register the provider factory (once at startup)
|
|
299
|
+
registerEmbeddingProvider("voyage", (modelId) => voyage.embeddingModel(modelId));
|
|
300
|
+
|
|
301
|
+
// 2. Register models that use the provider
|
|
302
|
+
registerModels({
|
|
303
|
+
"voyage-4-large": {
|
|
304
|
+
id: "voyage-4-large",
|
|
305
|
+
name: "Voyage 4 Large",
|
|
306
|
+
provider: "voyage", // Must match the name in registerEmbeddingProvider()
|
|
307
|
+
inputCostPerMillion: 0.06,
|
|
308
|
+
outputCostPerMillion: 0,
|
|
309
|
+
isEmbeddingModel: true,
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// 3. Use it like any other embedding model
|
|
314
|
+
const { embedding } = await ai.embed("voyage-4-large", "Hello world");
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**How it works:**
|
|
318
|
+
- The factory receives the model's `id` from `ModelConfig` and must return an `EmbeddingModelV3` instance (from `@ai-sdk/provider`)
|
|
319
|
+
- Custom providers are checked **before** built-in providers, so you can even override `"openrouter"` or `"google"` if needed
|
|
320
|
+
- The workflow engine stays provider-agnostic — install your chosen provider package as your app's dependency, not the library's
|
|
321
|
+
- Provider-specific options (like Google's `taskType`) are handled by each provider through the AI SDK's standard mechanism
|
|
322
|
+
|
|
290
323
|
## streamText
|
|
291
324
|
|
|
292
325
|
Stream text generation.
|