octaflow 0.18.0 → 0.19.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/ai/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { S as ok, b as noopLogger, f as defineStep, l as buildWorkflow, x as err } from "../core-DNWPwFaE.js";
2
- import { a as EMBEDDING_PROVIDERS, c as AiRefusalError, d as isAiRefusalError, f as readRefusalDetails, i as DEFAULT_EMBEDDING_PROVIDER, l as REFUSAL_FINISH_REASON, n as AI_PROVIDER_IDS, o as EMBEDDING_PROVIDER_IDS, r as DEFAULT_AI_PROVIDER, s as embeddingDimensionsFor, t as AI_PROVIDERS, u as createRefusalAwareModel } from "../provider-registry-DhNXw_CC.js";
2
+ import { a as readRefusalDetails, i as isAiRefusalError, n as REFUSAL_FINISH_REASON, r as createRefusalAwareModel, t as AiRefusalError } from "../refusal-BsL2HPDb.js";
3
+ import { a as EMBEDDING_PROVIDERS, i as DEFAULT_EMBEDDING_PROVIDER, n as AI_PROVIDER_IDS, o as EMBEDDING_PROVIDER_IDS, r as DEFAULT_AI_PROVIDER, s as embeddingDimensionsFor, t as AI_PROVIDERS } from "../provider-registry-DcRDsjtT.js";
3
4
  import { wrapEmbeddingModel, wrapLanguageModel } from "ai";
4
5
  //#region src/ai/instrumented-model.ts
5
6
  function createUsageAccumulator() {
@@ -1,4 +1,5 @@
1
- import { a as EMBEDDING_PROVIDERS, t as AI_PROVIDERS, u as createRefusalAwareModel } from "../../provider-registry-DhNXw_CC.js";
1
+ import { r as createRefusalAwareModel } from "../../refusal-BsL2HPDb.js";
2
+ import { a as EMBEDDING_PROVIDERS, t as AI_PROVIDERS } from "../../provider-registry-DcRDsjtT.js";
2
3
  //#region src/ai/providers/index.ts
3
4
  const LLM_LOADERS = {
4
5
  anthropic: async (apiKey, baseURL) => {
@@ -0,0 +1,2 @@
1
+ import { a as AiProviderMeta, c as DEFAULT_AI_PROVIDER, d as EMBEDDING_PROVIDER_IDS, f as EmbeddingProviderId, i as AiProviderId, l as DEFAULT_EMBEDDING_PROVIDER, m as embeddingDimensionsFor, n as AI_PROVIDER_IDS, o as AiProviderModelOption, p as EmbeddingProviderMeta, r as AiProcessingRegion, s as AiVendorResidency, t as AI_PROVIDERS, u as EMBEDDING_PROVIDERS } from "../provider-registry-bXGOmyeh.js";
2
+ export { AI_PROVIDERS, AI_PROVIDER_IDS, AiProcessingRegion, AiProviderId, AiProviderMeta, AiProviderModelOption, AiVendorResidency, DEFAULT_AI_PROVIDER, DEFAULT_EMBEDDING_PROVIDER, EMBEDDING_PROVIDERS, EMBEDDING_PROVIDER_IDS, EmbeddingProviderId, EmbeddingProviderMeta, embeddingDimensionsFor };
@@ -0,0 +1,2 @@
1
+ import { a as EMBEDDING_PROVIDERS, i as DEFAULT_EMBEDDING_PROVIDER, n as AI_PROVIDER_IDS, o as EMBEDDING_PROVIDER_IDS, r as DEFAULT_AI_PROVIDER, s as embeddingDimensionsFor, t as AI_PROVIDERS } from "../provider-registry-DcRDsjtT.js";
2
+ export { AI_PROVIDERS, AI_PROVIDER_IDS, DEFAULT_AI_PROVIDER, DEFAULT_EMBEDDING_PROVIDER, EMBEDDING_PROVIDERS, EMBEDDING_PROVIDER_IDS, embeddingDimensionsFor };
@@ -0,0 +1,121 @@
1
+ //#region src/ai/provider-registry.ts
2
+ /**
3
+ * The provider registry — pure metadata about the vendors a BYOK deployment
4
+ * can point at: ids, default and cheap models, where a key is created, and
5
+ * **where the vendor processes what you send it**. Dependency-free, so a
6
+ * browser bundle (a provider/model picker, a residency badge) can import it;
7
+ * the SDK factories that need `@ai-sdk/*` live in `octaflow/ai/providers`.
8
+ *
9
+ * Adding a provider: an id here with its metadata, a factory in
10
+ * `providers/`, and pricing rows in `cost.ts`.
11
+ */
12
+ const AI_PROVIDER_IDS = ["anthropic", "mistral"];
13
+ const EMBEDDING_PROVIDER_IDS = ["openai", "mistral"];
14
+ /** What an unset provider resolves to. */
15
+ const DEFAULT_AI_PROVIDER = "anthropic";
16
+ const DEFAULT_EMBEDDING_PROVIDER = "openai";
17
+ const AI_PROVIDERS = {
18
+ anthropic: {
19
+ id: "anthropic",
20
+ label: "Anthropic",
21
+ residency: {
22
+ region: "third-country",
23
+ legalName: "Anthropic PBC",
24
+ country: "US"
25
+ },
26
+ defaultModel: "claude-sonnet-5",
27
+ classifierModel: "claude-haiku-4-5",
28
+ testModel: "claude-haiku-4-5",
29
+ keyPrefix: "sk-ant-",
30
+ consoleKeyUrl: "https://console.anthropic.com/settings/keys",
31
+ modelOptions: [
32
+ {
33
+ label: "Claude Opus 5",
34
+ value: "claude-opus-5"
35
+ },
36
+ {
37
+ label: "Claude Opus 4.8",
38
+ value: "claude-opus-4-8"
39
+ },
40
+ {
41
+ label: "Claude Sonnet 5",
42
+ value: "claude-sonnet-5"
43
+ },
44
+ {
45
+ label: "Claude Haiku 4.5",
46
+ value: "claude-haiku-4-5"
47
+ }
48
+ ]
49
+ },
50
+ mistral: {
51
+ id: "mistral",
52
+ label: "Mistral",
53
+ residency: {
54
+ region: "eu",
55
+ legalName: "Mistral AI SAS",
56
+ country: "FR"
57
+ },
58
+ defaultModel: "mistral-medium-latest",
59
+ classifierModel: "mistral-small-latest",
60
+ testModel: "mistral-small-latest",
61
+ keyPrefix: null,
62
+ consoleKeyUrl: "https://console.mistral.ai/api-keys",
63
+ modelOptions: [
64
+ {
65
+ label: "Mistral Medium 3.5",
66
+ value: "mistral-medium-latest"
67
+ },
68
+ {
69
+ label: "Mistral Large 3",
70
+ value: "mistral-large-latest"
71
+ },
72
+ {
73
+ label: "Mistral Small 4",
74
+ value: "mistral-small-latest"
75
+ }
76
+ ]
77
+ }
78
+ };
79
+ const EMBEDDING_PROVIDERS = {
80
+ openai: {
81
+ id: "openai",
82
+ label: "OpenAI",
83
+ residency: {
84
+ region: "third-country",
85
+ legalName: "OpenAI, L.L.C.",
86
+ country: "US"
87
+ },
88
+ defaultModel: "text-embedding-3-small",
89
+ consoleKeyUrl: "https://platform.openai.com/api-keys",
90
+ dimensionsByModel: {
91
+ "text-embedding-3-small": 1536,
92
+ "text-embedding-3-large": 3072
93
+ }
94
+ },
95
+ mistral: {
96
+ id: "mistral",
97
+ label: "Mistral",
98
+ residency: {
99
+ region: "eu",
100
+ legalName: "Mistral AI SAS",
101
+ country: "FR"
102
+ },
103
+ defaultModel: "mistral-embed",
104
+ consoleKeyUrl: "https://console.mistral.ai/api-keys",
105
+ dimensionsByModel: { "mistral-embed": 1024 }
106
+ }
107
+ };
108
+ /**
109
+ * Vector dimensions for an embedding model id. Unknown ids fall back to
110
+ * `fallback` (default 1536, the common OpenAI-compatible dimension) so
111
+ * free-form model ids keep a working column.
112
+ */
113
+ function embeddingDimensionsFor(modelId, fallback = 1536) {
114
+ for (const meta of Object.values(EMBEDDING_PROVIDERS)) {
115
+ const dims = meta.dimensionsByModel[modelId];
116
+ if (dims !== void 0) return dims;
117
+ }
118
+ return fallback;
119
+ }
120
+ //#endregion
121
+ export { EMBEDDING_PROVIDERS as a, DEFAULT_EMBEDDING_PROVIDER as i, AI_PROVIDER_IDS as n, EMBEDDING_PROVIDER_IDS as o, DEFAULT_AI_PROVIDER as r, embeddingDimensionsFor as s, AI_PROVIDERS as t };
@@ -101,124 +101,4 @@ function createRefusalAwareModel(model) {
101
101
  });
102
102
  }
103
103
  //#endregion
104
- //#region src/ai/provider-registry.ts
105
- /**
106
- * The provider registry — pure metadata about the vendors a BYOK deployment
107
- * can point at: ids, default and cheap models, where a key is created, and
108
- * **where the vendor processes what you send it**. Dependency-free, so a
109
- * browser bundle (a provider/model picker, a residency badge) can import it;
110
- * the SDK factories that need `@ai-sdk/*` live in `octaflow/ai/providers`.
111
- *
112
- * Adding a provider: an id here with its metadata, a factory in
113
- * `providers/`, and pricing rows in `cost.ts`.
114
- */
115
- const AI_PROVIDER_IDS = ["anthropic", "mistral"];
116
- const EMBEDDING_PROVIDER_IDS = ["openai", "mistral"];
117
- /** What an unset provider resolves to. */
118
- const DEFAULT_AI_PROVIDER = "anthropic";
119
- const DEFAULT_EMBEDDING_PROVIDER = "openai";
120
- const AI_PROVIDERS = {
121
- anthropic: {
122
- id: "anthropic",
123
- label: "Anthropic",
124
- residency: {
125
- region: "third-country",
126
- legalName: "Anthropic PBC",
127
- country: "US"
128
- },
129
- defaultModel: "claude-sonnet-5",
130
- classifierModel: "claude-haiku-4-5",
131
- testModel: "claude-haiku-4-5",
132
- keyPrefix: "sk-ant-",
133
- consoleKeyUrl: "https://console.anthropic.com/settings/keys",
134
- modelOptions: [
135
- {
136
- label: "Claude Opus 5",
137
- value: "claude-opus-5"
138
- },
139
- {
140
- label: "Claude Opus 4.8",
141
- value: "claude-opus-4-8"
142
- },
143
- {
144
- label: "Claude Sonnet 5",
145
- value: "claude-sonnet-5"
146
- },
147
- {
148
- label: "Claude Haiku 4.5",
149
- value: "claude-haiku-4-5"
150
- }
151
- ]
152
- },
153
- mistral: {
154
- id: "mistral",
155
- label: "Mistral",
156
- residency: {
157
- region: "eu",
158
- legalName: "Mistral AI SAS",
159
- country: "FR"
160
- },
161
- defaultModel: "mistral-medium-latest",
162
- classifierModel: "mistral-small-latest",
163
- testModel: "mistral-small-latest",
164
- keyPrefix: null,
165
- consoleKeyUrl: "https://console.mistral.ai/api-keys",
166
- modelOptions: [
167
- {
168
- label: "Mistral Medium 3.5",
169
- value: "mistral-medium-latest"
170
- },
171
- {
172
- label: "Mistral Large 3",
173
- value: "mistral-large-latest"
174
- },
175
- {
176
- label: "Mistral Small 4",
177
- value: "mistral-small-latest"
178
- }
179
- ]
180
- }
181
- };
182
- const EMBEDDING_PROVIDERS = {
183
- openai: {
184
- id: "openai",
185
- label: "OpenAI",
186
- residency: {
187
- region: "third-country",
188
- legalName: "OpenAI, L.L.C.",
189
- country: "US"
190
- },
191
- defaultModel: "text-embedding-3-small",
192
- consoleKeyUrl: "https://platform.openai.com/api-keys",
193
- dimensionsByModel: {
194
- "text-embedding-3-small": 1536,
195
- "text-embedding-3-large": 3072
196
- }
197
- },
198
- mistral: {
199
- id: "mistral",
200
- label: "Mistral",
201
- residency: {
202
- region: "eu",
203
- legalName: "Mistral AI SAS",
204
- country: "FR"
205
- },
206
- defaultModel: "mistral-embed",
207
- consoleKeyUrl: "https://console.mistral.ai/api-keys",
208
- dimensionsByModel: { "mistral-embed": 1024 }
209
- }
210
- };
211
- /**
212
- * Vector dimensions for an embedding model id. Unknown ids fall back to
213
- * `fallback` (default 1536, the common OpenAI-compatible dimension) so
214
- * free-form model ids keep a working column.
215
- */
216
- function embeddingDimensionsFor(modelId, fallback = 1536) {
217
- for (const meta of Object.values(EMBEDDING_PROVIDERS)) {
218
- const dims = meta.dimensionsByModel[modelId];
219
- if (dims !== void 0) return dims;
220
- }
221
- return fallback;
222
- }
223
- //#endregion
224
- export { EMBEDDING_PROVIDERS as a, AiRefusalError as c, isAiRefusalError as d, readRefusalDetails as f, DEFAULT_EMBEDDING_PROVIDER as i, REFUSAL_FINISH_REASON as l, AI_PROVIDER_IDS as n, EMBEDDING_PROVIDER_IDS as o, DEFAULT_AI_PROVIDER as r, embeddingDimensionsFor as s, AI_PROVIDERS as t, createRefusalAwareModel as u };
104
+ export { readRefusalDetails as a, isAiRefusalError as i, REFUSAL_FINISH_REASON as n, createRefusalAwareModel as r, AiRefusalError as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "octaflow",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Durable DAG workflow engine: Zod-typed steps over Postgres + pg-boss, with an optional AI add-on (token/cost/quota). Layered single package.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,6 +29,11 @@
29
29
  "types": "./dist/ai/providers/index.d.ts",
30
30
  "import": "./dist/ai/providers/index.js",
31
31
  "default": "./dist/ai/providers/index.js"
32
+ },
33
+ "./ai/registry": {
34
+ "types": "./dist/ai/registry.d.ts",
35
+ "import": "./dist/ai/registry.js",
36
+ "default": "./dist/ai/registry.js"
32
37
  }
33
38
  },
34
39
  "engines": {