mohdel 0.115.0 → 0.116.1
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.
|
@@ -77,6 +77,7 @@ export async function * openai (envelope, deps = {}) {
|
|
|
77
77
|
let outputTokens = 0
|
|
78
78
|
let thinkingTokens = 0
|
|
79
79
|
let cachedInputTokens = 0
|
|
80
|
+
let cacheWriteTokens = 0
|
|
80
81
|
let status = STATUS_COMPLETED
|
|
81
82
|
/** @type {string | undefined} */
|
|
82
83
|
let warning
|
|
@@ -132,6 +133,7 @@ export async function * openai (envelope, deps = {}) {
|
|
|
132
133
|
outputTokens = event.response.usage.output_tokens ?? 0
|
|
133
134
|
thinkingTokens = event.response.usage.output_tokens_details?.reasoning_tokens ?? 0
|
|
134
135
|
cachedInputTokens = event.response.usage.input_tokens_details?.cached_tokens ?? 0
|
|
136
|
+
cacheWriteTokens = event.response.usage.input_tokens_details?.cache_write_tokens ?? 0
|
|
135
137
|
}
|
|
136
138
|
if (toolItems.size > 0) {
|
|
137
139
|
status = STATUS_TOOL_USE
|
|
@@ -148,6 +150,7 @@ export async function * openai (envelope, deps = {}) {
|
|
|
148
150
|
outputTokens = event.response.usage.output_tokens ?? 0
|
|
149
151
|
thinkingTokens = event.response.usage.output_tokens_details?.reasoning_tokens ?? 0
|
|
150
152
|
cachedInputTokens = event.response.usage.input_tokens_details?.cached_tokens ?? 0
|
|
153
|
+
cacheWriteTokens = event.response.usage.input_tokens_details?.cache_write_tokens ?? 0
|
|
151
154
|
}
|
|
152
155
|
break
|
|
153
156
|
|
|
@@ -177,11 +180,12 @@ export async function * openai (envelope, deps = {}) {
|
|
|
177
180
|
// one from the other for the message-only count.
|
|
178
181
|
const messageOutputTokens = Math.max(0, outputTokens - thinkingTokens)
|
|
179
182
|
|
|
180
|
-
// OpenAI counts cached_tokens as
|
|
181
|
-
// mohdel's additive convention (
|
|
182
|
-
// inputTokens) by subtracting
|
|
183
|
-
//
|
|
184
|
-
|
|
183
|
+
// OpenAI counts cached_tokens and cache_write_tokens as SUBSETS of
|
|
184
|
+
// input_tokens. Convert to mohdel's additive convention (cacheRead/
|
|
185
|
+
// cacheWriteInputTokens are separate from inputTokens) by subtracting
|
|
186
|
+
// both portions before pricing. Both adapters and computeCost stay
|
|
187
|
+
// simpler with the additive shape.
|
|
188
|
+
const regularInputTokens = Math.max(0, inputTokens - cachedInputTokens - cacheWriteTokens)
|
|
185
189
|
|
|
186
190
|
/** @type {import('#core/events.js').DoneEvent} */
|
|
187
191
|
const done = {
|
|
@@ -192,6 +196,7 @@ export async function * openai (envelope, deps = {}) {
|
|
|
192
196
|
inputTokens: regularInputTokens,
|
|
193
197
|
outputTokens: messageOutputTokens,
|
|
194
198
|
thinkingTokens,
|
|
199
|
+
...(cacheWriteTokens > 0 && { cacheWriteInputTokens: cacheWriteTokens }),
|
|
195
200
|
...(cachedInputTokens > 0 && { cacheReadInputTokens: cachedInputTokens }),
|
|
196
201
|
cost: costFor(
|
|
197
202
|
catalogKey(envelope.model),
|
|
@@ -199,6 +204,7 @@ export async function * openai (envelope, deps = {}) {
|
|
|
199
204
|
inputTokens: regularInputTokens,
|
|
200
205
|
outputTokens: messageOutputTokens,
|
|
201
206
|
thinkingTokens,
|
|
207
|
+
cacheWriteInputTokens: cacheWriteTokens,
|
|
202
208
|
cacheReadInputTokens: cachedInputTokens
|
|
203
209
|
}
|
|
204
210
|
),
|
|
@@ -273,6 +279,7 @@ function buildRequest (envelope, input, instructions) {
|
|
|
273
279
|
if (envelope.identifier) {
|
|
274
280
|
if (provider === 'openai') {
|
|
275
281
|
request.safety_identifier = envelope.identifier
|
|
282
|
+
request.prompt_cache_key = envelope.identifier
|
|
276
283
|
} else {
|
|
277
284
|
request.user = envelope.identifier
|
|
278
285
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mohdel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.116.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Christophe Le Bars",
|
|
@@ -87,16 +87,16 @@
|
|
|
87
87
|
"@opentelemetry/exporter-trace-otlp-grpc": "^0.220.0",
|
|
88
88
|
"@opentelemetry/sdk-node": "^0.220.0",
|
|
89
89
|
"chalk": "^5.4.0",
|
|
90
|
-
"mohdel-thin-gate-linux-x64-gnu": "0.
|
|
90
|
+
"mohdel-thin-gate-linux-x64-gnu": "0.116.1"
|
|
91
91
|
},
|
|
92
92
|
"dependencies": {
|
|
93
93
|
"@anthropic-ai/sdk": "^0.110.0",
|
|
94
94
|
"@cerebras/cerebras_cloud_sdk": "^1.61.1",
|
|
95
|
-
"@google/genai": "^2.
|
|
95
|
+
"@google/genai": "^2.11.0",
|
|
96
96
|
"@opentelemetry/api": "^1.9.1",
|
|
97
97
|
"env-paths": "^4.0.0",
|
|
98
98
|
"groq-sdk": "^1.3.0",
|
|
99
|
-
"openai": "^6.
|
|
99
|
+
"openai": "^6.46.0",
|
|
100
100
|
"undici": "^7.24.5"
|
|
101
101
|
},
|
|
102
102
|
"lint-staged": {
|