@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.
- package/dist/agent/DextoAgent.cjs +3 -1
- package/dist/agent/DextoAgent.d.ts +2 -0
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +7 -2
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/index.browser.cjs +6 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +4 -0
- package/dist/llm/executor/provider-error.cjs +214 -0
- package/dist/llm/executor/provider-error.d.ts +26 -0
- package/dist/llm/executor/provider-error.d.ts.map +1 -0
- package/dist/llm/executor/provider-error.js +190 -0
- package/dist/llm/executor/stream-processor.cjs +34 -5
- package/dist/llm/executor/stream-processor.d.ts +4 -1
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +34 -5
- package/dist/llm/executor/turn-executor.cjs +320 -152
- package/dist/llm/executor/turn-executor.d.ts +6 -5
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +319 -148
- package/dist/llm/registry/sync.cjs +15 -2
- package/dist/llm/registry/sync.d.ts.map +1 -1
- package/dist/llm/registry/sync.js +15 -2
- package/dist/llm/services/vercel.cjs +32 -5
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +32 -5
- package/dist/session/chat-session.cjs +41 -11
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +41 -11
- package/dist/session/title-generator.cjs +19 -2
- package/dist/session/title-generator.d.ts +8 -0
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +19 -2
- package/dist/systemPrompt/contributors.cjs +10 -1
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +10 -1
- package/dist/telemetry/browser.cjs +138 -0
- package/dist/telemetry/browser.d.ts +30 -0
- package/dist/telemetry/browser.d.ts.map +1 -0
- package/dist/telemetry/browser.js +115 -0
- package/dist/telemetry/decorators.cjs +86 -82
- package/dist/telemetry/decorators.d.ts.map +1 -1
- package/dist/telemetry/decorators.js +86 -82
- package/dist/telemetry/index.cjs +5 -2
- package/dist/telemetry/index.d.ts +1 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +3 -1
- package/dist/telemetry/operation-span.cjs +74 -0
- package/dist/telemetry/operation-span.d.ts +13 -0
- package/dist/telemetry/operation-span.d.ts.map +1 -0
- package/dist/telemetry/operation-span.js +51 -0
- package/dist/telemetry/telemetry.cjs +2 -3
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +2 -3
- package/dist/telemetry/utils.cjs +11 -12
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/telemetry/utils.js +11 -12
- package/dist/tools/tool-call-metadata.cjs +121 -6
- package/dist/tools/tool-call-metadata.d.ts.map +1 -1
- package/dist/tools/tool-call-metadata.js +121 -6
- 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
|
|
46
|
-
var
|
|
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
|
|
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
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
806
|
-
|
|
807
|
-
|
|
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 ?
|
|
810
|
-
|
|
811
|
-
|
|
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
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
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
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
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
|
-
|
|
829
|
-
|
|
830
|
-
|
|
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
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
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,
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
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:
|
|
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
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
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
|
-
|
|
915
|
-
|
|
916
|
-
|
|
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(
|
|
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(
|
|
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
|
|
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 ===
|
|
1503
|
+
if (response.status === import_types3.ApprovalStatus.APPROVED) {
|
|
1264
1504
|
return {
|
|
1265
1505
|
approvalId: response.approvalId,
|
|
1266
|
-
status:
|
|
1506
|
+
status: import_types3.ApprovalStatus.APPROVED,
|
|
1267
1507
|
...response.data !== void 0 ? { data: response.data } : {}
|
|
1268
1508
|
};
|
|
1269
1509
|
}
|
|
1270
|
-
const status = response.status ===
|
|
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
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
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":"AAAA,OAAO,EACH,aAAa,EAMb,KAAK,YAAY,EAEpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAa,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS1D,OAAO,EACH,WAAW,EAId,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAMpD,OAAO,KAAK,EAAE,cAAc,EAAiB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EACR,UAAU,EACV,kBAAkB,EAClB,UAAU,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"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"}
|