@dexto/core 1.5.7 → 1.5.8

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 (128) hide show
  1. package/dist/agent/DextoAgent.cjs +96 -5
  2. package/dist/agent/DextoAgent.d.ts +32 -7
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +96 -5
  5. package/dist/agent/schemas.cjs +5 -0
  6. package/dist/agent/schemas.d.ts +60 -21
  7. package/dist/agent/schemas.d.ts.map +1 -1
  8. package/dist/agent/schemas.js +5 -0
  9. package/dist/context/manager.cjs +1 -1
  10. package/dist/context/manager.js +1 -1
  11. package/dist/context/utils.cjs +69 -42
  12. package/dist/context/utils.d.ts.map +1 -1
  13. package/dist/context/utils.js +69 -42
  14. package/dist/events/index.cjs +4 -1
  15. package/dist/events/index.d.ts +37 -2
  16. package/dist/events/index.d.ts.map +1 -1
  17. package/dist/events/index.js +4 -1
  18. package/dist/index.browser.d.ts +1 -1
  19. package/dist/index.browser.d.ts.map +1 -1
  20. package/dist/llm/curation-config.cjs +82 -0
  21. package/dist/llm/curation-config.d.ts +13 -0
  22. package/dist/llm/curation-config.d.ts.map +1 -0
  23. package/dist/llm/curation-config.js +59 -0
  24. package/dist/llm/curation.cjs +57 -0
  25. package/dist/llm/curation.d.ts +16 -0
  26. package/dist/llm/curation.d.ts.map +1 -0
  27. package/dist/llm/curation.js +34 -0
  28. package/dist/llm/errors.cjs +1 -1
  29. package/dist/llm/errors.d.ts +8 -8
  30. package/dist/llm/errors.js +1 -1
  31. package/dist/llm/executor/provider-options.cjs +1 -1
  32. package/dist/llm/executor/provider-options.js +1 -1
  33. package/dist/llm/executor/turn-executor.cjs +8 -2
  34. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  35. package/dist/llm/executor/turn-executor.js +8 -2
  36. package/dist/llm/index.cjs +14 -3
  37. package/dist/llm/index.d.ts +3 -1
  38. package/dist/llm/index.d.ts.map +1 -1
  39. package/dist/llm/index.js +13 -2
  40. package/dist/llm/registry/auto-update.cjs +263 -0
  41. package/dist/llm/registry/auto-update.d.ts +27 -0
  42. package/dist/llm/registry/auto-update.d.ts.map +1 -0
  43. package/dist/llm/registry/auto-update.js +227 -0
  44. package/dist/llm/registry/index.cjs +806 -0
  45. package/dist/llm/{registry.d.ts → registry/index.d.ts} +19 -41
  46. package/dist/llm/registry/index.d.ts.map +1 -0
  47. package/dist/llm/registry/index.js +756 -0
  48. package/dist/llm/registry/models.generated.cjs +4861 -0
  49. package/dist/llm/registry/models.generated.d.ts +431 -0
  50. package/dist/llm/registry/models.generated.d.ts.map +1 -0
  51. package/dist/llm/registry/models.generated.js +4838 -0
  52. package/dist/llm/registry/models.manual.cjs +44 -0
  53. package/dist/llm/registry/models.manual.d.ts +22 -0
  54. package/dist/llm/registry/models.manual.d.ts.map +1 -0
  55. package/dist/llm/registry/models.manual.js +21 -0
  56. package/dist/llm/registry/sync.cjs +354 -0
  57. package/dist/llm/registry/sync.d.ts +41 -0
  58. package/dist/llm/registry/sync.d.ts.map +1 -0
  59. package/dist/llm/registry/sync.js +328 -0
  60. package/dist/llm/resolver.cjs +27 -18
  61. package/dist/llm/resolver.d.ts +1 -1
  62. package/dist/llm/resolver.d.ts.map +1 -1
  63. package/dist/llm/resolver.js +28 -20
  64. package/dist/llm/schemas.cjs +13 -1
  65. package/dist/llm/schemas.d.ts +23 -23
  66. package/dist/llm/schemas.d.ts.map +1 -1
  67. package/dist/llm/schemas.js +14 -1
  68. package/dist/llm/services/factory.cjs +4 -4
  69. package/dist/llm/services/factory.d.ts.map +1 -1
  70. package/dist/llm/services/factory.js +4 -4
  71. package/dist/llm/services/test-utils.integration.cjs +1 -1
  72. package/dist/llm/services/test-utils.integration.js +1 -1
  73. package/dist/llm/services/vercel.cjs +4 -1
  74. package/dist/llm/services/vercel.d.ts +1 -0
  75. package/dist/llm/services/vercel.d.ts.map +1 -1
  76. package/dist/llm/services/vercel.js +4 -1
  77. package/dist/llm/types.cjs +1 -1
  78. package/dist/llm/types.d.ts +1 -1
  79. package/dist/llm/types.d.ts.map +1 -1
  80. package/dist/llm/types.js +1 -1
  81. package/dist/llm/validation.cjs +1 -1
  82. package/dist/llm/validation.js +1 -1
  83. package/dist/resources/handlers/filesystem-handler.cjs +25 -0
  84. package/dist/resources/handlers/filesystem-handler.d.ts +1 -0
  85. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  86. package/dist/resources/handlers/filesystem-handler.js +25 -0
  87. package/dist/session/chat-session.cjs +1 -1
  88. package/dist/session/chat-session.js +1 -1
  89. package/dist/session/message-queue.cjs +29 -5
  90. package/dist/session/message-queue.d.ts +3 -1
  91. package/dist/session/message-queue.d.ts.map +1 -1
  92. package/dist/session/message-queue.js +29 -5
  93. package/dist/session/session-manager.cjs +40 -3
  94. package/dist/session/session-manager.d.ts +3 -1
  95. package/dist/session/session-manager.d.ts.map +1 -1
  96. package/dist/session/session-manager.js +30 -3
  97. package/dist/session/types.d.ts +1 -0
  98. package/dist/session/types.d.ts.map +1 -1
  99. package/dist/tools/internal-tools/provider.d.ts +3 -1
  100. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  101. package/dist/tools/internal-tools/registry.d.ts +1 -1
  102. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  103. package/dist/tools/tool-call-metadata.cjs +75 -0
  104. package/dist/tools/tool-call-metadata.d.ts +16 -0
  105. package/dist/tools/tool-call-metadata.d.ts.map +1 -0
  106. package/dist/tools/tool-call-metadata.js +51 -0
  107. package/dist/tools/tool-manager.cjs +257 -30
  108. package/dist/tools/tool-manager.d.ts +43 -2
  109. package/dist/tools/tool-manager.d.ts.map +1 -1
  110. package/dist/tools/tool-manager.js +257 -30
  111. package/dist/utils/api-key-resolver.cjs +1 -1
  112. package/dist/utils/api-key-resolver.js +1 -1
  113. package/dist/utils/env.cjs +49 -0
  114. package/dist/utils/env.d.ts +4 -0
  115. package/dist/utils/env.d.ts.map +1 -0
  116. package/dist/utils/env.js +24 -0
  117. package/dist/utils/index.cjs +3 -1
  118. package/dist/utils/index.d.ts +1 -0
  119. package/dist/utils/index.d.ts.map +1 -1
  120. package/dist/utils/index.js +1 -0
  121. package/dist/utils/service-initializer.cjs +17 -5
  122. package/dist/utils/service-initializer.d.ts +23 -4
  123. package/dist/utils/service-initializer.d.ts.map +1 -1
  124. package/dist/utils/service-initializer.js +17 -5
  125. package/package.json +6 -2
  126. package/dist/llm/registry.cjs +0 -2075
  127. package/dist/llm/registry.d.ts.map +0 -1
  128. package/dist/llm/registry.js +0 -2025
@@ -73,7 +73,9 @@ var import_errors2 = require("../errors/index.js");
73
73
  var import_types2 = require("../logger/v2/types.js");
74
74
  var import_types3 = require("../approval/types.js");
75
75
  var import_decorators = require("../telemetry/decorators.js");
76
+ var import_tool_call_metadata = require("./tool-call-metadata.js");
76
77
  var import_bash_pattern_utils = require("./bash-pattern-utils.js");
78
+ var import_env = require("../utils/env.js");
77
79
  var _ToolManager_decorators, _init;
78
80
  _ToolManager_decorators = [(0, import_decorators.InstrumentClass)({
79
81
  prefix: "tool",
@@ -108,6 +110,10 @@ let _ToolManager = class _ToolManager {
108
110
  // When a skill with allowedTools is invoked, those tools are auto-approved (skip confirmation)
109
111
  // This is ADDITIVE - other tools are NOT blocked, they just go through normal approval flow
110
112
  sessionAutoApproveTools = /* @__PURE__ */ new Map();
113
+ // Session-level auto-approve tools set by users (UI)
114
+ sessionUserAutoApproveTools = /* @__PURE__ */ new Map();
115
+ sessionDisabledTools = /* @__PURE__ */ new Map();
116
+ globalDisabledTools = [];
111
117
  constructor(mcpManager, approvalManager, allowedToolsProvider, approvalMode, agentEventBus, toolPolicies, options, logger) {
112
118
  this.mcpManager = mcpManager;
113
119
  this.approvalManager = approvalManager;
@@ -202,6 +208,30 @@ let _ToolManager = class _ToolManager {
202
208
  );
203
209
  this.logger.debug(`Auto-approve tools: ${autoApproveTools.join(", ")}`);
204
210
  }
211
+ /**
212
+ * Set session-level auto-approve tools chosen by the user.
213
+ */
214
+ setSessionUserAutoApproveTools(sessionId, autoApproveTools) {
215
+ if (autoApproveTools.length === 0) {
216
+ this.clearSessionUserAutoApproveTools(sessionId);
217
+ return;
218
+ }
219
+ this.sessionUserAutoApproveTools.set(sessionId, autoApproveTools);
220
+ this.logger.info(
221
+ `Session user auto-approve tools set for '${sessionId}': ${autoApproveTools.length} tools`
222
+ );
223
+ this.logger.debug(`User auto-approve tools: ${autoApproveTools.join(", ")}`);
224
+ }
225
+ /**
226
+ * Clear session-level auto-approve tools chosen by the user.
227
+ */
228
+ clearSessionUserAutoApproveTools(sessionId) {
229
+ const hadAutoApprove = this.sessionUserAutoApproveTools.has(sessionId);
230
+ this.sessionUserAutoApproveTools.delete(sessionId);
231
+ if (hadAutoApprove) {
232
+ this.logger.info(`Session user auto-approve tools cleared for '${sessionId}'`);
233
+ }
234
+ }
205
235
  /**
206
236
  * Clear session-level auto-approve tools.
207
237
  * Call this when the session ends or when the skill completes.
@@ -215,6 +245,76 @@ let _ToolManager = class _ToolManager {
215
245
  this.logger.info(`Session auto-approve tools cleared for '${sessionId}'`);
216
246
  }
217
247
  }
248
+ hasSessionUserAutoApproveTools(sessionId) {
249
+ return this.sessionUserAutoApproveTools.has(sessionId);
250
+ }
251
+ // ============= ENABLED/DISABLED TOOLS =============
252
+ /**
253
+ * Set global disabled tools (agent-level preferences).
254
+ */
255
+ setGlobalDisabledTools(toolNames) {
256
+ this.globalDisabledTools = [...toolNames];
257
+ this.logger.info("Global disabled tools updated", {
258
+ count: toolNames.length
259
+ });
260
+ this.agentEventBus.emit("tools:enabled-updated", {
261
+ scope: "global",
262
+ disabledTools: [...this.globalDisabledTools]
263
+ });
264
+ }
265
+ getGlobalDisabledTools() {
266
+ return [...this.globalDisabledTools];
267
+ }
268
+ /**
269
+ * Set session-level disabled tools (overrides global list).
270
+ */
271
+ setSessionDisabledTools(sessionId, toolNames) {
272
+ if (toolNames.length === 0) {
273
+ this.clearSessionDisabledTools(sessionId);
274
+ return;
275
+ }
276
+ this.sessionDisabledTools.set(sessionId, [...toolNames]);
277
+ this.logger.info("Session disabled tools updated", {
278
+ sessionId,
279
+ count: toolNames.length
280
+ });
281
+ this.agentEventBus.emit("tools:enabled-updated", {
282
+ scope: "session",
283
+ sessionId,
284
+ disabledTools: [...toolNames]
285
+ });
286
+ }
287
+ /**
288
+ * Clear session-level disabled tools.
289
+ */
290
+ clearSessionDisabledTools(sessionId) {
291
+ const hadOverrides = this.sessionDisabledTools.has(sessionId);
292
+ this.sessionDisabledTools.delete(sessionId);
293
+ if (hadOverrides) {
294
+ this.logger.info("Session disabled tools cleared", { sessionId });
295
+ }
296
+ }
297
+ /**
298
+ * Get disabled tools for a session (session override wins).
299
+ */
300
+ getDisabledTools(sessionId) {
301
+ if (sessionId && this.sessionDisabledTools.has(sessionId)) {
302
+ return this.sessionDisabledTools.get(sessionId) ?? [];
303
+ }
304
+ return this.globalDisabledTools;
305
+ }
306
+ /**
307
+ * Filter a tool set based on disabled tools for a session.
308
+ */
309
+ filterToolsForSession(toolSet, sessionId) {
310
+ const disabled = new Set(this.getDisabledTools(sessionId));
311
+ if (disabled.size === 0) {
312
+ return toolSet;
313
+ }
314
+ return Object.fromEntries(
315
+ Object.entries(toolSet).filter(([toolName]) => !disabled.has(toolName))
316
+ );
317
+ }
218
318
  /**
219
319
  * Check if a session has auto-approve tools set.
220
320
  *
@@ -225,7 +325,7 @@ let _ToolManager = class _ToolManager {
225
325
  return this.sessionAutoApproveTools.has(sessionId);
226
326
  }
227
327
  /**
228
- * Get the auto-approve tools for a session.
328
+ * Get the auto-approve tools for a session (skill-provided list).
229
329
  *
230
330
  * @param sessionId The session ID to check
231
331
  * @returns Array of auto-approve tool names, or undefined if none set
@@ -233,6 +333,21 @@ let _ToolManager = class _ToolManager {
233
333
  getSessionAutoApproveTools(sessionId) {
234
334
  return this.sessionAutoApproveTools.get(sessionId);
235
335
  }
336
+ /**
337
+ * Get the user auto-approve tools for a session.
338
+ */
339
+ getSessionUserAutoApproveTools(sessionId) {
340
+ return this.sessionUserAutoApproveTools.get(sessionId);
341
+ }
342
+ /**
343
+ * Combined auto-approve list for a session.
344
+ */
345
+ getCombinedSessionAutoApproveTools(sessionId) {
346
+ return [
347
+ ...this.sessionAutoApproveTools.get(sessionId) ?? [],
348
+ ...this.sessionUserAutoApproveTools.get(sessionId) ?? []
349
+ ];
350
+ }
236
351
  /**
237
352
  * Check if a tool should be auto-approved for a session.
238
353
  * Returns true if the tool is in the session's auto-approve list.
@@ -242,8 +357,8 @@ let _ToolManager = class _ToolManager {
242
357
  * @returns true if the tool should be auto-approved
243
358
  */
244
359
  isToolAutoApprovedForSession(sessionId, toolName) {
245
- const autoApproveTools = this.sessionAutoApproveTools.get(sessionId);
246
- if (!autoApproveTools) {
360
+ const autoApproveTools = this.getCombinedSessionAutoApproveTools(sessionId);
361
+ if (autoApproveTools.length === 0) {
247
362
  return false;
248
363
  }
249
364
  return autoApproveTools.some((pattern) => this.matchesToolPolicy(toolName, pattern));
@@ -440,7 +555,8 @@ let _ToolManager = class _ToolManager {
440
555
  allTools[qualifiedName] = {
441
556
  ...toolDef,
442
557
  name: qualifiedName,
443
- description: `${toolDef.description || "No description provided"} (internal tool)`
558
+ description: `${toolDef.description || "No description provided"} (internal tool)`,
559
+ parameters: (0, import_tool_call_metadata.wrapToolParametersSchema)(toolDef.parameters)
444
560
  };
445
561
  }
446
562
  for (const [toolName, toolDef] of Object.entries(customTools)) {
@@ -448,7 +564,8 @@ let _ToolManager = class _ToolManager {
448
564
  allTools[qualifiedName] = {
449
565
  ...toolDef,
450
566
  name: qualifiedName,
451
- description: `${toolDef.description || "No description provided"} (custom tool)`
567
+ description: `${toolDef.description || "No description provided"} (custom tool)`,
568
+ parameters: (0, import_tool_call_metadata.wrapToolParametersSchema)(toolDef.parameters)
452
569
  };
453
570
  }
454
571
  for (const [toolName, toolDef] of Object.entries(mcpTools)) {
@@ -456,7 +573,8 @@ let _ToolManager = class _ToolManager {
456
573
  allTools[qualifiedName] = {
457
574
  ...toolDef,
458
575
  name: qualifiedName,
459
- description: `${toolDef.description || "No description provided"} (via MCP servers)`
576
+ description: `${toolDef.description || "No description provided"} (via MCP servers)`,
577
+ parameters: (0, import_tool_call_metadata.wrapToolParametersSchema)(toolDef.parameters)
460
578
  };
461
579
  }
462
580
  const totalTools = Object.keys(allTools).length;
@@ -492,21 +610,25 @@ let _ToolManager = class _ToolManager {
492
610
  * @param abortSignal Optional abort signal for cancellation support
493
611
  */
494
612
  async executeTool(toolName, args, toolCallId, sessionId, abortSignal) {
613
+ const { toolArgs: rawToolArgs, meta } = (0, import_tool_call_metadata.extractToolCallMeta)(args);
614
+ let toolArgs = rawToolArgs;
615
+ const backgroundTasksEnabled = (0, import_env.isBackgroundTasksEnabled)();
495
616
  this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}' (toolCallId: ${toolCallId})`);
496
- this.logger.debug(`Tool args: ${JSON.stringify(args, null, 2)}`);
617
+ this.logger.debug(`Tool args: ${JSON.stringify(toolArgs, null, 2)}`);
497
618
  if (sessionId) {
498
619
  this.agentEventBus.emit("llm:tool-call", {
499
620
  toolName,
500
- args,
621
+ args: toolArgs,
501
622
  callId: toolCallId,
502
623
  sessionId
503
624
  });
504
625
  }
505
626
  const { requireApproval, approvalStatus } = await this.handleToolApproval(
506
627
  toolName,
507
- args,
628
+ toolArgs,
508
629
  toolCallId,
509
- sessionId
630
+ sessionId,
631
+ meta.callDescription
510
632
  );
511
633
  this.logger.debug(`\u2705 Tool execution approved: ${toolName}`);
512
634
  this.logger.info(
@@ -523,7 +645,7 @@ let _ToolManager = class _ToolManager {
523
645
  if (this.pluginManager && this.sessionManager && this.stateManager) {
524
646
  const beforePayload = {
525
647
  toolName,
526
- args,
648
+ args: toolArgs,
527
649
  ...sessionId !== void 0 && { sessionId }
528
650
  };
529
651
  const modifiedPayload = await this.pluginManager.executePlugins(
@@ -537,10 +659,21 @@ let _ToolManager = class _ToolManager {
537
659
  ...sessionId !== void 0 && { sessionId }
538
660
  }
539
661
  );
540
- args = modifiedPayload.args;
662
+ toolArgs = modifiedPayload.args;
541
663
  }
542
664
  try {
543
665
  let result;
666
+ const registerBackgroundTask = (promise, description) => {
667
+ const fallbackId = `task-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
668
+ return {
669
+ result: {
670
+ taskId: toolCallId ?? fallbackId,
671
+ status: "running",
672
+ description
673
+ },
674
+ promise
675
+ };
676
+ };
544
677
  if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
545
678
  this.logger.debug(`\u{1F527} Detected MCP tool: '${toolName}'`);
546
679
  const actualToolName = toolName.substring(_ToolManager.MCP_TOOL_PREFIX.length);
@@ -548,7 +681,34 @@ let _ToolManager = class _ToolManager {
548
681
  throw import_errors.ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
549
682
  }
550
683
  this.logger.debug(`\u{1F3AF} MCP routing: '${toolName}' -> '${actualToolName}'`);
551
- result = await this.mcpManager.executeTool(actualToolName, args, sessionId);
684
+ const runInBackground = backgroundTasksEnabled && meta.runInBackground === true && sessionId !== void 0;
685
+ if (meta.runInBackground === true && !backgroundTasksEnabled) {
686
+ this.logger.debug(
687
+ "Background tool execution disabled; running synchronously instead.",
688
+ { toolName }
689
+ );
690
+ }
691
+ if (runInBackground) {
692
+ const backgroundSessionId = sessionId;
693
+ const { result: backgroundResult, promise } = registerBackgroundTask(
694
+ this.mcpManager.executeTool(actualToolName, toolArgs, backgroundSessionId),
695
+ `MCP tool ${actualToolName}`
696
+ );
697
+ this.agentEventBus.emit("tool:background", {
698
+ toolName,
699
+ toolCallId: backgroundResult.taskId,
700
+ sessionId: backgroundSessionId,
701
+ description: backgroundResult.description,
702
+ promise,
703
+ ...meta.timeoutMs !== void 0 && { timeoutMs: meta.timeoutMs },
704
+ ...meta.notifyOnComplete !== void 0 && {
705
+ notifyOnComplete: meta.notifyOnComplete
706
+ }
707
+ });
708
+ result = backgroundResult;
709
+ } else {
710
+ result = await this.mcpManager.executeTool(actualToolName, toolArgs, sessionId);
711
+ }
552
712
  } else if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
553
713
  this.logger.debug(`\u{1F527} Detected internal tool: '${toolName}'`);
554
714
  const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
@@ -559,13 +719,46 @@ let _ToolManager = class _ToolManager {
559
719
  throw import_errors.ToolError.internalToolsNotInitialized(toolName);
560
720
  }
561
721
  this.logger.debug(`\u{1F3AF} Internal routing: '${toolName}' -> '${actualToolName}'`);
562
- result = await this.internalToolsProvider.executeTool(
563
- actualToolName,
564
- args,
565
- sessionId,
566
- abortSignal,
567
- toolCallId
568
- );
722
+ const runInBackground = backgroundTasksEnabled && meta.runInBackground === true && sessionId !== void 0;
723
+ if (meta.runInBackground === true && !backgroundTasksEnabled) {
724
+ this.logger.debug(
725
+ "Background tool execution disabled; running synchronously instead.",
726
+ { toolName }
727
+ );
728
+ }
729
+ if (runInBackground) {
730
+ const backgroundSessionId = sessionId;
731
+ const { result: backgroundResult, promise } = registerBackgroundTask(
732
+ this.internalToolsProvider.executeTool(
733
+ actualToolName,
734
+ toolArgs,
735
+ backgroundSessionId,
736
+ abortSignal,
737
+ toolCallId
738
+ ),
739
+ `Internal tool ${actualToolName}`
740
+ );
741
+ this.agentEventBus.emit("tool:background", {
742
+ toolName,
743
+ toolCallId: backgroundResult.taskId,
744
+ sessionId: backgroundSessionId,
745
+ description: backgroundResult.description,
746
+ promise,
747
+ ...meta.timeoutMs !== void 0 && { timeoutMs: meta.timeoutMs },
748
+ ...meta.notifyOnComplete !== void 0 && {
749
+ notifyOnComplete: meta.notifyOnComplete
750
+ }
751
+ });
752
+ result = backgroundResult;
753
+ } else {
754
+ result = await this.internalToolsProvider.executeTool(
755
+ actualToolName,
756
+ toolArgs,
757
+ sessionId,
758
+ abortSignal,
759
+ toolCallId
760
+ );
761
+ }
569
762
  } else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
570
763
  this.logger.debug(`\u{1F527} Detected custom tool: '${toolName}'`);
571
764
  const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
@@ -576,13 +769,46 @@ let _ToolManager = class _ToolManager {
576
769
  throw import_errors.ToolError.internalToolsNotInitialized(toolName);
577
770
  }
578
771
  this.logger.debug(`\u{1F3AF} Custom routing: '${toolName}' -> '${actualToolName}'`);
579
- result = await this.internalToolsProvider.executeTool(
580
- actualToolName,
581
- args,
582
- sessionId,
583
- abortSignal,
584
- toolCallId
585
- );
772
+ const runInBackground = backgroundTasksEnabled && meta.runInBackground === true && sessionId !== void 0;
773
+ if (meta.runInBackground === true && !backgroundTasksEnabled) {
774
+ this.logger.debug(
775
+ "Background tool execution disabled; running synchronously instead.",
776
+ { toolName }
777
+ );
778
+ }
779
+ if (runInBackground) {
780
+ const backgroundSessionId = sessionId;
781
+ const { result: backgroundResult, promise } = registerBackgroundTask(
782
+ this.internalToolsProvider.executeTool(
783
+ actualToolName,
784
+ toolArgs,
785
+ backgroundSessionId,
786
+ abortSignal,
787
+ toolCallId
788
+ ),
789
+ `Custom tool ${actualToolName}`
790
+ );
791
+ this.agentEventBus.emit("tool:background", {
792
+ toolName,
793
+ toolCallId: backgroundResult.taskId,
794
+ sessionId: backgroundSessionId,
795
+ description: backgroundResult.description,
796
+ promise,
797
+ ...meta.timeoutMs !== void 0 && { timeoutMs: meta.timeoutMs },
798
+ ...meta.notifyOnComplete !== void 0 && {
799
+ notifyOnComplete: meta.notifyOnComplete
800
+ }
801
+ });
802
+ result = backgroundResult;
803
+ } else {
804
+ result = await this.internalToolsProvider.executeTool(
805
+ actualToolName,
806
+ toolArgs,
807
+ sessionId,
808
+ abortSignal,
809
+ toolCallId
810
+ );
811
+ }
586
812
  } else {
587
813
  this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
588
814
  const stats = await this.getToolStats();
@@ -835,12 +1061,12 @@ let _ToolManager = class _ToolManager {
835
1061
  * Handle tool approval flow. Checks various precedence levels to determine
836
1062
  * if a tool should be auto-approved, denied, or requires manual approval.
837
1063
  */
838
- async handleToolApproval(toolName, args, toolCallId, sessionId) {
1064
+ async handleToolApproval(toolName, args, toolCallId, sessionId, callDescription) {
839
1065
  const quickResult = await this.tryQuickApprovalResolution(toolName, args, sessionId);
840
1066
  if (quickResult !== null) {
841
1067
  return quickResult;
842
1068
  }
843
- return this.requestManualApproval(toolName, args, toolCallId, sessionId);
1069
+ return this.requestManualApproval(toolName, args, toolCallId, sessionId, callDescription);
844
1070
  }
845
1071
  /**
846
1072
  * Try to resolve tool approval quickly based on policies and cached permissions.
@@ -914,7 +1140,7 @@ let _ToolManager = class _ToolManager {
914
1140
  * Request manual approval from the user for a tool execution.
915
1141
  * Generates preview, sends approval request, and handles the response.
916
1142
  */
917
- async requestManualApproval(toolName, args, toolCallId, sessionId) {
1143
+ async requestManualApproval(toolName, args, toolCallId, sessionId, callDescription) {
918
1144
  this.logger.info(
919
1145
  `Tool confirmation requested for ${toolName}, sessionId: ${sessionId ?? "global"}`
920
1146
  );
@@ -930,6 +1156,7 @@ let _ToolManager = class _ToolManager {
930
1156
  toolName,
931
1157
  toolCallId,
932
1158
  args,
1159
+ ...callDescription !== void 0 && { description: callDescription },
933
1160
  ...sessionId !== void 0 && { sessionId },
934
1161
  ...displayPreview !== void 0 && { displayPreview },
935
1162
  ...suggestedPatterns !== void 0 && { suggestedPatterns }
@@ -14,7 +14,7 @@ import type { AgentStateManager } from '../agent/state-manager.js';
14
14
  * Options for internal tools configuration in ToolManager
15
15
  */
16
16
  export interface InternalToolsOptions {
17
- internalToolsServices?: InternalToolsServices;
17
+ internalToolsServices?: InternalToolsServices & Record<string, unknown>;
18
18
  internalToolsConfig?: InternalToolsConfig;
19
19
  customToolsConfig?: CustomToolsConfig;
20
20
  }
@@ -62,6 +62,9 @@ export declare class ToolManager {
62
62
  private cacheValid;
63
63
  private logger;
64
64
  private sessionAutoApproveTools;
65
+ private sessionUserAutoApproveTools;
66
+ private sessionDisabledTools;
67
+ private globalDisabledTools;
65
68
  constructor(mcpManager: MCPManager, approvalManager: ApprovalManager, allowedToolsProvider: IAllowedToolsProvider, approvalMode: 'manual' | 'auto-approve' | 'auto-deny', agentEventBus: AgentEventBus, toolPolicies: ToolPolicies, options: InternalToolsOptions, logger: IDextoLogger);
66
69
  /**
67
70
  * Initialize the ToolManager and its components
@@ -96,6 +99,14 @@ export declare class ToolManager {
96
99
  * @param autoApproveTools Array of tool names to auto-approve (e.g., ['custom--bash_exec', 'custom--read_file'])
97
100
  */
98
101
  setSessionAutoApproveTools(sessionId: string, autoApproveTools: string[]): void;
102
+ /**
103
+ * Set session-level auto-approve tools chosen by the user.
104
+ */
105
+ setSessionUserAutoApproveTools(sessionId: string, autoApproveTools: string[]): void;
106
+ /**
107
+ * Clear session-level auto-approve tools chosen by the user.
108
+ */
109
+ clearSessionUserAutoApproveTools(sessionId: string): void;
99
110
  /**
100
111
  * Clear session-level auto-approve tools.
101
112
  * Call this when the session ends or when the skill completes.
@@ -103,6 +114,28 @@ export declare class ToolManager {
103
114
  * @param sessionId The session ID to clear auto-approve tools for
104
115
  */
105
116
  clearSessionAutoApproveTools(sessionId: string): void;
117
+ hasSessionUserAutoApproveTools(sessionId: string): boolean;
118
+ /**
119
+ * Set global disabled tools (agent-level preferences).
120
+ */
121
+ setGlobalDisabledTools(toolNames: string[]): void;
122
+ getGlobalDisabledTools(): string[];
123
+ /**
124
+ * Set session-level disabled tools (overrides global list).
125
+ */
126
+ setSessionDisabledTools(sessionId: string, toolNames: string[]): void;
127
+ /**
128
+ * Clear session-level disabled tools.
129
+ */
130
+ clearSessionDisabledTools(sessionId: string): void;
131
+ /**
132
+ * Get disabled tools for a session (session override wins).
133
+ */
134
+ getDisabledTools(sessionId?: string): string[];
135
+ /**
136
+ * Filter a tool set based on disabled tools for a session.
137
+ */
138
+ filterToolsForSession(toolSet: ToolSet, sessionId?: string): ToolSet;
106
139
  /**
107
140
  * Check if a session has auto-approve tools set.
108
141
  *
@@ -111,12 +144,20 @@ export declare class ToolManager {
111
144
  */
112
145
  hasSessionAutoApproveTools(sessionId: string): boolean;
113
146
  /**
114
- * Get the auto-approve tools for a session.
147
+ * Get the auto-approve tools for a session (skill-provided list).
115
148
  *
116
149
  * @param sessionId The session ID to check
117
150
  * @returns Array of auto-approve tool names, or undefined if none set
118
151
  */
119
152
  getSessionAutoApproveTools(sessionId: string): string[] | undefined;
153
+ /**
154
+ * Get the user auto-approve tools for a session.
155
+ */
156
+ getSessionUserAutoApproveTools(sessionId: string): string[] | undefined;
157
+ /**
158
+ * Combined auto-approve list for a session.
159
+ */
160
+ getCombinedSessionAutoApproveTools(sessionId: string): string[];
120
161
  /**
121
162
  * Check if a tool should be auto-approved for a session.
122
163
  * Returns true if the tool is in the session's auto-approve list.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}