@dexto/core 1.6.14 → 1.6.16
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 +2 -2
- package/dist/agent/DextoAgent.js +2 -2
- package/dist/agent/schemas.d.ts +8 -8
- package/dist/llm/providers/codex-app-server.cjs +50 -3
- package/dist/llm/providers/codex-app-server.d.ts.map +1 -1
- package/dist/llm/providers/codex-app-server.js +40 -3
- package/dist/llm/services/vercel.cjs +3 -1
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +3 -1
- package/dist/systemPrompt/types.d.ts +4 -0
- package/dist/systemPrompt/types.d.ts.map +1 -1
- package/dist/tools/tool-manager.cjs +56 -6
- package/dist/tools/tool-manager.d.ts +5 -2
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +56 -6
- package/dist/tools/types.d.ts +5 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/execution-context.cjs +71 -9
- package/dist/utils/execution-context.d.ts.map +1 -1
- package/dist/utils/execution-context.js +72 -10
- package/dist/utils/service-initializer.cjs +1 -1
- package/dist/utils/service-initializer.js +1 -1
- package/package.json +1 -1
|
@@ -1466,7 +1466,7 @@ Either:
|
|
|
1466
1466
|
this.logger.debug(`Compaction skipped for session ${sessionId} - history too short`);
|
|
1467
1467
|
return null;
|
|
1468
1468
|
}
|
|
1469
|
-
const contributorContext = await this.toolManager.buildContributorContext();
|
|
1469
|
+
const contributorContext = await this.toolManager.buildContributorContext({ sessionId });
|
|
1470
1470
|
const tools = await llmService.getEnabledTools();
|
|
1471
1471
|
const beforeEstimate = await contextManager.getContextTokenEstimate(
|
|
1472
1472
|
contributorContext,
|
|
@@ -1544,7 +1544,7 @@ Either:
|
|
|
1544
1544
|
throw import_session.SessionError.notFound(sessionId);
|
|
1545
1545
|
}
|
|
1546
1546
|
const contextManager = session.getContextManager();
|
|
1547
|
-
const contributorContext = await this.toolManager.buildContributorContext();
|
|
1547
|
+
const contributorContext = await this.toolManager.buildContributorContext({ sessionId });
|
|
1548
1548
|
const llmService = session.getLLMService();
|
|
1549
1549
|
const tools = await llmService.getEnabledTools();
|
|
1550
1550
|
const tokenEstimate = await contextManager.getContextTokenEstimate(
|
package/dist/agent/DextoAgent.js
CHANGED
|
@@ -1401,7 +1401,7 @@ Either:
|
|
|
1401
1401
|
this.logger.debug(`Compaction skipped for session ${sessionId} - history too short`);
|
|
1402
1402
|
return null;
|
|
1403
1403
|
}
|
|
1404
|
-
const contributorContext = await this.toolManager.buildContributorContext();
|
|
1404
|
+
const contributorContext = await this.toolManager.buildContributorContext({ sessionId });
|
|
1405
1405
|
const tools = await llmService.getEnabledTools();
|
|
1406
1406
|
const beforeEstimate = await contextManager.getContextTokenEstimate(
|
|
1407
1407
|
contributorContext,
|
|
@@ -1479,7 +1479,7 @@ Either:
|
|
|
1479
1479
|
throw SessionError.notFound(sessionId);
|
|
1480
1480
|
}
|
|
1481
1481
|
const contextManager = session.getContextManager();
|
|
1482
|
-
const contributorContext = await this.toolManager.buildContributorContext();
|
|
1482
|
+
const contributorContext = await this.toolManager.buildContributorContext({ sessionId });
|
|
1483
1483
|
const llmService = session.getLLMService();
|
|
1484
1484
|
const tools = await llmService.getEnabledTools();
|
|
1485
1485
|
const tokenEstimate = await contextManager.getContextTokenEstimate(
|
package/dist/agent/schemas.d.ts
CHANGED
|
@@ -781,10 +781,6 @@ export declare const AgentCardSchema: z.ZodObject<{
|
|
|
781
781
|
stateTransitionHistory: boolean;
|
|
782
782
|
pushNotifications?: boolean | undefined;
|
|
783
783
|
};
|
|
784
|
-
protocolVersion: string;
|
|
785
|
-
preferredTransport: "JSONRPC" | "GRPC" | "HTTP+JSON";
|
|
786
|
-
defaultInputModes: string[];
|
|
787
|
-
defaultOutputModes: string[];
|
|
788
784
|
skills: {
|
|
789
785
|
description: string;
|
|
790
786
|
name: string;
|
|
@@ -794,6 +790,10 @@ export declare const AgentCardSchema: z.ZodObject<{
|
|
|
794
790
|
outputModes: string[];
|
|
795
791
|
examples?: string[] | undefined;
|
|
796
792
|
}[];
|
|
793
|
+
protocolVersion: string;
|
|
794
|
+
preferredTransport: "JSONRPC" | "GRPC" | "HTTP+JSON";
|
|
795
|
+
defaultInputModes: string[];
|
|
796
|
+
defaultOutputModes: string[];
|
|
797
797
|
metadata?: z.objectOutputType<{
|
|
798
798
|
dexto: z.ZodOptional<z.ZodObject<{
|
|
799
799
|
authentication: z.ZodOptional<z.ZodObject<{
|
|
@@ -1021,10 +1021,6 @@ export declare const AgentCardSchema: z.ZodObject<{
|
|
|
1021
1021
|
url: string;
|
|
1022
1022
|
organization: string;
|
|
1023
1023
|
} | undefined;
|
|
1024
|
-
protocolVersion?: string | undefined;
|
|
1025
|
-
preferredTransport?: "JSONRPC" | "GRPC" | "HTTP+JSON" | undefined;
|
|
1026
|
-
defaultInputModes?: string[] | undefined;
|
|
1027
|
-
defaultOutputModes?: string[] | undefined;
|
|
1028
1024
|
skills?: {
|
|
1029
1025
|
description: string;
|
|
1030
1026
|
name: string;
|
|
@@ -1034,6 +1030,10 @@ export declare const AgentCardSchema: z.ZodObject<{
|
|
|
1034
1030
|
inputModes?: string[] | undefined;
|
|
1035
1031
|
outputModes?: string[] | undefined;
|
|
1036
1032
|
}[] | undefined;
|
|
1033
|
+
protocolVersion?: string | undefined;
|
|
1034
|
+
preferredTransport?: "JSONRPC" | "GRPC" | "HTTP+JSON" | undefined;
|
|
1035
|
+
defaultInputModes?: string[] | undefined;
|
|
1036
|
+
defaultOutputModes?: string[] | undefined;
|
|
1037
1037
|
iconUrl?: string | undefined;
|
|
1038
1038
|
documentationUrl?: string | undefined;
|
|
1039
1039
|
additionalInterfaces?: {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var codex_app_server_exports = {};
|
|
20
30
|
__export(codex_app_server_exports, {
|
|
@@ -22,10 +32,13 @@ __export(codex_app_server_exports, {
|
|
|
22
32
|
createCodexLanguageModel: () => createCodexLanguageModel
|
|
23
33
|
});
|
|
24
34
|
module.exports = __toCommonJS(codex_app_server_exports);
|
|
35
|
+
var fs = __toESM(require("node:fs"), 1);
|
|
25
36
|
var import_node_child_process = require("node:child_process");
|
|
37
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
26
38
|
var import_node_readline = require("node:readline");
|
|
27
39
|
var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
|
|
28
40
|
var import_types = require("../../errors/types.js");
|
|
41
|
+
var import_path = require("../../utils/path.js");
|
|
29
42
|
var import_safe_stringify = require("../../utils/safe-stringify.js");
|
|
30
43
|
var import_error_codes = require("../error-codes.js");
|
|
31
44
|
var import_errors = require("../errors.js");
|
|
@@ -66,6 +79,7 @@ const DEFAULT_CLIENT_INFO = {
|
|
|
66
79
|
title: "Dexto",
|
|
67
80
|
version: "1.0.0"
|
|
68
81
|
};
|
|
82
|
+
const MANAGED_CODEX_BINARY = process.platform === "win32" ? "codex.cmd" : "codex";
|
|
69
83
|
const CODEX_DEVELOPER_INSTRUCTIONS = [
|
|
70
84
|
"You are providing model responses for a host application.",
|
|
71
85
|
"Treat the provided input as the full conversation transcript.",
|
|
@@ -98,6 +112,39 @@ function getArray(value) {
|
|
|
98
112
|
function normalizeError(error) {
|
|
99
113
|
return error instanceof Error ? error : createCodexClientRuntimeError(String(error));
|
|
100
114
|
}
|
|
115
|
+
function isMissingCodexCliError(error) {
|
|
116
|
+
const missingCodexError = error;
|
|
117
|
+
if (missingCodexError.isMissingCodexError === true) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
const code = missingCodexError.code;
|
|
121
|
+
return error.message.includes("Codex CLI not found on PATH") || code === "ENOENT" && (error.message.includes("spawn codex ENOENT") || error.message.includes("Codex CLI command '"));
|
|
122
|
+
}
|
|
123
|
+
function normalizeCodexStartupError(error, command) {
|
|
124
|
+
const normalized = normalizeError(error);
|
|
125
|
+
const errno = normalized;
|
|
126
|
+
if (errno.code !== "ENOENT" || !normalized.message.includes(`spawn ${command} ENOENT`)) {
|
|
127
|
+
return normalized;
|
|
128
|
+
}
|
|
129
|
+
const message = command === "codex" ? "Codex CLI not found on PATH. Install Codex to use ChatGPT Login in Dexto." : `Codex CLI command '${command}' not found on PATH. Install Codex to use ChatGPT Login in Dexto.`;
|
|
130
|
+
const startupError = new Error(message);
|
|
131
|
+
startupError.code = "ENOENT";
|
|
132
|
+
startupError.isMissingCodexError = true;
|
|
133
|
+
return startupError;
|
|
134
|
+
}
|
|
135
|
+
function getManagedCodexCommand() {
|
|
136
|
+
try {
|
|
137
|
+
const candidate = import_node_path.default.join(
|
|
138
|
+
(0, import_path.getDextoGlobalPath)("deps"),
|
|
139
|
+
"node_modules",
|
|
140
|
+
".bin",
|
|
141
|
+
MANAGED_CODEX_BINARY
|
|
142
|
+
);
|
|
143
|
+
return fs.existsSync(candidate) ? candidate : null;
|
|
144
|
+
} catch {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
101
148
|
function parseCodexAccount(value) {
|
|
102
149
|
if (!isRecord(value)) {
|
|
103
150
|
return null;
|
|
@@ -543,7 +590,7 @@ function toCodexFailureMessage(error, modelId) {
|
|
|
543
590
|
return error;
|
|
544
591
|
}
|
|
545
592
|
const normalized = normalizeError(error);
|
|
546
|
-
if (normalized
|
|
593
|
+
if (isMissingCodexCliError(normalized)) {
|
|
547
594
|
return import_errors.LLMError.missingConfig(
|
|
548
595
|
"openai-compatible",
|
|
549
596
|
"the Codex CLI on PATH (install Codex to use ChatGPT Login in Dexto)"
|
|
@@ -632,7 +679,7 @@ class CodexAppServerClient {
|
|
|
632
679
|
started = false;
|
|
633
680
|
closed = false;
|
|
634
681
|
constructor(options = {}) {
|
|
635
|
-
this.command = options.command ?? "codex";
|
|
682
|
+
this.command = options.command ?? getManagedCodexCommand() ?? "codex";
|
|
636
683
|
this.cwd = options.cwd;
|
|
637
684
|
this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
638
685
|
this.clientInfo = options.clientInfo ?? DEFAULT_CLIENT_INFO;
|
|
@@ -848,7 +895,7 @@ class CodexAppServerClient {
|
|
|
848
895
|
const drainStderr = () => void 0;
|
|
849
896
|
child.stderr.on("data", drainStderr);
|
|
850
897
|
child.on("error", (error) => {
|
|
851
|
-
this.rejectPending(error);
|
|
898
|
+
this.rejectPending(normalizeCodexStartupError(error, this.command));
|
|
852
899
|
});
|
|
853
900
|
child.on("exit", (code, signal) => {
|
|
854
901
|
const wasClosed = this.closed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-app-server.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/codex-app-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-app-server.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/codex-app-server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACR,WAAW,EACX,eAAe,EAOlB,MAAM,kBAAkB,CAAC;AAU1B,KAAK,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAO5C,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9F,KAAK,wBAAwB,GAAG;IAC5B,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,kBAAkB,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEpC,KAAK,gBAAgB,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,MAAM,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;KACd,CAAC;CACL,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;KACd,CAAC;CACL,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,EAAE,EAAE,oBAAoB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAQF,KAAK,oBAAoB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACjE,KAAK,qBAAqB,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAEnE,KAAK,gBAAgB,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAC;AAUF,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAMF,MAAM,WAAW,2BAA2B;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AA4yBD,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoC;IACrE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;WAOM,MAAM,CAAC,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAO1D,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOtD,WAAW,CAAC,YAAY,GAAE,OAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAK7E,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKjE,qBAAqB,CACvB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAqCxE,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAoBvC,cAAc,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAKxD,oBAAoB,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;KACrC,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAkB/B,SAAS,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,YAAY,CAAC,EAAE,WAAW,CAAC;KAC9B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkB7B,mBAAmB,CACrB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,EACtD,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,OAAO,CAAC,OAAO,CAAC;YAsEL,KAAK;IAwDnB,OAAO,CAAC,UAAU;IAkElB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,MAAM;YAIA,OAAO;IAuCrB,sBAAsB,CAAC,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAOvE,mBAAmB,CAAC,EAAE,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAe,GAAG,IAAI;IAU3F,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,aAAa;CASxB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAClE,GAAG,eAAe,CAielB"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import "../../chunk-PTJYTZNU.js";
|
|
2
|
+
import * as fs from "node:fs";
|
|
2
3
|
import { spawn } from "node:child_process";
|
|
4
|
+
import path from "node:path";
|
|
3
5
|
import { createInterface } from "node:readline";
|
|
4
6
|
import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
|
|
5
7
|
import { ErrorScope, ErrorType } from "../../errors/types.js";
|
|
8
|
+
import { getDextoGlobalPath } from "../../utils/path.js";
|
|
6
9
|
import { safeStringify } from "../../utils/safe-stringify.js";
|
|
7
10
|
import { LLMErrorCode } from "../error-codes.js";
|
|
8
11
|
import { LLMError } from "../errors.js";
|
|
@@ -43,6 +46,7 @@ const DEFAULT_CLIENT_INFO = {
|
|
|
43
46
|
title: "Dexto",
|
|
44
47
|
version: "1.0.0"
|
|
45
48
|
};
|
|
49
|
+
const MANAGED_CODEX_BINARY = process.platform === "win32" ? "codex.cmd" : "codex";
|
|
46
50
|
const CODEX_DEVELOPER_INSTRUCTIONS = [
|
|
47
51
|
"You are providing model responses for a host application.",
|
|
48
52
|
"Treat the provided input as the full conversation transcript.",
|
|
@@ -75,6 +79,39 @@ function getArray(value) {
|
|
|
75
79
|
function normalizeError(error) {
|
|
76
80
|
return error instanceof Error ? error : createCodexClientRuntimeError(String(error));
|
|
77
81
|
}
|
|
82
|
+
function isMissingCodexCliError(error) {
|
|
83
|
+
const missingCodexError = error;
|
|
84
|
+
if (missingCodexError.isMissingCodexError === true) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
const code = missingCodexError.code;
|
|
88
|
+
return error.message.includes("Codex CLI not found on PATH") || code === "ENOENT" && (error.message.includes("spawn codex ENOENT") || error.message.includes("Codex CLI command '"));
|
|
89
|
+
}
|
|
90
|
+
function normalizeCodexStartupError(error, command) {
|
|
91
|
+
const normalized = normalizeError(error);
|
|
92
|
+
const errno = normalized;
|
|
93
|
+
if (errno.code !== "ENOENT" || !normalized.message.includes(`spawn ${command} ENOENT`)) {
|
|
94
|
+
return normalized;
|
|
95
|
+
}
|
|
96
|
+
const message = command === "codex" ? "Codex CLI not found on PATH. Install Codex to use ChatGPT Login in Dexto." : `Codex CLI command '${command}' not found on PATH. Install Codex to use ChatGPT Login in Dexto.`;
|
|
97
|
+
const startupError = new Error(message);
|
|
98
|
+
startupError.code = "ENOENT";
|
|
99
|
+
startupError.isMissingCodexError = true;
|
|
100
|
+
return startupError;
|
|
101
|
+
}
|
|
102
|
+
function getManagedCodexCommand() {
|
|
103
|
+
try {
|
|
104
|
+
const candidate = path.join(
|
|
105
|
+
getDextoGlobalPath("deps"),
|
|
106
|
+
"node_modules",
|
|
107
|
+
".bin",
|
|
108
|
+
MANAGED_CODEX_BINARY
|
|
109
|
+
);
|
|
110
|
+
return fs.existsSync(candidate) ? candidate : null;
|
|
111
|
+
} catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
78
115
|
function parseCodexAccount(value) {
|
|
79
116
|
if (!isRecord(value)) {
|
|
80
117
|
return null;
|
|
@@ -520,7 +557,7 @@ function toCodexFailureMessage(error, modelId) {
|
|
|
520
557
|
return error;
|
|
521
558
|
}
|
|
522
559
|
const normalized = normalizeError(error);
|
|
523
|
-
if (normalized
|
|
560
|
+
if (isMissingCodexCliError(normalized)) {
|
|
524
561
|
return LLMError.missingConfig(
|
|
525
562
|
"openai-compatible",
|
|
526
563
|
"the Codex CLI on PATH (install Codex to use ChatGPT Login in Dexto)"
|
|
@@ -609,7 +646,7 @@ class CodexAppServerClient {
|
|
|
609
646
|
started = false;
|
|
610
647
|
closed = false;
|
|
611
648
|
constructor(options = {}) {
|
|
612
|
-
this.command = options.command ?? "codex";
|
|
649
|
+
this.command = options.command ?? getManagedCodexCommand() ?? "codex";
|
|
613
650
|
this.cwd = options.cwd;
|
|
614
651
|
this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
615
652
|
this.clientInfo = options.clientInfo ?? DEFAULT_CLIENT_INFO;
|
|
@@ -825,7 +862,7 @@ class CodexAppServerClient {
|
|
|
825
862
|
const drainStderr = () => void 0;
|
|
826
863
|
child.stderr.on("data", drainStderr);
|
|
827
864
|
child.on("error", (error) => {
|
|
828
|
-
this.rejectPending(error);
|
|
865
|
+
this.rejectPending(normalizeCodexStartupError(error, this.command));
|
|
829
866
|
});
|
|
830
867
|
child.on("exit", (code, signal) => {
|
|
831
868
|
const wasClosed = this.closed;
|
|
@@ -199,7 +199,9 @@ class VercelLLMService {
|
|
|
199
199
|
const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
200
200
|
await this.contextManager.addUserMessage(parts);
|
|
201
201
|
const executor = this.createTurnExecutor(options?.signal);
|
|
202
|
-
const contributorContext = await this.toolManager.buildContributorContext(
|
|
202
|
+
const contributorContext = await this.toolManager.buildContributorContext({
|
|
203
|
+
sessionId: this.sessionId
|
|
204
|
+
});
|
|
203
205
|
const result = await executor.execute(contributorContext, true);
|
|
204
206
|
return {
|
|
205
207
|
text: result.text ?? ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/services/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,IAAI,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,qBAIa,gBAAgB;IACzB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,kBAAkB,CAEf;IACX,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC;;OAEG;IACH,OAAO,CAAC,UAAU;gBAKd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,2BAA2B,EAC5C,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,GAAG,IAAI;IAuC9F,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAMnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAc,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7C;;;;;;;OAOG;IACG,MAAM,CACR,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/services/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,IAAI,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,qBAIa,gBAAgB;IACzB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,kBAAkB,CAEf;IACX,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC;;OAEG;IACH,OAAO,CAAC,UAAU;gBAKd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,2BAA2B,EAC5C,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,GAAG,IAAI;IAuC9F,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAMnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAc,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7C;;;;;;;OAOG;IACG,MAAM,CACR,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA0D5B;;;OAGG;IACH,SAAS,IAAI,gBAAgB;IA+B7B;;OAEG;IACH,iBAAiB,IAAI,cAAc,CAAC,OAAO,CAAC;IAI5C;;OAEG;IACH,eAAe,IAAI,mBAAmB;IAItC;;OAEG;IACH,qBAAqB,IAAI,OAAO,mCAAmC,EAAE,kBAAkB,GAAG,IAAI;IAI9F,gBAAgB,IAAI,aAAa;CAGpC"}
|
|
@@ -136,7 +136,9 @@ class VercelLLMService {
|
|
|
136
136
|
const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
137
137
|
await this.contextManager.addUserMessage(parts);
|
|
138
138
|
const executor = this.createTurnExecutor(options?.signal);
|
|
139
|
-
const contributorContext = await this.toolManager.buildContributorContext(
|
|
139
|
+
const contributorContext = await this.toolManager.buildContributorContext({
|
|
140
|
+
sessionId: this.sessionId
|
|
141
|
+
});
|
|
140
142
|
const result = await executor.execute(contributorContext, true);
|
|
141
143
|
return {
|
|
142
144
|
text: result.text ?? ""
|
|
@@ -6,10 +6,14 @@ export type EnvironmentContext = {
|
|
|
6
6
|
shell?: string;
|
|
7
7
|
isGitRepo?: boolean;
|
|
8
8
|
};
|
|
9
|
+
export type SessionContext = {
|
|
10
|
+
id: string;
|
|
11
|
+
};
|
|
9
12
|
export interface DynamicContributorContext {
|
|
10
13
|
mcpManager: MCPManager;
|
|
11
14
|
workspace?: WorkspaceContext | null;
|
|
12
15
|
environment?: EnvironmentContext;
|
|
16
|
+
session?: SessionContext | null;
|
|
13
17
|
}
|
|
14
18
|
export type DynamicContributorContextOverrides = Partial<DynamicContributorContext>;
|
|
15
19
|
export type DynamicContributorContextFactory = () => DynamicContributorContextOverrides | Promise<DynamicContributorContextOverrides>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAGF,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,kCAAkC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACpF,MAAM,MAAM,gCAAgC,GAAG,MACzC,kCAAkC,GAClC,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnE"}
|
|
@@ -214,15 +214,15 @@ let _ToolManager = class _ToolManager {
|
|
|
214
214
|
/**
|
|
215
215
|
* Set workspace manager for tool execution context propagation.
|
|
216
216
|
*/
|
|
217
|
-
setWorkspaceManager(workspaceManager) {
|
|
217
|
+
async setWorkspaceManager(workspaceManager) {
|
|
218
218
|
this.workspaceManager = workspaceManager;
|
|
219
|
-
void this.refreshWorkspace();
|
|
220
219
|
if (!this.workspaceListenerAttached) {
|
|
221
220
|
this.workspaceListenerAttached = true;
|
|
222
221
|
this.agentEventBus.on(
|
|
223
222
|
"workspace:changed",
|
|
224
223
|
(payload) => {
|
|
225
224
|
this.currentWorkspace = payload.workspace ?? void 0;
|
|
225
|
+
this.invalidateCache();
|
|
226
226
|
},
|
|
227
227
|
{ signal: this.workspaceListenerAbort.signal }
|
|
228
228
|
);
|
|
@@ -232,6 +232,7 @@ let _ToolManager = class _ToolManager {
|
|
|
232
232
|
}
|
|
233
233
|
});
|
|
234
234
|
}
|
|
235
|
+
await this.refreshWorkspace();
|
|
235
236
|
this.logger.debug("WorkspaceManager reference configured for ToolManager");
|
|
236
237
|
}
|
|
237
238
|
async refreshWorkspace() {
|
|
@@ -239,7 +240,11 @@ let _ToolManager = class _ToolManager {
|
|
|
239
240
|
return;
|
|
240
241
|
}
|
|
241
242
|
try {
|
|
243
|
+
const previousWorkspacePath = this.currentWorkspace?.path;
|
|
242
244
|
this.currentWorkspace = await this.workspaceManager.getWorkspace();
|
|
245
|
+
if (previousWorkspacePath !== this.currentWorkspace?.path) {
|
|
246
|
+
this.invalidateCache();
|
|
247
|
+
}
|
|
243
248
|
} catch (error) {
|
|
244
249
|
this.logger.debug(
|
|
245
250
|
`Failed to refresh workspace context: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -465,6 +470,31 @@ let _ToolManager = class _ToolManager {
|
|
|
465
470
|
this.cacheValid = false;
|
|
466
471
|
this.toolsCache = {};
|
|
467
472
|
}
|
|
473
|
+
async refreshDynamicToolDescriptions() {
|
|
474
|
+
if (!this.cacheValid) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
for (const [toolName, tool] of this.agentTools) {
|
|
478
|
+
if (!tool.getDescription) {
|
|
479
|
+
continue;
|
|
480
|
+
}
|
|
481
|
+
const cachedTool = this.toolsCache[toolName];
|
|
482
|
+
if (!cachedTool) {
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
try {
|
|
486
|
+
const fallbackDescription = tool.description.trim() ? tool.description : "";
|
|
487
|
+
const dynamicDescription = await tool.getDescription(
|
|
488
|
+
this.buildToolExecutionContext({})
|
|
489
|
+
);
|
|
490
|
+
cachedTool.description = dynamicDescription.trim() ? dynamicDescription : fallbackDescription;
|
|
491
|
+
} catch (error) {
|
|
492
|
+
this.logger.warn(
|
|
493
|
+
`Failed to refresh dynamic description for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
494
|
+
);
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
468
498
|
/**
|
|
469
499
|
* Set up listeners for MCP notifications to invalidate cache on changes
|
|
470
500
|
*/
|
|
@@ -807,11 +837,13 @@ let _ToolManager = class _ToolManager {
|
|
|
807
837
|
setContributorContextFactory(factory) {
|
|
808
838
|
this.contributorContextFactory = factory ?? void 0;
|
|
809
839
|
}
|
|
810
|
-
async buildContributorContext() {
|
|
840
|
+
async buildContributorContext(options) {
|
|
811
841
|
const baseWorkspace = this.currentWorkspace ?? null;
|
|
842
|
+
const sessionId = typeof options?.sessionId === "string" && options.sessionId.length > 0 ? options.sessionId : void 0;
|
|
812
843
|
const baseContext = {
|
|
813
844
|
mcpManager: this.mcpManager,
|
|
814
|
-
workspace: baseWorkspace
|
|
845
|
+
workspace: baseWorkspace,
|
|
846
|
+
...sessionId !== void 0 ? { session: { id: sessionId } } : {}
|
|
815
847
|
};
|
|
816
848
|
if (!this.contributorContextFactory) {
|
|
817
849
|
return baseContext;
|
|
@@ -820,11 +852,13 @@ let _ToolManager = class _ToolManager {
|
|
|
820
852
|
const overrides = await this.contributorContextFactory() ?? {};
|
|
821
853
|
const workspace = overrides.workspace !== void 0 ? overrides.workspace : baseWorkspace;
|
|
822
854
|
const environment = overrides.environment !== void 0 ? overrides.environment : baseContext.environment;
|
|
855
|
+
const session = overrides.session !== void 0 ? overrides.session : baseContext.session;
|
|
823
856
|
const mcpManager = overrides.mcpManager ?? baseContext.mcpManager;
|
|
824
857
|
return {
|
|
825
858
|
mcpManager,
|
|
826
859
|
workspace,
|
|
827
|
-
...environment !== void 0 ? { environment } : {}
|
|
860
|
+
...environment !== void 0 ? { environment } : {},
|
|
861
|
+
...session !== void 0 ? { session } : {}
|
|
828
862
|
};
|
|
829
863
|
} catch (error) {
|
|
830
864
|
this.logger.warn(
|
|
@@ -921,9 +955,24 @@ let _ToolManager = class _ToolManager {
|
|
|
921
955
|
mcpTools = {};
|
|
922
956
|
}
|
|
923
957
|
for (const [toolName, tool] of this.agentTools) {
|
|
958
|
+
let description = tool.description || "No description provided";
|
|
959
|
+
if (tool.getDescription) {
|
|
960
|
+
try {
|
|
961
|
+
const dynamicDescription = await tool.getDescription(
|
|
962
|
+
this.buildToolExecutionContext({})
|
|
963
|
+
);
|
|
964
|
+
if (dynamicDescription.trim()) {
|
|
965
|
+
description = dynamicDescription;
|
|
966
|
+
}
|
|
967
|
+
} catch (error) {
|
|
968
|
+
this.logger.warn(
|
|
969
|
+
`Failed to build dynamic description for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
970
|
+
);
|
|
971
|
+
}
|
|
972
|
+
}
|
|
924
973
|
allTools[toolName] = {
|
|
925
974
|
name: toolName,
|
|
926
|
-
description
|
|
975
|
+
description,
|
|
927
976
|
parameters: (0, import_tool_call_metadata.wrapToolParametersSchema)(
|
|
928
977
|
(0, import_schema.convertZodSchemaToJsonSchema)(tool.inputSchema, this.logger)
|
|
929
978
|
)
|
|
@@ -953,6 +1002,7 @@ let _ToolManager = class _ToolManager {
|
|
|
953
1002
|
*/
|
|
954
1003
|
async getAllTools() {
|
|
955
1004
|
if (this.cacheValid) {
|
|
1005
|
+
await this.refreshDynamicToolDescriptions();
|
|
956
1006
|
return this.toolsCache;
|
|
957
1007
|
}
|
|
958
1008
|
this.toolsCache = await this.buildAllTools();
|
|
@@ -83,7 +83,7 @@ export declare class ToolManager {
|
|
|
83
83
|
/**
|
|
84
84
|
* Set workspace manager for tool execution context propagation.
|
|
85
85
|
*/
|
|
86
|
-
setWorkspaceManager(workspaceManager: WorkspaceManager): void
|
|
86
|
+
setWorkspaceManager(workspaceManager: WorkspaceManager): Promise<void>;
|
|
87
87
|
private refreshWorkspace;
|
|
88
88
|
/**
|
|
89
89
|
* Set session-level auto-approve tools.
|
|
@@ -174,6 +174,7 @@ export declare class ToolManager {
|
|
|
174
174
|
* Invalidate the tools cache when tool sources change
|
|
175
175
|
*/
|
|
176
176
|
private invalidateCache;
|
|
177
|
+
private refreshDynamicToolDescriptions;
|
|
177
178
|
/**
|
|
178
179
|
* Set up listeners for MCP notifications to invalidate cache on changes
|
|
179
180
|
*/
|
|
@@ -213,7 +214,9 @@ export declare class ToolManager {
|
|
|
213
214
|
private autoApprovePendingDirectoryRequests;
|
|
214
215
|
getMcpManager(): MCPManager;
|
|
215
216
|
setContributorContextFactory(factory?: DynamicContributorContextFactory | null): void;
|
|
216
|
-
buildContributorContext(
|
|
217
|
+
buildContributorContext(options?: {
|
|
218
|
+
sessionId?: string | null;
|
|
219
|
+
}): Promise<DynamicContributorContext>;
|
|
217
220
|
/**
|
|
218
221
|
* Get all MCP tools (delegates to mcpManager.getAllTools())
|
|
219
222
|
* This provides access to MCP tools while maintaining separation of concerns
|
|
@@ -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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"}
|
|
@@ -151,15 +151,15 @@ let _ToolManager = class _ToolManager {
|
|
|
151
151
|
/**
|
|
152
152
|
* Set workspace manager for tool execution context propagation.
|
|
153
153
|
*/
|
|
154
|
-
setWorkspaceManager(workspaceManager) {
|
|
154
|
+
async setWorkspaceManager(workspaceManager) {
|
|
155
155
|
this.workspaceManager = workspaceManager;
|
|
156
|
-
void this.refreshWorkspace();
|
|
157
156
|
if (!this.workspaceListenerAttached) {
|
|
158
157
|
this.workspaceListenerAttached = true;
|
|
159
158
|
this.agentEventBus.on(
|
|
160
159
|
"workspace:changed",
|
|
161
160
|
(payload) => {
|
|
162
161
|
this.currentWorkspace = payload.workspace ?? void 0;
|
|
162
|
+
this.invalidateCache();
|
|
163
163
|
},
|
|
164
164
|
{ signal: this.workspaceListenerAbort.signal }
|
|
165
165
|
);
|
|
@@ -169,6 +169,7 @@ let _ToolManager = class _ToolManager {
|
|
|
169
169
|
}
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
|
+
await this.refreshWorkspace();
|
|
172
173
|
this.logger.debug("WorkspaceManager reference configured for ToolManager");
|
|
173
174
|
}
|
|
174
175
|
async refreshWorkspace() {
|
|
@@ -176,7 +177,11 @@ let _ToolManager = class _ToolManager {
|
|
|
176
177
|
return;
|
|
177
178
|
}
|
|
178
179
|
try {
|
|
180
|
+
const previousWorkspacePath = this.currentWorkspace?.path;
|
|
179
181
|
this.currentWorkspace = await this.workspaceManager.getWorkspace();
|
|
182
|
+
if (previousWorkspacePath !== this.currentWorkspace?.path) {
|
|
183
|
+
this.invalidateCache();
|
|
184
|
+
}
|
|
180
185
|
} catch (error) {
|
|
181
186
|
this.logger.debug(
|
|
182
187
|
`Failed to refresh workspace context: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -402,6 +407,31 @@ let _ToolManager = class _ToolManager {
|
|
|
402
407
|
this.cacheValid = false;
|
|
403
408
|
this.toolsCache = {};
|
|
404
409
|
}
|
|
410
|
+
async refreshDynamicToolDescriptions() {
|
|
411
|
+
if (!this.cacheValid) {
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
for (const [toolName, tool] of this.agentTools) {
|
|
415
|
+
if (!tool.getDescription) {
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
const cachedTool = this.toolsCache[toolName];
|
|
419
|
+
if (!cachedTool) {
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
try {
|
|
423
|
+
const fallbackDescription = tool.description.trim() ? tool.description : "";
|
|
424
|
+
const dynamicDescription = await tool.getDescription(
|
|
425
|
+
this.buildToolExecutionContext({})
|
|
426
|
+
);
|
|
427
|
+
cachedTool.description = dynamicDescription.trim() ? dynamicDescription : fallbackDescription;
|
|
428
|
+
} catch (error) {
|
|
429
|
+
this.logger.warn(
|
|
430
|
+
`Failed to refresh dynamic description for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
405
435
|
/**
|
|
406
436
|
* Set up listeners for MCP notifications to invalidate cache on changes
|
|
407
437
|
*/
|
|
@@ -744,11 +774,13 @@ let _ToolManager = class _ToolManager {
|
|
|
744
774
|
setContributorContextFactory(factory) {
|
|
745
775
|
this.contributorContextFactory = factory ?? void 0;
|
|
746
776
|
}
|
|
747
|
-
async buildContributorContext() {
|
|
777
|
+
async buildContributorContext(options) {
|
|
748
778
|
const baseWorkspace = this.currentWorkspace ?? null;
|
|
779
|
+
const sessionId = typeof options?.sessionId === "string" && options.sessionId.length > 0 ? options.sessionId : void 0;
|
|
749
780
|
const baseContext = {
|
|
750
781
|
mcpManager: this.mcpManager,
|
|
751
|
-
workspace: baseWorkspace
|
|
782
|
+
workspace: baseWorkspace,
|
|
783
|
+
...sessionId !== void 0 ? { session: { id: sessionId } } : {}
|
|
752
784
|
};
|
|
753
785
|
if (!this.contributorContextFactory) {
|
|
754
786
|
return baseContext;
|
|
@@ -757,11 +789,13 @@ let _ToolManager = class _ToolManager {
|
|
|
757
789
|
const overrides = await this.contributorContextFactory() ?? {};
|
|
758
790
|
const workspace = overrides.workspace !== void 0 ? overrides.workspace : baseWorkspace;
|
|
759
791
|
const environment = overrides.environment !== void 0 ? overrides.environment : baseContext.environment;
|
|
792
|
+
const session = overrides.session !== void 0 ? overrides.session : baseContext.session;
|
|
760
793
|
const mcpManager = overrides.mcpManager ?? baseContext.mcpManager;
|
|
761
794
|
return {
|
|
762
795
|
mcpManager,
|
|
763
796
|
workspace,
|
|
764
|
-
...environment !== void 0 ? { environment } : {}
|
|
797
|
+
...environment !== void 0 ? { environment } : {},
|
|
798
|
+
...session !== void 0 ? { session } : {}
|
|
765
799
|
};
|
|
766
800
|
} catch (error) {
|
|
767
801
|
this.logger.warn(
|
|
@@ -858,9 +892,24 @@ let _ToolManager = class _ToolManager {
|
|
|
858
892
|
mcpTools = {};
|
|
859
893
|
}
|
|
860
894
|
for (const [toolName, tool] of this.agentTools) {
|
|
895
|
+
let description = tool.description || "No description provided";
|
|
896
|
+
if (tool.getDescription) {
|
|
897
|
+
try {
|
|
898
|
+
const dynamicDescription = await tool.getDescription(
|
|
899
|
+
this.buildToolExecutionContext({})
|
|
900
|
+
);
|
|
901
|
+
if (dynamicDescription.trim()) {
|
|
902
|
+
description = dynamicDescription;
|
|
903
|
+
}
|
|
904
|
+
} catch (error) {
|
|
905
|
+
this.logger.warn(
|
|
906
|
+
`Failed to build dynamic description for '${toolName}': ${error instanceof Error ? error.message : String(error)}`
|
|
907
|
+
);
|
|
908
|
+
}
|
|
909
|
+
}
|
|
861
910
|
allTools[toolName] = {
|
|
862
911
|
name: toolName,
|
|
863
|
-
description
|
|
912
|
+
description,
|
|
864
913
|
parameters: wrapToolParametersSchema(
|
|
865
914
|
convertZodSchemaToJsonSchema(tool.inputSchema, this.logger)
|
|
866
915
|
)
|
|
@@ -890,6 +939,7 @@ let _ToolManager = class _ToolManager {
|
|
|
890
939
|
*/
|
|
891
940
|
async getAllTools() {
|
|
892
941
|
if (this.cacheValid) {
|
|
942
|
+
await this.refreshDynamicToolDescriptions();
|
|
893
943
|
return this.toolsCache;
|
|
894
944
|
}
|
|
895
945
|
this.toolsCache = await this.buildAllTools();
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -195,6 +195,11 @@ export interface Tool<TSchema extends ZodTypeAny = ZodTypeAny> {
|
|
|
195
195
|
id: string;
|
|
196
196
|
/** Human-readable description of what the tool does */
|
|
197
197
|
description: string;
|
|
198
|
+
/**
|
|
199
|
+
* Optional dynamic description for LLM tool discovery.
|
|
200
|
+
* Use when the tool description depends on runtime context such as the active workspace.
|
|
201
|
+
*/
|
|
202
|
+
getDescription?: ((context: ToolExecutionContext) => Promise<string> | string) | undefined;
|
|
198
203
|
/** Zod schema defining the input parameters */
|
|
199
204
|
inputSchema: TSchema;
|
|
200
205
|
/** The actual function that executes the tool - input is validated by Zod before execution */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,22 +36,84 @@ module.exports = __toCommonJS(execution_context_exports);
|
|
|
36
36
|
var import_fs_walk = require("./fs-walk.js");
|
|
37
37
|
var import_fs = require("fs");
|
|
38
38
|
var path = __toESM(require("path"), 1);
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const DIRECT_PROJECT_ROOT_MARKERS = [
|
|
40
|
+
path.join(".dexto", "deploy.json"),
|
|
41
|
+
path.join(".dexto", "cloud", "bootstrap.json"),
|
|
42
|
+
"coding-agent.yml",
|
|
43
|
+
"coding-agent.yaml",
|
|
44
|
+
path.join("agents", "registry.json"),
|
|
45
|
+
path.join("agents", "agent-registry.json"),
|
|
46
|
+
path.join("agents", "coding-agent.yml"),
|
|
47
|
+
path.join("agents", "coding-agent.yaml"),
|
|
48
|
+
path.join("agents", "coding-agent", "coding-agent.yml"),
|
|
49
|
+
path.join("agents", "coding-agent", "coding-agent.yaml"),
|
|
50
|
+
path.join("src", "dexto", "agents", "coding-agent.yml"),
|
|
51
|
+
path.join("src", "dexto", "agents", "coding-agent.yaml")
|
|
52
|
+
];
|
|
53
|
+
function getCaseInsensitiveRootFilename(dirPath, filename) {
|
|
54
|
+
try {
|
|
55
|
+
return (0, import_fs.readdirSync)(dirPath).find((entry) => entry.toLowerCase() === filename.toLowerCase()) ?? null;
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function hasWorkspaceAuthoringDirectory(dirPath, name) {
|
|
61
|
+
try {
|
|
62
|
+
return (0, import_fs.statSync)(path.join(dirPath, name)).isDirectory();
|
|
63
|
+
} catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function hasDextoWorkspaceAgentsFile(dirPath) {
|
|
68
|
+
const agentsFilename = getCaseInsensitiveRootFilename(dirPath, "agents.md");
|
|
69
|
+
if (!agentsFilename) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
41
72
|
try {
|
|
42
|
-
const
|
|
43
|
-
return
|
|
73
|
+
const content = (0, import_fs.readFileSync)(path.join(dirPath, agentsFilename), "utf-8").toLowerCase();
|
|
74
|
+
return content.includes("dexto workspace") || content.includes("dexto-workspace");
|
|
44
75
|
} catch {
|
|
45
76
|
return false;
|
|
46
77
|
}
|
|
47
78
|
}
|
|
79
|
+
function hasWorkspaceScaffoldMarker(dirPath) {
|
|
80
|
+
return hasDextoWorkspaceAgentsFile(dirPath) && (hasWorkspaceAuthoringDirectory(dirPath, "agents") || hasWorkspaceAuthoringDirectory(dirPath, "skills"));
|
|
81
|
+
}
|
|
82
|
+
function readPackageName(dirPath) {
|
|
83
|
+
try {
|
|
84
|
+
const pkg = JSON.parse((0, import_fs.readFileSync)(path.join(dirPath, "package.json"), "utf-8"));
|
|
85
|
+
return typeof pkg.name === "string" ? pkg.name : null;
|
|
86
|
+
} catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function isInternalDextoPackage(dirPath) {
|
|
91
|
+
const packageName = readPackageName(dirPath);
|
|
92
|
+
return packageName === "dexto" || packageName?.startsWith("@dexto/") === true;
|
|
93
|
+
}
|
|
94
|
+
function hasProjectRootMarker(dirPath) {
|
|
95
|
+
if (hasWorkspaceScaffoldMarker(dirPath)) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
return DIRECT_PROJECT_ROOT_MARKERS.some(
|
|
99
|
+
(relativePath) => (0, import_fs.existsSync)(path.join(dirPath, relativePath))
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
function isDextoSourceDirectory(dirPath) {
|
|
103
|
+
return readPackageName(dirPath) === "dexto-monorepo";
|
|
104
|
+
}
|
|
48
105
|
function isDextoProjectDirectory(dirPath) {
|
|
49
|
-
|
|
106
|
+
if (isDextoSourceDirectory(dirPath)) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
if (isInternalDextoPackage(dirPath)) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (hasProjectRootMarker(dirPath)) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
50
115
|
try {
|
|
51
|
-
const pkg = JSON.parse((0, import_fs.readFileSync)(
|
|
52
|
-
if (pkg.name === "dexto" || pkg.name === "@dexto/core" || pkg.name === "@dexto/webui") {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
116
|
+
const pkg = JSON.parse((0, import_fs.readFileSync)(path.join(dirPath, "package.json"), "utf-8"));
|
|
55
117
|
const allDeps = {
|
|
56
118
|
...pkg.dependencies ?? {},
|
|
57
119
|
...pkg.devDependencies ?? {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/utils/execution-context.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/utils/execution-context.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;AA2H/E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAErF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAsB,GAAG,gBAAgB,CAavF"}
|
|
@@ -1,23 +1,85 @@
|
|
|
1
1
|
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
import { walkUpDirectories } from "./fs-walk.js";
|
|
3
|
-
import { readFileSync } from "fs";
|
|
3
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
4
4
|
import * as path from "path";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const DIRECT_PROJECT_ROOT_MARKERS = [
|
|
6
|
+
path.join(".dexto", "deploy.json"),
|
|
7
|
+
path.join(".dexto", "cloud", "bootstrap.json"),
|
|
8
|
+
"coding-agent.yml",
|
|
9
|
+
"coding-agent.yaml",
|
|
10
|
+
path.join("agents", "registry.json"),
|
|
11
|
+
path.join("agents", "agent-registry.json"),
|
|
12
|
+
path.join("agents", "coding-agent.yml"),
|
|
13
|
+
path.join("agents", "coding-agent.yaml"),
|
|
14
|
+
path.join("agents", "coding-agent", "coding-agent.yml"),
|
|
15
|
+
path.join("agents", "coding-agent", "coding-agent.yaml"),
|
|
16
|
+
path.join("src", "dexto", "agents", "coding-agent.yml"),
|
|
17
|
+
path.join("src", "dexto", "agents", "coding-agent.yaml")
|
|
18
|
+
];
|
|
19
|
+
function getCaseInsensitiveRootFilename(dirPath, filename) {
|
|
20
|
+
try {
|
|
21
|
+
return readdirSync(dirPath).find((entry) => entry.toLowerCase() === filename.toLowerCase()) ?? null;
|
|
22
|
+
} catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function hasWorkspaceAuthoringDirectory(dirPath, name) {
|
|
27
|
+
try {
|
|
28
|
+
return statSync(path.join(dirPath, name)).isDirectory();
|
|
29
|
+
} catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function hasDextoWorkspaceAgentsFile(dirPath) {
|
|
34
|
+
const agentsFilename = getCaseInsensitiveRootFilename(dirPath, "agents.md");
|
|
35
|
+
if (!agentsFilename) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
7
38
|
try {
|
|
8
|
-
const
|
|
9
|
-
return
|
|
39
|
+
const content = readFileSync(path.join(dirPath, agentsFilename), "utf-8").toLowerCase();
|
|
40
|
+
return content.includes("dexto workspace") || content.includes("dexto-workspace");
|
|
10
41
|
} catch {
|
|
11
42
|
return false;
|
|
12
43
|
}
|
|
13
44
|
}
|
|
45
|
+
function hasWorkspaceScaffoldMarker(dirPath) {
|
|
46
|
+
return hasDextoWorkspaceAgentsFile(dirPath) && (hasWorkspaceAuthoringDirectory(dirPath, "agents") || hasWorkspaceAuthoringDirectory(dirPath, "skills"));
|
|
47
|
+
}
|
|
48
|
+
function readPackageName(dirPath) {
|
|
49
|
+
try {
|
|
50
|
+
const pkg = JSON.parse(readFileSync(path.join(dirPath, "package.json"), "utf-8"));
|
|
51
|
+
return typeof pkg.name === "string" ? pkg.name : null;
|
|
52
|
+
} catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function isInternalDextoPackage(dirPath) {
|
|
57
|
+
const packageName = readPackageName(dirPath);
|
|
58
|
+
return packageName === "dexto" || packageName?.startsWith("@dexto/") === true;
|
|
59
|
+
}
|
|
60
|
+
function hasProjectRootMarker(dirPath) {
|
|
61
|
+
if (hasWorkspaceScaffoldMarker(dirPath)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return DIRECT_PROJECT_ROOT_MARKERS.some(
|
|
65
|
+
(relativePath) => existsSync(path.join(dirPath, relativePath))
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
function isDextoSourceDirectory(dirPath) {
|
|
69
|
+
return readPackageName(dirPath) === "dexto-monorepo";
|
|
70
|
+
}
|
|
14
71
|
function isDextoProjectDirectory(dirPath) {
|
|
15
|
-
|
|
72
|
+
if (isDextoSourceDirectory(dirPath)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (isInternalDextoPackage(dirPath)) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
if (hasProjectRootMarker(dirPath)) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
16
81
|
try {
|
|
17
|
-
const pkg = JSON.parse(readFileSync(
|
|
18
|
-
if (pkg.name === "dexto" || pkg.name === "@dexto/core" || pkg.name === "@dexto/webui") {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
82
|
+
const pkg = JSON.parse(readFileSync(path.join(dirPath, "package.json"), "utf-8"));
|
|
21
83
|
const allDeps = {
|
|
22
84
|
...pkg.dependencies ?? {},
|
|
23
85
|
...pkg.devDependencies ?? {},
|
|
@@ -144,7 +144,7 @@ async function createAgentServices(config, logger, agentEventBus, overrides, com
|
|
|
144
144
|
[],
|
|
145
145
|
logger
|
|
146
146
|
);
|
|
147
|
-
toolManager.setWorkspaceManager(workspaceManager);
|
|
147
|
+
await toolManager.setWorkspaceManager(workspaceManager);
|
|
148
148
|
const mcpServerCount = Object.keys(config.mcpServers).length;
|
|
149
149
|
if (mcpServerCount === 0) {
|
|
150
150
|
logger.info("Agent initialized without MCP servers - only built-in capabilities available");
|
|
@@ -112,7 +112,7 @@ async function createAgentServices(config, logger, agentEventBus, overrides, com
|
|
|
112
112
|
[],
|
|
113
113
|
logger
|
|
114
114
|
);
|
|
115
|
-
toolManager.setWorkspaceManager(workspaceManager);
|
|
115
|
+
await toolManager.setWorkspaceManager(workspaceManager);
|
|
116
116
|
const mcpServerCount = Object.keys(config.mcpServers).length;
|
|
117
117
|
if (mcpServerCount === 0) {
|
|
118
118
|
logger.info("Agent initialized without MCP servers - only built-in capabilities available");
|