@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.
Files changed (46) hide show
  1. package/dist/_internal/platform/core/orchestrator-turn-helpers.js +1 -1
  2. package/dist/_internal/platform/core/orchestrator-turn-loop.js +1 -1
  3. package/dist/_internal/platform/providers/anthropic-compat.d.ts.map +1 -1
  4. package/dist/_internal/platform/providers/anthropic-compat.js +9 -6
  5. package/dist/_internal/platform/providers/anthropic-sdk-provider.d.ts.map +1 -1
  6. package/dist/_internal/platform/providers/anthropic-sdk-provider.js +9 -6
  7. package/dist/_internal/platform/providers/anthropic.d.ts.map +1 -1
  8. package/dist/_internal/platform/providers/anthropic.js +9 -6
  9. package/dist/_internal/platform/providers/gemini.d.ts.map +1 -1
  10. package/dist/_internal/platform/providers/gemini.js +5 -5
  11. package/dist/_internal/platform/providers/interface.d.ts +12 -1
  12. package/dist/_internal/platform/providers/interface.d.ts.map +1 -1
  13. package/dist/_internal/platform/providers/llama-cpp.d.ts.map +1 -1
  14. package/dist/_internal/platform/providers/llama-cpp.js +4 -3
  15. package/dist/_internal/platform/providers/lm-studio-helpers.d.ts +2 -3
  16. package/dist/_internal/platform/providers/lm-studio-helpers.d.ts.map +1 -1
  17. package/dist/_internal/platform/providers/lm-studio-helpers.js +0 -9
  18. package/dist/_internal/platform/providers/lm-studio.d.ts.map +1 -1
  19. package/dist/_internal/platform/providers/lm-studio.js +7 -3
  20. package/dist/_internal/platform/providers/ollama.d.ts.map +1 -1
  21. package/dist/_internal/platform/providers/ollama.js +3 -3
  22. package/dist/_internal/platform/providers/openai-codex.d.ts.map +1 -1
  23. package/dist/_internal/platform/providers/openai-codex.js +3 -10
  24. package/dist/_internal/platform/providers/openai-compat.d.ts.map +1 -1
  25. package/dist/_internal/platform/providers/openai-compat.js +11 -7
  26. package/dist/_internal/platform/providers/openai.d.ts.map +1 -1
  27. package/dist/_internal/platform/providers/openai.js +11 -7
  28. package/dist/_internal/platform/providers/stop-reason-maps.d.ts +30 -0
  29. package/dist/_internal/platform/providers/stop-reason-maps.d.ts.map +1 -0
  30. package/dist/_internal/platform/providers/stop-reason-maps.js +89 -0
  31. package/dist/_internal/platform/runtime/forensics/classifier.d.ts.map +1 -1
  32. package/dist/_internal/platform/runtime/forensics/classifier.js +1 -4
  33. package/dist/_internal/platform/version.js +1 -1
  34. package/dist/_internal/transport-http/auth.d.ts +17 -0
  35. package/dist/_internal/transport-http/auth.d.ts.map +1 -1
  36. package/dist/_internal/transport-http/auth.js +22 -0
  37. package/dist/_internal/transport-http/http-core.d.ts.map +1 -1
  38. package/dist/_internal/transport-http/http-core.js +5 -3
  39. package/dist/_internal/transport-http/index.d.ts +2 -2
  40. package/dist/_internal/transport-http/index.d.ts.map +1 -1
  41. package/dist/_internal/transport-http/index.js +1 -1
  42. package/dist/_internal/transport-realtime/runtime-events.d.ts.map +1 -1
  43. package/dist/_internal/transport-realtime/runtime-events.js +4 -10
  44. package/dist/client.d.ts.map +1 -1
  45. package/dist/client.js +5 -2
  46. 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: 'tool_use',
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 === 'tool_use' && response.toolCalls.length === 0) {
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,EACZ,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AA6CxB,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;IAwMhD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA6C3F"}
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 stopReason = 'end';
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 === 'tool_use')
192
- stopReason = 'tool_use';
193
- else if (event.delta?.stop_reason === 'max_tokens')
194
- stopReason = 'max_tokens';
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,EACZ,WAAW,EACX,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAexB,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;IAkHhD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC3F"}
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 stopReason = 'end';
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 === 'tool_use')
87
- stopReason = 'tool_use';
88
- else if (event.delta.stop_reason === 'max_tokens')
89
- stopReason = 'max_tokens';
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,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAInI,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;IAkUhD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAkC3F"}
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 stopReason = 'end';
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 === 'tool_use')
300
- stopReason = 'tool_use';
301
- else if (event.delta?.stop_reason === 'max_tokens')
302
- stopReason = 'max_tokens';
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,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAYxB,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;IAyMhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmD1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAmC3F"}
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 = 'end';
283
- if (lastFinishReason === 'MAX_TOKENS')
284
- stopReason = 'max_tokens';
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
- stopReason: 'end' | 'tool_use' | 'max_tokens' | 'error';
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;AAUpF,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
+ {"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 || choice?.finish_reason === 'tool_calls'
151
- ? 'tool_use'
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 { ToolCall, ToolDefinition } from '@pellux/goodvibes-sdk/platform/types/tools';
3
- import type { ChatRequest, ChatResponse, ContentPart, ProviderMessage } from './interface.js';
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,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE3F,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GACnI;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/I;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG;IAC7D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CACJ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CACxB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACjD,uBAAuB,CASzB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAO1G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CASxG;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAsDrF;AAED,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAGrC;AAED,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAC9C,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAW/C;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,QAAQ,EAAE,GACpB,YAAY,CAAC,YAAY,CAAC,CAK5B;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,SAAS,GAAG,MAAM,CAM3F;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACrE,OAAO,CAAC,IAAI,CAAC,CAkEf;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAwBxB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,eAAe,EAAE,GAC1B,MAAM,CAMR;AAUD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUpE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM9D;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKjE;AAeD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,aAAa,CAQ1H"}
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,EAO5B,KAAK,WAAW,EAOjB,MAAM,wBAAwB,CAAC;AAEhC,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;YA8HjB,gBAAgB;CAiK/B"}
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, mapResponsesStopReason, normalizeProviderError, parseJsonObject, shouldFallbackFromNative, shouldFallbackFromResponses, toNativeChatInput, toRecord, } from './lm-studio-helpers.js';
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
- stopReason: 'end',
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: mapResponsesStopReason(status, resolvedToolCalls),
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;AAIpF,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;CAoGlC"}
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 || /tool/i.test(doneReason)
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;AAgJ/F,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CA+PvB;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"}
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: mapStopReason(status, resolvedToolCalls),
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,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAY5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAwM/F,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,kEAAkE;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IACjE,wFAAwF;IACxF,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gFAAgF;IAChF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,iGAAiG;IACjG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;CACvD;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IACtD,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,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,IAAI,EAAE,mBAAmB;IAkC/B,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAwNhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA8B1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAiD3F"}
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 stopReason = 'end';
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 === 'tool_calls')
337
- stopReason = 'tool_use';
338
- else if (finishReason === 'length')
339
- stopReason = 'max_tokens';
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 = 'tool_use';
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,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAUxB,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;IAuHhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA8B1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC3F"}
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 stopReason = 'end';
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 === 'tool_calls')
79
- stopReason = 'tool_use';
80
- else if (finishReason === 'length')
81
- stopReason = 'max_tokens';
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 = 'tool_use';
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,CAoEpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,YAAY,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CA6BR"}
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 stopReason === 'length'
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.46';
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":"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"}
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 resolveAuthToken(authToken, options.getAuthToken);
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 resolveAuthToken(authToken, options.getAuthToken);
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;AACjF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3E,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"}
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,EAAoB,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAA6D,MAAM,4BAA4B,CAAC;AAE7K,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;AASrE,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
+ {"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 { resolveAuthToken, openRawServerSentEventStream as openServerSentEventStream } from '../transport-http/index.js';
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: typeof token === 'function' ? token : undefined,
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 resolveAuthTokenSource(token);
82
+ const authToken = (await normalizeAuthToken(token ?? undefined)()) ?? null;
89
83
  if (!authToken || !socket)
90
84
  return;
91
85
  socket.send(JSON.stringify({
@@ -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;AAC7C,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,CA6Cd"}
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, getAuthToken ?? authToken, fetchImpl(), {
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, getAuthToken ?? authToken, requireWebSocketImplementation(webSocketImpl ?? options.WebSocketImpl), {
86
+ return createRemoteRuntimeEvents(createWebSocketConnector(baseUrl, tokenResolver, requireWebSocketImplementation(webSocketImpl ?? options.WebSocketImpl), {
84
87
  reconnect: options.realtime?.webSocketReconnect,
85
88
  onError: options.realtime?.onError,
86
89
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-sdk",
3
- "version": "0.18.46",
3
+ "version": "0.18.47",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mgd34msu/goodvibes-sdk.git"