@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.
- package/dist/agent/DextoAgent.cjs +94 -26
- package/dist/agent/DextoAgent.d.ts +17 -7
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +95 -27
- package/dist/agent/schemas.d.ts +417 -66
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/context/utils.cjs +49 -3
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +49 -3
- package/dist/errors/types.cjs +2 -1
- package/dist/errors/types.d.ts +2 -1
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +2 -1
- package/dist/image/types.d.ts +15 -0
- package/dist/image/types.d.ts.map +1 -1
- package/dist/llm/error-codes.cjs +1 -0
- package/dist/llm/error-codes.d.ts +1 -0
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -0
- package/dist/llm/errors.cjs +15 -0
- package/dist/llm/errors.d.ts +15 -8
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +15 -0
- package/dist/llm/executor/turn-executor.cjs +27 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +27 -0
- package/dist/llm/registry.cjs +472 -28
- package/dist/llm/registry.d.ts +80 -4
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +464 -25
- package/dist/llm/resolver.cjs +13 -0
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +16 -1
- package/dist/llm/schemas.d.ts +59 -59
- package/dist/llm/services/factory.cjs +41 -25
- package/dist/llm/services/factory.d.ts +20 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +42 -26
- package/dist/llm/services/test-utils.integration.cjs +5 -1
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +5 -1
- package/dist/llm/types.cjs +5 -2
- package/dist/llm/types.d.ts +1 -1
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +5 -2
- package/dist/logger/logger.cjs +6 -7
- package/dist/logger/logger.d.ts +1 -0
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +6 -7
- package/dist/logger/v2/dexto-logger.cjs +4 -0
- package/dist/logger/v2/dexto-logger.d.ts +3 -0
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +4 -0
- package/dist/logger/v2/types.d.ts +2 -0
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +1 -0
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +13 -0
- package/dist/mcp/manager.cjs +46 -4
- package/dist/mcp/manager.d.ts +10 -2
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +46 -4
- package/dist/mcp/mcp-client.cjs +89 -5
- package/dist/mcp/mcp-client.d.ts +5 -1
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +89 -5
- package/dist/mcp/schemas.cjs +6 -1
- package/dist/mcp/schemas.d.ts +1 -1
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/mcp/types.d.ts +5 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/prompts/index.d.ts +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.cjs +90 -4
- package/dist/prompts/prompt-manager.d.ts +16 -6
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +90 -4
- package/dist/prompts/providers/config-prompt-provider.cjs +104 -10
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +105 -11
- package/dist/prompts/providers/custom-prompt-provider.cjs +1 -0
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.cjs +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -0
- package/dist/prompts/schemas.cjs +28 -2
- package/dist/prompts/schemas.d.ts +130 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +28 -2
- package/dist/prompts/types.d.ts +55 -3
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/session/chat-session.d.ts +1 -1
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/index.d.ts +1 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/session-manager.cjs +47 -3
- package/dist/session/session-manager.d.ts +10 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +47 -3
- package/dist/systemPrompt/contributors.cjs +42 -0
- package/dist/systemPrompt/contributors.d.ts +13 -0
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +41 -0
- package/dist/tools/errors.cjs +7 -3
- package/dist/tools/errors.d.ts +5 -1
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +7 -3
- package/dist/tools/internal-tools/constants.cjs +2 -1
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +2 -1
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.cjs +140 -0
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts +24 -0
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.js +117 -0
- package/dist/tools/internal-tools/provider.cjs +15 -0
- package/dist/tools/internal-tools/provider.d.ts +12 -0
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +15 -0
- package/dist/tools/internal-tools/registry.cjs +6 -0
- package/dist/tools/internal-tools/registry.d.ts +34 -0
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +6 -0
- package/dist/tools/schemas.cjs +2 -2
- package/dist/tools/schemas.d.ts +1 -1
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +2 -2
- package/dist/tools/tool-manager.cjs +230 -79
- package/dist/tools/tool-manager.d.ts +89 -8
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +231 -80
- package/dist/utils/api-key-resolver.cjs +5 -2
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +5 -2
- package/dist/utils/service-initializer.cjs +8 -2
- package/dist/utils/service-initializer.d.ts +5 -1
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +8 -2
- package/package.json +1 -1
package/dist/prompts/types.d.ts
CHANGED
|
@@ -9,22 +9,57 @@ export interface PromptArgument {
|
|
|
9
9
|
required?: boolean | undefined;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* MCP-compliant prompt definition
|
|
13
|
-
*
|
|
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
|
-
/**
|
|
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;
|
|
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
|
-
|
|
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":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACH,eAAe,EACf,aAAa,EAIhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,WAAW;IA6DhB,OAAO,CAAC,QAAQ;aAWA,EAAE,EAAE,MAAM;IAvE9B;;;;;;;;;;OAUG;IACH,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAE1C;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAgC;IAEvD;;;;;OAKG;IACH,OAAO,CAAC,UAAU,CAAoB;IAEtC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAA6D;IAE/E;;OAEG;IACH,OAAO,CAAC,wBAAwB,CACvB;IAET;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAgC;IAE5D,
|
|
1
|
+
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
|
package/dist/session/index.d.ts
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
};
|
package/dist/tools/errors.cjs
CHANGED
|
@@ -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
|
-
|
|
61
|
-
{ toolName, sessionId }
|
|
64
|
+
message,
|
|
65
|
+
{ toolName, sessionId, userMessage }
|
|
62
66
|
);
|
|
63
67
|
}
|
|
64
68
|
/**
|
package/dist/tools/errors.d.ts
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/tools/errors.js
CHANGED
|
@@ -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
|
-
|
|
39
|
-
{ toolName, sessionId }
|
|
42
|
+
message,
|
|
43
|
+
{ toolName, sessionId, userMessage }
|
|
40
44
|
);
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
@@ -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,
|
|
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"}
|