@dexto/core 1.5.5 → 1.5.7

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 (146) hide show
  1. package/dist/agent/DextoAgent.cjs +94 -26
  2. package/dist/agent/DextoAgent.d.ts +17 -7
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +95 -27
  5. package/dist/agent/schemas.d.ts +417 -66
  6. package/dist/agent/schemas.d.ts.map +1 -1
  7. package/dist/context/utils.cjs +49 -3
  8. package/dist/context/utils.d.ts.map +1 -1
  9. package/dist/context/utils.js +49 -3
  10. package/dist/errors/types.cjs +2 -1
  11. package/dist/errors/types.d.ts +2 -1
  12. package/dist/errors/types.d.ts.map +1 -1
  13. package/dist/errors/types.js +2 -1
  14. package/dist/image/types.d.ts +15 -0
  15. package/dist/image/types.d.ts.map +1 -1
  16. package/dist/llm/error-codes.cjs +1 -0
  17. package/dist/llm/error-codes.d.ts +1 -0
  18. package/dist/llm/error-codes.d.ts.map +1 -1
  19. package/dist/llm/error-codes.js +1 -0
  20. package/dist/llm/errors.cjs +15 -0
  21. package/dist/llm/errors.d.ts +15 -8
  22. package/dist/llm/errors.d.ts.map +1 -1
  23. package/dist/llm/errors.js +15 -0
  24. package/dist/llm/executor/turn-executor.cjs +27 -0
  25. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  26. package/dist/llm/executor/turn-executor.js +27 -0
  27. package/dist/llm/registry.cjs +472 -28
  28. package/dist/llm/registry.d.ts +80 -4
  29. package/dist/llm/registry.d.ts.map +1 -1
  30. package/dist/llm/registry.js +464 -25
  31. package/dist/llm/resolver.cjs +13 -0
  32. package/dist/llm/resolver.d.ts.map +1 -1
  33. package/dist/llm/resolver.js +16 -1
  34. package/dist/llm/schemas.d.ts +59 -59
  35. package/dist/llm/services/factory.cjs +41 -25
  36. package/dist/llm/services/factory.d.ts +20 -1
  37. package/dist/llm/services/factory.d.ts.map +1 -1
  38. package/dist/llm/services/factory.js +42 -26
  39. package/dist/llm/services/test-utils.integration.cjs +5 -1
  40. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  41. package/dist/llm/services/test-utils.integration.js +5 -1
  42. package/dist/llm/types.cjs +5 -2
  43. package/dist/llm/types.d.ts +1 -1
  44. package/dist/llm/types.d.ts.map +1 -1
  45. package/dist/llm/types.js +5 -2
  46. package/dist/logger/logger.cjs +6 -7
  47. package/dist/logger/logger.d.ts +1 -0
  48. package/dist/logger/logger.d.ts.map +1 -1
  49. package/dist/logger/logger.js +6 -7
  50. package/dist/logger/v2/dexto-logger.cjs +4 -0
  51. package/dist/logger/v2/dexto-logger.d.ts +3 -0
  52. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  53. package/dist/logger/v2/dexto-logger.js +4 -0
  54. package/dist/logger/v2/types.d.ts +2 -0
  55. package/dist/logger/v2/types.d.ts.map +1 -1
  56. package/dist/mcp/error-codes.cjs +1 -0
  57. package/dist/mcp/error-codes.d.ts +1 -0
  58. package/dist/mcp/error-codes.d.ts.map +1 -1
  59. package/dist/mcp/error-codes.js +1 -0
  60. package/dist/mcp/errors.cjs +13 -0
  61. package/dist/mcp/errors.d.ts +7 -0
  62. package/dist/mcp/errors.d.ts.map +1 -1
  63. package/dist/mcp/errors.js +13 -0
  64. package/dist/mcp/manager.cjs +46 -4
  65. package/dist/mcp/manager.d.ts +10 -2
  66. package/dist/mcp/manager.d.ts.map +1 -1
  67. package/dist/mcp/manager.js +46 -4
  68. package/dist/mcp/mcp-client.cjs +89 -5
  69. package/dist/mcp/mcp-client.d.ts +5 -1
  70. package/dist/mcp/mcp-client.d.ts.map +1 -1
  71. package/dist/mcp/mcp-client.js +89 -5
  72. package/dist/mcp/schemas.cjs +6 -1
  73. package/dist/mcp/schemas.d.ts +1 -1
  74. package/dist/mcp/schemas.d.ts.map +1 -1
  75. package/dist/mcp/schemas.js +6 -1
  76. package/dist/mcp/types.d.ts +5 -0
  77. package/dist/mcp/types.d.ts.map +1 -1
  78. package/dist/prompts/index.d.ts +1 -1
  79. package/dist/prompts/index.d.ts.map +1 -1
  80. package/dist/prompts/prompt-manager.cjs +90 -4
  81. package/dist/prompts/prompt-manager.d.ts +16 -6
  82. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  83. package/dist/prompts/prompt-manager.js +90 -4
  84. package/dist/prompts/providers/config-prompt-provider.cjs +104 -10
  85. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  86. package/dist/prompts/providers/config-prompt-provider.js +105 -11
  87. package/dist/prompts/providers/custom-prompt-provider.cjs +1 -0
  88. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  89. package/dist/prompts/providers/custom-prompt-provider.js +1 -0
  90. package/dist/prompts/providers/mcp-prompt-provider.cjs +1 -0
  91. package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
  92. package/dist/prompts/providers/mcp-prompt-provider.js +1 -0
  93. package/dist/prompts/schemas.cjs +28 -2
  94. package/dist/prompts/schemas.d.ts +130 -0
  95. package/dist/prompts/schemas.d.ts.map +1 -1
  96. package/dist/prompts/schemas.js +28 -2
  97. package/dist/prompts/types.d.ts +55 -3
  98. package/dist/prompts/types.d.ts.map +1 -1
  99. package/dist/session/chat-session.d.ts +1 -1
  100. package/dist/session/chat-session.d.ts.map +1 -1
  101. package/dist/session/index.d.ts +1 -1
  102. package/dist/session/index.d.ts.map +1 -1
  103. package/dist/session/session-manager.cjs +47 -3
  104. package/dist/session/session-manager.d.ts +10 -0
  105. package/dist/session/session-manager.d.ts.map +1 -1
  106. package/dist/session/session-manager.js +47 -3
  107. package/dist/systemPrompt/contributors.cjs +42 -0
  108. package/dist/systemPrompt/contributors.d.ts +13 -0
  109. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  110. package/dist/systemPrompt/contributors.js +41 -0
  111. package/dist/tools/errors.cjs +7 -3
  112. package/dist/tools/errors.d.ts +5 -1
  113. package/dist/tools/errors.d.ts.map +1 -1
  114. package/dist/tools/errors.js +7 -3
  115. package/dist/tools/internal-tools/constants.cjs +2 -1
  116. package/dist/tools/internal-tools/constants.d.ts +1 -1
  117. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  118. package/dist/tools/internal-tools/constants.js +2 -1
  119. package/dist/tools/internal-tools/implementations/invoke-skill-tool.cjs +140 -0
  120. package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts +24 -0
  121. package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts.map +1 -0
  122. package/dist/tools/internal-tools/implementations/invoke-skill-tool.js +117 -0
  123. package/dist/tools/internal-tools/provider.cjs +15 -0
  124. package/dist/tools/internal-tools/provider.d.ts +12 -0
  125. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  126. package/dist/tools/internal-tools/provider.js +15 -0
  127. package/dist/tools/internal-tools/registry.cjs +6 -0
  128. package/dist/tools/internal-tools/registry.d.ts +34 -0
  129. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  130. package/dist/tools/internal-tools/registry.js +6 -0
  131. package/dist/tools/schemas.cjs +2 -2
  132. package/dist/tools/schemas.d.ts +1 -1
  133. package/dist/tools/schemas.d.ts.map +1 -1
  134. package/dist/tools/schemas.js +2 -2
  135. package/dist/tools/tool-manager.cjs +230 -79
  136. package/dist/tools/tool-manager.d.ts +89 -8
  137. package/dist/tools/tool-manager.d.ts.map +1 -1
  138. package/dist/tools/tool-manager.js +231 -80
  139. package/dist/utils/api-key-resolver.cjs +5 -2
  140. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  141. package/dist/utils/api-key-resolver.js +5 -2
  142. package/dist/utils/service-initializer.cjs +8 -2
  143. package/dist/utils/service-initializer.d.ts +5 -1
  144. package/dist/utils/service-initializer.d.ts.map +1 -1
  145. package/dist/utils/service-initializer.js +8 -2
  146. package/package.json +1 -1
@@ -9,22 +9,57 @@ export interface PromptArgument {
9
9
  required?: boolean | undefined;
10
10
  }
11
11
  /**
12
- * MCP-compliant prompt definition
13
- * Matches the MCP SDK's Prompt structure
12
+ * MCP-compliant prompt definition with Dexto extensions
13
+ * Base structure matches MCP SDK's Prompt, extended with Claude Code compatibility fields
14
14
  */
15
15
  export interface PromptDefinition {
16
16
  name: string;
17
17
  title?: string | undefined;
18
18
  description?: string | undefined;
19
19
  arguments?: PromptArgument[] | undefined;
20
+ /** Exclude from auto-invocation list in system prompt */
21
+ disableModelInvocation?: boolean | undefined;
22
+ /** Show in slash command menu (false = hidden but auto-invocable by LLM) */
23
+ userInvocable?: boolean | undefined;
24
+ /** Tools allowed when this prompt is active (overrides global policies) */
25
+ allowedTools?: string[] | undefined;
26
+ /** Model to use when this prompt is invoked */
27
+ model?: string | undefined;
28
+ /** Execution context: 'inline' runs in current session, 'fork' spawns isolated subagent */
29
+ context?: 'inline' | 'fork' | undefined;
30
+ /** Agent ID from registry to use for fork execution */
31
+ agent?: string | undefined;
20
32
  }
21
33
  /**
22
34
  * Enhanced prompt info with MCP-compliant structure
35
+ *
36
+ * ## Naming Convention
37
+ *
38
+ * Prompts have three name fields that serve different purposes:
39
+ *
40
+ * - **name**: Internal identifier used for resolution. May include prefixes like
41
+ * "config:namespace:id" for config prompts or just "promptName" for MCP/custom.
42
+ *
43
+ * - **displayName**: User-friendly base name without system prefixes. Set by providers
44
+ * to just the skill/prompt id (e.g., "plan" not "config:tools:plan"). For MCP and
45
+ * custom prompts, this equals `name` since they have no internal prefixes.
46
+ *
47
+ * - **commandName**: Collision-resolved slash command name computed by PromptManager.
48
+ * If multiple prompts share the same displayName, commandName adds a source prefix
49
+ * (e.g., "config:plan" vs "mcp:plan"). Otherwise, commandName equals displayName.
50
+ *
51
+ * UI components should use `commandName` for display and execution.
23
52
  */
24
53
  export interface PromptInfo extends PromptDefinition {
25
54
  source: 'mcp' | 'config' | 'custom';
26
- /** User-friendly display name without namespace prefix (e.g., "quick-start" instead of "config:quick-start") */
55
+ /** Base display name set by provider (e.g., "plan"). May equal `name` for simple prompts. */
27
56
  displayName?: string | undefined;
57
+ /** Collision-resolved command name computed by PromptManager (e.g., "plan" or "config:plan") */
58
+ commandName?: string | undefined;
59
+ /** Execution context: 'inline' runs in current session, 'fork' spawns isolated subagent */
60
+ context?: 'inline' | 'fork' | undefined;
61
+ /** Agent ID from registry to use for fork execution */
62
+ agent?: string | undefined;
28
63
  metadata?: Record<string, unknown>;
29
64
  }
30
65
  /**
@@ -38,6 +73,23 @@ export interface PromptListResult {
38
73
  prompts: PromptInfo[];
39
74
  nextCursor?: string | undefined;
40
75
  }
76
+ /**
77
+ * Result type for resolvePrompt including optional per-prompt overrides
78
+ */
79
+ export interface ResolvedPromptResult {
80
+ /** The resolved prompt text with arguments applied */
81
+ text: string;
82
+ /** Resource URIs referenced by the prompt */
83
+ resources: string[];
84
+ /** Tools allowed when this prompt is active (overrides global policies) */
85
+ allowedTools?: string[] | undefined;
86
+ /** Model to use when this prompt is invoked */
87
+ model?: string | undefined;
88
+ /** Execution context: 'inline' runs in current session, 'fork' spawns isolated subagent */
89
+ context?: 'inline' | 'fork' | undefined;
90
+ /** Agent ID from registry to use for fork execution */
91
+ agent?: string | undefined;
92
+ }
41
93
  /**
42
94
  * Interface for prompt providers
43
95
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAChD,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,gHAAgH;IAChH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAElF;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACvE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ export declare class ChatSession {
97
97
  * Calling cancel() aborts the in-flight LLM request and tool execution checks.
98
98
  */
99
99
  private currentRunController;
100
- private logger;
100
+ readonly logger: IDextoLogger;
101
101
  /**
102
102
  * Creates a new ChatSession instance.
103
103
  *
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { ChatSession } from './chat-session.js';
2
2
  export { SessionManager } from './session-manager.js';
3
- export type { SessionMetadata } from './session-manager.js';
3
+ export type { SessionMetadata, SessionLoggerFactory } from './session-manager.js';
4
4
  export { SessionErrorCode } from './error-codes.js';
5
5
  export { SessionError } from './errors.js';
6
6
  export { MessageQueueService } from './message-queue.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -25,11 +25,15 @@ var import_crypto = require("crypto");
25
25
  var import_chat_session = require("./chat-session.js");
26
26
  var import_types = require("../logger/v2/types.js");
27
27
  var import_errors = require("./errors.js");
28
+ function defaultSessionLoggerFactory(options) {
29
+ return options.baseLogger.createChild(import_types.DextoLogComponent.SESSION);
30
+ }
28
31
  class SessionManager {
29
32
  constructor(services, config = {}, logger) {
30
33
  this.services = services;
31
34
  this.maxSessions = config.maxSessions ?? 100;
32
35
  this.sessionTTL = config.sessionTTL ?? 36e5;
36
+ this.sessionLoggerFactory = config.sessionLoggerFactory ?? defaultSessionLoggerFactory;
33
37
  this.logger = logger.createChild(import_types.DextoLogComponent.SESSION);
34
38
  }
35
39
  sessions = /* @__PURE__ */ new Map();
@@ -43,6 +47,7 @@ class SessionManager {
43
47
  // Per-session mutex for token usage updates to prevent lost updates from concurrent calls
44
48
  tokenUsageLocks = /* @__PURE__ */ new Map();
45
49
  logger;
50
+ sessionLoggerFactory;
46
51
  /**
47
52
  * Initialize the SessionManager with persistent storage.
48
53
  * This must be called before using any session operations.
@@ -139,10 +144,21 @@ class SessionManager {
139
144
  const existingMetadata = await this.services.storageManager.getDatabase().get(sessionKey);
140
145
  if (existingMetadata) {
141
146
  await this.updateSessionActivity(id);
147
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig();
148
+ const agentId = runtimeConfig.agentCard?.name ?? runtimeConfig.agentId;
149
+ const sessionLogger = this.sessionLoggerFactory({
150
+ baseLogger: this.logger,
151
+ agentId,
152
+ sessionId: id
153
+ });
154
+ const sessionData2 = await this.services.storageManager.getDatabase().get(sessionKey);
155
+ if (sessionData2?.llmOverride) {
156
+ this.services.stateManager.updateLLM(sessionData2.llmOverride, id);
157
+ }
142
158
  const session2 = new import_chat_session.ChatSession(
143
159
  { ...this.services, sessionManager: this },
144
160
  id,
145
- this.logger
161
+ sessionLogger
146
162
  );
147
163
  await session2.init();
148
164
  this.sessions.set(id, session2);
@@ -169,7 +185,18 @@ class SessionManager {
169
185
  }
170
186
  let session;
171
187
  try {
172
- session = new import_chat_session.ChatSession({ ...this.services, sessionManager: this }, id, this.logger);
188
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig();
189
+ const agentId = runtimeConfig.agentCard?.name ?? runtimeConfig.agentId;
190
+ const sessionLogger = this.sessionLoggerFactory({
191
+ baseLogger: this.logger,
192
+ agentId,
193
+ sessionId: id
194
+ });
195
+ session = new import_chat_session.ChatSession(
196
+ { ...this.services, sessionManager: this },
197
+ id,
198
+ sessionLogger
199
+ );
173
200
  await session.init();
174
201
  this.sessions.set(id, session);
175
202
  await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
@@ -204,10 +231,20 @@ class SessionManager {
204
231
  const sessionKey = `session:${sessionId}`;
205
232
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
206
233
  if (sessionData) {
234
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig();
235
+ const agentId = runtimeConfig.agentCard?.name ?? runtimeConfig.agentId;
236
+ const sessionLogger = this.sessionLoggerFactory({
237
+ baseLogger: this.logger,
238
+ agentId,
239
+ sessionId
240
+ });
241
+ if (sessionData.llmOverride) {
242
+ this.services.stateManager.updateLLM(sessionData.llmOverride, sessionId);
243
+ }
207
244
  const session = new import_chat_session.ChatSession(
208
245
  { ...this.services, sessionManager: this },
209
246
  sessionId,
210
- this.logger
247
+ sessionLogger
211
248
  );
212
249
  await session.init();
213
250
  this.sessions.set(sessionId, session);
@@ -494,6 +531,13 @@ class SessionManager {
494
531
  throw import_errors.SessionError.notFound(sessionId);
495
532
  }
496
533
  await session.switchLLM(newLLMConfig);
534
+ const sessionKey = `session:${sessionId}`;
535
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
536
+ if (sessionData) {
537
+ sessionData.llmOverride = newLLMConfig;
538
+ await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
539
+ await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
540
+ }
497
541
  this.services.agentEventBus.emit("llm:switched", {
498
542
  newConfig: newLLMConfig,
499
543
  historyRetained: true,
@@ -8,6 +8,11 @@ import type { ValidatedLLMConfig } from '../llm/schemas.js';
8
8
  import type { StorageManager } from '../storage/index.js';
9
9
  import type { PluginManager } from '../plugins/manager.js';
10
10
  import type { TokenUsage } from '../llm/types.js';
11
+ export type SessionLoggerFactory = (options: {
12
+ baseLogger: IDextoLogger;
13
+ agentId: string;
14
+ sessionId: string;
15
+ }) => IDextoLogger;
11
16
  /**
12
17
  * Session-level token usage totals (accumulated across all messages).
13
18
  * All fields required since we track cumulative totals (defaulting to 0).
@@ -24,6 +29,8 @@ export interface SessionMetadata {
24
29
  export interface SessionManagerConfig {
25
30
  maxSessions?: number;
26
31
  sessionTTL?: number;
32
+ /** Host hook for creating a session-scoped logger (e.g. file logger) */
33
+ sessionLoggerFactory?: SessionLoggerFactory;
27
34
  }
28
35
  export interface SessionData {
29
36
  id: string;
@@ -34,6 +41,8 @@ export interface SessionData {
34
41
  metadata?: Record<string, any>;
35
42
  tokenUsage?: SessionTokenUsage;
36
43
  estimatedCost?: number;
44
+ /** Persisted LLM config override for this session */
45
+ llmOverride?: ValidatedLLMConfig;
37
46
  }
38
47
  /**
39
48
  * Manages multiple chat sessions within a Dexto agent.
@@ -62,6 +71,7 @@ export declare class SessionManager {
62
71
  private readonly pendingCreations;
63
72
  private readonly tokenUsageLocks;
64
73
  private logger;
74
+ private readonly sessionLoggerFactory;
65
75
  constructor(services: {
66
76
  stateManager: AgentStateManager;
67
77
  systemPromptManager: SystemPromptManager;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,15 @@ import { randomUUID } from "crypto";
3
3
  import { ChatSession } from "./chat-session.js";
4
4
  import { DextoLogComponent } from "../logger/v2/types.js";
5
5
  import { SessionError } from "./errors.js";
6
+ function defaultSessionLoggerFactory(options) {
7
+ return options.baseLogger.createChild(DextoLogComponent.SESSION);
8
+ }
6
9
  class SessionManager {
7
10
  constructor(services, config = {}, logger) {
8
11
  this.services = services;
9
12
  this.maxSessions = config.maxSessions ?? 100;
10
13
  this.sessionTTL = config.sessionTTL ?? 36e5;
14
+ this.sessionLoggerFactory = config.sessionLoggerFactory ?? defaultSessionLoggerFactory;
11
15
  this.logger = logger.createChild(DextoLogComponent.SESSION);
12
16
  }
13
17
  sessions = /* @__PURE__ */ new Map();
@@ -21,6 +25,7 @@ class SessionManager {
21
25
  // Per-session mutex for token usage updates to prevent lost updates from concurrent calls
22
26
  tokenUsageLocks = /* @__PURE__ */ new Map();
23
27
  logger;
28
+ sessionLoggerFactory;
24
29
  /**
25
30
  * Initialize the SessionManager with persistent storage.
26
31
  * This must be called before using any session operations.
@@ -117,10 +122,21 @@ class SessionManager {
117
122
  const existingMetadata = await this.services.storageManager.getDatabase().get(sessionKey);
118
123
  if (existingMetadata) {
119
124
  await this.updateSessionActivity(id);
125
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig();
126
+ const agentId = runtimeConfig.agentCard?.name ?? runtimeConfig.agentId;
127
+ const sessionLogger = this.sessionLoggerFactory({
128
+ baseLogger: this.logger,
129
+ agentId,
130
+ sessionId: id
131
+ });
132
+ const sessionData2 = await this.services.storageManager.getDatabase().get(sessionKey);
133
+ if (sessionData2?.llmOverride) {
134
+ this.services.stateManager.updateLLM(sessionData2.llmOverride, id);
135
+ }
120
136
  const session2 = new ChatSession(
121
137
  { ...this.services, sessionManager: this },
122
138
  id,
123
- this.logger
139
+ sessionLogger
124
140
  );
125
141
  await session2.init();
126
142
  this.sessions.set(id, session2);
@@ -147,7 +163,18 @@ class SessionManager {
147
163
  }
148
164
  let session;
149
165
  try {
150
- session = new ChatSession({ ...this.services, sessionManager: this }, id, this.logger);
166
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig();
167
+ const agentId = runtimeConfig.agentCard?.name ?? runtimeConfig.agentId;
168
+ const sessionLogger = this.sessionLoggerFactory({
169
+ baseLogger: this.logger,
170
+ agentId,
171
+ sessionId: id
172
+ });
173
+ session = new ChatSession(
174
+ { ...this.services, sessionManager: this },
175
+ id,
176
+ sessionLogger
177
+ );
151
178
  await session.init();
152
179
  this.sessions.set(id, session);
153
180
  await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
@@ -182,10 +209,20 @@ class SessionManager {
182
209
  const sessionKey = `session:${sessionId}`;
183
210
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
184
211
  if (sessionData) {
212
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig();
213
+ const agentId = runtimeConfig.agentCard?.name ?? runtimeConfig.agentId;
214
+ const sessionLogger = this.sessionLoggerFactory({
215
+ baseLogger: this.logger,
216
+ agentId,
217
+ sessionId
218
+ });
219
+ if (sessionData.llmOverride) {
220
+ this.services.stateManager.updateLLM(sessionData.llmOverride, sessionId);
221
+ }
185
222
  const session = new ChatSession(
186
223
  { ...this.services, sessionManager: this },
187
224
  sessionId,
188
- this.logger
225
+ sessionLogger
189
226
  );
190
227
  await session.init();
191
228
  this.sessions.set(sessionId, session);
@@ -472,6 +509,13 @@ class SessionManager {
472
509
  throw SessionError.notFound(sessionId);
473
510
  }
474
511
  await session.switchLLM(newLLMConfig);
512
+ const sessionKey = `session:${sessionId}`;
513
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
514
+ if (sessionData) {
515
+ sessionData.llmOverride = newLLMConfig;
516
+ await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
517
+ await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
518
+ }
475
519
  this.services.agentEventBus.emit("llm:switched", {
476
520
  newConfig: newLLMConfig,
477
521
  historyRetained: true,
@@ -21,6 +21,7 @@ __export(contributors_exports, {
21
21
  DynamicContributor: () => DynamicContributor,
22
22
  FileContributor: () => FileContributor,
23
23
  MemoryContributor: () => MemoryContributor,
24
+ SkillsContributor: () => SkillsContributor,
24
25
  StaticContributor: () => StaticContributor
25
26
  });
26
27
  module.exports = __toCommonJS(contributors_exports);
@@ -191,10 +192,51 @@ ${memoryList}`;
191
192
  }
192
193
  }
193
194
  }
195
+ class SkillsContributor {
196
+ constructor(id, priority, promptManager, logger) {
197
+ this.id = id;
198
+ this.priority = priority;
199
+ this.promptManager = promptManager;
200
+ this.logger = logger;
201
+ this.logger.debug(`[SkillsContributor] Created "${id}"`);
202
+ }
203
+ logger;
204
+ async getContent(_context) {
205
+ try {
206
+ const skills = await this.promptManager.listAutoInvocablePrompts();
207
+ const skillEntries = Object.entries(skills);
208
+ if (skillEntries.length === 0) {
209
+ return "";
210
+ }
211
+ const skillsList = skillEntries.map(([_key, info]) => {
212
+ const name = info.displayName || info.name;
213
+ const desc = info.description ? ` - ${info.description}` : "";
214
+ return `- ${name}${desc}`;
215
+ }).join("\n");
216
+ const result = `## Available Skills
217
+
218
+ You can invoke the following skills using the \`invoke_skill\` tool when they are relevant to the task:
219
+
220
+ ${skillsList}
221
+
222
+ To use a skill, call invoke_skill with the skill name. The skill will provide specialized instructions for the task.`;
223
+ this.logger.debug(
224
+ `[SkillsContributor] Listed ${skillEntries.length} skills in system prompt`
225
+ );
226
+ return result;
227
+ } catch (error) {
228
+ this.logger.error(
229
+ `[SkillsContributor] Failed to list skills: ${error instanceof Error ? error.message : String(error)}`
230
+ );
231
+ return "";
232
+ }
233
+ }
234
+ }
194
235
  // Annotate the CommonJS export names for ESM import in node:
195
236
  0 && (module.exports = {
196
237
  DynamicContributor,
197
238
  FileContributor,
198
239
  MemoryContributor,
240
+ SkillsContributor,
199
241
  StaticContributor
200
242
  });
@@ -1,6 +1,7 @@
1
1
  import { SystemPromptContributor, DynamicContributorContext } from './types.js';
2
2
  import type { IDextoLogger } from '../logger/v2/types.js';
3
3
  import type { MemoryManager } from '../memory/index.js';
4
+ import type { PromptManager } from '../prompts/prompt-manager.js';
4
5
  export declare class StaticContributor implements SystemPromptContributor {
5
6
  id: string;
6
7
  priority: number;
@@ -58,4 +59,16 @@ export declare class MemoryContributor implements SystemPromptContributor {
58
59
  constructor(id: string, priority: number, memoryManager: MemoryManager, options: MemoryContributorOptions | undefined, logger: IDextoLogger);
59
60
  getContent(_context: DynamicContributorContext): Promise<string>;
60
61
  }
62
+ /**
63
+ * SkillsContributor lists available skills that the LLM can invoke via the invoke_skill tool.
64
+ * This enables the LLM to know what skills are available without hardcoding them.
65
+ */
66
+ export declare class SkillsContributor implements SystemPromptContributor {
67
+ id: string;
68
+ priority: number;
69
+ private promptManager;
70
+ private logger;
71
+ constructor(id: string, priority: number, promptManager: PromptManager, logger: IDextoLogger);
72
+ getContent(_context: DynamicContributorContext): Promise<string>;
73
+ }
61
74
  //# sourceMappingURL=contributors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contributors.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/contributors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,qBAAa,iBAAkB,YAAW,uBAAuB;IAElD,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,MAAM;IACvB,OAAO,CAAC,OAAO;gBAFR,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;IAGrB,UAAU,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;CAGzE;AAED,qBAAa,kBAAmB,YAAW,uBAAuB;IAEnD,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,MAAM;IACvB,OAAO,CAAC,eAAe;gBAFhB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EACf,eAAe,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,MAAM,CAAC;IAG9E,UAAU,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;CAGxE;AAED,MAAM,WAAW,sBAAsB;IACnC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,qBAAa,eAAgB,YAAW,uBAAuB;IAMhD,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,MAAM;IACvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAPnB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,MAAM,CAAe;gBAGlB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,sBAAsB,YAAK,EAC5C,MAAM,EAAE,YAAY;IAMlB,UAAU,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;CA6FzE;AAED,MAAM,WAAW,wBAAwB;IACrC,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAIlD,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,MAAM;IACvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IANnB,OAAO,CAAC,MAAM,CAAe;gBAGlB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,wBAAwB,YAAK,EAC9C,MAAM,EAAE,YAAY;IAQlB,UAAU,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;CAmDzE"}
1
+ {"version":3,"file":"contributors.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/contributors.ts"],"names":[],"mappings":"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"}
@@ -166,9 +166,50 @@ ${memoryList}`;
166
166
  }
167
167
  }
168
168
  }
169
+ class SkillsContributor {
170
+ constructor(id, priority, promptManager, logger) {
171
+ this.id = id;
172
+ this.priority = priority;
173
+ this.promptManager = promptManager;
174
+ this.logger = logger;
175
+ this.logger.debug(`[SkillsContributor] Created "${id}"`);
176
+ }
177
+ logger;
178
+ async getContent(_context) {
179
+ try {
180
+ const skills = await this.promptManager.listAutoInvocablePrompts();
181
+ const skillEntries = Object.entries(skills);
182
+ if (skillEntries.length === 0) {
183
+ return "";
184
+ }
185
+ const skillsList = skillEntries.map(([_key, info]) => {
186
+ const name = info.displayName || info.name;
187
+ const desc = info.description ? ` - ${info.description}` : "";
188
+ return `- ${name}${desc}`;
189
+ }).join("\n");
190
+ const result = `## Available Skills
191
+
192
+ You can invoke the following skills using the \`invoke_skill\` tool when they are relevant to the task:
193
+
194
+ ${skillsList}
195
+
196
+ To use a skill, call invoke_skill with the skill name. The skill will provide specialized instructions for the task.`;
197
+ this.logger.debug(
198
+ `[SkillsContributor] Listed ${skillEntries.length} skills in system prompt`
199
+ );
200
+ return result;
201
+ } catch (error) {
202
+ this.logger.error(
203
+ `[SkillsContributor] Failed to list skills: ${error instanceof Error ? error.message : String(error)}`
204
+ );
205
+ return "";
206
+ }
207
+ }
208
+ }
169
209
  export {
170
210
  DynamicContributor,
171
211
  FileContributor,
172
212
  MemoryContributor,
213
+ SkillsContributor,
173
214
  StaticContributor
174
215
  };
@@ -51,14 +51,18 @@ class ToolError {
51
51
  }
52
52
  /**
53
53
  * Tool execution denied by user/policy
54
+ * @param toolName - Name of the tool that was denied
55
+ * @param sessionId - Optional session ID
56
+ * @param userMessage - Optional message from user (e.g., feedback for plan review)
54
57
  */
55
- static executionDenied(toolName, sessionId) {
58
+ static executionDenied(toolName, sessionId, userMessage) {
59
+ const message = userMessage ? `Tool '${toolName}' was denied. ${userMessage}` : `Tool '${toolName}' execution was denied by the user`;
56
60
  return new import_DextoRuntimeError.DextoRuntimeError(
57
61
  import_error_codes.ToolErrorCode.EXECUTION_DENIED,
58
62
  import_types.ErrorScope.TOOLS,
59
63
  import_types.ErrorType.FORBIDDEN,
60
- `Tool '${toolName}' execution was denied by the user`,
61
- { toolName, sessionId }
64
+ message,
65
+ { toolName, sessionId, userMessage }
62
66
  );
63
67
  }
64
68
  /**
@@ -20,10 +20,14 @@ export declare class ToolError {
20
20
  }>;
21
21
  /**
22
22
  * Tool execution denied by user/policy
23
+ * @param toolName - Name of the tool that was denied
24
+ * @param sessionId - Optional session ID
25
+ * @param userMessage - Optional message from user (e.g., feedback for plan review)
23
26
  */
24
- static executionDenied(toolName: string, sessionId?: string): DextoRuntimeError<{
27
+ static executionDenied(toolName: string, sessionId?: string, userMessage?: string): DextoRuntimeError<{
25
28
  toolName: string;
26
29
  sessionId: string | undefined;
30
+ userMessage: string | undefined;
27
31
  }>;
28
32
  /**
29
33
  * Directory access denied by user
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/tools/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;GAGG;AACH,qBAAa,SAAS;IAClB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;;;IAUhC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;IAU3E;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;IAU3D;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;IAWlE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;IAc/E;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;IAU3F;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;IAelE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;IAUxD;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM;;;IAUlD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;IAUlF;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAUnD;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM;;;IAUnD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;IAUpC;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAU7D;;OAEG;IACH,MAAM,CAAC,eAAe,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,EAAE,MAAM,GAChB,iBAAiB,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAcrE;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,iBAAiB;IAW3F;;OAEG;IACH,MAAM,CAAC,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;CAU9E"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/tools/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;GAGG;AACH,qBAAa,SAAS;IAClB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;;;IAUhC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;IAU3E;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;;;;;IAajF;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;IAWlE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;IAc/E;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;IAU3F;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;IAelE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;IAUxD;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM;;;IAUlD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;IAUlF;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAUnD;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM;;;IAUnD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;IAUpC;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAU7D;;OAEG;IACH,MAAM,CAAC,eAAe,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,EAAE,MAAM,GAChB,iBAAiB,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAcrE;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,iBAAiB;IAW3F;;OAEG;IACH,MAAM,CAAC,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;CAU9E"}
@@ -29,14 +29,18 @@ class ToolError {
29
29
  }
30
30
  /**
31
31
  * Tool execution denied by user/policy
32
+ * @param toolName - Name of the tool that was denied
33
+ * @param sessionId - Optional session ID
34
+ * @param userMessage - Optional message from user (e.g., feedback for plan review)
32
35
  */
33
- static executionDenied(toolName, sessionId) {
36
+ static executionDenied(toolName, sessionId, userMessage) {
37
+ const message = userMessage ? `Tool '${toolName}' was denied. ${userMessage}` : `Tool '${toolName}' execution was denied by the user`;
34
38
  return new DextoRuntimeError(
35
39
  ToolErrorCode.EXECUTION_DENIED,
36
40
  ErrorScope.TOOLS,
37
41
  ErrorType.FORBIDDEN,
38
- `Tool '${toolName}' execution was denied by the user`,
39
- { toolName, sessionId }
42
+ message,
43
+ { toolName, sessionId, userMessage }
40
44
  );
41
45
  }
42
46
  /**
@@ -26,7 +26,8 @@ const INTERNAL_TOOL_NAMES = [
26
26
  "ask_user",
27
27
  "delegate_to_url",
28
28
  "list_resources",
29
- "get_resource"
29
+ "get_resource",
30
+ "invoke_skill"
30
31
  ];
31
32
  // Annotate the CommonJS export names for ESM import in node:
32
33
  0 && (module.exports = {
@@ -7,6 +7,6 @@
7
7
  * Available internal tool names
8
8
  * Must be kept in sync with INTERNAL_TOOL_REGISTRY in registry.ts
9
9
  */
10
- export declare const INTERNAL_TOOL_NAMES: readonly ["search_history", "ask_user", "delegate_to_url", "list_resources", "get_resource"];
10
+ export declare const INTERNAL_TOOL_NAMES: readonly ["search_history", "ask_user", "delegate_to_url", "list_resources", "get_resource", "invoke_skill"];
11
11
  export type KnownInternalTool = (typeof INTERNAL_TOOL_NAMES)[number];
12
12
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,8FAMtB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,8GAOtB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}