@plumbus/core 0.6.18 → 0.7.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/CHANGELOG.md +72 -0
- package/README.md +5 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/ai/__typecheck-fixtures__/legacy-cost-api.d.ts +5 -0
- package/dist/ai/__typecheck-fixtures__/legacy-cost-api.d.ts.map +1 -0
- package/dist/ai/__typecheck-fixtures__/legacy-cost-api.js +15 -0
- package/dist/ai/__typecheck-fixtures__/legacy-cost-api.js.map +1 -0
- package/dist/ai/ai/cost-tracker.d.ts +4 -3
- package/dist/ai/ai/model-pricing.d.ts +14 -5
- package/dist/ai/ai/usage-client.d.ts +2 -0
- package/dist/ai/ai/usage-validation.d.ts +3 -0
- package/dist/ai/ai-service.d.ts.map +1 -1
- package/dist/ai/ai-service.js +101 -33
- package/dist/ai/ai-service.js.map +1 -1
- package/dist/ai/cost-tracker.d.ts +4 -3
- package/dist/ai/cost-tracker.d.ts.map +1 -1
- package/dist/ai/cost-tracker.js +33 -14
- package/dist/ai/cost-tracker.js.map +1 -1
- package/dist/ai/errors/data-errors.d.ts +22 -0
- package/dist/ai/errors/index.d.ts +21 -0
- package/dist/ai/errors/plumbus-error.d.ts +12 -0
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/model-pricing.d.ts +14 -5
- package/dist/ai/model-pricing.d.ts.map +1 -1
- package/dist/ai/model-pricing.js +88 -45
- package/dist/ai/model-pricing.js.map +1 -1
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/provider.js +234 -9
- package/dist/ai/provider.js.map +1 -1
- package/dist/ai/rag/pipeline.d.ts +2 -0
- package/dist/ai/rag/pipeline.d.ts.map +1 -1
- package/dist/ai/rag/pipeline.js +6 -1
- package/dist/ai/rag/pipeline.js.map +1 -1
- package/dist/ai/security.d.ts.map +1 -1
- package/dist/ai/security.js +1 -0
- package/dist/ai/security.js.map +1 -1
- package/dist/ai/tool-loop.d.ts +1 -0
- package/dist/ai/tool-loop.d.ts.map +1 -1
- package/dist/ai/tool-loop.js +23 -4
- package/dist/ai/tool-loop.js.map +1 -1
- package/dist/ai/types/errors.d.ts +14 -0
- package/dist/ai/usage-client.d.ts +2 -0
- package/dist/ai/usage-client.d.ts.map +1 -1
- package/dist/ai/usage-client.js +2 -0
- package/dist/ai/usage-client.js.map +1 -1
- package/dist/ai/usage-validation.d.ts +4 -0
- package/dist/ai/usage-validation.d.ts.map +1 -0
- package/dist/ai/usage-validation.js +23 -0
- package/dist/ai/usage-validation.js.map +1 -0
- package/dist/ai/validation.d.ts +1 -5
- package/dist/ai/validation.d.ts.map +1 -1
- package/dist/api/cookies.d.ts.map +1 -1
- package/dist/api/cookies.js +7 -2
- package/dist/api/cookies.js.map +1 -1
- package/dist/audit/service.d.ts.map +1 -1
- package/dist/audit/service.js +21 -3
- package/dist/audit/service.js.map +1 -1
- package/dist/audit/writer.d.ts.map +1 -1
- package/dist/audit/writer.js +7 -2
- package/dist/audit/writer.js.map +1 -1
- package/dist/auth/adapter.d.ts +5 -1
- package/dist/auth/adapter.d.ts.map +1 -1
- package/dist/auth/adapter.js +36 -6
- package/dist/auth/adapter.js.map +1 -1
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/jwt-policy.d.ts +3 -0
- package/dist/auth/jwt-policy.d.ts.map +1 -0
- package/dist/auth/jwt-policy.js +11 -0
- package/dist/auth/jwt-policy.js.map +1 -0
- package/dist/auth/oidc-adapter.d.ts.map +1 -1
- package/dist/auth/oidc-adapter.js +30 -13
- package/dist/auth/oidc-adapter.js.map +1 -1
- package/dist/auth/saml-adapter.d.ts +7 -1
- package/dist/auth/saml-adapter.d.ts.map +1 -1
- package/dist/auth/saml-adapter.js +42 -5
- package/dist/auth/saml-adapter.js.map +1 -1
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +21 -0
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +4 -3
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +7 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +4 -3
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/translation.d.ts.map +1 -1
- package/dist/cli/commands/translation.js +8 -4
- package/dist/cli/commands/translation.js.map +1 -1
- package/dist/cli/mcp-serve-context.d.ts.map +1 -1
- package/dist/cli/mcp-serve-context.js +25 -6
- package/dist/cli/mcp-serve-context.js.map +1 -1
- package/dist/cli/scaffold-validation.d.ts +6 -0
- package/dist/cli/scaffold-validation.d.ts.map +1 -0
- package/dist/cli/scaffold-validation.js +57 -0
- package/dist/cli/scaffold-validation.js.map +1 -0
- package/dist/cli/scaffold-write.d.ts.map +1 -1
- package/dist/cli/scaffold-write.js +13 -3
- package/dist/cli/scaffold-write.js.map +1 -1
- package/dist/cli/templates/resources.d.ts.map +1 -1
- package/dist/cli/templates/resources.js +10 -0
- package/dist/cli/templates/resources.js.map +1 -1
- package/dist/cli/utils.d.ts +1 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +13 -2
- package/dist/cli/utils.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +7 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/errors/http.d.ts.map +1 -1
- package/dist/errors/http.js +8 -3
- package/dist/errors/http.js.map +1 -1
- package/dist/events/queue.d.ts.map +1 -1
- package/dist/events/queue.js +27 -4
- package/dist/events/queue.js.map +1 -1
- package/dist/execution/capability-executor.js +2 -1
- package/dist/execution/capability-executor.js.map +1 -1
- package/dist/execution/context-factory.d.ts.map +1 -1
- package/dist/execution/context-factory.js +6 -2
- package/dist/execution/context-factory.js.map +1 -1
- package/dist/flows/engine.d.ts.map +1 -1
- package/dist/flows/engine.js +28 -18
- package/dist/flows/engine.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/start-worker-pool.d.ts.map +1 -1
- package/dist/runtime/start-worker-pool.js +21 -9
- package/dist/runtime/start-worker-pool.js.map +1 -1
- package/dist/server/bootstrap.d.ts.map +1 -1
- package/dist/server/bootstrap.js +13 -9
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/testing/e2e.js +1 -1
- package/dist/testing/e2e.js.map +1 -1
- package/dist/types/audit.d.ts +2 -0
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/types/context.d.ts +11 -1
- package/dist/types/context.d.ts.map +1 -1
- package/instructions/README.md +1 -0
- package/instructions/ai.md +11 -3
- package/instructions/deployment.md +5 -2
- package/instructions/flows.md +3 -0
- package/instructions/framework.md +7 -0
- package/instructions/mcp.md +5 -2
- package/instructions/peer-dependencies.md +28 -64
- package/instructions/security.md +8 -1
- package/instructions/upgrading-0.5-capabilities.md +4 -1
- package/instructions/upgrading-security-release.md +65 -0
- package/package.json +11 -10
package/dist/ai/model-pricing.js
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
// Published per-token rates for OpenAI and Anthropic models.
|
|
3
|
-
// Rates are in USD per 1 million tokens (MTok).
|
|
4
|
-
// Source: https://developers.openai.com/api/docs/pricing
|
|
5
|
-
// https://platform.claude.com/docs/en/about-claude/pricing
|
|
6
|
-
// Last updated: 2026-08-06
|
|
7
|
-
//
|
|
8
|
-
// Unknown models (Ollama, custom endpoints) return cost $0.
|
|
9
|
-
//
|
|
10
|
-
// Only standard-tier rates are tracked (not batch, flex, or fast mode), and for
|
|
11
|
-
// models with split short/long context pricing the short-context (base) rate is
|
|
12
|
-
// the one recorded. `claude-sonnet-5` carries introductory pricing through
|
|
13
|
-
// 2026-08-31; it rises to $3/$15 per MTok on 2026-09-01.
|
|
14
|
-
//
|
|
15
|
-
// `kind` is derived from the pricing page's section structure, not from name
|
|
16
|
-
// patterns — see `.agents/skills/update-model-pricing/scripts/fetch-pricing.ts`.
|
|
1
|
+
import { validateTokenUsage } from './usage-validation.js';
|
|
17
2
|
const MODEL_PRICING = {
|
|
18
3
|
// ── OpenAI: Flagship ──
|
|
19
|
-
'gpt-
|
|
4
|
+
'gpt-6-astra': { kind: 'text', inputPerMTok: 10, outputPerMTok: 50 },
|
|
5
|
+
'gpt-5.6-sol': {
|
|
6
|
+
kind: 'text',
|
|
7
|
+
inputPerMTok: 5,
|
|
8
|
+
outputPerMTok: 30,
|
|
9
|
+
cachedInputPerMTok: 0.5,
|
|
10
|
+
longContextThreshold: 272_000,
|
|
11
|
+
},
|
|
20
12
|
'gpt-5.6-terra': { kind: 'text', inputPerMTok: 2, outputPerMTok: 12 },
|
|
21
13
|
'gpt-5.6-luna': { kind: 'text', inputPerMTok: 0.2, outputPerMTok: 1.2 },
|
|
22
14
|
'gpt-5.5': { kind: 'text', inputPerMTok: 5, outputPerMTok: 30 },
|
|
@@ -32,20 +24,30 @@ const MODEL_PRICING = {
|
|
|
32
24
|
'gpt-5-mini': { kind: 'text', inputPerMTok: 0.25, outputPerMTok: 2 },
|
|
33
25
|
'gpt-5-nano': { kind: 'text', inputPerMTok: 0.05, outputPerMTok: 0.4 },
|
|
34
26
|
'gpt-5-pro': { kind: 'text', inputPerMTok: 15, outputPerMTok: 120 },
|
|
35
|
-
'gpt-4.1': { kind: 'text', inputPerMTok: 2, outputPerMTok: 8 },
|
|
36
|
-
'gpt-4.1-mini': { kind: 'text', inputPerMTok: 0.4, outputPerMTok: 1.6 },
|
|
37
|
-
'gpt-4.1-nano': {
|
|
38
|
-
|
|
27
|
+
'gpt-4.1': { kind: 'text', inputPerMTok: 2, outputPerMTok: 8, cachedInputPerMTok: 0.5 },
|
|
28
|
+
'gpt-4.1-mini': { kind: 'text', inputPerMTok: 0.4, outputPerMTok: 1.6, cachedInputPerMTok: 0.1 },
|
|
29
|
+
'gpt-4.1-nano': {
|
|
30
|
+
kind: 'text',
|
|
31
|
+
inputPerMTok: 0.1,
|
|
32
|
+
outputPerMTok: 0.4,
|
|
33
|
+
cachedInputPerMTok: 0.025,
|
|
34
|
+
},
|
|
35
|
+
'gpt-4o': { kind: 'text', inputPerMTok: 2.5, outputPerMTok: 10, cachedInputPerMTok: 1.25 },
|
|
39
36
|
'gpt-4o-2024-05-13': { kind: 'text', inputPerMTok: 5, outputPerMTok: 15 },
|
|
40
|
-
'gpt-4o-mini': {
|
|
37
|
+
'gpt-4o-mini': {
|
|
38
|
+
kind: 'text',
|
|
39
|
+
inputPerMTok: 0.15,
|
|
40
|
+
outputPerMTok: 0.6,
|
|
41
|
+
cachedInputPerMTok: 0.075,
|
|
42
|
+
},
|
|
41
43
|
// ── OpenAI: Reasoning ──
|
|
42
|
-
o1: { kind: 'text', inputPerMTok: 15, outputPerMTok: 60 },
|
|
44
|
+
o1: { kind: 'text', inputPerMTok: 15, outputPerMTok: 60, cachedInputPerMTok: 7.5 },
|
|
43
45
|
'o1-pro': { kind: 'text', inputPerMTok: 150, outputPerMTok: 600 },
|
|
44
46
|
'o1-mini': { kind: 'text', inputPerMTok: 1.1, outputPerMTok: 4.4 },
|
|
45
|
-
o3: { kind: 'text', inputPerMTok: 2, outputPerMTok: 8 },
|
|
47
|
+
o3: { kind: 'text', inputPerMTok: 2, outputPerMTok: 8, cachedInputPerMTok: 0.5 },
|
|
46
48
|
'o3-pro': { kind: 'text', inputPerMTok: 20, outputPerMTok: 80 },
|
|
47
|
-
'o3-mini': { kind: 'text', inputPerMTok: 1.1, outputPerMTok: 4.4 },
|
|
48
|
-
'o4-mini': { kind: 'text', inputPerMTok: 1.1, outputPerMTok: 4.4 },
|
|
49
|
+
'o3-mini': { kind: 'text', inputPerMTok: 1.1, outputPerMTok: 4.4, cachedInputPerMTok: 0.55 },
|
|
50
|
+
'o4-mini': { kind: 'text', inputPerMTok: 1.1, outputPerMTok: 4.4, cachedInputPerMTok: 0.275 },
|
|
49
51
|
// ── OpenAI: Specialized / Deep research / Computer use ──
|
|
50
52
|
'o3-deep-research': { kind: 'text', inputPerMTok: 10, outputPerMTok: 40 },
|
|
51
53
|
'o4-mini-deep-research': { kind: 'text', inputPerMTok: 2, outputPerMTok: 8 },
|
|
@@ -55,6 +57,7 @@ const MODEL_PRICING = {
|
|
|
55
57
|
'gpt-5.3-chat-latest': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
|
|
56
58
|
'gpt-5.2-chat-latest': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
|
|
57
59
|
'gpt-5.3-codex': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
|
|
60
|
+
'gpt-5.6-cyber': { kind: 'text', inputPerMTok: 12.5, outputPerMTok: 75 },
|
|
58
61
|
'gpt-5.5-cyber': { kind: 'text', inputPerMTok: 12.5, outputPerMTok: 75 },
|
|
59
62
|
'gpt-5-search-api': { kind: 'text', inputPerMTok: 1.25, outputPerMTok: 10 },
|
|
60
63
|
// ── OpenAI: Embeddings ──
|
|
@@ -84,7 +87,19 @@ const MODEL_PRICING = {
|
|
|
84
87
|
'davinci-002': { kind: 'text', inputPerMTok: 2, outputPerMTok: 2 },
|
|
85
88
|
'babbage-002': { kind: 'text', inputPerMTok: 0.4, outputPerMTok: 0.4 },
|
|
86
89
|
// ── Anthropic: Claude (all text — no embedding API) ──
|
|
90
|
+
'claude-fable-5-1': {
|
|
91
|
+
kind: 'text',
|
|
92
|
+
inputPerMTok: 10,
|
|
93
|
+
outputPerMTok: 50,
|
|
94
|
+
cachedInputPerMTok: 0.25,
|
|
95
|
+
},
|
|
87
96
|
'claude-fable-5': { kind: 'text', inputPerMTok: 10, outputPerMTok: 50 },
|
|
97
|
+
'claude-mythos-5-1': {
|
|
98
|
+
kind: 'text',
|
|
99
|
+
inputPerMTok: 10,
|
|
100
|
+
outputPerMTok: 50,
|
|
101
|
+
cachedInputPerMTok: 0.25,
|
|
102
|
+
},
|
|
88
103
|
'claude-mythos-5': { kind: 'text', inputPerMTok: 10, outputPerMTok: 50 },
|
|
89
104
|
'claude-opus-5': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
|
|
90
105
|
'claude-opus-4-8': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
|
|
@@ -104,6 +119,16 @@ const MODEL_PRICING = {
|
|
|
104
119
|
'claude-3-opus': { kind: 'text', inputPerMTok: 15, outputPerMTok: 75 },
|
|
105
120
|
'claude-3-haiku': { kind: 'text', inputPerMTok: 0.25, outputPerMTok: 1.25 },
|
|
106
121
|
};
|
|
122
|
+
// OpenAI guarantees the special price at least through November 21, 2026.
|
|
123
|
+
// November 22 UTC is our static fallback policy, not a confirmed vendor expiry.
|
|
124
|
+
// Source: https://developers.openai.com/api/docs/models/gpt-5.6-sol
|
|
125
|
+
const SOL_SPECIAL_PRICE_END = Date.parse('2026-11-22T00:00:00.000Z');
|
|
126
|
+
function effectiveRate(id, rate, now) {
|
|
127
|
+
if (id === 'gpt-5.6-sol' && now < SOL_SPECIAL_PRICE_END) {
|
|
128
|
+
return { ...rate, inputPerMTok: 4, cachedInputPerMTok: 0.4, outputPerMTok: 20 };
|
|
129
|
+
}
|
|
130
|
+
return rate;
|
|
131
|
+
}
|
|
107
132
|
/**
|
|
108
133
|
* Finds the per-token rate for a model.
|
|
109
134
|
* Tries exact match first, then strips trailing date suffixes
|
|
@@ -111,15 +136,19 @@ const MODEL_PRICING = {
|
|
|
111
136
|
* Returns null for unknown/unsupported models (Ollama, custom).
|
|
112
137
|
*/
|
|
113
138
|
export function findModelRate(model) {
|
|
114
|
-
const
|
|
115
|
-
if (
|
|
116
|
-
|
|
139
|
+
const canonical = model === 'gpt-5.6' ? 'gpt-5.6-sol' : model;
|
|
140
|
+
if (Object.hasOwn(MODEL_PRICING, canonical)) {
|
|
141
|
+
const rate = MODEL_PRICING[canonical];
|
|
142
|
+
return rate ? effectiveRate(canonical, rate, Date.now()) : null;
|
|
143
|
+
}
|
|
117
144
|
// Strip trailing date suffix (e.g. "-20250514")
|
|
118
145
|
const withoutDate = model.replace(/-\d{8}$/, '');
|
|
119
146
|
if (withoutDate !== model) {
|
|
120
|
-
const
|
|
121
|
-
if (
|
|
122
|
-
|
|
147
|
+
const canonicalWithoutDate = withoutDate === 'gpt-5.6' ? 'gpt-5.6-sol' : withoutDate;
|
|
148
|
+
if (Object.hasOwn(MODEL_PRICING, canonicalWithoutDate)) {
|
|
149
|
+
const rate = MODEL_PRICING[canonicalWithoutDate];
|
|
150
|
+
return rate ? effectiveRate(canonicalWithoutDate, rate, Date.now()) : null;
|
|
151
|
+
}
|
|
123
152
|
}
|
|
124
153
|
return null;
|
|
125
154
|
}
|
|
@@ -129,7 +158,8 @@ export function findModelRate(model) {
|
|
|
129
158
|
* catalog. Order is not guaranteed.
|
|
130
159
|
*/
|
|
131
160
|
export function allKnownModels() {
|
|
132
|
-
|
|
161
|
+
const now = Date.now();
|
|
162
|
+
return Object.entries(MODEL_PRICING).map(([id, rate]) => [id, effectiveRate(id, rate, now)]);
|
|
133
163
|
}
|
|
134
164
|
/** Models subject to Anthropic's long context premium (>200K input tokens). */
|
|
135
165
|
const LONG_CONTEXT_PREMIUM_MODELS = new Set(['claude-sonnet-4', 'claude-sonnet-4-5']);
|
|
@@ -140,41 +170,54 @@ function hasLongContextPremium(model) {
|
|
|
140
170
|
const withoutDate = model.replace(/-\d{8}$/, '');
|
|
141
171
|
return withoutDate !== model && LONG_CONTEXT_PREMIUM_MODELS.has(withoutDate);
|
|
142
172
|
}
|
|
173
|
+
/** Legacy numeric cost helper. Use estimateModelCost when unknown must differ from free. */
|
|
174
|
+
export function calculateModelCost(inputTokens, outputTokens, model, options) {
|
|
175
|
+
return estimateModelCost(inputTokens, outputTokens, model, options) ?? 0;
|
|
176
|
+
}
|
|
143
177
|
/**
|
|
144
178
|
* Calculate the USD cost for a single AI request based on published per-token rates.
|
|
145
179
|
*
|
|
146
180
|
* Pricing adjustments applied:
|
|
147
|
-
* - **Cached input tokens**:
|
|
181
|
+
* - **Cached input tokens**: published per-model rate, defaulting to 0.1× input.
|
|
148
182
|
* - **Cache write tokens**: charged at 1.25× the base input rate (Anthropic 5-min cache).
|
|
149
183
|
* - **Long context premium**: for Claude Sonnet 4 / 4.5, when total input exceeds
|
|
150
|
-
* 200K tokens
|
|
184
|
+
* 200K tokens, or GPT-5.6 Sol over 272K, charge 2× input/cache and 1.5× output.
|
|
151
185
|
*
|
|
152
|
-
* Returns
|
|
186
|
+
* Returns undefined for unknown/unsupported models; explicitly free adapters may report zero.
|
|
153
187
|
*/
|
|
154
|
-
export function
|
|
188
|
+
export function estimateModelCost(inputTokens, outputTokens, model, options) {
|
|
189
|
+
validateTokenUsage({
|
|
190
|
+
inputTokens,
|
|
191
|
+
outputTokens,
|
|
192
|
+
totalTokens: inputTokens + outputTokens,
|
|
193
|
+
...options,
|
|
194
|
+
});
|
|
155
195
|
const rate = findModelRate(model);
|
|
156
196
|
if (!rate)
|
|
157
|
-
return
|
|
197
|
+
return undefined;
|
|
158
198
|
const cached = options?.cachedInputTokens ?? 0;
|
|
159
199
|
const cacheWrites = options?.cacheWriteTokens ?? 0;
|
|
160
200
|
let inputRate = rate.inputPerMTok;
|
|
161
201
|
let outputRate = rate.outputPerMTok;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
202
|
+
let cachedInputRate = rate.cachedInputPerMTok ?? rate.inputPerMTok * 0.1;
|
|
203
|
+
// Model-specific long context premium; input includes cache reads and writes.
|
|
204
|
+
const totalInput = inputTokens; // Normalized input already includes cache reads and writes.
|
|
205
|
+
const longContextThreshold = rate.longContextThreshold ?? (hasLongContextPremium(model) ? 200_000 : undefined);
|
|
206
|
+
if (longContextThreshold != null && totalInput > longContextThreshold) {
|
|
165
207
|
inputRate *= 2;
|
|
208
|
+
cachedInputRate *= 2;
|
|
166
209
|
outputRate *= 1.5;
|
|
167
210
|
}
|
|
168
211
|
// Standard (non-cached) input tokens
|
|
169
212
|
const standardInput = inputTokens - cached - cacheWrites;
|
|
170
213
|
const standardInputCost = Math.max(0, standardInput) * inputRate;
|
|
171
|
-
//
|
|
172
|
-
const cachedCost = cached *
|
|
173
|
-
// Cache writes: 1.25× base input rate (
|
|
214
|
+
// Use the published cache-read rate where it differs from the default.
|
|
215
|
+
const cachedCost = cached * cachedInputRate;
|
|
216
|
+
// Cache writes: 1.25× base input rate (five-minute cache pricing).
|
|
174
217
|
const cacheWriteCost = cacheWrites * inputRate * 1.25;
|
|
175
218
|
// Output tokens at standard (or long-context-premium) rate
|
|
176
219
|
const outputCost = outputTokens * outputRate;
|
|
177
220
|
const cost = (standardInputCost + cachedCost + cacheWriteCost + outputCost) / 1_000_000;
|
|
178
|
-
return Number(cost.
|
|
221
|
+
return Number(cost.toPrecision(15));
|
|
179
222
|
}
|
|
180
223
|
//# sourceMappingURL=model-pricing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-pricing.js","sourceRoot":"","sources":["../../src/ai/model-pricing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-pricing.js","sourceRoot":"","sources":["../../src/ai/model-pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/provider.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ── AI Provider Adapter Interface ──
|
|
2
2
|
// Abstract interface for AI provider adapters (OpenAI, Anthropic, etc.)
|
|
3
3
|
import { createRequire } from 'node:module';
|
|
4
|
-
import { allKnownModels, calculateModelCost } from './model-pricing.js';
|
|
4
|
+
import { allKnownModels, estimateModelCost as calculateModelCost, } from './model-pricing.js';
|
|
5
5
|
import { AIIncompleteOutputError, AIInvalidRequestError, AIRefusalError } from './refusal.js';
|
|
6
6
|
/** Compose a request's optional user signal with a timeout, returning a single AbortSignal. */
|
|
7
7
|
export function combineRequestSignals(userSignal, timeoutMs) {
|
|
@@ -272,9 +272,14 @@ function applyAnthropicReasoning(body, request) {
|
|
|
272
272
|
}
|
|
273
273
|
function anthropicUsageToTokenUsage(usage) {
|
|
274
274
|
return {
|
|
275
|
-
inputTokens: usage.input_tokens
|
|
275
|
+
inputTokens: usage.input_tokens +
|
|
276
|
+
(usage.cache_read_input_tokens ?? 0) +
|
|
277
|
+
(usage.cache_creation_input_tokens ?? 0),
|
|
276
278
|
outputTokens: usage.output_tokens,
|
|
277
|
-
totalTokens: usage.input_tokens +
|
|
279
|
+
totalTokens: usage.input_tokens +
|
|
280
|
+
(usage.cache_read_input_tokens ?? 0) +
|
|
281
|
+
(usage.cache_creation_input_tokens ?? 0) +
|
|
282
|
+
usage.output_tokens,
|
|
278
283
|
cachedInputTokens: usage.cache_read_input_tokens ?? 0,
|
|
279
284
|
cacheWriteTokens: usage.cache_creation_input_tokens ?? 0,
|
|
280
285
|
};
|
|
@@ -438,6 +443,209 @@ function parseOpenAIToolCalls(toolCalls) {
|
|
|
438
443
|
}
|
|
439
444
|
return result;
|
|
440
445
|
}
|
|
446
|
+
const OPENAI_RESPONSES_PROVIDER_STATE = 'openai-responses';
|
|
447
|
+
function hasOpenAIResponsesContinuation(request) {
|
|
448
|
+
return (request.messages?.some((message) => message.role === 'assistant' &&
|
|
449
|
+
message.providerState?.provider === OPENAI_RESPONSES_PROVIDER_STATE) === true);
|
|
450
|
+
}
|
|
451
|
+
function isGpt56Family(model) {
|
|
452
|
+
return /^gpt-5\.6(?:$|[-.])/.test(model.trim().toLowerCase());
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Chat Completions cannot combine function tools with active reasoning on
|
|
456
|
+
* GPT-5.6. Keep every compatible request on the existing transport, but use
|
|
457
|
+
* Responses for explicit reasoning effort, GPT-5.6's default reasoning, and
|
|
458
|
+
* continuation rounds that already carry Responses output state.
|
|
459
|
+
*/
|
|
460
|
+
function shouldUseOpenAIResponses(request, model) {
|
|
461
|
+
if (hasOpenAIResponsesContinuation(request))
|
|
462
|
+
return true;
|
|
463
|
+
if (!request.tools || request.tools.length === 0)
|
|
464
|
+
return false;
|
|
465
|
+
const reasoning = normalizeProviderRequestReasoning(request);
|
|
466
|
+
if (reasoning?.mode === 'disabled')
|
|
467
|
+
return false;
|
|
468
|
+
if (reasoning?.mode === 'effort' || request.reasoningEffort !== undefined)
|
|
469
|
+
return true;
|
|
470
|
+
return reasoning === undefined && isGpt56Family(model);
|
|
471
|
+
}
|
|
472
|
+
function toOpenAIResponsesInput(request) {
|
|
473
|
+
if (!request.messages || request.messages.length === 0) {
|
|
474
|
+
return [{ role: 'user', content: request.prompt }];
|
|
475
|
+
}
|
|
476
|
+
const input = [];
|
|
477
|
+
for (const message of request.messages) {
|
|
478
|
+
if (message.role === 'user') {
|
|
479
|
+
input.push({ role: 'user', content: message.content });
|
|
480
|
+
continue;
|
|
481
|
+
}
|
|
482
|
+
if (message.role === 'tool') {
|
|
483
|
+
input.push({
|
|
484
|
+
type: 'function_call_output',
|
|
485
|
+
call_id: message.toolCallId,
|
|
486
|
+
output: message.content,
|
|
487
|
+
});
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
if (message.providerState?.provider === OPENAI_RESPONSES_PROVIDER_STATE &&
|
|
491
|
+
Array.isArray(message.providerState.content)) {
|
|
492
|
+
input.push(...message.providerState.content);
|
|
493
|
+
continue;
|
|
494
|
+
}
|
|
495
|
+
if (message.content.length > 0) {
|
|
496
|
+
input.push({ role: 'assistant', content: message.content });
|
|
497
|
+
}
|
|
498
|
+
for (const toolCall of message.toolCalls ?? []) {
|
|
499
|
+
input.push({
|
|
500
|
+
type: 'function_call',
|
|
501
|
+
call_id: toolCall.id,
|
|
502
|
+
name: toolCall.name,
|
|
503
|
+
arguments: toolCall.argumentsStatus === 'parsed'
|
|
504
|
+
? JSON.stringify(toolCall.arguments ?? {})
|
|
505
|
+
: toolCall.rawArguments,
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return input;
|
|
510
|
+
}
|
|
511
|
+
function buildOpenAIResponsesToolChoice(toolChoice) {
|
|
512
|
+
if (toolChoice === undefined)
|
|
513
|
+
return undefined;
|
|
514
|
+
if (toolChoice === 'auto' || toolChoice === 'none')
|
|
515
|
+
return toolChoice;
|
|
516
|
+
return { type: 'function', name: toolChoice.function.name };
|
|
517
|
+
}
|
|
518
|
+
function applyOpenAIResponsesReasoning(body, request) {
|
|
519
|
+
const reasoning = normalizeProviderRequestReasoning(request);
|
|
520
|
+
if (!reasoning) {
|
|
521
|
+
if (request.reasoningEffort)
|
|
522
|
+
body.reasoning = { effort: request.reasoningEffort };
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
if (reasoning.mode === 'budget')
|
|
526
|
+
unsupportedReasoning('openai', reasoning);
|
|
527
|
+
body.reasoning = { effort: reasoning.mode === 'disabled' ? 'none' : reasoning.effort };
|
|
528
|
+
}
|
|
529
|
+
function openAIResponsesUsageToTokenUsage(usage) {
|
|
530
|
+
const inputTokens = usage?.input_tokens ?? 0;
|
|
531
|
+
const outputTokens = usage?.output_tokens ?? 0;
|
|
532
|
+
return {
|
|
533
|
+
inputTokens,
|
|
534
|
+
outputTokens,
|
|
535
|
+
totalTokens: usage?.total_tokens ?? inputTokens + outputTokens,
|
|
536
|
+
cachedInputTokens: usage?.input_tokens_details?.cached_tokens ?? 0,
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
function extractOpenAIResponsesContent(output) {
|
|
540
|
+
const text = [];
|
|
541
|
+
let refusalText;
|
|
542
|
+
for (const item of output) {
|
|
543
|
+
if (item.type !== 'message')
|
|
544
|
+
continue;
|
|
545
|
+
for (const block of item.content ?? []) {
|
|
546
|
+
if (block.type === 'output_text' && typeof block.text === 'string') {
|
|
547
|
+
text.push(block.text);
|
|
548
|
+
}
|
|
549
|
+
else if (block.type === 'refusal' && typeof block.refusal === 'string') {
|
|
550
|
+
refusalText = block.refusal;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
return { content: text.join(''), ...(refusalText ? { refusalText } : {}) };
|
|
555
|
+
}
|
|
556
|
+
function parseOpenAIResponsesToolCalls(output) {
|
|
557
|
+
return parseOpenAIToolCalls(output
|
|
558
|
+
.filter((item) => item.type === 'function_call')
|
|
559
|
+
.map((item) => ({
|
|
560
|
+
id: item.call_id ?? item.id,
|
|
561
|
+
type: 'function',
|
|
562
|
+
function: { name: item.name, arguments: item.arguments },
|
|
563
|
+
})));
|
|
564
|
+
}
|
|
565
|
+
async function completeOpenAIResponses(args) {
|
|
566
|
+
const { request, model } = args;
|
|
567
|
+
if (request.tools && request.tools.length > 0) {
|
|
568
|
+
assertNoStructuredOutputToolConflict(request);
|
|
569
|
+
validateCallerTools(request.tools);
|
|
570
|
+
}
|
|
571
|
+
const body = {
|
|
572
|
+
model,
|
|
573
|
+
input: toOpenAIResponsesInput(request),
|
|
574
|
+
store: false,
|
|
575
|
+
include: ['reasoning.encrypted_content'],
|
|
576
|
+
};
|
|
577
|
+
if (request.system)
|
|
578
|
+
body.instructions = request.system;
|
|
579
|
+
applyOpenAITemperature(body, model, request.temperature);
|
|
580
|
+
applyOpenAIResponsesReasoning(body, request);
|
|
581
|
+
if (request.maxTokens)
|
|
582
|
+
body.max_output_tokens = request.maxTokens;
|
|
583
|
+
if (request.tools && request.tools.length > 0) {
|
|
584
|
+
body.tools = request.tools.map((tool) => ({
|
|
585
|
+
type: 'function',
|
|
586
|
+
name: tool.name,
|
|
587
|
+
description: tool.description,
|
|
588
|
+
parameters: tool.parameters,
|
|
589
|
+
}));
|
|
590
|
+
const toolChoice = buildOpenAIResponsesToolChoice(request.toolChoice);
|
|
591
|
+
if (toolChoice !== undefined)
|
|
592
|
+
body.tool_choice = toolChoice;
|
|
593
|
+
if (request.toolExecution?.parallelToolCalls === false)
|
|
594
|
+
body.parallel_tool_calls = false;
|
|
595
|
+
}
|
|
596
|
+
const response = await executeRequestWithRetry({
|
|
597
|
+
providerName: 'openai',
|
|
598
|
+
errorLabel: 'OpenAI Responses API',
|
|
599
|
+
send: () => fetch(`${args.baseUrl}/responses`, {
|
|
600
|
+
method: 'POST',
|
|
601
|
+
headers: {
|
|
602
|
+
'Content-Type': 'application/json',
|
|
603
|
+
Authorization: `Bearer ${args.apiKey}`,
|
|
604
|
+
},
|
|
605
|
+
body: JSON.stringify(body),
|
|
606
|
+
signal: combineRequestSignals(request.signal, request.timeout ?? args.defaultTimeout),
|
|
607
|
+
}),
|
|
608
|
+
});
|
|
609
|
+
const data = (await response.json());
|
|
610
|
+
const usage = openAIResponsesUsageToTokenUsage(data.usage);
|
|
611
|
+
const output = data.output ?? [];
|
|
612
|
+
const extracted = extractOpenAIResponsesContent(output);
|
|
613
|
+
const content = extracted.content || data.output_text || '';
|
|
614
|
+
const responseModel = data.model ?? model;
|
|
615
|
+
if (data.status === 'failed' || data.error) {
|
|
616
|
+
throw new ProviderAPIError({
|
|
617
|
+
providerName: 'openai',
|
|
618
|
+
retryable: false,
|
|
619
|
+
attempts: 1,
|
|
620
|
+
message: `OpenAI Responses API failed: ${data.error?.message ?? data.error?.code ?? 'unknown error'}`,
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
if (extracted.refusalText) {
|
|
624
|
+
throw new AIRefusalError({
|
|
625
|
+
provider: 'openai',
|
|
626
|
+
model: responseModel,
|
|
627
|
+
refusalText: extracted.refusalText,
|
|
628
|
+
usage,
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
const toolCalls = parseOpenAIResponsesToolCalls(output);
|
|
632
|
+
if (toolCalls.length > 0) {
|
|
633
|
+
return {
|
|
634
|
+
content,
|
|
635
|
+
model: responseModel,
|
|
636
|
+
usage,
|
|
637
|
+
finishReason: 'tool_calls',
|
|
638
|
+
toolCalls,
|
|
639
|
+
providerState: { provider: OPENAI_RESPONSES_PROVIDER_STATE, content: output },
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
const finishReason = data.status === 'incomplete' && data.incomplete_details?.reason === 'max_output_tokens'
|
|
643
|
+
? 'length'
|
|
644
|
+
: data.status === 'completed'
|
|
645
|
+
? 'stop'
|
|
646
|
+
: 'other';
|
|
647
|
+
return { content, model: responseModel, usage, finishReason };
|
|
648
|
+
}
|
|
441
649
|
/** Map framework ChatMessage[] to Anthropic messages (tool_use / tool_result blocks). */
|
|
442
650
|
function toAnthropicMessages(request) {
|
|
443
651
|
if (!request.messages || request.messages.length === 0) {
|
|
@@ -528,6 +736,15 @@ export function createOpenAIAdapter(config) {
|
|
|
528
736
|
},
|
|
529
737
|
async complete(request) {
|
|
530
738
|
const model = request.model ?? defaultModel;
|
|
739
|
+
if (shouldUseOpenAIResponses(request, model)) {
|
|
740
|
+
return completeOpenAIResponses({
|
|
741
|
+
request,
|
|
742
|
+
model,
|
|
743
|
+
baseUrl,
|
|
744
|
+
apiKey: config.apiKey,
|
|
745
|
+
defaultTimeout,
|
|
746
|
+
});
|
|
747
|
+
}
|
|
531
748
|
const messages = toOpenAIMessages(request);
|
|
532
749
|
const body = {
|
|
533
750
|
model,
|
|
@@ -909,7 +1126,19 @@ export function createAnthropicAdapter(config) {
|
|
|
909
1126
|
};
|
|
910
1127
|
return;
|
|
911
1128
|
}
|
|
912
|
-
|
|
1129
|
+
let initialUsage;
|
|
1130
|
+
for await (const event of parseSSEStream(resp, parseAnthropicSSEChunk)) {
|
|
1131
|
+
if (event.type === 'usage' && event.usage)
|
|
1132
|
+
initialUsage = event.usage;
|
|
1133
|
+
if (event.type === 'done' && event.usage && initialUsage) {
|
|
1134
|
+
event.usage = {
|
|
1135
|
+
...initialUsage,
|
|
1136
|
+
outputTokens: event.usage.outputTokens,
|
|
1137
|
+
totalTokens: initialUsage.inputTokens + event.usage.outputTokens,
|
|
1138
|
+
};
|
|
1139
|
+
}
|
|
1140
|
+
yield event;
|
|
1141
|
+
}
|
|
913
1142
|
},
|
|
914
1143
|
async embed() {
|
|
915
1144
|
// Anthropic doesn't have a public embedding API
|
|
@@ -1087,11 +1316,7 @@ function parseAnthropicSSEChunk(eventType, data) {
|
|
|
1087
1316
|
if (message?.usage) {
|
|
1088
1317
|
return {
|
|
1089
1318
|
type: 'usage',
|
|
1090
|
-
usage:
|
|
1091
|
-
inputTokens: message.usage.input_tokens,
|
|
1092
|
-
outputTokens: message.usage.output_tokens,
|
|
1093
|
-
totalTokens: message.usage.input_tokens + message.usage.output_tokens,
|
|
1094
|
-
},
|
|
1319
|
+
usage: anthropicUsageToTokenUsage(message.usage),
|
|
1095
1320
|
};
|
|
1096
1321
|
}
|
|
1097
1322
|
return null;
|