@pellux/goodvibes-sdk 0.18.46 → 0.18.47
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/_internal/platform/core/orchestrator-turn-helpers.js +1 -1
- package/dist/_internal/platform/core/orchestrator-turn-loop.js +1 -1
- package/dist/_internal/platform/providers/anthropic-compat.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic-compat.js +9 -6
- package/dist/_internal/platform/providers/anthropic-sdk-provider.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic-sdk-provider.js +9 -6
- package/dist/_internal/platform/providers/anthropic.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic.js +9 -6
- package/dist/_internal/platform/providers/gemini.d.ts.map +1 -1
- package/dist/_internal/platform/providers/gemini.js +5 -5
- package/dist/_internal/platform/providers/interface.d.ts +12 -1
- package/dist/_internal/platform/providers/interface.d.ts.map +1 -1
- package/dist/_internal/platform/providers/llama-cpp.d.ts.map +1 -1
- package/dist/_internal/platform/providers/llama-cpp.js +4 -3
- package/dist/_internal/platform/providers/lm-studio-helpers.d.ts +2 -3
- package/dist/_internal/platform/providers/lm-studio-helpers.d.ts.map +1 -1
- package/dist/_internal/platform/providers/lm-studio-helpers.js +0 -9
- package/dist/_internal/platform/providers/lm-studio.d.ts.map +1 -1
- package/dist/_internal/platform/providers/lm-studio.js +7 -3
- package/dist/_internal/platform/providers/ollama.d.ts.map +1 -1
- package/dist/_internal/platform/providers/ollama.js +3 -3
- package/dist/_internal/platform/providers/openai-codex.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai-codex.js +3 -10
- package/dist/_internal/platform/providers/openai-compat.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai-compat.js +11 -7
- package/dist/_internal/platform/providers/openai.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai.js +11 -7
- package/dist/_internal/platform/providers/stop-reason-maps.d.ts +30 -0
- package/dist/_internal/platform/providers/stop-reason-maps.d.ts.map +1 -0
- package/dist/_internal/platform/providers/stop-reason-maps.js +89 -0
- package/dist/_internal/platform/runtime/forensics/classifier.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/forensics/classifier.js +1 -4
- package/dist/_internal/platform/version.js +1 -1
- package/dist/_internal/transport-http/auth.d.ts +17 -0
- package/dist/_internal/transport-http/auth.d.ts.map +1 -1
- package/dist/_internal/transport-http/auth.js +22 -0
- package/dist/_internal/transport-http/http-core.d.ts.map +1 -1
- package/dist/_internal/transport-http/http-core.js +5 -3
- package/dist/_internal/transport-http/index.d.ts +2 -2
- package/dist/_internal/transport-http/index.d.ts.map +1 -1
- package/dist/_internal/transport-http/index.js +1 -1
- package/dist/_internal/transport-realtime/runtime-events.d.ts.map +1 -1
- package/dist/_internal/transport-realtime/runtime-events.js +4 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -2
- package/package.json +1 -1
|
@@ -206,7 +206,7 @@ export function handleFinalResponseOutcome(args) {
|
|
|
206
206
|
export function emitMalformedToolUseWarning(args) {
|
|
207
207
|
logger.warn('Orchestrator: provider reported stopReason=tool_use but returned no tool calls (malformed response)', {
|
|
208
208
|
model: args.providerRegistry.getCurrentModel().id,
|
|
209
|
-
stopReason: '
|
|
209
|
+
stopReason: 'tool_call',
|
|
210
210
|
});
|
|
211
211
|
if (args.isReconciliationEnabled) {
|
|
212
212
|
args.conversation.addSystemMessage('[Tool Reconciliation] Provider returned stop_reason=tool_use but no tool calls were included in the response. ' +
|
|
@@ -231,7 +231,7 @@ export async function executeOrchestratorTurnLoop(context) {
|
|
|
231
231
|
}
|
|
232
232
|
const reasoningForMsg = reasoningAccumulated || undefined;
|
|
233
233
|
const reasoningSummaryForMsg = response.reasoningSummary || undefined;
|
|
234
|
-
if (response.stopReason === '
|
|
234
|
+
if (response.stopReason === 'tool_call' && response.toolCalls.length === 0) {
|
|
235
235
|
emitMalformedToolUseWarning({
|
|
236
236
|
conversation: context.conversation,
|
|
237
237
|
providerRegistry: context.providerRegistry,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-compat.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/anthropic-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"anthropic-compat.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/anthropic-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EAEZ,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AA8CxB,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gFAAgF;IAChF,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gFAAgF;IAChF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,iGAAiG;IACjG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACxC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,YAAW,WAAW;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;gBAE9B,IAAI,EAAE,sBAAsB;IAkBlC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4MhD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA6C3F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { REASONING_BUDGET_MAP } from './interface.js';
|
|
2
2
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
3
|
+
import { mapAnthropicStopReason } from './stop-reason-maps.js';
|
|
3
4
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
4
5
|
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
5
6
|
import { toAnthropicTools, toAnthropicMessages, fromAnthropicContent, } from './tool-formats.js';
|
|
@@ -120,7 +121,8 @@ export class AnthropicCompatProvider {
|
|
|
120
121
|
let outputTokens = 0;
|
|
121
122
|
let cacheReadTokens = 0;
|
|
122
123
|
let cacheWriteTokens = 0;
|
|
123
|
-
let
|
|
124
|
+
let rawStopReason;
|
|
125
|
+
let stopReason = 'unknown';
|
|
124
126
|
// Accumulate tool use blocks by index
|
|
125
127
|
const toolBlocks = new Map();
|
|
126
128
|
const reader = res.body?.getReader();
|
|
@@ -188,10 +190,10 @@ export class AnthropicCompatProvider {
|
|
|
188
190
|
}
|
|
189
191
|
}
|
|
190
192
|
else if (event.type === 'message_delta') {
|
|
191
|
-
if (event.delta?.stop_reason
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
if (event.delta?.stop_reason) {
|
|
194
|
+
rawStopReason = event.delta.stop_reason;
|
|
195
|
+
stopReason = mapAnthropicStopReason(rawStopReason);
|
|
196
|
+
}
|
|
195
197
|
if (event.usage?.output_tokens)
|
|
196
198
|
outputTokens = event.usage.output_tokens;
|
|
197
199
|
if (event.usage?.cache_read_input_tokens != null)
|
|
@@ -239,7 +241,8 @@ export class AnthropicCompatProvider {
|
|
|
239
241
|
content: text,
|
|
240
242
|
toolCalls,
|
|
241
243
|
usage: { inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens },
|
|
242
|
-
stopReason,
|
|
244
|
+
stopReason: stopReason === 'unknown' && text ? 'completed' : stopReason,
|
|
245
|
+
...(rawStopReason !== undefined ? { providerStopReason: rawStopReason } : {}),
|
|
243
246
|
};
|
|
244
247
|
});
|
|
245
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-sdk-provider.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/anthropic-sdk-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"anthropic-sdk-provider.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/anthropic-sdk-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EACX,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAgBxB,KAAK,4BAA4B,GAAG;IAClC,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAoBF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,4BAA4B,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,qBAAa,oBAAqB,YAAW,WAAW;IAI1C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEG,OAAO,EAAE,2BAA2B;IAK3D,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAsHhD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC3F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { REASONING_BUDGET_MAP } from './interface.js';
|
|
2
|
+
import { mapAnthropicStopReason } from './stop-reason-maps.js';
|
|
2
3
|
import { fromAnthropicContent, toAnthropicMessages, toAnthropicTools, } from './tool-formats.js';
|
|
3
4
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
4
5
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
@@ -48,7 +49,8 @@ export class AnthropicSdkProvider {
|
|
|
48
49
|
}
|
|
49
50
|
const toolBlocks = new Map();
|
|
50
51
|
let responseText = '';
|
|
51
|
-
let
|
|
52
|
+
let rawStopReason;
|
|
53
|
+
let stopReason = 'unknown';
|
|
52
54
|
try {
|
|
53
55
|
const streamFactory = client.messages.stream;
|
|
54
56
|
const stream = streamFactory(body, params.signal ? { signal: params.signal } : undefined);
|
|
@@ -83,10 +85,10 @@ export class AnthropicSdkProvider {
|
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
else if (event.type === 'message_delta') {
|
|
86
|
-
if (event.delta.stop_reason
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if (event.delta.stop_reason) {
|
|
89
|
+
rawStopReason = event.delta.stop_reason;
|
|
90
|
+
stopReason = mapAnthropicStopReason(rawStopReason);
|
|
91
|
+
}
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
const finalMessage = await stream.finalMessage();
|
|
@@ -121,7 +123,8 @@ export class AnthropicSdkProvider {
|
|
|
121
123
|
...(finalMessage.usage.cache_read_input_tokens != null ? { cacheReadTokens: finalMessage.usage.cache_read_input_tokens } : {}),
|
|
122
124
|
...(finalMessage.usage.cache_creation_input_tokens != null ? { cacheWriteTokens: finalMessage.usage.cache_creation_input_tokens } : {}),
|
|
123
125
|
},
|
|
124
|
-
stopReason,
|
|
126
|
+
stopReason: stopReason === 'unknown' && parsed.text ? 'completed' : stopReason,
|
|
127
|
+
...(rawStopReason !== undefined ? { providerStopReason: rawStopReason } : {}),
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
130
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAkB,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAKnJ,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAwE7G;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;gBAGnF,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,CAA0B;IAMxF,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAsUhD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAkC3F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { REASONING_BUDGET_MAP } from './interface.js';
|
|
2
2
|
import { getCacheCapability } from '@pellux/goodvibes-sdk/platform/providers/cache-capability';
|
|
3
|
+
import { mapAnthropicStopReason } from './stop-reason-maps.js';
|
|
3
4
|
import { getDefaultStrategy } from '@pellux/goodvibes-sdk/platform/providers/cache-strategy';
|
|
4
5
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
5
6
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
@@ -227,7 +228,8 @@ export class AnthropicProvider {
|
|
|
227
228
|
let outputTokens = 0;
|
|
228
229
|
let cacheReadTokens = 0;
|
|
229
230
|
let cacheWriteTokens = 0;
|
|
230
|
-
let
|
|
231
|
+
let rawStopReason;
|
|
232
|
+
let stopReason = 'unknown';
|
|
231
233
|
// Accumulate tool use blocks by index
|
|
232
234
|
const toolBlocks = new Map();
|
|
233
235
|
const reader = res.body?.getReader();
|
|
@@ -296,10 +298,10 @@ export class AnthropicProvider {
|
|
|
296
298
|
}
|
|
297
299
|
}
|
|
298
300
|
else if (event.type === 'message_delta') {
|
|
299
|
-
if (event.delta?.stop_reason
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
301
|
+
if (event.delta?.stop_reason) {
|
|
302
|
+
rawStopReason = event.delta.stop_reason;
|
|
303
|
+
stopReason = mapAnthropicStopReason(rawStopReason);
|
|
304
|
+
}
|
|
303
305
|
if (event.usage?.output_tokens)
|
|
304
306
|
outputTokens = event.usage.output_tokens;
|
|
305
307
|
if (event.usage?.cache_read_input_tokens != null)
|
|
@@ -354,7 +356,8 @@ export class AnthropicProvider {
|
|
|
354
356
|
content: text,
|
|
355
357
|
toolCalls,
|
|
356
358
|
usage: { inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens },
|
|
357
|
-
stopReason,
|
|
359
|
+
stopReason: stopReason === 'unknown' && text ? 'completed' : stopReason,
|
|
360
|
+
...(rawStopReason !== undefined ? { providerStopReason: rawStopReason } : {}),
|
|
358
361
|
cacheMetrics: {
|
|
359
362
|
strategy: cap.type === 'explicit' ? `explicit-${cap.maxBreakpoints}bp` : cap.type,
|
|
360
363
|
breakpointsPlaced,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EAEZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAcxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAuB/F;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,uEAAuE;IACvE,OAAO,CAAC,iBAAiB,CAA6B;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB,CAAuB;IAChD,yEAAyE;IACzE,OAAO,CAAC,iBAAiB,CAAuB;IAChD,wCAAwC;IACxC,OAAO,CAAC,mBAAmB,CAAa;IACxC,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAqB;gBAElC,MAAM,EAAE,MAAM,EAAE,eAAe,GAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAA0B;IAKzG,OAAO,CAAC,gBAAgB;YAWV,mBAAmB;IA2F3B,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA0MhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmD1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAmC3F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { REASONING_BUDGET_MAP } from './interface.js';
|
|
2
|
+
import { mapGeminiStopReason } from './stop-reason-maps.js';
|
|
2
3
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
3
4
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
4
5
|
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
@@ -279,11 +280,9 @@ export class GeminiProvider {
|
|
|
279
280
|
const { text: parsedText, toolCalls } = fromGeminiParts(allParts);
|
|
280
281
|
// Prefer streamedText for content; fall back to parsed if no streaming happened
|
|
281
282
|
const text = streamedText || parsedText;
|
|
282
|
-
let stopReason =
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
else if (toolCalls.length > 0)
|
|
286
|
-
stopReason = 'tool_use';
|
|
283
|
+
let stopReason = toolCalls.length > 0
|
|
284
|
+
? 'tool_call'
|
|
285
|
+
: mapGeminiStopReason(lastFinishReason);
|
|
287
286
|
// Clear old signatures — new ones were captured from this response's functionCall parts
|
|
288
287
|
// (kept across calls within a tool-use loop, cleared when no new functionCalls arrive)
|
|
289
288
|
if (toolCalls.length === 0) {
|
|
@@ -303,6 +302,7 @@ export class GeminiProvider {
|
|
|
303
302
|
// cacheWriteTokens is omitted: Gemini does not charge separately for cache writes
|
|
304
303
|
},
|
|
305
304
|
stopReason,
|
|
305
|
+
...(lastFinishReason ? { providerStopReason: lastFinishReason } : {}),
|
|
306
306
|
};
|
|
307
307
|
});
|
|
308
308
|
}
|
|
@@ -136,6 +136,11 @@ export interface ChatRequest {
|
|
|
136
136
|
/** Called per-chunk during streaming when streaming is enabled. */
|
|
137
137
|
onDelta?: (delta: StreamDelta) => void;
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Normalized stop-reason vocabulary for `ChatResponse`.
|
|
141
|
+
* Every provider's raw finish reason maps to exactly one canonical value.
|
|
142
|
+
*/
|
|
143
|
+
export type ChatStopReason = 'completed' | 'max_tokens' | 'tool_call' | 'stop_sequence' | 'content_filter' | 'error' | 'unknown';
|
|
139
144
|
export interface ChatResponse {
|
|
140
145
|
content: string;
|
|
141
146
|
toolCalls: ToolCall[];
|
|
@@ -145,7 +150,13 @@ export interface ChatResponse {
|
|
|
145
150
|
cacheReadTokens?: number;
|
|
146
151
|
cacheWriteTokens?: number;
|
|
147
152
|
};
|
|
148
|
-
|
|
153
|
+
/** Normalized stop reason — use this for cross-provider comparisons. */
|
|
154
|
+
stopReason: ChatStopReason;
|
|
155
|
+
/**
|
|
156
|
+
* Raw stop reason string emitted by the underlying provider, preserved for
|
|
157
|
+
* consumers that need provider-specific detail (e.g. analytics, debugging).
|
|
158
|
+
*/
|
|
159
|
+
providerStopReason?: string;
|
|
149
160
|
/** Mercury-2 specific: condensed chain-of-thought, if requested. */
|
|
150
161
|
reasoningSummary?: string;
|
|
151
162
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/interface.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llama-cpp.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/llama-cpp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"llama-cpp.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/llama-cpp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAWpF,KAAK,WAAW,GAAG,CACjB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAqBvB,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyC;IACzE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;gBAE7C,IAAI,EAAE,uBAAuB;IAanC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAShD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAoC5E,yBAAyB;CAoGxC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
2
2
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
3
3
|
import { OpenAICompatProvider } from './openai-compat.js';
|
|
4
|
+
import { mapLlamaCppStopReason } from './stop-reason-maps.js';
|
|
4
5
|
import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
5
6
|
import { extractTextToolCalls, fromOpenAIToolCalls, toOpenAIMessages, toOpenAITools, } from './tool-formats.js';
|
|
6
7
|
export class LlamaCppProvider {
|
|
@@ -147,9 +148,8 @@ export class LlamaCppProvider {
|
|
|
147
148
|
if (responseText) {
|
|
148
149
|
params.onDelta?.({ content: responseText });
|
|
149
150
|
}
|
|
150
|
-
const stopReason = finalToolCalls.length > 0
|
|
151
|
-
|
|
152
|
-
: (choice?.finish_reason === 'length' ? 'max_tokens' : 'end');
|
|
151
|
+
const stopReason = mapLlamaCppStopReason(choice?.finish_reason, finalToolCalls.length > 0);
|
|
152
|
+
const rawStopReason = choice?.finish_reason ?? undefined;
|
|
153
153
|
return {
|
|
154
154
|
content: responseText,
|
|
155
155
|
toolCalls: finalToolCalls,
|
|
@@ -161,6 +161,7 @@ export class LlamaCppProvider {
|
|
|
161
161
|
: {}),
|
|
162
162
|
},
|
|
163
163
|
stopReason,
|
|
164
|
+
...(rawStopReason !== undefined ? { providerStopReason: rawStopReason } : {}),
|
|
164
165
|
};
|
|
165
166
|
}
|
|
166
167
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
2
|
-
import type {
|
|
3
|
-
import type { ChatRequest,
|
|
2
|
+
import type { ToolDefinition } from '@pellux/goodvibes-sdk/platform/types/tools';
|
|
3
|
+
import type { ChatRequest, ContentPart, ProviderMessage } from './interface.js';
|
|
4
4
|
export type ResponsesInputItem = {
|
|
5
5
|
role: 'user';
|
|
6
6
|
content: Array<{
|
|
@@ -75,7 +75,6 @@ export declare function buildResponsesTools(tools?: ToolDefinition[]): Array<Rec
|
|
|
75
75
|
export declare function buildResponsesInput(messages: ProviderMessage[]): ResponsesInputItem[];
|
|
76
76
|
export declare function buildResponsesReasoning(reasoningEffort: ChatRequest['reasoningEffort']): Record<string, unknown> | undefined;
|
|
77
77
|
export declare function mapNativeReasoningEffort(reasoningEffort: ChatRequest['reasoningEffort']): 'off' | 'low' | 'medium' | 'high' | undefined;
|
|
78
|
-
export declare function mapResponsesStopReason(status: string | undefined, toolCalls: ToolCall[]): ChatResponse['stopReason'];
|
|
79
78
|
export declare function extractNativeMessageText(output: NativeChatOutputItem[] | undefined): string;
|
|
80
79
|
export declare function consumeSSE(body: ReadableStream<Uint8Array>, onEvent: (eventType: string, payload: Record<string, unknown>) => void): Promise<void>;
|
|
81
80
|
export declare function buildHttpError(prefix: string, response: Response, provider: string, operation: string, phase: string): Promise<ProviderError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lm-studio-helpers.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/lm-studio-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"lm-studio-helpers.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/lm-studio-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,15 +101,6 @@ export function mapNativeReasoningEffort(reasoningEffort) {
|
|
|
101
101
|
return undefined;
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
export function mapResponsesStopReason(status, toolCalls) {
|
|
105
|
-
if (toolCalls.length > 0 && status === 'completed')
|
|
106
|
-
return 'tool_use';
|
|
107
|
-
if (status === 'incomplete')
|
|
108
|
-
return 'max_tokens';
|
|
109
|
-
if (status === 'failed' || status === 'cancelled')
|
|
110
|
-
return 'error';
|
|
111
|
-
return 'end';
|
|
112
|
-
}
|
|
113
104
|
export function extractNativeMessageText(output) {
|
|
114
105
|
if (!Array.isArray(output))
|
|
115
106
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lm-studio.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/lm-studio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EASL,KAAK,uBAAuB,
|
|
1
|
+
{"version":3,"file":"lm-studio.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/lm-studio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EASL,KAAK,uBAAuB,EAM5B,KAAK,WAAW,EAOjB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC5C;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;gBAEnD,IAAI,EAAE,uBAAuB;IAWnC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAuC1F,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,sBAAsB;YAehB,iBAAiB;YAgIjB,gBAAgB;CAkK/B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { OpenAICompatProvider } from './openai-compat.js';
|
|
2
2
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
3
3
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
4
|
-
import { buildHttpError, buildResponsesInput, buildResponsesReasoning, buildResponsesTools, consumeSSE, createResponsesClient, deriveNativeChatUrl, extractNativeMessageText, makeTranscriptKey, mapNativeReasoningEffort,
|
|
4
|
+
import { buildHttpError, buildResponsesInput, buildResponsesReasoning, buildResponsesTools, consumeSSE, createResponsesClient, deriveNativeChatUrl, extractNativeMessageText, makeTranscriptKey, mapNativeReasoningEffort, normalizeProviderError, parseJsonObject, shouldFallbackFromNative, shouldFallbackFromResponses, toNativeChatInput, toRecord, } from './lm-studio-helpers.js';
|
|
5
|
+
import { mapLmStudioStopReason } from './stop-reason-maps.js';
|
|
5
6
|
export class LMStudioProvider {
|
|
6
7
|
name;
|
|
7
8
|
models;
|
|
@@ -243,7 +244,9 @@ export class LMStudioProvider {
|
|
|
243
244
|
inputTokens,
|
|
244
245
|
outputTokens,
|
|
245
246
|
},
|
|
246
|
-
|
|
247
|
+
// LM Studio native chat API does not expose a finish_reason/status field;
|
|
248
|
+
// no providerStopReason is available on this code path.
|
|
249
|
+
stopReason: 'completed',
|
|
247
250
|
};
|
|
248
251
|
}
|
|
249
252
|
async chatViaResponses(params, model) {
|
|
@@ -395,7 +398,8 @@ export class LMStudioProvider {
|
|
|
395
398
|
outputTokens,
|
|
396
399
|
...(cacheReadTokens > 0 ? { cacheReadTokens } : {}),
|
|
397
400
|
},
|
|
398
|
-
stopReason:
|
|
401
|
+
stopReason: mapLmStudioStopReason(status, resolvedToolCalls.length > 0),
|
|
402
|
+
...(status !== 'completed' ? { providerStopReason: status } : {}),
|
|
399
403
|
};
|
|
400
404
|
if (reasoningSummary) {
|
|
401
405
|
response.reasoningSummary = reasoningSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/ollama.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/ollama.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAKpF,KAAK,WAAW,GAAG,CACjB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAqBvB,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;gBAEvC,IAAI,EAAE,qBAAqB;IAYjC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAuC1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;YA4C5E,mBAAmB;CAmGlC"}
|
|
@@ -3,6 +3,7 @@ import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
|
3
3
|
import { OpenAICompatProvider } from './openai-compat.js';
|
|
4
4
|
import { toOpenAITools } from './tool-formats.js';
|
|
5
5
|
import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
6
|
+
import { mapOllamaStopReason } from './stop-reason-maps.js';
|
|
6
7
|
export class OllamaProvider {
|
|
7
8
|
name;
|
|
8
9
|
models;
|
|
@@ -198,9 +199,7 @@ export class OllamaProvider {
|
|
|
198
199
|
outputTokens = typeof chunk.eval_count === 'number' ? chunk.eval_count : outputTokens;
|
|
199
200
|
}
|
|
200
201
|
});
|
|
201
|
-
const stopReason = finalToolCalls.length > 0
|
|
202
|
-
? 'tool_use'
|
|
203
|
-
: (/length|max_tokens/i.test(doneReason) ? 'max_tokens' : 'end');
|
|
202
|
+
const stopReason = mapOllamaStopReason(doneReason, finalToolCalls.length > 0);
|
|
204
203
|
return {
|
|
205
204
|
content: responseText,
|
|
206
205
|
toolCalls: finalToolCalls,
|
|
@@ -209,6 +208,7 @@ export class OllamaProvider {
|
|
|
209
208
|
outputTokens,
|
|
210
209
|
},
|
|
211
210
|
stopReason,
|
|
211
|
+
...(doneReason ? { providerStopReason: doneReason } : {}),
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/openai-codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAGX,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/openai-codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAGX,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AA0I/F,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAgQvB;AAED,qBAAa,mBAAoB,YAAW,WAAW;IAKnD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAJtC,QAAQ,CAAC,IAAI,uBAA8B;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;gBAGZ,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;IAG9G,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAahD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAgC3F"}
|
|
@@ -3,6 +3,7 @@ import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
|
3
3
|
import { resolveSubscriptionAccessToken } from '../config/subscription-auth.js';
|
|
4
4
|
import { arch, platform, release } from 'node:os';
|
|
5
5
|
import { toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
6
|
+
import { mapCodexStopReason } from './stop-reason-maps.js';
|
|
6
7
|
const OPENAI_CODEX_BASE_URL = 'https://chatgpt.com/backend-api';
|
|
7
8
|
const OPENAI_CODEX_PROVIDER_NAME = 'openai-subscriber';
|
|
8
9
|
function getOpenAICodexUserAgent() {
|
|
@@ -107,15 +108,6 @@ function buildResponsesInput(messages) {
|
|
|
107
108
|
}
|
|
108
109
|
return input;
|
|
109
110
|
}
|
|
110
|
-
function mapStopReason(status, toolCalls) {
|
|
111
|
-
if (toolCalls.length > 0 && status === 'completed')
|
|
112
|
-
return 'tool_use';
|
|
113
|
-
if (status === 'incomplete')
|
|
114
|
-
return 'max_tokens';
|
|
115
|
-
if (status === 'failed' || status === 'cancelled')
|
|
116
|
-
return 'error';
|
|
117
|
-
return 'end';
|
|
118
|
-
}
|
|
119
111
|
function buildErrorMessage(status, body) {
|
|
120
112
|
try {
|
|
121
113
|
const parsed = JSON.parse(body);
|
|
@@ -382,7 +374,8 @@ export async function chatWithOpenAICodex(accessToken, params) {
|
|
|
382
374
|
outputTokens,
|
|
383
375
|
...(cacheReadTokens > 0 ? { cacheReadTokens } : {}),
|
|
384
376
|
},
|
|
385
|
-
stopReason:
|
|
377
|
+
stopReason: mapCodexStopReason(status, resolvedToolCalls.length > 0),
|
|
378
|
+
...(status !== 'completed' ? { providerStopReason: status } : {}),
|
|
386
379
|
};
|
|
387
380
|
}
|
|
388
381
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compat.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/openai-compat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"openai-compat.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/openai-compat.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { getCacheCapability } from '@pellux/goodvibes-sdk/platform/providers/cac
|
|
|
6
6
|
import { extractOpenAIStreamTextDelta } from '@pellux/goodvibes-sdk/platform/providers/openai-stream-delta';
|
|
7
7
|
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
8
8
|
import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
9
|
+
import { mapOpenAIStopReason } from './stop-reason-maps.js';
|
|
9
10
|
const NOOP_CACHE_HIT_TRACKER = {
|
|
10
11
|
recordTurn: () => { },
|
|
11
12
|
};
|
|
@@ -237,7 +238,8 @@ export class OpenAICompatProvider {
|
|
|
237
238
|
let inputTokens = 0;
|
|
238
239
|
let outputTokens = 0;
|
|
239
240
|
let cacheReadTokens = 0;
|
|
240
|
-
let
|
|
241
|
+
let rawStopReason;
|
|
242
|
+
let stopReason = 'unknown';
|
|
241
243
|
let reasoningSummaryText;
|
|
242
244
|
let rawToolCalls = [];
|
|
243
245
|
const selectedModel = model ?? this.defaultModel;
|
|
@@ -333,10 +335,10 @@ export class OpenAICompatProvider {
|
|
|
333
335
|
}
|
|
334
336
|
}
|
|
335
337
|
const finishReason = raw.choices[0]?.finish_reason;
|
|
336
|
-
if (finishReason
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
338
|
+
if (finishReason) {
|
|
339
|
+
rawStopReason = finishReason;
|
|
340
|
+
stopReason = mapOpenAIStopReason(finishReason);
|
|
341
|
+
}
|
|
340
342
|
if (raw.usage) {
|
|
341
343
|
const rawUsage = raw.usage;
|
|
342
344
|
inputTokens = rawUsage.prompt_tokens ?? 0;
|
|
@@ -391,7 +393,8 @@ export class OpenAICompatProvider {
|
|
|
391
393
|
if (extracted.toolCalls.length > 0) {
|
|
392
394
|
toolCalls = extracted.toolCalls;
|
|
393
395
|
responseText = extracted.cleanedContent;
|
|
394
|
-
stopReason = '
|
|
396
|
+
stopReason = 'tool_call';
|
|
397
|
+
rawStopReason = rawStopReason ?? 'tool_calls';
|
|
395
398
|
}
|
|
396
399
|
}
|
|
397
400
|
const response = {
|
|
@@ -402,7 +405,8 @@ export class OpenAICompatProvider {
|
|
|
402
405
|
outputTokens,
|
|
403
406
|
...(cacheReadTokens > 0 ? { cacheReadTokens } : {}),
|
|
404
407
|
},
|
|
405
|
-
stopReason,
|
|
408
|
+
stopReason: stopReason === 'unknown' && responseText ? 'completed' : stopReason,
|
|
409
|
+
...(rawStopReason !== undefined ? { providerStopReason: rawStopReason } : {}),
|
|
406
410
|
};
|
|
407
411
|
if (reasoningSummaryText) {
|
|
408
412
|
response.reasoningSummary = reasoningSummaryText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EAEZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAYxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAQ/F;;;GAGG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAE/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;gBAE1D,MAAM,EAAE,MAAM,EAAE,eAAe,GAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAA0B;IAKnG,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4HhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA8B1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC3F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import OpenAI from 'openai';
|
|
2
|
+
import { mapOpenAIStopReason } from './stop-reason-maps.js';
|
|
2
3
|
import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
3
4
|
import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
|
|
4
5
|
import { toOpenAITools, toOpenAIMessages, fromOpenAIToolCalls, extractTextToolCalls, } from './tool-formats.js';
|
|
@@ -29,7 +30,8 @@ export class OpenAIProvider {
|
|
|
29
30
|
let inputTokens = 0;
|
|
30
31
|
let outputTokens = 0;
|
|
31
32
|
let cacheReadTokens = 0;
|
|
32
|
-
let
|
|
33
|
+
let rawStopReason;
|
|
34
|
+
let stopReason = 'unknown';
|
|
33
35
|
let rawToolCalls = [];
|
|
34
36
|
const openaiMessages = toOpenAIMessages(messages, systemPrompt);
|
|
35
37
|
const openaiTools = tools && tools.length > 0 ? toOpenAITools(tools) : undefined;
|
|
@@ -75,10 +77,10 @@ export class OpenAIProvider {
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
const finishReason = chunk.choices[0]?.finish_reason;
|
|
78
|
-
if (finishReason
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
if (finishReason) {
|
|
81
|
+
rawStopReason = finishReason;
|
|
82
|
+
stopReason = mapOpenAIStopReason(finishReason);
|
|
83
|
+
}
|
|
82
84
|
const usage = chunk.usage;
|
|
83
85
|
if (usage) {
|
|
84
86
|
inputTokens = usage.prompt_tokens ?? 0;
|
|
@@ -113,7 +115,8 @@ export class OpenAIProvider {
|
|
|
113
115
|
if (extracted.toolCalls.length > 0) {
|
|
114
116
|
toolCalls = extracted.toolCalls;
|
|
115
117
|
responseText = extracted.cleanedContent;
|
|
116
|
-
stopReason = '
|
|
118
|
+
stopReason = 'tool_call';
|
|
119
|
+
rawStopReason = rawStopReason ?? 'tool_calls';
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
122
|
this.cacheHitTracker.recordTurn({
|
|
@@ -128,7 +131,8 @@ export class OpenAIProvider {
|
|
|
128
131
|
outputTokens,
|
|
129
132
|
...(cacheReadTokens > 0 ? { cacheReadTokens } : {}),
|
|
130
133
|
},
|
|
131
|
-
stopReason,
|
|
134
|
+
stopReason: stopReason === 'unknown' && responseText ? 'completed' : stopReason,
|
|
135
|
+
...(rawStopReason !== undefined ? { providerStopReason: rawStopReason } : {}),
|
|
132
136
|
};
|
|
133
137
|
});
|
|
134
138
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ChatStopReason } from './interface.js';
|
|
2
|
+
/** Maps Anthropic raw stop_reason values to the canonical ChatStopReason vocab. */
|
|
3
|
+
export declare const ANTHROPIC_STOP_REASON_MAP: Readonly<Record<string, ChatStopReason>>;
|
|
4
|
+
export declare function mapAnthropicStopReason(raw: string | null | undefined): ChatStopReason;
|
|
5
|
+
/** Maps OpenAI finish_reason values to the canonical ChatStopReason vocab. */
|
|
6
|
+
export declare const OPENAI_STOP_REASON_MAP: Readonly<Record<string, ChatStopReason>>;
|
|
7
|
+
export declare function mapOpenAIStopReason(raw: string | null | undefined): ChatStopReason;
|
|
8
|
+
/** Maps Gemini finishReason values to the canonical ChatStopReason vocab. */
|
|
9
|
+
export declare const GEMINI_STOP_REASON_MAP: Readonly<Record<string, ChatStopReason>>;
|
|
10
|
+
export declare function mapGeminiStopReason(raw: string | null | undefined): ChatStopReason;
|
|
11
|
+
/**
|
|
12
|
+
* Maps llama.cpp finish_reason values to the canonical ChatStopReason vocab.
|
|
13
|
+
* llama.cpp uses the OpenAI-compatible finish_reason field ('stop', 'length', 'tool_calls').
|
|
14
|
+
*/
|
|
15
|
+
export declare function mapLlamaCppStopReason(finishReason: string | null | undefined, hasToolCalls: boolean): ChatStopReason;
|
|
16
|
+
/**
|
|
17
|
+
* Maps Ollama done_reason values to the canonical ChatStopReason vocab.
|
|
18
|
+
* Ollama uses its own done_reason field ('stop', 'length', 'tool-calls', 'load', etc.).
|
|
19
|
+
*/
|
|
20
|
+
export declare function mapOllamaStopReason(doneReason: string, hasToolCalls: boolean): ChatStopReason;
|
|
21
|
+
/**
|
|
22
|
+
* Maps OpenAI Codex (responses API) status values to the canonical ChatStopReason vocab.
|
|
23
|
+
*/
|
|
24
|
+
export declare function mapCodexStopReason(status: string | undefined, hasToolCalls: boolean): ChatStopReason;
|
|
25
|
+
/**
|
|
26
|
+
* Maps LM Studio responses API status values to the canonical ChatStopReason vocab.
|
|
27
|
+
* Used by both the native chat and responses paths in lm-studio.ts.
|
|
28
|
+
*/
|
|
29
|
+
export declare function mapLmStudioStopReason(status: string | undefined, hasToolCalls: boolean): ChatStopReason;
|
|
30
|
+
//# sourceMappingURL=stop-reason-maps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-reason-maps.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/stop-reason-maps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAK9E,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAGrF;AAED,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAM3E,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAGlF;AAED,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAU3E,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAGlF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,YAAY,EAAE,OAAO,GACpB,cAAc,CAIhB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,GACpB,cAAc,CAIhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,OAAO,GACpB,cAAc,CAKhB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,OAAO,GACpB,cAAc,CAKhB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/** Maps Anthropic raw stop_reason values to the canonical ChatStopReason vocab. */
|
|
2
|
+
export const ANTHROPIC_STOP_REASON_MAP = {
|
|
3
|
+
end_turn: 'completed',
|
|
4
|
+
max_tokens: 'max_tokens',
|
|
5
|
+
tool_use: 'tool_call',
|
|
6
|
+
stop_sequence: 'stop_sequence',
|
|
7
|
+
};
|
|
8
|
+
export function mapAnthropicStopReason(raw) {
|
|
9
|
+
if (!raw)
|
|
10
|
+
return 'unknown';
|
|
11
|
+
return ANTHROPIC_STOP_REASON_MAP[raw] ?? 'unknown';
|
|
12
|
+
}
|
|
13
|
+
/** Maps OpenAI finish_reason values to the canonical ChatStopReason vocab. */
|
|
14
|
+
export const OPENAI_STOP_REASON_MAP = {
|
|
15
|
+
stop: 'completed',
|
|
16
|
+
length: 'max_tokens',
|
|
17
|
+
tool_calls: 'tool_call',
|
|
18
|
+
content_filter: 'content_filter',
|
|
19
|
+
function_call: 'tool_call',
|
|
20
|
+
};
|
|
21
|
+
export function mapOpenAIStopReason(raw) {
|
|
22
|
+
if (!raw)
|
|
23
|
+
return 'unknown';
|
|
24
|
+
return OPENAI_STOP_REASON_MAP[raw] ?? 'unknown';
|
|
25
|
+
}
|
|
26
|
+
/** Maps Gemini finishReason values to the canonical ChatStopReason vocab. */
|
|
27
|
+
export const GEMINI_STOP_REASON_MAP = {
|
|
28
|
+
STOP: 'completed',
|
|
29
|
+
MAX_TOKENS: 'max_tokens',
|
|
30
|
+
SAFETY: 'content_filter',
|
|
31
|
+
RECITATION: 'content_filter',
|
|
32
|
+
OTHER: 'unknown',
|
|
33
|
+
BLOCKLIST: 'content_filter',
|
|
34
|
+
PROHIBITED_CONTENT: 'content_filter',
|
|
35
|
+
SPII: 'content_filter',
|
|
36
|
+
MALFORMED_FUNCTION_CALL: 'unknown',
|
|
37
|
+
};
|
|
38
|
+
export function mapGeminiStopReason(raw) {
|
|
39
|
+
if (!raw)
|
|
40
|
+
return 'unknown';
|
|
41
|
+
return GEMINI_STOP_REASON_MAP[raw] ?? 'unknown';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Maps llama.cpp finish_reason values to the canonical ChatStopReason vocab.
|
|
45
|
+
* llama.cpp uses the OpenAI-compatible finish_reason field ('stop', 'length', 'tool_calls').
|
|
46
|
+
*/
|
|
47
|
+
export function mapLlamaCppStopReason(finishReason, hasToolCalls) {
|
|
48
|
+
if (hasToolCalls || finishReason === 'tool_calls')
|
|
49
|
+
return 'tool_call';
|
|
50
|
+
if (finishReason === 'length')
|
|
51
|
+
return 'max_tokens';
|
|
52
|
+
return 'completed';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Maps Ollama done_reason values to the canonical ChatStopReason vocab.
|
|
56
|
+
* Ollama uses its own done_reason field ('stop', 'length', 'tool-calls', 'load', etc.).
|
|
57
|
+
*/
|
|
58
|
+
export function mapOllamaStopReason(doneReason, hasToolCalls) {
|
|
59
|
+
if (hasToolCalls || /tool/i.test(doneReason))
|
|
60
|
+
return 'tool_call';
|
|
61
|
+
if (/length|max_tokens/i.test(doneReason))
|
|
62
|
+
return 'max_tokens';
|
|
63
|
+
return 'completed';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Maps OpenAI Codex (responses API) status values to the canonical ChatStopReason vocab.
|
|
67
|
+
*/
|
|
68
|
+
export function mapCodexStopReason(status, hasToolCalls) {
|
|
69
|
+
if (hasToolCalls && status === 'completed')
|
|
70
|
+
return 'tool_call';
|
|
71
|
+
if (status === 'incomplete')
|
|
72
|
+
return 'max_tokens';
|
|
73
|
+
if (status === 'failed' || status === 'cancelled')
|
|
74
|
+
return 'error';
|
|
75
|
+
return 'completed';
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Maps LM Studio responses API status values to the canonical ChatStopReason vocab.
|
|
79
|
+
* Used by both the native chat and responses paths in lm-studio.ts.
|
|
80
|
+
*/
|
|
81
|
+
export function mapLmStudioStopReason(status, hasToolCalls) {
|
|
82
|
+
if (hasToolCalls && status === 'completed')
|
|
83
|
+
return 'tool_call';
|
|
84
|
+
if (status === 'incomplete')
|
|
85
|
+
return 'max_tokens';
|
|
86
|
+
if (status === 'failed' || status === 'cancelled')
|
|
87
|
+
return 'error';
|
|
88
|
+
return 'completed';
|
|
89
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/forensics/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,oEAAoE;AACpE,UAAU,eAAe;IACvB,kDAAkD;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/forensics/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,oEAAoE;AACpE,UAAU,eAAe;IACvB,kDAAkD;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAmEpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,YAAY,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CA2BR"}
|
|
@@ -11,7 +11,6 @@ export function classifyFailure(input) {
|
|
|
11
11
|
}
|
|
12
12
|
// LLM stop reason: max_tokens
|
|
13
13
|
if (input.stopReason === 'max_tokens'
|
|
14
|
-
|| input.stopReason === 'length'
|
|
15
14
|
|| input.stopReason === 'context_overflow') {
|
|
16
15
|
return 'max_tokens';
|
|
17
16
|
}
|
|
@@ -82,9 +81,7 @@ export function summariseFailure(classification, errorMessage, stopReason) {
|
|
|
82
81
|
case 'cancelled':
|
|
83
82
|
return 'Entity was explicitly cancelled';
|
|
84
83
|
case 'max_tokens':
|
|
85
|
-
return
|
|
86
|
-
? 'Response truncated at max_tokens (length stop)'
|
|
87
|
-
: 'Model stopped due to token limit (max_tokens)';
|
|
84
|
+
return 'Model stopped due to token limit (max_tokens)';
|
|
88
85
|
case 'compaction_error':
|
|
89
86
|
return 'Context compaction failed';
|
|
90
87
|
case 'unknown':
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
let version = '0.18.
|
|
3
|
+
let version = '0.18.47';
|
|
4
4
|
try {
|
|
5
5
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
|
|
6
6
|
version = pkg.version ?? version;
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
export type MaybePromise<T> = T | Promise<T>;
|
|
2
2
|
export type AuthTokenResolver = () => MaybePromise<string | null | undefined>;
|
|
3
|
+
/**
|
|
4
|
+
* Any supported public auth-token input form.
|
|
5
|
+
* Normalised to `AuthTokenResolver` at SDK/transport boundaries via `normalizeAuthToken`.
|
|
6
|
+
*/
|
|
7
|
+
export type AuthTokenInput = string | {
|
|
8
|
+
readonly token: string;
|
|
9
|
+
} | AuthTokenResolver | (() => string | null | undefined | Promise<string | null | undefined>) | undefined;
|
|
3
10
|
export type HeaderResolver = () => MaybePromise<HeadersInit | undefined>;
|
|
4
11
|
export declare function mergeHeaders(...sources: Array<HeadersInit | undefined>): Headers;
|
|
12
|
+
/**
|
|
13
|
+
* Accepts any supported auth token form and returns a canonical async resolver.
|
|
14
|
+
*
|
|
15
|
+
* - `string` → resolver that always returns the string
|
|
16
|
+
* - `{ token: string }` → resolver that always returns `input.token`
|
|
17
|
+
* - sync function → resolver that awaits `input()` (errors propagate)
|
|
18
|
+
* - async function → passes through as-is
|
|
19
|
+
* - `undefined` → resolver that returns `undefined`
|
|
20
|
+
*/
|
|
21
|
+
export declare function normalizeAuthToken(input: AuthTokenInput): AuthTokenResolver;
|
|
5
22
|
export declare function resolveAuthToken(authToken: string | null | undefined, getAuthToken?: AuthTokenResolver): Promise<string | null>;
|
|
6
23
|
export declare function resolveHeaders(headers: HeadersInit | undefined, getHeaders?: HeaderResolver): Promise<Headers>;
|
|
7
24
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-http/auth.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAuBzE,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,OAAO,CAMhF;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAAC,OAAO,CAAC,CAGlB"}
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-http/auth.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1B,iBAAiB,GACjB,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GACtE,SAAS,CAAC;AAEd,MAAM,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAuBzE,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,OAAO,CAMhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAY3E;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAAC,OAAO,CAAC,CAGlB"}
|
|
@@ -26,6 +26,28 @@ export function mergeHeaders(...sources) {
|
|
|
26
26
|
}
|
|
27
27
|
return headers;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Accepts any supported auth token form and returns a canonical async resolver.
|
|
31
|
+
*
|
|
32
|
+
* - `string` → resolver that always returns the string
|
|
33
|
+
* - `{ token: string }` → resolver that always returns `input.token`
|
|
34
|
+
* - sync function → resolver that awaits `input()` (errors propagate)
|
|
35
|
+
* - async function → passes through as-is
|
|
36
|
+
* - `undefined` → resolver that returns `undefined`
|
|
37
|
+
*/
|
|
38
|
+
export function normalizeAuthToken(input) {
|
|
39
|
+
if (input === undefined) {
|
|
40
|
+
return async () => undefined;
|
|
41
|
+
}
|
|
42
|
+
if (typeof input === 'string') {
|
|
43
|
+
return async () => input;
|
|
44
|
+
}
|
|
45
|
+
if (typeof input === 'function') {
|
|
46
|
+
return async () => await input() ?? undefined;
|
|
47
|
+
}
|
|
48
|
+
// { token: string } wrapper object
|
|
49
|
+
return async () => input.token;
|
|
50
|
+
}
|
|
29
51
|
export async function resolveAuthToken(authToken, getAuthToken) {
|
|
30
52
|
if (getAuthToken) {
|
|
31
53
|
const resolved = await getAuthToken();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-core.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-http/http-core.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"http-core.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-http/http-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Synced from packages/transport-http/src/http-core.ts
|
|
2
2
|
// Extracted from legacy source: src/runtime/transports/http-json-transport.ts
|
|
3
3
|
import { sleepWithSignal } from './backoff.js';
|
|
4
|
-
import { mergeHeaders, resolveAuthToken, resolveHeaders } from './auth.js';
|
|
4
|
+
import { mergeHeaders, normalizeAuthToken, resolveAuthToken, resolveHeaders } from './auth.js';
|
|
5
5
|
import { getHttpRetryDelay, isRetryableHttpStatus, isRetryableNetworkError, resolveHttpRetryPolicy, } from './retry.js';
|
|
6
6
|
import { buildUrl, createTransportPaths } from './paths.js';
|
|
7
7
|
function isPlainObject(value) {
|
|
@@ -151,6 +151,8 @@ export function createHttpJsonTransport(options) {
|
|
|
151
151
|
const baseUrl = options.baseUrl.trim();
|
|
152
152
|
const fetchImpl = createFetch(options.fetchImpl, options.fetch);
|
|
153
153
|
const authToken = options.authToken ?? null;
|
|
154
|
+
// Normalize at the boundary: downstream always works with a single resolver.
|
|
155
|
+
const getAuthToken = options.getAuthToken ?? normalizeAuthToken(options.authToken ?? undefined);
|
|
154
156
|
const defaultHeaders = options.headers;
|
|
155
157
|
const retryPolicy = options.retry;
|
|
156
158
|
const paths = createTransportPaths(baseUrl);
|
|
@@ -163,7 +165,7 @@ export function createHttpJsonTransport(options) {
|
|
|
163
165
|
let attempt = 0;
|
|
164
166
|
while (true) {
|
|
165
167
|
attempt += 1;
|
|
166
|
-
const token = await
|
|
168
|
+
const token = (await getAuthToken()) ?? null;
|
|
167
169
|
const headers = await resolveHeaders(defaultHeaders, options.getHeaders);
|
|
168
170
|
try {
|
|
169
171
|
return await requestJson(fetchImpl, url, createJsonRequestInit(token, requestOptions.body, method, mergeHeaders(headers, requestOptions.headers), requestOptions.signal));
|
|
@@ -210,7 +212,7 @@ export function createHttpJsonTransport(options) {
|
|
|
210
212
|
return buildUrl(baseUrl, path);
|
|
211
213
|
},
|
|
212
214
|
async getAuthToken() {
|
|
213
|
-
return await
|
|
215
|
+
return (await getAuthToken()) ?? null;
|
|
214
216
|
},
|
|
215
217
|
requestJson: requestJsonForTransport,
|
|
216
218
|
resolveContractRequest,
|
|
@@ -6,8 +6,8 @@ export type { ServerSentEventHandlers, ServerSentEventOptions } from './sse.js';
|
|
|
6
6
|
export { openServerSentEventStream } from './sse.js';
|
|
7
7
|
export type { ServerSentEventHandlers as RawServerSentEventHandlers, ServerSentEventOptions as RawServerSentEventOptions } from './sse-stream.js';
|
|
8
8
|
export { openServerSentEventStream as openRawServerSentEventStream } from './sse-stream.js';
|
|
9
|
-
export type { AuthTokenResolver, HeaderResolver, MaybePromise } from './auth.js';
|
|
10
|
-
export { mergeHeaders, resolveAuthToken, resolveHeaders } from './auth.js';
|
|
9
|
+
export type { AuthTokenInput, AuthTokenResolver, HeaderResolver, MaybePromise } from './auth.js';
|
|
10
|
+
export { mergeHeaders, normalizeAuthToken, resolveAuthToken, resolveHeaders } from './auth.js';
|
|
11
11
|
export type { BackoffPolicy, ResolvedBackoffPolicy } from './backoff.js';
|
|
12
12
|
export { computeBackoffDelay, normalizeBackoffPolicy, sleepWithSignal } from './backoff.js';
|
|
13
13
|
export type { HttpRetryPolicy, ResolvedHttpRetryPolicy } from './retry.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-http/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,YAAY,EAAE,uBAAuB,IAAI,0BAA0B,EAAE,sBAAsB,IAAI,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAClJ,OAAO,EAAE,yBAAyB,IAAI,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-http/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,YAAY,EAAE,uBAAuB,IAAI,0BAA0B,EAAE,sBAAsB,IAAI,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAClJ,OAAO,EAAE,yBAAyB,IAAI,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC5F,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC5K,YAAY,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAC1H,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -2,7 +2,7 @@ export { buildContractInput, invokeContractRoute, openContractRouteStream, requi
|
|
|
2
2
|
export { createFetch, createHttpTransport, createJsonInit, createJsonRequestInit, normalizeTransportError, readJsonBody, requestJson, } from './http.js';
|
|
3
3
|
export { openServerSentEventStream } from './sse.js';
|
|
4
4
|
export { openServerSentEventStream as openRawServerSentEventStream } from './sse-stream.js';
|
|
5
|
-
export { mergeHeaders, resolveAuthToken, resolveHeaders } from './auth.js';
|
|
5
|
+
export { mergeHeaders, normalizeAuthToken, resolveAuthToken, resolveHeaders } from './auth.js';
|
|
6
6
|
export { computeBackoffDelay, normalizeBackoffPolicy, sleepWithSignal } from './backoff.js';
|
|
7
7
|
export { DEFAULT_HTTP_RETRY_POLICY, getHttpRetryDelay, isRetryableHttpStatus, isRetryableNetworkError, normalizeHttpRetryPolicy, resolveHttpRetryPolicy } from './retry.js';
|
|
8
8
|
export { DEFAULT_STREAM_RECONNECT_POLICY, getStreamReconnectDelay, normalizeStreamReconnectPolicy } from './reconnect.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-events.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-realtime/runtime-events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime-events.d.ts","sourceRoot":"","sources":["../../../src/_internal/transport-realtime/runtime-events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAsB,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAA6D,MAAM,4BAA4B,CAAC;AAE/K,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,KAAK,kBAAkB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,MAAM,MAAM,yBAAyB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAC1F,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAElC,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IACpF,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAE3C,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,KAAK,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAErE,wBAAgB,yBAAyB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,EAC9F,OAAO,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,GACxD,mBAAmB,CAAC,MAAM,CAAC,CAK7B;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAIR;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,kBAAkB,EAAE,GACrC,MAAM,CAQR;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,OAAO,KAAK,EACvB,OAAO,GAAE,4BAAiC,GACzC,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAiB3D;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,OAAO,SAAS,EAC/B,OAAO,GAAE,4BAAiC,GACzC,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAuF3D"}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
// Synced from packages/transport-realtime/src/runtime-events.ts
|
|
2
2
|
// Extracted from legacy source: src/runtime/transports/runtime-events-client.ts
|
|
3
3
|
import { RUNTIME_EVENT_DOMAINS } from '../contracts/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import { normalizeAuthToken, openRawServerSentEventStream as openServerSentEventStream } from '../transport-http/index.js';
|
|
5
5
|
import { buildUrl, normalizeBaseUrl } from '../transport-http/index.js';
|
|
6
6
|
import { createRemoteDomainEvents, } from './domain-events.js';
|
|
7
|
-
async function resolveAuthTokenSource(source) {
|
|
8
|
-
if (typeof source === 'function') {
|
|
9
|
-
return await resolveAuthToken(null, source);
|
|
10
|
-
}
|
|
11
|
-
return source ?? null;
|
|
12
|
-
}
|
|
13
7
|
export function createRemoteRuntimeEvents(connect) {
|
|
14
8
|
return createRemoteDomainEvents(RUNTIME_EVENT_DOMAINS, connect);
|
|
15
9
|
}
|
|
@@ -31,6 +25,7 @@ export function createEventSourceConnector(baseUrl, token, fetchImpl, options =
|
|
|
31
25
|
const handleError = options.onError ?? (options.reconnect?.enabled ? (() => { }) : undefined);
|
|
32
26
|
return async (domain, onEnvelope) => {
|
|
33
27
|
const url = buildEventSourceUrl(baseUrl, domain);
|
|
28
|
+
const getAuthToken = normalizeAuthToken(token ?? undefined);
|
|
34
29
|
return await openServerSentEventStream(fetchImpl, url, {
|
|
35
30
|
onEvent: (eventName, payload) => {
|
|
36
31
|
if (eventName !== domain)
|
|
@@ -42,8 +37,7 @@ export function createEventSourceConnector(baseUrl, token, fetchImpl, options =
|
|
|
42
37
|
onError: handleError,
|
|
43
38
|
}, {
|
|
44
39
|
reconnect: options.reconnect,
|
|
45
|
-
getAuthToken
|
|
46
|
-
authToken: typeof token === 'function' ? null : token,
|
|
40
|
+
getAuthToken,
|
|
47
41
|
});
|
|
48
42
|
};
|
|
49
43
|
}
|
|
@@ -85,7 +79,7 @@ export function createWebSocketConnector(baseUrl, token, WebSocketImpl, options
|
|
|
85
79
|
};
|
|
86
80
|
const onOpen = async () => {
|
|
87
81
|
reconnectAttempt = 0;
|
|
88
|
-
const authToken = await
|
|
82
|
+
const authToken = (await normalizeAuthToken(token ?? undefined)()) ?? null;
|
|
89
83
|
if (!authToken || !socket)
|
|
90
84
|
return;
|
|
91
85
|
socket.send(JSON.stringify({
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAClD,YAAY,CAAC,aAAa,CAAC,EAAE,OAAO,SAAS,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CACzF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC;AA4DD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,GAC3B,YAAY,CA+Cd"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ConfigurationError } from './_internal/errors/index.js';
|
|
2
2
|
import { createOperatorSdk, } from './_internal/operator/index.js';
|
|
3
3
|
import { createPeerSdk, } from './_internal/peer/index.js';
|
|
4
|
+
import { normalizeAuthToken } from './_internal/transport-http/index.js';
|
|
4
5
|
import { createEventSourceConnector, createRemoteRuntimeEvents, createWebSocketConnector, } from './_internal/transport-realtime/index.js';
|
|
5
6
|
import { createGoodVibesAuthClient, createMemoryTokenStore, } from './auth.js';
|
|
6
7
|
function requireBaseUrl(baseUrl) {
|
|
@@ -59,6 +60,8 @@ export function createGoodVibesSdk(options) {
|
|
|
59
60
|
const getAuthToken = tokenStore
|
|
60
61
|
? () => tokenStore.getToken()
|
|
61
62
|
: options.getAuthToken;
|
|
63
|
+
// Single normalized resolver used by realtime connectors.
|
|
64
|
+
const tokenResolver = normalizeAuthToken(getAuthToken ?? options.authToken ?? undefined);
|
|
62
65
|
const fetchImpl = () => requireFetchImplementation(options.fetch);
|
|
63
66
|
const operator = createOperatorSdk(createOperatorOptions({
|
|
64
67
|
...options,
|
|
@@ -74,13 +77,13 @@ export function createGoodVibesSdk(options) {
|
|
|
74
77
|
auth: createGoodVibesAuthClient(operator, tokenStore, getAuthToken),
|
|
75
78
|
realtime: {
|
|
76
79
|
viaSse() {
|
|
77
|
-
return createRemoteRuntimeEvents(createEventSourceConnector(baseUrl,
|
|
80
|
+
return createRemoteRuntimeEvents(createEventSourceConnector(baseUrl, tokenResolver, fetchImpl(), {
|
|
78
81
|
reconnect: options.realtime?.sseReconnect,
|
|
79
82
|
onError: options.realtime?.onError,
|
|
80
83
|
}));
|
|
81
84
|
},
|
|
82
85
|
viaWebSocket(webSocketImpl) {
|
|
83
|
-
return createRemoteRuntimeEvents(createWebSocketConnector(baseUrl,
|
|
86
|
+
return createRemoteRuntimeEvents(createWebSocketConnector(baseUrl, tokenResolver, requireWebSocketImplementation(webSocketImpl ?? options.WebSocketImpl), {
|
|
84
87
|
reconnect: options.realtime?.webSocketReconnect,
|
|
85
88
|
onError: options.realtime?.onError,
|
|
86
89
|
}));
|