@dexto/core 1.8.12 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/approval/manager.cjs +37 -325
- package/dist/approval/manager.d.ts +10 -109
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +37 -316
- package/dist/approval/schemas.cjs +8 -51
- package/dist/approval/schemas.d.ts +5 -179
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +8 -47
- package/dist/approval/types.cjs +0 -6
- package/dist/approval/types.d.ts +2 -27
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +0 -6
- package/dist/context/compaction/strategies/reactive-overflow-compaction.cjs +2 -0
- package/dist/context/compaction/strategies/reactive-overflow-compaction.d.ts.map +1 -1
- package/dist/context/compaction/strategies/reactive-overflow-compaction.js +2 -0
- package/dist/context/content-clone.cjs +55 -10
- package/dist/context/content-clone.d.ts +1 -0
- package/dist/context/content-clone.d.ts.map +1 -1
- package/dist/context/content-clone.js +53 -9
- package/dist/context/manager.cjs +25 -4
- package/dist/context/manager.d.ts +4 -2
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +25 -4
- package/dist/context/schemas.cjs +15 -1
- package/dist/context/schemas.d.ts.map +1 -1
- package/dist/context/schemas.js +15 -1
- package/dist/context/types.d.ts +11 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/errors/DextoRuntimeError.cjs +3 -1
- package/dist/errors/DextoRuntimeError.d.ts +5 -3
- package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
- package/dist/errors/DextoRuntimeError.js +3 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/types.d.ts +1 -0
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/events/index.d.ts +2 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/llm/executor/provider-error.cjs +25 -4
- package/dist/llm/executor/provider-error.d.ts.map +1 -1
- package/dist/llm/executor/provider-error.js +25 -4
- package/dist/llm/executor/stream-processor.cjs +98 -7
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +98 -7
- package/dist/llm/executor/turn-executor.cjs +96 -28
- package/dist/llm/executor/turn-executor.d.ts +2 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +96 -28
- package/dist/llm/providers/local/schemas.d.ts +2 -2
- package/dist/llm/services/factory.cjs +3 -2
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +3 -2
- package/dist/llm/services/types.d.ts +8 -0
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +6 -1
- package/dist/llm/services/vercel.d.ts +3 -2
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +6 -1
- package/dist/session/chat-session.cjs +4 -0
- package/dist/session/chat-session.d.ts +2 -1
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +4 -0
- package/dist/session/message-queue.cjs +48 -75
- package/dist/session/message-queue.d.ts +1 -2
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/message-queue.js +48 -75
- package/dist/session/session-manager.cjs +14 -32
- package/dist/session/session-manager.d.ts +5 -2
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +14 -32
- package/dist/storage/approvals/types.cjs +2 -9
- package/dist/storage/approvals/types.d.ts +4 -16
- package/dist/storage/approvals/types.d.ts.map +1 -1
- package/dist/storage/approvals/types.js +2 -8
- package/dist/storage/database/types.d.ts +5 -0
- package/dist/storage/database/types.d.ts.map +1 -1
- package/dist/storage/index.cjs +0 -2
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -2
- package/dist/storage/message-queue/types.d.ts +14 -6
- package/dist/storage/message-queue/types.d.ts.map +1 -1
- package/dist/storage/stores/backend.cjs +68 -32
- package/dist/storage/stores/backend.d.ts +17 -8
- package/dist/storage/stores/backend.d.ts.map +1 -1
- package/dist/storage/stores/backend.js +69 -33
- package/dist/storage/stores/in-memory.cjs +26 -11
- package/dist/storage/stores/in-memory.d.ts.map +1 -1
- package/dist/storage/stores/in-memory.js +27 -12
- package/dist/test-utils/in-memory-storage.cjs +11 -0
- package/dist/test-utils/in-memory-storage.js +11 -0
- package/dist/test-utils/session-state-stores.cjs +25 -9
- package/dist/test-utils/session-state-stores.js +26 -10
- package/dist/tools/approval/tool-approval-policy.cjs +87 -0
- package/dist/tools/approval/tool-approval-policy.d.ts +34 -0
- package/dist/tools/approval/tool-approval-policy.d.ts.map +1 -0
- package/dist/tools/approval/tool-approval-policy.js +64 -0
- package/dist/tools/error-codes.cjs +0 -1
- package/dist/tools/error-codes.d.ts +0 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +0 -1
- package/dist/tools/errors.cjs +0 -15
- package/dist/tools/errors.d.ts +0 -9
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +0 -15
- package/dist/tools/index.cjs +2 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -1
- package/dist/tools/tool-manager.cjs +94 -312
- package/dist/tools/tool-manager.d.ts +4 -19
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +95 -316
- package/dist/tools/types.d.ts +10 -9
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/service-initializer.cjs +3 -0
- package/dist/utils/service-initializer.d.ts +2 -1
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +3 -0
- package/package.json +2 -2
- package/dist/tools/pattern-utils.cjs +0 -33
- package/dist/tools/pattern-utils.d.ts +0 -20
- package/dist/tools/pattern-utils.d.ts.map +0 -1
- package/dist/tools/pattern-utils.js +0 -10
|
@@ -74,6 +74,7 @@ var import_schema = require("../utils/schema.js");
|
|
|
74
74
|
var import_types3 = require("../approval/types.js");
|
|
75
75
|
var import_schemas = require("../approval/schemas.js");
|
|
76
76
|
var import_session_tool_policy = require("./approval/session-tool-policy.js");
|
|
77
|
+
var import_tool_approval_policy = require("./approval/tool-approval-policy.js");
|
|
77
78
|
var import_tool_presentation = require("./presentation/tool-presentation.js");
|
|
78
79
|
var import_decorators = require("../telemetry/decorators.js");
|
|
79
80
|
var import_types4 = require("../storage/tool-executions/types.js");
|
|
@@ -103,6 +104,20 @@ let _ToolManager = class _ToolManager {
|
|
|
103
104
|
this.logger,
|
|
104
105
|
(pattern) => this.normalizeToolPolicyPattern(pattern)
|
|
105
106
|
);
|
|
107
|
+
this.toolApprovalPolicy = new import_tool_approval_policy.ToolApprovalPolicy({
|
|
108
|
+
getApprovalMode: () => this.approvalMode,
|
|
109
|
+
getLocalTool: (toolName) => this.agentTools.get(toolName),
|
|
110
|
+
isApprovalKeySessionApproved: ({ approvalKey, sessionId }) => this.approvalManager.isApprovalKeySessionApproved(approvalKey, sessionId),
|
|
111
|
+
isToolExplicitlyAllowed: async ({ toolName, sessionId }) => {
|
|
112
|
+
if (sessionId !== void 0 && this.isToolAutoApprovedForSession(sessionId, toolName)) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
if (this.isInAlwaysAllowList(toolName)) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return await this.allowedToolsProvider.isToolAllowed(toolName, sessionId);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
106
121
|
this.toolPresentation = new import_tool_presentation.ToolPresentation(
|
|
107
122
|
(toolName) => this.agentTools.get(toolName),
|
|
108
123
|
(toolName, args) => this.validateLocalToolArgs(toolName, args),
|
|
@@ -144,6 +159,7 @@ let _ToolManager = class _ToolManager {
|
|
|
144
159
|
cacheValid = false;
|
|
145
160
|
logger;
|
|
146
161
|
sessionToolPolicy;
|
|
162
|
+
toolApprovalPolicy;
|
|
147
163
|
toolPresentation;
|
|
148
164
|
cleanupHandlers = /* @__PURE__ */ new Set();
|
|
149
165
|
cleanupStarted = false;
|
|
@@ -463,58 +479,7 @@ let _ToolManager = class _ToolManager {
|
|
|
463
479
|
}
|
|
464
480
|
});
|
|
465
481
|
}
|
|
466
|
-
// ====================
|
|
467
|
-
getToolApprovalPatternKeyFn(toolName) {
|
|
468
|
-
const tool = this.agentTools.get(toolName);
|
|
469
|
-
return tool?.approval?.patternKey;
|
|
470
|
-
}
|
|
471
|
-
getToolSuggestApprovalPatternsFn(toolName) {
|
|
472
|
-
const tool = this.agentTools.get(toolName);
|
|
473
|
-
return tool?.approval?.suggestPatterns;
|
|
474
|
-
}
|
|
475
|
-
getToolApprovalOverrideFn(toolName) {
|
|
476
|
-
const tool = this.agentTools.get(toolName);
|
|
477
|
-
return tool?.approval?.override;
|
|
478
|
-
}
|
|
479
|
-
getToolApprovalOnGrantedFn(toolName) {
|
|
480
|
-
const tool = this.agentTools.get(toolName);
|
|
481
|
-
return tool?.approval?.onGranted;
|
|
482
|
-
}
|
|
483
|
-
getToolPatternKey(toolName, args) {
|
|
484
|
-
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
485
|
-
return null;
|
|
486
|
-
}
|
|
487
|
-
const getPatternKey = this.getToolApprovalPatternKeyFn(toolName);
|
|
488
|
-
if (!getPatternKey) {
|
|
489
|
-
return null;
|
|
490
|
-
}
|
|
491
|
-
try {
|
|
492
|
-
return getPatternKey(args);
|
|
493
|
-
} catch (error) {
|
|
494
|
-
this.logger.debug(
|
|
495
|
-
`Pattern key generation failed for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
496
|
-
);
|
|
497
|
-
return null;
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
getToolSuggestedPatterns(toolName, args) {
|
|
501
|
-
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
502
|
-
return void 0;
|
|
503
|
-
}
|
|
504
|
-
const suggestPatterns = this.getToolSuggestApprovalPatternsFn(toolName);
|
|
505
|
-
if (!suggestPatterns) {
|
|
506
|
-
return void 0;
|
|
507
|
-
}
|
|
508
|
-
try {
|
|
509
|
-
const patterns = suggestPatterns(args);
|
|
510
|
-
return patterns.length > 0 ? patterns : void 0;
|
|
511
|
-
} catch (error) {
|
|
512
|
-
this.logger.debug(
|
|
513
|
-
`Pattern suggestion failed for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
514
|
-
);
|
|
515
|
-
return void 0;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
482
|
+
// ==================== Approval Helpers ====================
|
|
518
483
|
/**
|
|
519
484
|
* Auto-approve pending tool approval requests for the same tool.
|
|
520
485
|
* Called after a user selects "remember choice" for a tool.
|
|
@@ -535,7 +500,7 @@ let _ToolManager = class _ToolManager {
|
|
|
535
500
|
if (request.metadata.toolName !== toolName) {
|
|
536
501
|
return false;
|
|
537
502
|
}
|
|
538
|
-
return
|
|
503
|
+
return true;
|
|
539
504
|
},
|
|
540
505
|
{ rememberChoice: false }
|
|
541
506
|
// Don't propagate remember choice to auto-approved requests
|
|
@@ -546,18 +511,7 @@ let _ToolManager = class _ToolManager {
|
|
|
546
511
|
);
|
|
547
512
|
}
|
|
548
513
|
}
|
|
549
|
-
|
|
550
|
-
* Auto-approve pending tool approval requests that are now covered by a remembered pattern.
|
|
551
|
-
* Called after a user selects "remember pattern" for a tool.
|
|
552
|
-
*/
|
|
553
|
-
autoApprovePendingPatternRequests(toolName, sessionId) {
|
|
554
|
-
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
555
|
-
return;
|
|
556
|
-
}
|
|
557
|
-
const getPatternKey = this.getToolApprovalPatternKeyFn(toolName);
|
|
558
|
-
if (!getPatternKey) {
|
|
559
|
-
return;
|
|
560
|
-
}
|
|
514
|
+
autoApprovePendingApprovalKeyRequests(approvalKey, sessionId) {
|
|
561
515
|
const count = this.approvalManager.autoApprovePendingRequests(
|
|
562
516
|
(request) => {
|
|
563
517
|
if (request.type !== import_types3.ApprovalType.TOOL_APPROVAL) {
|
|
@@ -566,64 +520,16 @@ let _ToolManager = class _ToolManager {
|
|
|
566
520
|
if (request.sessionId !== sessionId) {
|
|
567
521
|
return false;
|
|
568
522
|
}
|
|
569
|
-
|
|
570
|
-
return false;
|
|
571
|
-
}
|
|
572
|
-
if (request.metadata.directoryAccess !== void 0) {
|
|
573
|
-
return false;
|
|
574
|
-
}
|
|
575
|
-
let patternKey;
|
|
576
|
-
try {
|
|
577
|
-
patternKey = getPatternKey(request.metadata.args);
|
|
578
|
-
} catch (error) {
|
|
579
|
-
this.logger.debug(
|
|
580
|
-
`Pattern key generation failed for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
581
|
-
);
|
|
582
|
-
return false;
|
|
583
|
-
}
|
|
584
|
-
if (!patternKey) return false;
|
|
585
|
-
return this.approvalManager.matchesPattern(toolName, patternKey, sessionId);
|
|
523
|
+
return request.metadata.approvalKey === approvalKey;
|
|
586
524
|
},
|
|
587
|
-
{
|
|
588
|
-
// Don't propagate pattern choice to auto-approved requests
|
|
525
|
+
{ rememberChoice: false }
|
|
589
526
|
);
|
|
590
527
|
if (count > 0) {
|
|
591
528
|
this.logger.info(
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
}
|
|
596
|
-
/**
|
|
597
|
-
* Auto-approve pending tool approval requests that are now covered by a remembered directory.
|
|
598
|
-
* Called after a user selects "remember directory" for a directory-access prompt.
|
|
599
|
-
*/
|
|
600
|
-
autoApprovePendingDirectoryRequests(toolName, sessionId) {
|
|
601
|
-
const count = this.approvalManager.autoApprovePendingRequests(
|
|
602
|
-
(request) => {
|
|
603
|
-
if (request.type !== import_types3.ApprovalType.TOOL_APPROVAL) {
|
|
604
|
-
return false;
|
|
605
|
-
}
|
|
606
|
-
if (request.sessionId !== sessionId) {
|
|
607
|
-
return false;
|
|
608
|
-
}
|
|
609
|
-
if (request.metadata.toolName !== toolName) {
|
|
610
|
-
return false;
|
|
611
|
-
}
|
|
612
|
-
const directoryAccess = request.metadata.directoryAccess;
|
|
613
|
-
if (!directoryAccess) {
|
|
614
|
-
return false;
|
|
529
|
+
"Auto-approved parallel request(s) after approval key was remembered",
|
|
530
|
+
{
|
|
531
|
+
count
|
|
615
532
|
}
|
|
616
|
-
return this.approvalManager.isDirectorySessionApproved(
|
|
617
|
-
directoryAccess.parentDir,
|
|
618
|
-
sessionId
|
|
619
|
-
);
|
|
620
|
-
},
|
|
621
|
-
{ rememberDirectory: false }
|
|
622
|
-
);
|
|
623
|
-
if (count > 0) {
|
|
624
|
-
this.logger.info(
|
|
625
|
-
'Auto-approved parallel request(s) after user selected "remember directory"',
|
|
626
|
-
{ count, toolName }
|
|
627
533
|
);
|
|
628
534
|
}
|
|
629
535
|
}
|
|
@@ -924,89 +830,57 @@ let _ToolManager = class _ToolManager {
|
|
|
924
830
|
...callDescription !== void 0 ? { callDescription } : {},
|
|
925
831
|
...eventMeta !== void 0 ? { meta: eventMeta } : {}
|
|
926
832
|
};
|
|
927
|
-
const
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
input.toolCallId,
|
|
931
|
-
sessionId,
|
|
932
|
-
input.runContext
|
|
933
|
-
);
|
|
934
|
-
if (overrideRequest) {
|
|
935
|
-
if (!overrideRequest.directoryAccess) {
|
|
936
|
-
return {
|
|
937
|
-
kind: "approval-required",
|
|
938
|
-
call,
|
|
939
|
-
onGrantedRequestDetails: overrideRequest.onGrantedRequestDetails,
|
|
940
|
-
requestDetails: overrideRequest.requestDetails
|
|
941
|
-
};
|
|
942
|
-
}
|
|
943
|
-
const quickResult2 = await this.classifyQuickApprovalRequirement(
|
|
944
|
-
input.toolName,
|
|
945
|
-
validatedArgs,
|
|
833
|
+
const approvalGate = await this.toolApprovalPolicy.resolve({
|
|
834
|
+
args: validatedArgs,
|
|
835
|
+
getContext: () => this.buildToolExecutionContext({
|
|
946
836
|
sessionId,
|
|
947
|
-
overrideRequest.directoryAccess
|
|
948
|
-
);
|
|
949
|
-
if (quickResult2 === "ready") {
|
|
950
|
-
return { kind: "ready", call };
|
|
951
|
-
}
|
|
952
|
-
const displayPreview2 = await this.toolPresentation.preview({
|
|
953
|
-
toolName: input.toolName,
|
|
954
|
-
args: validatedArgs,
|
|
955
837
|
toolCallId: input.toolCallId,
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
onGrantedRequestDetails: overrideRequest.onGrantedRequestDetails,
|
|
964
|
-
requestDetails: {
|
|
965
|
-
...overrideRequest.requestDetails,
|
|
966
|
-
metadata: {
|
|
967
|
-
...overrideRequest.requestDetails.metadata,
|
|
968
|
-
presentationSnapshot,
|
|
969
|
-
...callDescription !== void 0 ? { description: callDescription } : {},
|
|
970
|
-
...displayPreview2 !== void 0 ? { displayPreview: displayPreview2 } : {},
|
|
971
|
-
...suggestedPatterns2 !== void 0 ? { suggestedPatterns: suggestedPatterns2 } : {}
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
};
|
|
975
|
-
}
|
|
976
|
-
const quickResult = await this.classifyQuickApprovalRequirement(
|
|
977
|
-
input.toolName,
|
|
978
|
-
validatedArgs,
|
|
979
|
-
sessionId
|
|
980
|
-
);
|
|
981
|
-
if (quickResult === "ready") {
|
|
838
|
+
runContext: input.runContext
|
|
839
|
+
}),
|
|
840
|
+
...sessionId !== void 0 ? { sessionId } : {},
|
|
841
|
+
source,
|
|
842
|
+
toolName: input.toolName
|
|
843
|
+
});
|
|
844
|
+
if (approvalGate.kind === "ready") {
|
|
982
845
|
return { kind: "ready", call };
|
|
983
846
|
}
|
|
984
|
-
|
|
985
|
-
|
|
847
|
+
return await this.prepareApprovalRequiredToolCall({
|
|
848
|
+
approvalGate,
|
|
986
849
|
args: validatedArgs,
|
|
987
|
-
|
|
850
|
+
call,
|
|
851
|
+
...callDescription !== void 0 ? { callDescription } : {},
|
|
852
|
+
...input.runContext !== void 0 ? { runContext: input.runContext } : {},
|
|
988
853
|
...sessionId !== void 0 ? { sessionId } : {},
|
|
989
|
-
|
|
854
|
+
toolCallId: input.toolCallId,
|
|
855
|
+
toolName: input.toolName
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
async prepareApprovalRequiredToolCall(input) {
|
|
859
|
+
const displayPreview = await this.toolPresentation.preview({
|
|
860
|
+
args: input.args,
|
|
861
|
+
...input.runContext !== void 0 ? { runContext: input.runContext } : {},
|
|
862
|
+
...input.sessionId !== void 0 ? { sessionId: input.sessionId } : {},
|
|
863
|
+
toolCallId: input.toolCallId,
|
|
864
|
+
toolName: input.toolName
|
|
990
865
|
});
|
|
991
|
-
const suggestedPatterns = this.getToolSuggestedPatterns(input.toolName, validatedArgs);
|
|
992
866
|
const hostRuntime = input.runContext?.hostRuntime;
|
|
993
867
|
const requestDetails = {
|
|
994
868
|
type: import_types3.ApprovalType.TOOL_APPROVAL,
|
|
995
|
-
...sessionId !== void 0 ? { sessionId } : {},
|
|
869
|
+
...input.sessionId !== void 0 ? { sessionId: input.sessionId } : {},
|
|
996
870
|
...hostRuntime !== void 0 ? { hostRuntime } : {},
|
|
997
871
|
metadata: {
|
|
998
872
|
toolName: input.toolName,
|
|
999
|
-
|
|
873
|
+
...input.approvalGate.approvalKey !== void 0 ? { approvalKey: input.approvalGate.approvalKey } : {},
|
|
874
|
+
presentationSnapshot: input.call.presentationSnapshot,
|
|
1000
875
|
toolCallId: input.toolCallId,
|
|
1001
|
-
args:
|
|
1002
|
-
...callDescription !== void 0 ? { description: callDescription } : {},
|
|
1003
|
-
...displayPreview !== void 0 ? { displayPreview } : {}
|
|
1004
|
-
...suggestedPatterns !== void 0 ? { suggestedPatterns } : {}
|
|
876
|
+
args: input.args,
|
|
877
|
+
...input.callDescription !== void 0 ? { description: input.callDescription } : {},
|
|
878
|
+
...displayPreview !== void 0 ? { displayPreview } : {}
|
|
1005
879
|
}
|
|
1006
880
|
};
|
|
1007
881
|
return {
|
|
1008
882
|
kind: "approval-required",
|
|
1009
|
-
call,
|
|
883
|
+
call: input.call,
|
|
1010
884
|
onGrantedRequestDetails: requestDetails,
|
|
1011
885
|
requestDetails
|
|
1012
886
|
};
|
|
@@ -1020,7 +894,7 @@ let _ToolManager = class _ToolManager {
|
|
|
1020
894
|
this.assertRecordedApprovalMatchesPreparedCall(prepared, request);
|
|
1021
895
|
return { prepared, request };
|
|
1022
896
|
}
|
|
1023
|
-
async applyApprovalDecision(recorded, decision
|
|
897
|
+
async applyApprovalDecision(recorded, decision) {
|
|
1024
898
|
if (decision.approvalId !== recorded.request.approvalId) {
|
|
1025
899
|
throw import_errors.ToolError.executionFailed(
|
|
1026
900
|
recorded.prepared.call.toolName,
|
|
@@ -1043,7 +917,7 @@ let _ToolManager = class _ToolManager {
|
|
|
1043
917
|
response: record.response
|
|
1044
918
|
};
|
|
1045
919
|
}
|
|
1046
|
-
await this.applyApprovalGrantedEffects(recorded.prepared, record.response
|
|
920
|
+
await this.applyApprovalGrantedEffects(recorded.prepared, record.response);
|
|
1047
921
|
return {
|
|
1048
922
|
kind: "ready",
|
|
1049
923
|
call: {
|
|
@@ -1082,28 +956,6 @@ let _ToolManager = class _ToolManager {
|
|
|
1082
956
|
assertOnGrantedRequestMatchesPreparedCall(prepared) {
|
|
1083
957
|
const approvalDetails = prepared.requestDetails;
|
|
1084
958
|
const grantedDetails = prepared.onGrantedRequestDetails;
|
|
1085
|
-
const directoryAccess = approvalDetails.type === import_types3.ApprovalType.TOOL_APPROVAL && "directoryAccess" in approvalDetails.metadata ? import_schemas.DirectoryAccessMetadataSchema.parse(approvalDetails.metadata.directoryAccess) : void 0;
|
|
1086
|
-
if (directoryAccess !== void 0) {
|
|
1087
|
-
const expected = {
|
|
1088
|
-
type: import_types3.ApprovalType.DIRECTORY_ACCESS,
|
|
1089
|
-
sessionId: approvalDetails.sessionId,
|
|
1090
|
-
hostRuntime: approvalDetails.hostRuntime,
|
|
1091
|
-
metadata: directoryAccess
|
|
1092
|
-
};
|
|
1093
|
-
const actual = {
|
|
1094
|
-
type: grantedDetails.type,
|
|
1095
|
-
sessionId: grantedDetails.sessionId,
|
|
1096
|
-
hostRuntime: grantedDetails.hostRuntime,
|
|
1097
|
-
metadata: grantedDetails.metadata
|
|
1098
|
-
};
|
|
1099
|
-
if (!(0, import_node_util.isDeepStrictEqual)(actual, expected)) {
|
|
1100
|
-
throw import_errors.ToolError.executionFailed(
|
|
1101
|
-
prepared.call.toolName,
|
|
1102
|
-
"Approval granted-effects request does not match the prepared tool call"
|
|
1103
|
-
);
|
|
1104
|
-
}
|
|
1105
|
-
return;
|
|
1106
|
-
}
|
|
1107
959
|
if (!(0, import_node_util.isDeepStrictEqual)(grantedDetails, approvalDetails)) {
|
|
1108
960
|
throw import_errors.ToolError.executionFailed(
|
|
1109
961
|
prepared.call.toolName,
|
|
@@ -1111,26 +963,30 @@ let _ToolManager = class _ToolManager {
|
|
|
1111
963
|
);
|
|
1112
964
|
}
|
|
1113
965
|
}
|
|
1114
|
-
async applyApprovalGrantedEffects(prepared, response
|
|
1115
|
-
const requestDetails = prepared.onGrantedRequestDetails;
|
|
966
|
+
async applyApprovalGrantedEffects(prepared, response) {
|
|
1116
967
|
const approvalRequestDetails = prepared.requestDetails;
|
|
1117
968
|
const sessionId = approvalRequestDetails.sessionId;
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
const
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
969
|
+
if (approvalRequestDetails.type === import_types3.ApprovalType.TOOL_APPROVAL) {
|
|
970
|
+
const toolMetadata = import_schemas.ToolApprovalMetadataSchema.parse(approvalRequestDetails.metadata);
|
|
971
|
+
const approvalKey = toolMetadata.approvalKey;
|
|
972
|
+
const data = response.data ? import_schemas.ToolApprovalResponseDataSchema.parse(response.data) : void 0;
|
|
973
|
+
if (approvalKey !== void 0) {
|
|
974
|
+
await this.approvalManager.addApprovedKey(
|
|
975
|
+
approvalKey,
|
|
976
|
+
data?.rememberChoice ? "session" : "once",
|
|
977
|
+
sessionId
|
|
978
|
+
);
|
|
979
|
+
}
|
|
980
|
+
if (!data) {
|
|
981
|
+
return;
|
|
982
|
+
}
|
|
1128
983
|
await this.handleRememberChoice(
|
|
1129
984
|
prepared.call.toolName,
|
|
1130
985
|
{
|
|
1131
|
-
data
|
|
986
|
+
data,
|
|
1132
987
|
...response.sessionId !== void 0 ? { sessionId: response.sessionId } : {}
|
|
1133
988
|
},
|
|
989
|
+
approvalKey,
|
|
1134
990
|
sessionId
|
|
1135
991
|
);
|
|
1136
992
|
}
|
|
@@ -1186,72 +1042,6 @@ let _ToolManager = class _ToolManager {
|
|
|
1186
1042
|
}
|
|
1187
1043
|
};
|
|
1188
1044
|
}
|
|
1189
|
-
async getToolApprovalOverrideRequest(toolName, args, toolCallId, sessionId, runContext) {
|
|
1190
|
-
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
1191
|
-
return null;
|
|
1192
|
-
}
|
|
1193
|
-
const getApprovalOverride = this.getToolApprovalOverrideFn(toolName);
|
|
1194
|
-
if (!getApprovalOverride) {
|
|
1195
|
-
return null;
|
|
1196
|
-
}
|
|
1197
|
-
const context = this.buildToolExecutionContext({ sessionId, toolCallId, runContext });
|
|
1198
|
-
const approvalRequest = await getApprovalOverride(args, context);
|
|
1199
|
-
if (!approvalRequest) {
|
|
1200
|
-
return null;
|
|
1201
|
-
}
|
|
1202
|
-
const requestDetails = {
|
|
1203
|
-
...approvalRequest,
|
|
1204
|
-
...sessionId && !approvalRequest.sessionId ? { sessionId } : {},
|
|
1205
|
-
...runContext?.hostRuntime !== void 0 && approvalRequest.hostRuntime === void 0 ? { hostRuntime: runContext.hostRuntime } : {}
|
|
1206
|
-
};
|
|
1207
|
-
if (requestDetails.type !== import_types3.ApprovalType.DIRECTORY_ACCESS) {
|
|
1208
|
-
return { requestDetails, onGrantedRequestDetails: requestDetails };
|
|
1209
|
-
}
|
|
1210
|
-
const parseResult = import_schemas.DirectoryAccessMetadataSchema.safeParse(requestDetails.metadata);
|
|
1211
|
-
if (!parseResult.success) {
|
|
1212
|
-
throw import_errors.ToolError.configInvalid(
|
|
1213
|
-
`Tool '${toolName}' returned invalid directory access metadata`
|
|
1214
|
-
);
|
|
1215
|
-
}
|
|
1216
|
-
const directoryAccess = parseResult.data;
|
|
1217
|
-
return {
|
|
1218
|
-
directoryAccess,
|
|
1219
|
-
onGrantedRequestDetails: requestDetails,
|
|
1220
|
-
requestDetails: {
|
|
1221
|
-
type: import_types3.ApprovalType.TOOL_APPROVAL,
|
|
1222
|
-
...requestDetails.sessionId !== void 0 ? { sessionId: requestDetails.sessionId } : {},
|
|
1223
|
-
...requestDetails.hostRuntime !== void 0 ? { hostRuntime: requestDetails.hostRuntime } : {},
|
|
1224
|
-
metadata: {
|
|
1225
|
-
toolName,
|
|
1226
|
-
toolCallId,
|
|
1227
|
-
args,
|
|
1228
|
-
directoryAccess
|
|
1229
|
-
}
|
|
1230
|
-
}
|
|
1231
|
-
};
|
|
1232
|
-
}
|
|
1233
|
-
async classifyQuickApprovalRequirement(toolName, args, sessionId, directoryAccess) {
|
|
1234
|
-
if (directoryAccess) {
|
|
1235
|
-
return this.approvalMode === "auto-approve" ? "ready" : "approval-required";
|
|
1236
|
-
}
|
|
1237
|
-
if (sessionId && this.isToolAutoApprovedForSession(sessionId, toolName)) {
|
|
1238
|
-
return "ready";
|
|
1239
|
-
}
|
|
1240
|
-
if (this.isInAlwaysAllowList(toolName)) {
|
|
1241
|
-
return "ready";
|
|
1242
|
-
}
|
|
1243
|
-
if (await this.allowedToolsProvider.isToolAllowed(toolName, sessionId)) {
|
|
1244
|
-
return "ready";
|
|
1245
|
-
}
|
|
1246
|
-
const patternKey = this.getToolPatternKey(toolName, args);
|
|
1247
|
-
if (patternKey && this.approvalManager.matchesPattern(toolName, patternKey, sessionId)) {
|
|
1248
|
-
return "ready";
|
|
1249
|
-
}
|
|
1250
|
-
if (this.approvalMode === "auto-approve") {
|
|
1251
|
-
return "ready";
|
|
1252
|
-
}
|
|
1253
|
-
return "approval-required";
|
|
1254
|
-
}
|
|
1255
1045
|
async executeTool(toolName, args, toolCallId, invocation) {
|
|
1256
1046
|
const { sessionId, runContext, hostRuntime } = this.resolveToolExecutionInvocation(invocation);
|
|
1257
1047
|
this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}' (toolCallId: ${toolCallId})`);
|
|
@@ -1284,17 +1074,14 @@ let _ToolManager = class _ToolManager {
|
|
|
1284
1074
|
this.resolveDirectApprovalIdentity(invocation, toolCallId)
|
|
1285
1075
|
);
|
|
1286
1076
|
const response = await this.requestApprovalDecision(recorded);
|
|
1287
|
-
applied = await this.applyApprovalDecision(
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
},
|
|
1296
|
-
runContext
|
|
1297
|
-
);
|
|
1077
|
+
applied = await this.applyApprovalDecision(recorded, {
|
|
1078
|
+
approvalId: response.approvalId,
|
|
1079
|
+
status: response.status,
|
|
1080
|
+
...response.reason !== void 0 ? { reason: response.reason } : {},
|
|
1081
|
+
...response.message !== void 0 ? { message: response.message } : {},
|
|
1082
|
+
...response.timeoutMs !== void 0 ? { timeoutMs: response.timeoutMs } : {},
|
|
1083
|
+
...response.data !== void 0 ? { data: response.data } : {}
|
|
1084
|
+
});
|
|
1298
1085
|
} catch (error) {
|
|
1299
1086
|
await this.recordDirectToolExecutionFailure(prepared.call, invocation, error);
|
|
1300
1087
|
throw error;
|
|
@@ -1800,26 +1587,21 @@ let _ToolManager = class _ToolManager {
|
|
|
1800
1587
|
/**
|
|
1801
1588
|
* Handle "remember" actions when user approves a tool.
|
|
1802
1589
|
*/
|
|
1803
|
-
async handleRememberChoice(toolName, response, sessionId) {
|
|
1590
|
+
async handleRememberChoice(toolName, response, approvalKey, sessionId) {
|
|
1804
1591
|
const data = response.data;
|
|
1805
1592
|
if (!data) return;
|
|
1806
1593
|
const rememberChoice = data.rememberChoice;
|
|
1807
|
-
const rememberPattern = data.rememberPattern;
|
|
1808
|
-
const rememberDirectory = data.rememberDirectory;
|
|
1809
1594
|
if (rememberChoice) {
|
|
1810
1595
|
const allowSessionId = sessionId ?? response.sessionId;
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
} else if (rememberDirectory) {
|
|
1821
|
-
const allowSessionId = sessionId ?? response.sessionId;
|
|
1822
|
-
this.autoApprovePendingDirectoryRequests(toolName, allowSessionId);
|
|
1596
|
+
if (approvalKey !== void 0) {
|
|
1597
|
+
this.autoApprovePendingApprovalKeyRequests(approvalKey, allowSessionId);
|
|
1598
|
+
} else {
|
|
1599
|
+
await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
|
|
1600
|
+
this.logger.info(
|
|
1601
|
+
`Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
|
|
1602
|
+
);
|
|
1603
|
+
this.autoApprovePendingToolRequests(toolName, allowSessionId);
|
|
1604
|
+
}
|
|
1823
1605
|
}
|
|
1824
1606
|
}
|
|
1825
1607
|
/**
|
|
@@ -127,6 +127,7 @@ export declare class ToolManager {
|
|
|
127
127
|
private cacheValid;
|
|
128
128
|
private logger;
|
|
129
129
|
private readonly sessionToolPolicy;
|
|
130
|
+
private readonly toolApprovalPolicy;
|
|
130
131
|
private readonly toolPresentation;
|
|
131
132
|
private cleanupHandlers;
|
|
132
133
|
private cleanupStarted;
|
|
@@ -248,12 +249,6 @@ export declare class ToolManager {
|
|
|
248
249
|
* Set up listeners for MCP notifications to invalidate cache on changes
|
|
249
250
|
*/
|
|
250
251
|
private setupNotificationListeners;
|
|
251
|
-
private getToolApprovalPatternKeyFn;
|
|
252
|
-
private getToolSuggestApprovalPatternsFn;
|
|
253
|
-
private getToolApprovalOverrideFn;
|
|
254
|
-
private getToolApprovalOnGrantedFn;
|
|
255
|
-
private getToolPatternKey;
|
|
256
|
-
private getToolSuggestedPatterns;
|
|
257
252
|
/**
|
|
258
253
|
* Auto-approve pending tool approval requests for the same tool.
|
|
259
254
|
* Called after a user selects "remember choice" for a tool.
|
|
@@ -263,16 +258,7 @@ export declare class ToolManager {
|
|
|
263
258
|
* @param sessionId The session ID for which the tool was allowed
|
|
264
259
|
*/
|
|
265
260
|
private autoApprovePendingToolRequests;
|
|
266
|
-
|
|
267
|
-
* Auto-approve pending tool approval requests that are now covered by a remembered pattern.
|
|
268
|
-
* Called after a user selects "remember pattern" for a tool.
|
|
269
|
-
*/
|
|
270
|
-
private autoApprovePendingPatternRequests;
|
|
271
|
-
/**
|
|
272
|
-
* Auto-approve pending tool approval requests that are now covered by a remembered directory.
|
|
273
|
-
* Called after a user selects "remember directory" for a directory-access prompt.
|
|
274
|
-
*/
|
|
275
|
-
private autoApprovePendingDirectoryRequests;
|
|
261
|
+
private autoApprovePendingApprovalKeyRequests;
|
|
276
262
|
getMcpManager(): MCPManager;
|
|
277
263
|
setContributorContextFactory(factory?: DynamicContributorContextFactory | null): void;
|
|
278
264
|
buildContributorContext(options?: {
|
|
@@ -310,8 +296,9 @@ export declare class ToolManager {
|
|
|
310
296
|
*/
|
|
311
297
|
getAllTools(): Promise<ToolSet>;
|
|
312
298
|
prepareToolCall(input: PrepareToolCallInput): Promise<PreparedToolCall>;
|
|
299
|
+
private prepareApprovalRequiredToolCall;
|
|
313
300
|
recordApprovalRequest(prepared: ApprovalRequiredPreparedToolCall, identity: ToolApprovalRecordIdentity): Promise<RecordedToolApproval>;
|
|
314
|
-
applyApprovalDecision(recorded: RecordedToolApproval, decision: ApprovalDecisionInput
|
|
301
|
+
applyApprovalDecision(recorded: RecordedToolApproval, decision: ApprovalDecisionInput): Promise<ToolApprovalDecisionApplication>;
|
|
315
302
|
requestApprovalDecision(recorded: RecordedToolApproval): Promise<ApprovalResponse>;
|
|
316
303
|
private assertRecordedApprovalMatchesPreparedCall;
|
|
317
304
|
private assertOnGrantedRequestMatchesPreparedCall;
|
|
@@ -321,8 +308,6 @@ export declare class ToolManager {
|
|
|
321
308
|
private resolveExecutableToolSource;
|
|
322
309
|
private createPreparedToolError;
|
|
323
310
|
private createPreparedToolTerminal;
|
|
324
|
-
private getToolApprovalOverrideRequest;
|
|
325
|
-
private classifyQuickApprovalRequirement;
|
|
326
311
|
executeTool(toolName: string, args: Record<string, unknown>, toolCallId: string, invocation?: ToolExecutionInvocation): Promise<import('./types.js').ToolExecutionResult>;
|
|
327
312
|
private emitPreparedToolCallEvent;
|
|
328
313
|
private replayExistingDirectToolExecution;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACH,OAAO,EACP,oBAAoB,EACpB,wBAAwB,EACxB,IAAI,EACJ,0BAA0B,EAC1B,mBAAmB,EACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACR,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EACR,eAAe,EACf,gBAAgB,EAChB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
|