@dexto/core 1.8.3 → 1.8.5

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 (63) hide show
  1. package/dist/agent/DextoAgent.cjs +3 -1
  2. package/dist/agent/DextoAgent.d.ts +2 -0
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +7 -2
  5. package/dist/events/index.d.ts +3 -0
  6. package/dist/events/index.d.ts.map +1 -1
  7. package/dist/index.browser.cjs +6 -0
  8. package/dist/index.browser.d.ts +2 -0
  9. package/dist/index.browser.d.ts.map +1 -1
  10. package/dist/index.browser.js +4 -0
  11. package/dist/llm/executor/provider-error.cjs +214 -0
  12. package/dist/llm/executor/provider-error.d.ts +26 -0
  13. package/dist/llm/executor/provider-error.d.ts.map +1 -0
  14. package/dist/llm/executor/provider-error.js +190 -0
  15. package/dist/llm/executor/stream-processor.cjs +34 -5
  16. package/dist/llm/executor/stream-processor.d.ts +4 -1
  17. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  18. package/dist/llm/executor/stream-processor.js +34 -5
  19. package/dist/llm/executor/turn-executor.cjs +320 -152
  20. package/dist/llm/executor/turn-executor.d.ts +6 -5
  21. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  22. package/dist/llm/executor/turn-executor.js +319 -148
  23. package/dist/llm/registry/sync.cjs +15 -2
  24. package/dist/llm/registry/sync.d.ts.map +1 -1
  25. package/dist/llm/registry/sync.js +15 -2
  26. package/dist/llm/services/vercel.cjs +32 -5
  27. package/dist/llm/services/vercel.d.ts.map +1 -1
  28. package/dist/llm/services/vercel.js +32 -5
  29. package/dist/session/chat-session.cjs +41 -11
  30. package/dist/session/chat-session.d.ts.map +1 -1
  31. package/dist/session/chat-session.js +41 -11
  32. package/dist/session/title-generator.cjs +19 -2
  33. package/dist/session/title-generator.d.ts +8 -0
  34. package/dist/session/title-generator.d.ts.map +1 -1
  35. package/dist/session/title-generator.js +19 -2
  36. package/dist/systemPrompt/contributors.cjs +10 -1
  37. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  38. package/dist/systemPrompt/contributors.js +10 -1
  39. package/dist/telemetry/browser.cjs +138 -0
  40. package/dist/telemetry/browser.d.ts +30 -0
  41. package/dist/telemetry/browser.d.ts.map +1 -0
  42. package/dist/telemetry/browser.js +115 -0
  43. package/dist/telemetry/decorators.cjs +86 -82
  44. package/dist/telemetry/decorators.d.ts.map +1 -1
  45. package/dist/telemetry/decorators.js +86 -82
  46. package/dist/telemetry/index.cjs +5 -2
  47. package/dist/telemetry/index.d.ts +1 -0
  48. package/dist/telemetry/index.d.ts.map +1 -1
  49. package/dist/telemetry/index.js +3 -1
  50. package/dist/telemetry/operation-span.cjs +74 -0
  51. package/dist/telemetry/operation-span.d.ts +13 -0
  52. package/dist/telemetry/operation-span.d.ts.map +1 -0
  53. package/dist/telemetry/operation-span.js +51 -0
  54. package/dist/telemetry/telemetry.cjs +2 -3
  55. package/dist/telemetry/telemetry.d.ts.map +1 -1
  56. package/dist/telemetry/telemetry.js +2 -3
  57. package/dist/telemetry/utils.cjs +11 -12
  58. package/dist/telemetry/utils.d.ts.map +1 -1
  59. package/dist/telemetry/utils.js +11 -12
  60. package/dist/tools/tool-call-metadata.cjs +121 -6
  61. package/dist/tools/tool-call-metadata.d.ts.map +1 -1
  62. package/dist/tools/tool-call-metadata.js +121 -6
  63. package/package.json +3 -2
@@ -42,13 +42,12 @@ var import_stream_processor = require("./stream-processor.js");
42
42
  var import_tool_output_truncator = require("./tool-output-truncator.js");
43
43
  var import_provider_options = require("./provider-options.js");
44
44
  var import_types = require("../../logger/v2/types.js");
45
- var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
46
- var import_types3 = require("../../errors/types.js");
47
- var import_error_codes = require("../error-codes.js");
45
+ var import_operation_span = require("../../telemetry/operation-span.js");
46
+ var import_provider_error = require("./provider-error.js");
48
47
  var import_error_conversion = require("../../utils/error-conversion.js");
49
48
  var import_codex_base_url = require("../providers/codex-base-url.js");
50
49
  var import_tool_definitions = require("./tool-definitions.js");
51
- var import_types4 = require("../../approval/types.js");
50
+ var import_types3 = require("../../approval/types.js");
52
51
  const MCP_TOOL_PREFIX = "mcp--";
53
52
  const MODEL_REQUEST_MAX_RETRIES = 2;
54
53
  const LLMFinishReasonStateSchema = import_zod.z.enum([
@@ -379,11 +378,19 @@ class TurnExecutor {
379
378
  this.currentModelStepId = `in-memory-model-step-${stepCount}`;
380
379
  modelStepPreparing = true;
381
380
  try {
382
- preparedModelRequest = await this.prepareNextModelRequest({
383
- contributorContext,
384
- supportsTools: turn.supportsTools,
385
- streaming: options.streaming
386
- });
381
+ preparedModelRequest = await (0, import_operation_span.recordOperationSpan)(
382
+ {
383
+ name: "turn.prepare_model_step",
384
+ componentName: "TurnExecutor",
385
+ attributes: this.createTurnStepSpanAttributes(stepCount)
386
+ },
387
+ () => this.prepareNextModelRequest({
388
+ contributorContext,
389
+ supportsTools: turn.supportsTools,
390
+ streaming: options.streaming
391
+ }),
392
+ this.logger
393
+ );
387
394
  } catch (error) {
388
395
  currentStepScope[Symbol.dispose]();
389
396
  currentStepScope = null;
@@ -409,18 +416,39 @@ class TurnExecutor {
409
416
  }
410
417
  currentStepScope = this.startModelStepScope();
411
418
  this.currentModelStepId = `in-memory-model-step-${stepCount}`;
412
- preparedModelRequest = await this.prepareNextModelRequest({
413
- contributorContext,
414
- supportsTools: turn.supportsTools,
415
- streaming: options.streaming
416
- });
419
+ preparedModelRequest = await (0, import_operation_span.recordOperationSpan)(
420
+ {
421
+ name: "turn.prepare_model_step",
422
+ componentName: "TurnExecutor",
423
+ attributes: this.createTurnStepSpanAttributes(stepCount)
424
+ },
425
+ () => this.prepareNextModelRequest({
426
+ contributorContext,
427
+ supportsTools: turn.supportsTools,
428
+ streaming: options.streaming
429
+ }),
430
+ this.logger
431
+ );
417
432
  }
418
433
  const modelStepRequest = preparedModelRequest;
419
434
  if (currentStepScope === null || modelStepRequest === null) {
420
435
  throw new Error("Model step request was not prepared");
421
436
  }
422
437
  this.logger.debug(`Step ${stepCount}: Starting`);
423
- const result = await this.runModelStepWithRetry(modelStepRequest);
438
+ const result = await (0, import_operation_span.recordOperationSpan)(
439
+ {
440
+ name: "turn.run_model_step",
441
+ componentName: "TurnExecutor",
442
+ attributes: this.createTurnStepSpanAttributes(stepCount),
443
+ resultAttributes: (stepResult) => ({
444
+ "llm.finish_reason": stepResult.finishReason,
445
+ "llm.output_text_length": stepResult.text.length,
446
+ "tool.count": stepResult.toolCalls.length
447
+ })
448
+ },
449
+ () => this.runModelStepWithRetry(modelStepRequest),
450
+ this.logger
451
+ );
424
452
  currentResult = result;
425
453
  currentToolCallsExecuted = result.finishReason !== "tool-calls";
426
454
  preparedModelRequest = null;
@@ -459,7 +487,18 @@ class TurnExecutor {
459
487
  toolCallsRunning = true;
460
488
  currentToolCallsExecuted = true;
461
489
  try {
462
- await this.executeModelToolCalls(result.toolCalls);
490
+ await (0, import_operation_span.recordOperationSpan)(
491
+ {
492
+ name: "turn.execute_tool_calls",
493
+ componentName: "TurnExecutor",
494
+ attributes: {
495
+ ...this.createTurnStepSpanAttributes(stepCount),
496
+ "tool.count": result.toolCalls.length
497
+ }
498
+ },
499
+ () => this.executeModelToolCalls(result.toolCalls),
500
+ this.logger
501
+ );
463
502
  } catch (error) {
464
503
  currentToolCallsExecuted = false;
465
504
  throw error;
@@ -480,7 +519,23 @@ class TurnExecutor {
480
519
  if (result.finishReason === "tool-calls" && !currentToolCallsExecuted) {
481
520
  throw new Error("Tool calls must finish before deciding the next model step");
482
521
  }
483
- const nextStep = await this.decideNextStep(result, stepCount);
522
+ const nextStep = await (0, import_operation_span.recordOperationSpan)(
523
+ {
524
+ name: "turn.decide_next_step",
525
+ componentName: "TurnExecutor",
526
+ attributes: {
527
+ ...this.createTurnStepSpanAttributes(stepCount),
528
+ "llm.finish_reason": result.finishReason,
529
+ "tool.calls_executed": currentToolCallsExecuted
530
+ },
531
+ resultAttributes: (decision) => ({
532
+ "turn.next_action": decision.kind,
533
+ "turn.next_step_count": decision.stepCount
534
+ })
535
+ },
536
+ () => this.decideNextStep(result, stepCount),
537
+ this.logger
538
+ );
484
539
  stepCount = nextStep.stepCount;
485
540
  currentResult = null;
486
541
  currentToolCallsExecuted = false;
@@ -584,6 +639,13 @@ class TurnExecutor {
584
639
  }
585
640
  };
586
641
  }
642
+ createTurnStepSpanAttributes(stepCount) {
643
+ return {
644
+ "turn.step_count": stepCount,
645
+ "llm.model": this.llmContext.model,
646
+ "llm.provider": this.llmContext.provider
647
+ };
648
+ }
587
649
  async finishTurn(input) {
588
650
  await this.contextManager.flush();
589
651
  this.setTelemetryAttributes(input.usage);
@@ -605,7 +667,13 @@ class TurnExecutor {
605
667
  this.eventBus.emit("llm:error", {
606
668
  error: mappedError,
607
669
  context: "TurnExecutor",
608
- recoverable: false
670
+ recoverable: false,
671
+ details: (0, import_provider_error.extractProviderErrorDetails)({
672
+ error,
673
+ provider: this.llmContext.provider,
674
+ model: this.llmContext.model,
675
+ sessionId: this.sessionId
676
+ })
609
677
  });
610
678
  await this.contextManager.flush();
611
679
  this.eventBus.emit("run:complete", {
@@ -802,48 +870,159 @@ class TurnExecutor {
802
870
  await this.injectQueuedMessages(coalesced);
803
871
  }
804
872
  await this.pruneOldToolOutputs();
805
- let prepared = await this.contextManager.getFormattedMessagesForLLM(
806
- input.contributorContext,
807
- this.llmContext
873
+ let systemPrompt = await (0, import_operation_span.recordOperationSpan)(
874
+ {
875
+ name: "system_prompt.build",
876
+ componentName: "TurnExecutor",
877
+ attributes: {
878
+ "llm.model": this.llmContext.model,
879
+ "llm.provider": this.llmContext.provider
880
+ }
881
+ },
882
+ () => this.contextManager.getSystemPrompt(input.contributorContext),
883
+ this.logger
884
+ );
885
+ let { preparedHistory, formattedMessages } = await (0, import_operation_span.recordOperationSpan)(
886
+ {
887
+ name: "context.build_messages",
888
+ componentName: "TurnExecutor",
889
+ attributes: {
890
+ "llm.model": this.llmContext.model,
891
+ "llm.provider": this.llmContext.provider
892
+ }
893
+ },
894
+ async () => {
895
+ const preparedHistory2 = (await this.contextManager.prepareHistory()).preparedHistory;
896
+ const formattedMessages2 = await this.contextManager.getFormattedMessages(
897
+ input.contributorContext,
898
+ this.llmContext,
899
+ systemPrompt,
900
+ preparedHistory2
901
+ );
902
+ return { preparedHistory: preparedHistory2, formattedMessages: formattedMessages2 };
903
+ },
904
+ this.logger
808
905
  );
809
- const toolDefinitions = input.supportsTools ? this.toolManager.filterToolsForSession(
810
- await this.toolManager.getAllTools(),
811
- this.sessionId
906
+ const toolDefinitions = input.supportsTools ? await (0, import_operation_span.recordOperationSpan)(
907
+ {
908
+ name: "tools.list",
909
+ componentName: "TurnExecutor",
910
+ attributes: { "tools.supports": input.supportsTools },
911
+ resultAttributes: (tools) => ({ "tools.count": Object.keys(tools).length })
912
+ },
913
+ async () => this.toolManager.filterToolsForSession(
914
+ await this.toolManager.getAllTools(),
915
+ this.sessionId
916
+ ),
917
+ this.logger
812
918
  ) : {};
813
- let estimatedInputTokens = await this.contextManager.getEstimatedNextInputTokens(
814
- prepared.systemPrompt,
815
- prepared.preparedHistory,
816
- toolDefinitions
919
+ let estimatedInputTokens = await (0, import_operation_span.recordOperationSpan)(
920
+ {
921
+ name: "context.token_estimate",
922
+ componentName: "TurnExecutor",
923
+ attributes: { "tools.count": Object.keys(toolDefinitions).length },
924
+ resultAttributes: (tokens) => ({ "context.estimated_input_tokens": tokens })
925
+ },
926
+ () => this.contextManager.getEstimatedNextInputTokens(
927
+ systemPrompt,
928
+ preparedHistory,
929
+ toolDefinitions
930
+ ),
931
+ this.logger
817
932
  );
818
933
  if (this.shouldCompact(estimatedInputTokens)) {
819
934
  this.logger.debug(
820
935
  `Pre-check: estimated ${estimatedInputTokens} tokens exceeds threshold, compacting`
821
936
  );
822
- const didCompact = await this.compactContext(
823
- estimatedInputTokens,
824
- input.contributorContext,
825
- toolDefinitions
937
+ const didCompact = await (0, import_operation_span.recordOperationSpan)(
938
+ {
939
+ name: "context.compact",
940
+ componentName: "TurnExecutor",
941
+ attributes: { "context.estimated_input_tokens": estimatedInputTokens }
942
+ },
943
+ () => this.compactContext(
944
+ estimatedInputTokens,
945
+ input.contributorContext,
946
+ toolDefinitions
947
+ ),
948
+ this.logger
826
949
  );
827
950
  if (didCompact) {
828
- prepared = await this.contextManager.getFormattedMessagesForLLM(
829
- input.contributorContext,
830
- this.llmContext
951
+ systemPrompt = await (0, import_operation_span.recordOperationSpan)(
952
+ {
953
+ name: "system_prompt.build",
954
+ componentName: "TurnExecutor",
955
+ attributes: {
956
+ "context.after_compaction": true,
957
+ "llm.model": this.llmContext.model,
958
+ "llm.provider": this.llmContext.provider
959
+ }
960
+ },
961
+ () => this.contextManager.getSystemPrompt(input.contributorContext),
962
+ this.logger
831
963
  );
832
- estimatedInputTokens = await this.contextManager.getEstimatedNextInputTokens(
833
- prepared.systemPrompt,
834
- prepared.preparedHistory,
835
- toolDefinitions
964
+ ({ preparedHistory, formattedMessages } = await (0, import_operation_span.recordOperationSpan)(
965
+ {
966
+ name: "context.build_messages",
967
+ componentName: "TurnExecutor",
968
+ attributes: {
969
+ "context.after_compaction": true,
970
+ "llm.model": this.llmContext.model,
971
+ "llm.provider": this.llmContext.provider
972
+ }
973
+ },
974
+ async () => {
975
+ const preparedHistory2 = (await this.contextManager.prepareHistory()).preparedHistory;
976
+ const formattedMessages2 = await this.contextManager.getFormattedMessages(
977
+ input.contributorContext,
978
+ this.llmContext,
979
+ systemPrompt,
980
+ preparedHistory2
981
+ );
982
+ return { preparedHistory: preparedHistory2, formattedMessages: formattedMessages2 };
983
+ },
984
+ this.logger
985
+ ));
986
+ estimatedInputTokens = await (0, import_operation_span.recordOperationSpan)(
987
+ {
988
+ name: "context.token_estimate",
989
+ componentName: "TurnExecutor",
990
+ attributes: {
991
+ "context.after_compaction": true,
992
+ "tools.count": Object.keys(toolDefinitions).length
993
+ },
994
+ resultAttributes: (tokens) => ({
995
+ "context.estimated_input_tokens": tokens
996
+ })
997
+ },
998
+ () => this.contextManager.getEstimatedNextInputTokens(
999
+ systemPrompt,
1000
+ preparedHistory,
1001
+ toolDefinitions
1002
+ ),
1003
+ this.logger
836
1004
  );
837
1005
  this.logger.debug(
838
1006
  `Post-compaction: recomputed estimate is ${estimatedInputTokens} tokens`
839
1007
  );
840
1008
  }
841
1009
  }
842
- const providerOptions = (0, import_provider_options.buildProviderOptions)({
843
- provider: this.llmContext.provider,
844
- model: this.llmContext.model,
845
- reasoning: this.config.reasoning
846
- });
1010
+ const providerOptions = await (0, import_operation_span.recordOperationSpan)(
1011
+ {
1012
+ name: "llm.request_setup",
1013
+ componentName: "TurnExecutor",
1014
+ attributes: {
1015
+ "llm.model": this.llmContext.model,
1016
+ "llm.provider": this.llmContext.provider
1017
+ }
1018
+ },
1019
+ () => (0, import_provider_options.buildProviderOptions)({
1020
+ provider: this.llmContext.provider,
1021
+ model: this.llmContext.model,
1022
+ reasoning: this.config.reasoning
1023
+ }),
1024
+ this.logger
1025
+ );
847
1026
  this.logger.debug("LLM request options", {
848
1027
  provider: this.llmContext.provider,
849
1028
  model: this.llmContext.model,
@@ -860,7 +1039,7 @@ class TurnExecutor {
860
1039
  ...reasoningBudgetTokens !== void 0 && { reasoningBudgetTokens }
861
1040
  } : void 0;
862
1041
  return {
863
- messages: prepared.formattedMessages,
1042
+ messages: formattedMessages,
864
1043
  tools: input.supportsTools ? (0, import_tool_definitions.createModelToolDefinitions)(toolDefinitions) : {},
865
1044
  toolDefinitions,
866
1045
  estimatedInputTokens,
@@ -891,31 +1070,49 @@ class TurnExecutor {
891
1070
  this.stepAbortController.signal,
892
1071
  this.getStreamProcessorConfig(request.estimatedInputTokens, request.reasoning),
893
1072
  this.logger,
894
- request.streaming
1073
+ request.streaming,
1074
+ false
895
1075
  );
896
- return streamProcessor.process(
897
- () => (0, import_ai.streamText)({
898
- model: this.model,
899
- stopWhen: (0, import_ai.stepCountIs)(1),
900
- maxRetries: 0,
901
- tools: request.tools,
902
- abortSignal: this.stepAbortController.signal,
903
- messages: request.messages,
904
- ...this.config.maxOutputTokens !== void 0 && {
905
- maxOutputTokens: this.config.maxOutputTokens
906
- },
907
- ...this.config.temperature !== void 0 && {
908
- temperature: this.config.temperature
909
- },
910
- // Provider-specific options (caching, reasoning, etc.)
911
- ...request.providerOptions !== void 0 && {
912
- providerOptions: request.providerOptions
1076
+ return (0, import_operation_span.recordOperationSpan)(
1077
+ {
1078
+ name: "llm.stream",
1079
+ componentName: "TurnExecutor",
1080
+ attributes: {
1081
+ "llm.model": this.llmContext.model,
1082
+ "llm.provider": this.llmContext.provider,
1083
+ "tools.count": Object.keys(request.toolDefinitions).length
913
1084
  },
914
- // Log stream-level errors (tool errors, API errors during streaming)
915
- onError: (error) => {
916
- this.logger.error("Stream error", { error });
917
- }
918
- })
1085
+ resultAttributes: (result) => ({
1086
+ "llm.finish_reason": result.finishReason,
1087
+ "llm.output_text_length": result.text.length,
1088
+ "tool.count": result.toolCalls.length
1089
+ })
1090
+ },
1091
+ () => streamProcessor.process(
1092
+ () => (0, import_ai.streamText)({
1093
+ model: this.model,
1094
+ stopWhen: (0, import_ai.stepCountIs)(1),
1095
+ maxRetries: 0,
1096
+ tools: request.tools,
1097
+ abortSignal: this.stepAbortController.signal,
1098
+ messages: request.messages,
1099
+ ...this.config.maxOutputTokens !== void 0 && {
1100
+ maxOutputTokens: this.config.maxOutputTokens
1101
+ },
1102
+ ...this.config.temperature !== void 0 && {
1103
+ temperature: this.config.temperature
1104
+ },
1105
+ // Provider-specific options (caching, reasoning, etc.)
1106
+ ...request.providerOptions !== void 0 && {
1107
+ providerOptions: request.providerOptions
1108
+ },
1109
+ // Log stream-level errors (tool errors, API errors during streaming)
1110
+ onError: (error) => {
1111
+ this.logger.error("Stream error", { error });
1112
+ }
1113
+ })
1114
+ ),
1115
+ this.logger
919
1116
  );
920
1117
  }
921
1118
  async runModelStepWithRetry(request) {
@@ -988,10 +1185,41 @@ class TurnExecutor {
988
1185
  async executeModelToolCalls(toolCalls) {
989
1186
  const preparedCalls = [];
990
1187
  for (const toolCall of toolCalls) {
991
- preparedCalls.push(await this.prepareModelToolCall(toolCall));
1188
+ preparedCalls.push(
1189
+ await (0, import_operation_span.recordOperationSpan)(
1190
+ {
1191
+ name: "tool.prepare",
1192
+ componentName: "TurnExecutor",
1193
+ attributes: {
1194
+ "tool.call_id": toolCall.toolCallId,
1195
+ "tool.name": toolCall.toolName
1196
+ },
1197
+ resultAttributes: (prepared) => ({ "tool.prepare_kind": prepared.kind })
1198
+ },
1199
+ () => this.prepareModelToolCall(toolCall),
1200
+ this.logger
1201
+ )
1202
+ );
992
1203
  }
993
1204
  const executionResults = await Promise.all(
994
- preparedCalls.map((prepared) => this.executePreparedModelToolCall(prepared))
1205
+ preparedCalls.map(
1206
+ (prepared) => (0, import_operation_span.recordOperationSpan)(
1207
+ {
1208
+ name: "tool.execute",
1209
+ componentName: "TurnExecutor",
1210
+ attributes: {
1211
+ "tool.call_id": prepared.toolCall.toolCallId,
1212
+ "tool.name": prepared.toolCall.toolName,
1213
+ "tool.prepare_kind": prepared.kind
1214
+ },
1215
+ resultAttributes: (result) => ({
1216
+ "tool.success": this.isToolExecutionSuccessful(result)
1217
+ })
1218
+ },
1219
+ () => this.executePreparedModelToolCall(prepared),
1220
+ this.logger
1221
+ )
1222
+ )
995
1223
  );
996
1224
  for (let index = 0; index < toolCalls.length; index += 1) {
997
1225
  const toolCall = toolCalls[index];
@@ -999,7 +1227,19 @@ class TurnExecutor {
999
1227
  if (toolCall === void 0 || executionResult === void 0) {
1000
1228
  throw new Error("Tool call result count must match emitted tool call count");
1001
1229
  }
1002
- await this.persistModelToolResult(toolCall, executionResult);
1230
+ await (0, import_operation_span.recordOperationSpan)(
1231
+ {
1232
+ name: "tool.persist_result",
1233
+ componentName: "TurnExecutor",
1234
+ attributes: {
1235
+ "tool.call_id": toolCall.toolCallId,
1236
+ "tool.name": toolCall.toolName,
1237
+ "tool.success": this.isToolExecutionSuccessful(executionResult)
1238
+ }
1239
+ },
1240
+ () => this.persistModelToolResult(toolCall, executionResult),
1241
+ this.logger
1242
+ );
1003
1243
  }
1004
1244
  }
1005
1245
  async prepareModelToolCall(toolCall) {
@@ -1260,14 +1500,14 @@ class TurnExecutor {
1260
1500
  };
1261
1501
  }
1262
1502
  toApprovalDecisionInput(response) {
1263
- if (response.status === import_types4.ApprovalStatus.APPROVED) {
1503
+ if (response.status === import_types3.ApprovalStatus.APPROVED) {
1264
1504
  return {
1265
1505
  approvalId: response.approvalId,
1266
- status: import_types4.ApprovalStatus.APPROVED,
1506
+ status: import_types3.ApprovalStatus.APPROVED,
1267
1507
  ...response.data !== void 0 ? { data: response.data } : {}
1268
1508
  };
1269
1509
  }
1270
- const status = response.status === import_types4.ApprovalStatus.DENIED ? import_types4.ApprovalStatus.DENIED : import_types4.ApprovalStatus.CANCELLED;
1510
+ const status = response.status === import_types3.ApprovalStatus.DENIED ? import_types3.ApprovalStatus.DENIED : import_types3.ApprovalStatus.CANCELLED;
1271
1511
  return {
1272
1512
  approvalId: response.approvalId,
1273
1513
  status,
@@ -1528,84 +1768,12 @@ class TurnExecutor {
1528
1768
  * Map provider errors to DextoRuntimeError.
1529
1769
  */
1530
1770
  mapProviderError(err) {
1531
- if (import_ai.APICallError.isInstance?.(err)) {
1532
- const status = err.statusCode;
1533
- const headers = err.responseHeaders || {};
1534
- const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
1535
- const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
1536
- if (status === 402) {
1537
- let balance;
1538
- try {
1539
- const parsed = JSON.parse(body);
1540
- const msg = parsed?.error?.message || "";
1541
- const match = msg.match(/Balance:\s*\$?([\d.]+)/i);
1542
- if (match) {
1543
- balance = parseFloat(match[1]);
1544
- }
1545
- } catch {
1546
- }
1547
- return new import_DextoRuntimeError.DextoRuntimeError(
1548
- import_error_codes.LLMErrorCode.INSUFFICIENT_CREDITS,
1549
- import_types3.ErrorScope.LLM,
1550
- import_types3.ErrorType.PAYMENT_REQUIRED,
1551
- `Insufficient Dexto credits${balance !== void 0 ? `. Balance: $${balance.toFixed(2)}` : ""}`,
1552
- {
1553
- sessionId: this.sessionId,
1554
- provider: this.llmContext.provider,
1555
- model: this.llmContext.model,
1556
- status,
1557
- balance,
1558
- body
1559
- },
1560
- "Run `dexto billing` to check your balance"
1561
- );
1562
- }
1563
- if (status === 429) {
1564
- return new import_DextoRuntimeError.DextoRuntimeError(
1565
- import_error_codes.LLMErrorCode.RATE_LIMIT_EXCEEDED,
1566
- import_types3.ErrorScope.LLM,
1567
- import_types3.ErrorType.RATE_LIMIT,
1568
- `Rate limit exceeded${body ? ` - ${body}` : ""}`,
1569
- {
1570
- sessionId: this.sessionId,
1571
- provider: this.llmContext.provider,
1572
- model: this.llmContext.model,
1573
- status,
1574
- retryAfter,
1575
- body
1576
- }
1577
- );
1578
- }
1579
- if (status === 408) {
1580
- return new import_DextoRuntimeError.DextoRuntimeError(
1581
- import_error_codes.LLMErrorCode.GENERATION_FAILED,
1582
- import_types3.ErrorScope.LLM,
1583
- import_types3.ErrorType.TIMEOUT,
1584
- `Provider timed out${body ? ` - ${body}` : ""}`,
1585
- {
1586
- sessionId: this.sessionId,
1587
- provider: this.llmContext.provider,
1588
- model: this.llmContext.model,
1589
- status,
1590
- body
1591
- }
1592
- );
1593
- }
1594
- return new import_DextoRuntimeError.DextoRuntimeError(
1595
- import_error_codes.LLMErrorCode.GENERATION_FAILED,
1596
- import_types3.ErrorScope.LLM,
1597
- import_types3.ErrorType.THIRD_PARTY,
1598
- `Provider error ${status}${body ? ` - ${body}` : ""}`,
1599
- {
1600
- sessionId: this.sessionId,
1601
- provider: this.llmContext.provider,
1602
- model: this.llmContext.model,
1603
- status,
1604
- body
1605
- }
1606
- );
1607
- }
1608
- return (0, import_error_conversion.toError)(err, this.logger);
1771
+ return (0, import_provider_error.mapProviderError)({
1772
+ error: err,
1773
+ provider: this.llmContext.provider,
1774
+ model: this.llmContext.model,
1775
+ sessionId: this.sessionId
1776
+ });
1609
1777
  }
1610
1778
  }
1611
1779
  // Annotate the CommonJS export names for ESM import in node:
@@ -21,8 +21,8 @@ export declare const ModelStepResultStateSchema: z.ZodObject<{
21
21
  unknown: "unknown";
22
22
  length: "length";
23
23
  cancelled: "cancelled";
24
- other: "other";
25
24
  stop: "stop";
25
+ other: "other";
26
26
  "content-filter": "content-filter";
27
27
  "tool-calls": "tool-calls";
28
28
  "max-steps": "max-steps";
@@ -74,8 +74,8 @@ export declare const TurnDriverStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject
74
74
  unknown: "unknown";
75
75
  length: "length";
76
76
  cancelled: "cancelled";
77
- other: "other";
78
77
  stop: "stop";
78
+ other: "other";
79
79
  "content-filter": "content-filter";
80
80
  "tool-calls": "tool-calls";
81
81
  "max-steps": "max-steps";
@@ -118,8 +118,8 @@ export declare const TurnDriverStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject
118
118
  unknown: "unknown";
119
119
  length: "length";
120
120
  cancelled: "cancelled";
121
- other: "other";
122
121
  stop: "stop";
122
+ other: "other";
123
123
  "content-filter": "content-filter";
124
124
  "tool-calls": "tool-calls";
125
125
  "max-steps": "max-steps";
@@ -137,8 +137,8 @@ export declare const TurnDriverStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject
137
137
  unknown: "unknown";
138
138
  length: "length";
139
139
  cancelled: "cancelled";
140
- other: "other";
141
140
  stop: "stop";
141
+ other: "other";
142
142
  "content-filter": "content-filter";
143
143
  "tool-calls": "tool-calls";
144
144
  "max-steps": "max-steps";
@@ -191,8 +191,8 @@ export declare const TurnDriverStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject
191
191
  unknown: "unknown";
192
192
  length: "length";
193
193
  cancelled: "cancelled";
194
- other: "other";
195
194
  stop: "stop";
195
+ other: "other";
196
196
  "content-filter": "content-filter";
197
197
  "tool-calls": "tool-calls";
198
198
  "max-steps": "max-steps";
@@ -298,6 +298,7 @@ export declare class TurnExecutor {
298
298
  private validateInitialToolSupport;
299
299
  private startTurn;
300
300
  private startModelStepScope;
301
+ private createTurnStepSpanAttributes;
301
302
  private finishTurn;
302
303
  private failTurn;
303
304
  private advanceStep;
@@ -1 +1 @@
1
- {"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"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"}