@dexto/core 1.5.3 → 1.5.5
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 +190 -1
- package/dist/agent/DextoAgent.d.ts +71 -0
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +181 -1
- package/dist/agent/schemas.d.ts +51 -21
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/context/compaction/overflow.cjs +6 -10
- package/dist/context/compaction/overflow.d.ts +14 -11
- package/dist/context/compaction/overflow.d.ts.map +1 -1
- package/dist/context/compaction/overflow.js +6 -10
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +15 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +15 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -1
- package/dist/context/compaction/providers/reactive-overflow-provider.js +15 -0
- package/dist/context/compaction/schemas.cjs +22 -2
- package/dist/context/compaction/schemas.d.ts +45 -0
- package/dist/context/compaction/schemas.d.ts.map +1 -1
- package/dist/context/compaction/schemas.js +22 -2
- package/dist/context/compaction/strategies/reactive-overflow.cjs +168 -26
- package/dist/context/compaction/strategies/reactive-overflow.d.ts +22 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -1
- package/dist/context/compaction/strategies/reactive-overflow.js +168 -26
- package/dist/context/compaction/types.d.ts +13 -1
- package/dist/context/compaction/types.d.ts.map +1 -1
- package/dist/context/manager.cjs +278 -31
- package/dist/context/manager.d.ts +192 -5
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +285 -32
- package/dist/context/types.d.ts +6 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/utils.cjs +77 -11
- package/dist/context/utils.d.ts +86 -8
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +71 -11
- package/dist/errors/types.cjs +0 -2
- package/dist/errors/types.d.ts +1 -5
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +0 -2
- package/dist/events/index.cjs +2 -0
- package/dist/events/index.d.ts +21 -6
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +2 -0
- package/dist/llm/executor/stream-processor.cjs +104 -28
- package/dist/llm/executor/stream-processor.d.ts +7 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +104 -28
- package/dist/llm/executor/turn-executor.cjs +147 -30
- package/dist/llm/executor/turn-executor.d.ts +28 -10
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +147 -30
- package/dist/llm/formatters/vercel.cjs +36 -28
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +36 -28
- package/dist/llm/services/factory.cjs +3 -2
- package/dist/llm/services/factory.d.ts +3 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +3 -2
- package/dist/llm/services/vercel.cjs +31 -6
- package/dist/llm/services/vercel.d.ts +18 -3
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +31 -6
- package/dist/session/chat-session.cjs +29 -13
- package/dist/session/chat-session.d.ts +6 -4
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +29 -13
- package/dist/session/session-manager.cjs +11 -0
- package/dist/session/session-manager.d.ts +7 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +11 -0
- package/dist/session/title-generator.cjs +2 -2
- package/dist/session/title-generator.js +2 -2
- package/dist/systemPrompt/in-built-prompts.cjs +36 -0
- package/dist/systemPrompt/in-built-prompts.d.ts +18 -1
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +25 -0
- package/dist/systemPrompt/manager.cjs +22 -0
- package/dist/systemPrompt/manager.d.ts +10 -0
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +22 -0
- package/dist/systemPrompt/registry.cjs +2 -1
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +2 -1
- package/dist/systemPrompt/schemas.cjs +7 -0
- package/dist/systemPrompt/schemas.d.ts +13 -13
- package/dist/systemPrompt/schemas.d.ts.map +1 -1
- package/dist/systemPrompt/schemas.js +7 -0
- package/dist/telemetry/telemetry.cjs +12 -5
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +12 -5
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/package.json +15 -5
- package/dist/filesystem/error-codes.cjs +0 -53
- package/dist/filesystem/error-codes.d.ts +0 -31
- package/dist/filesystem/error-codes.d.ts.map +0 -1
- package/dist/filesystem/error-codes.js +0 -30
- package/dist/filesystem/errors.cjs +0 -303
- package/dist/filesystem/errors.d.ts +0 -109
- package/dist/filesystem/errors.d.ts.map +0 -1
- package/dist/filesystem/errors.js +0 -280
- package/dist/filesystem/filesystem-service.cjs +0 -534
- package/dist/filesystem/filesystem-service.d.ts +0 -97
- package/dist/filesystem/filesystem-service.d.ts.map +0 -1
- package/dist/filesystem/filesystem-service.js +0 -501
- package/dist/filesystem/index.cjs +0 -37
- package/dist/filesystem/index.d.ts +0 -11
- package/dist/filesystem/index.d.ts.map +0 -1
- package/dist/filesystem/index.js +0 -11
- package/dist/filesystem/path-validator.cjs +0 -250
- package/dist/filesystem/path-validator.d.ts +0 -103
- package/dist/filesystem/path-validator.d.ts.map +0 -1
- package/dist/filesystem/path-validator.js +0 -217
- package/dist/filesystem/types.cjs +0 -16
- package/dist/filesystem/types.d.ts +0 -175
- package/dist/filesystem/types.d.ts.map +0 -1
- package/dist/filesystem/types.js +0 -0
- package/dist/process/command-validator.cjs +0 -554
- package/dist/process/command-validator.d.ts +0 -49
- package/dist/process/command-validator.d.ts.map +0 -1
- package/dist/process/command-validator.js +0 -531
- package/dist/process/error-codes.cjs +0 -47
- package/dist/process/error-codes.d.ts +0 -25
- package/dist/process/error-codes.d.ts.map +0 -1
- package/dist/process/error-codes.js +0 -24
- package/dist/process/errors.cjs +0 -244
- package/dist/process/errors.d.ts +0 -87
- package/dist/process/errors.d.ts.map +0 -1
- package/dist/process/errors.js +0 -221
- package/dist/process/index.cjs +0 -37
- package/dist/process/index.d.ts +0 -11
- package/dist/process/index.d.ts.map +0 -1
- package/dist/process/index.js +0 -11
- package/dist/process/process-service.cjs +0 -497
- package/dist/process/process-service.d.ts +0 -69
- package/dist/process/process-service.d.ts.map +0 -1
- package/dist/process/process-service.js +0 -464
- package/dist/process/types.cjs +0 -16
- package/dist/process/types.d.ts +0 -107
- package/dist/process/types.d.ts.map +0 -1
- package/dist/process/types.js +0 -0
|
@@ -3,6 +3,7 @@ var __create = Object.create;
|
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
8
|
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
8
9
|
var __typeError = (msg) => {
|
|
@@ -22,6 +23,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
22
23
|
}
|
|
23
24
|
return to;
|
|
24
25
|
};
|
|
26
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
27
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
28
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
29
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
30
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
31
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
32
|
+
mod
|
|
33
|
+
));
|
|
25
34
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
35
|
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
27
36
|
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
@@ -641,6 +650,22 @@ Either:
|
|
|
641
650
|
signal: cleanupSignal
|
|
642
651
|
});
|
|
643
652
|
listeners.push({ event: "tool:running", listener: toolRunningListener });
|
|
653
|
+
const contextCompactingListener = (data) => {
|
|
654
|
+
if (data.sessionId !== sessionId) return;
|
|
655
|
+
eventQueue.push({ name: "context:compacting", ...data });
|
|
656
|
+
};
|
|
657
|
+
this.agentEventBus.on("context:compacting", contextCompactingListener, {
|
|
658
|
+
signal: cleanupSignal
|
|
659
|
+
});
|
|
660
|
+
listeners.push({ event: "context:compacting", listener: contextCompactingListener });
|
|
661
|
+
const contextCompactedListener = (data) => {
|
|
662
|
+
if (data.sessionId !== sessionId) return;
|
|
663
|
+
eventQueue.push({ name: "context:compacted", ...data });
|
|
664
|
+
};
|
|
665
|
+
this.agentEventBus.on("context:compacted", contextCompactedListener, {
|
|
666
|
+
signal: cleanupSignal
|
|
667
|
+
});
|
|
668
|
+
listeners.push({ event: "context:compacted", listener: contextCompactedListener });
|
|
644
669
|
const messageQueuedListener = (data) => {
|
|
645
670
|
if (data.sessionId !== sessionId) return;
|
|
646
671
|
eventQueue.push({ name: "message:queued", ...data });
|
|
@@ -800,7 +825,10 @@ Either:
|
|
|
800
825
|
contentParts = [{ type: "text", text: textContent }];
|
|
801
826
|
}
|
|
802
827
|
const session = await this.sessionManager.getSession(sessionId) || await this.sessionManager.createSession(sessionId);
|
|
803
|
-
await session.stream(
|
|
828
|
+
const _streamResult = await session.stream(
|
|
829
|
+
contentParts,
|
|
830
|
+
signal ? { signal } : void 0
|
|
831
|
+
);
|
|
804
832
|
this.sessionManager.incrementMessageCount(session.id).catch(
|
|
805
833
|
(error) => this.logger.warn(
|
|
806
834
|
`Failed to increment message count: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -1179,6 +1207,167 @@ Either:
|
|
|
1179
1207
|
sessionId
|
|
1180
1208
|
});
|
|
1181
1209
|
}
|
|
1210
|
+
/**
|
|
1211
|
+
* Manually compact the context for a session.
|
|
1212
|
+
*
|
|
1213
|
+
* Compaction generates a summary of older messages and adds it to the conversation history.
|
|
1214
|
+
* When the context is loaded, filterCompacted() will exclude messages before the summary,
|
|
1215
|
+
* effectively reducing the context window while preserving the full history in storage.
|
|
1216
|
+
*
|
|
1217
|
+
* @param sessionId Session ID of the session to compact (required)
|
|
1218
|
+
* @returns Compaction result with stats, or null if compaction was skipped
|
|
1219
|
+
*/
|
|
1220
|
+
async compactContext(sessionId) {
|
|
1221
|
+
this.ensureStarted();
|
|
1222
|
+
if (!sessionId || typeof sessionId !== "string") {
|
|
1223
|
+
throw import_errors2.AgentError.apiValidationError(
|
|
1224
|
+
"sessionId is required and must be a non-empty string"
|
|
1225
|
+
);
|
|
1226
|
+
}
|
|
1227
|
+
const session = await this.sessionManager.getSession(sessionId);
|
|
1228
|
+
if (!session) {
|
|
1229
|
+
throw import_session.SessionError.notFound(sessionId);
|
|
1230
|
+
}
|
|
1231
|
+
const llmService = session.getLLMService();
|
|
1232
|
+
const compactionStrategy = llmService.getCompactionStrategy();
|
|
1233
|
+
if (!compactionStrategy) {
|
|
1234
|
+
this.logger.warn(
|
|
1235
|
+
`Compaction strategy not configured for session ${sessionId} - skipping manual compaction`
|
|
1236
|
+
);
|
|
1237
|
+
return null;
|
|
1238
|
+
}
|
|
1239
|
+
const contextManager = session.getContextManager();
|
|
1240
|
+
const history = await contextManager.getHistory();
|
|
1241
|
+
if (history.length < 4) {
|
|
1242
|
+
this.logger.debug(`Compaction skipped for session ${sessionId} - history too short`);
|
|
1243
|
+
return null;
|
|
1244
|
+
}
|
|
1245
|
+
const contributorContext = { mcpManager: this.mcpManager };
|
|
1246
|
+
const tools = await llmService.getAllTools();
|
|
1247
|
+
const beforeEstimate = await contextManager.getContextTokenEstimate(
|
|
1248
|
+
contributorContext,
|
|
1249
|
+
tools
|
|
1250
|
+
);
|
|
1251
|
+
const originalTokens = beforeEstimate.estimated;
|
|
1252
|
+
const originalMessages = beforeEstimate.stats.filteredMessageCount;
|
|
1253
|
+
this.agentEventBus.emit("context:compacting", {
|
|
1254
|
+
estimatedTokens: originalTokens,
|
|
1255
|
+
sessionId
|
|
1256
|
+
});
|
|
1257
|
+
const summaryMessages = await compactionStrategy.compact(history);
|
|
1258
|
+
if (summaryMessages.length === 0) {
|
|
1259
|
+
this.logger.debug(`Compaction skipped for session ${sessionId} - nothing to compact`);
|
|
1260
|
+
this.agentEventBus.emit("context:compacted", {
|
|
1261
|
+
originalTokens,
|
|
1262
|
+
compactedTokens: originalTokens,
|
|
1263
|
+
originalMessages,
|
|
1264
|
+
compactedMessages: originalMessages,
|
|
1265
|
+
strategy: compactionStrategy.name,
|
|
1266
|
+
reason: "manual",
|
|
1267
|
+
sessionId
|
|
1268
|
+
});
|
|
1269
|
+
return null;
|
|
1270
|
+
}
|
|
1271
|
+
for (const summary of summaryMessages) {
|
|
1272
|
+
await contextManager.addMessage(summary);
|
|
1273
|
+
}
|
|
1274
|
+
contextManager.resetActualTokenTracking();
|
|
1275
|
+
const afterEstimate = await contextManager.getContextTokenEstimate(
|
|
1276
|
+
contributorContext,
|
|
1277
|
+
tools
|
|
1278
|
+
);
|
|
1279
|
+
const compactedTokens = afterEstimate.estimated;
|
|
1280
|
+
const compactedMessages = afterEstimate.stats.filteredMessageCount;
|
|
1281
|
+
this.agentEventBus.emit("context:compacted", {
|
|
1282
|
+
originalTokens,
|
|
1283
|
+
compactedTokens,
|
|
1284
|
+
originalMessages,
|
|
1285
|
+
compactedMessages,
|
|
1286
|
+
strategy: compactionStrategy.name,
|
|
1287
|
+
reason: "manual",
|
|
1288
|
+
sessionId
|
|
1289
|
+
});
|
|
1290
|
+
this.logger.info(
|
|
1291
|
+
`Compaction complete for session ${sessionId}: ${originalMessages} messages \u2192 ${compactedMessages} messages (~${compactedTokens} tokens)`
|
|
1292
|
+
);
|
|
1293
|
+
return {
|
|
1294
|
+
sessionId,
|
|
1295
|
+
compactedContextTokens: compactedTokens,
|
|
1296
|
+
originalMessages,
|
|
1297
|
+
compactedMessages
|
|
1298
|
+
};
|
|
1299
|
+
}
|
|
1300
|
+
/**
|
|
1301
|
+
* Get context usage statistics for a session.
|
|
1302
|
+
* Useful for monitoring context window usage and compaction status.
|
|
1303
|
+
*
|
|
1304
|
+
* @param sessionId Session ID (required)
|
|
1305
|
+
* @returns Context statistics including token estimates and message counts
|
|
1306
|
+
*/
|
|
1307
|
+
async getContextStats(sessionId) {
|
|
1308
|
+
this.ensureStarted();
|
|
1309
|
+
if (!sessionId || typeof sessionId !== "string") {
|
|
1310
|
+
throw import_errors2.AgentError.apiValidationError(
|
|
1311
|
+
"sessionId is required and must be a non-empty string"
|
|
1312
|
+
);
|
|
1313
|
+
}
|
|
1314
|
+
const session = await this.sessionManager.getSession(sessionId);
|
|
1315
|
+
if (!session) {
|
|
1316
|
+
throw import_session.SessionError.notFound(sessionId);
|
|
1317
|
+
}
|
|
1318
|
+
const contextManager = session.getContextManager();
|
|
1319
|
+
const contributorContext = { mcpManager: this.mcpManager };
|
|
1320
|
+
const llmService = session.getLLMService();
|
|
1321
|
+
const tools = await llmService.getAllTools();
|
|
1322
|
+
const tokenEstimate = await contextManager.getContextTokenEstimate(
|
|
1323
|
+
contributorContext,
|
|
1324
|
+
tools
|
|
1325
|
+
);
|
|
1326
|
+
const history = await contextManager.getHistory();
|
|
1327
|
+
const runtimeConfig = this.stateManager.getRuntimeConfig(sessionId);
|
|
1328
|
+
const compactionConfig = runtimeConfig.compaction;
|
|
1329
|
+
const modelContextWindow = contextManager.getMaxInputTokens();
|
|
1330
|
+
let maxContextTokens = modelContextWindow;
|
|
1331
|
+
if (compactionConfig?.maxContextTokens !== void 0) {
|
|
1332
|
+
maxContextTokens = Math.min(maxContextTokens, compactionConfig.maxContextTokens);
|
|
1333
|
+
}
|
|
1334
|
+
const thresholdPercent = compactionConfig?.thresholdPercent ?? 0.9;
|
|
1335
|
+
if (thresholdPercent < 1) {
|
|
1336
|
+
maxContextTokens = Math.floor(maxContextTokens * thresholdPercent);
|
|
1337
|
+
}
|
|
1338
|
+
const hasSummary = history.some(
|
|
1339
|
+
(msg) => msg.metadata?.isSummary === true || msg.metadata?.isSessionSummary === true
|
|
1340
|
+
);
|
|
1341
|
+
const llmConfig = runtimeConfig.llm;
|
|
1342
|
+
const { getModelDisplayName } = await import("../llm/registry.js");
|
|
1343
|
+
const modelDisplayName = getModelDisplayName(llmConfig.model, llmConfig.provider);
|
|
1344
|
+
const estimatedTokens = tokenEstimate.estimated;
|
|
1345
|
+
const autoCompactBuffer = thresholdPercent > 0 && thresholdPercent < 1 ? Math.floor(maxContextTokens * (1 - thresholdPercent) / thresholdPercent) : 0;
|
|
1346
|
+
const totalTokenSpace = maxContextTokens + autoCompactBuffer;
|
|
1347
|
+
const usedTokens = estimatedTokens + autoCompactBuffer;
|
|
1348
|
+
return {
|
|
1349
|
+
estimatedTokens,
|
|
1350
|
+
actualTokens: tokenEstimate.actual,
|
|
1351
|
+
maxContextTokens,
|
|
1352
|
+
modelContextWindow,
|
|
1353
|
+
thresholdPercent,
|
|
1354
|
+
usagePercent: totalTokenSpace > 0 ? Math.round(usedTokens / totalTokenSpace * 100) : 0,
|
|
1355
|
+
messageCount: tokenEstimate.stats.originalMessageCount,
|
|
1356
|
+
filteredMessageCount: tokenEstimate.stats.filteredMessageCount,
|
|
1357
|
+
prunedToolCount: tokenEstimate.stats.prunedToolCount,
|
|
1358
|
+
hasSummary,
|
|
1359
|
+
model: llmConfig.model,
|
|
1360
|
+
modelDisplayName,
|
|
1361
|
+
breakdown: {
|
|
1362
|
+
systemPrompt: tokenEstimate.breakdown.systemPrompt,
|
|
1363
|
+
tools: tokenEstimate.breakdown.tools,
|
|
1364
|
+
messages: tokenEstimate.breakdown.messages
|
|
1365
|
+
},
|
|
1366
|
+
...tokenEstimate.calculationBasis && {
|
|
1367
|
+
calculationBasis: tokenEstimate.calculationBasis
|
|
1368
|
+
}
|
|
1369
|
+
};
|
|
1370
|
+
}
|
|
1182
1371
|
// ============= LLM MANAGEMENT =============
|
|
1183
1372
|
/**
|
|
1184
1373
|
* Gets the current LLM configuration with all defaults applied.
|
|
@@ -377,6 +377,77 @@ export declare class DextoAgent {
|
|
|
377
377
|
* @param sessionId Session ID (required)
|
|
378
378
|
*/
|
|
379
379
|
clearContext(sessionId: string): Promise<void>;
|
|
380
|
+
/**
|
|
381
|
+
* Manually compact the context for a session.
|
|
382
|
+
*
|
|
383
|
+
* Compaction generates a summary of older messages and adds it to the conversation history.
|
|
384
|
+
* When the context is loaded, filterCompacted() will exclude messages before the summary,
|
|
385
|
+
* effectively reducing the context window while preserving the full history in storage.
|
|
386
|
+
*
|
|
387
|
+
* @param sessionId Session ID of the session to compact (required)
|
|
388
|
+
* @returns Compaction result with stats, or null if compaction was skipped
|
|
389
|
+
*/
|
|
390
|
+
compactContext(sessionId: string): Promise<{
|
|
391
|
+
/** The session that was compacted */
|
|
392
|
+
sessionId: string;
|
|
393
|
+
/** Estimated tokens in context after compaction (includes system prompt, tools, and messages) */
|
|
394
|
+
compactedContextTokens: number;
|
|
395
|
+
/** Number of messages before compaction */
|
|
396
|
+
originalMessages: number;
|
|
397
|
+
/** Number of messages after compaction (summary + preserved) */
|
|
398
|
+
compactedMessages: number;
|
|
399
|
+
} | null>;
|
|
400
|
+
/**
|
|
401
|
+
* Get context usage statistics for a session.
|
|
402
|
+
* Useful for monitoring context window usage and compaction status.
|
|
403
|
+
*
|
|
404
|
+
* @param sessionId Session ID (required)
|
|
405
|
+
* @returns Context statistics including token estimates and message counts
|
|
406
|
+
*/
|
|
407
|
+
getContextStats(sessionId: string): Promise<{
|
|
408
|
+
estimatedTokens: number;
|
|
409
|
+
/** Last actual token count from LLM API (null if no calls made yet) */
|
|
410
|
+
actualTokens: number | null;
|
|
411
|
+
/** Effective max context tokens (after applying maxContextTokens override and thresholdPercent) */
|
|
412
|
+
maxContextTokens: number;
|
|
413
|
+
/** The model's raw context window before any config overrides */
|
|
414
|
+
modelContextWindow: number;
|
|
415
|
+
/** Configured threshold percent (0.0-1.0), defaults to 1.0 */
|
|
416
|
+
thresholdPercent: number;
|
|
417
|
+
usagePercent: number;
|
|
418
|
+
messageCount: number;
|
|
419
|
+
filteredMessageCount: number;
|
|
420
|
+
prunedToolCount: number;
|
|
421
|
+
hasSummary: boolean;
|
|
422
|
+
/** Current model identifier */
|
|
423
|
+
model: string;
|
|
424
|
+
/** Display name for the model */
|
|
425
|
+
modelDisplayName: string;
|
|
426
|
+
/** Detailed breakdown of context usage by category */
|
|
427
|
+
breakdown: {
|
|
428
|
+
systemPrompt: number;
|
|
429
|
+
tools: {
|
|
430
|
+
total: number;
|
|
431
|
+
/** Per-tool token estimates */
|
|
432
|
+
perTool: Array<{
|
|
433
|
+
name: string;
|
|
434
|
+
tokens: number;
|
|
435
|
+
}>;
|
|
436
|
+
};
|
|
437
|
+
messages: number;
|
|
438
|
+
};
|
|
439
|
+
/** Calculation basis showing how the estimate was computed */
|
|
440
|
+
calculationBasis?: {
|
|
441
|
+
/** 'actuals' = used lastInput + lastOutput + newEstimate, 'estimate' = pure estimation */
|
|
442
|
+
method: 'actuals' | 'estimate';
|
|
443
|
+
/** Last actual input tokens from API (if method is 'actuals') */
|
|
444
|
+
lastInputTokens?: number;
|
|
445
|
+
/** Last actual output tokens from API (if method is 'actuals') */
|
|
446
|
+
lastOutputTokens?: number;
|
|
447
|
+
/** Estimated tokens for new messages since last call (if method is 'actuals') */
|
|
448
|
+
newMessagesEstimate?: number;
|
|
449
|
+
};
|
|
450
|
+
}>;
|
|
380
451
|
/**
|
|
381
452
|
* Gets the current LLM configuration with all defaults applied.
|
|
382
453
|
* @returns Current LLM configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DextoAgent.d.ts","sourceRoot":"","sources":["../../src/agent/DextoAgent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DextoAgent.d.ts","sourceRoot":"","sources":["../../src/agent/DextoAgent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/DextoAgent.js
CHANGED
|
@@ -585,6 +585,22 @@ Either:
|
|
|
585
585
|
signal: cleanupSignal
|
|
586
586
|
});
|
|
587
587
|
listeners.push({ event: "tool:running", listener: toolRunningListener });
|
|
588
|
+
const contextCompactingListener = (data) => {
|
|
589
|
+
if (data.sessionId !== sessionId) return;
|
|
590
|
+
eventQueue.push({ name: "context:compacting", ...data });
|
|
591
|
+
};
|
|
592
|
+
this.agentEventBus.on("context:compacting", contextCompactingListener, {
|
|
593
|
+
signal: cleanupSignal
|
|
594
|
+
});
|
|
595
|
+
listeners.push({ event: "context:compacting", listener: contextCompactingListener });
|
|
596
|
+
const contextCompactedListener = (data) => {
|
|
597
|
+
if (data.sessionId !== sessionId) return;
|
|
598
|
+
eventQueue.push({ name: "context:compacted", ...data });
|
|
599
|
+
};
|
|
600
|
+
this.agentEventBus.on("context:compacted", contextCompactedListener, {
|
|
601
|
+
signal: cleanupSignal
|
|
602
|
+
});
|
|
603
|
+
listeners.push({ event: "context:compacted", listener: contextCompactedListener });
|
|
588
604
|
const messageQueuedListener = (data) => {
|
|
589
605
|
if (data.sessionId !== sessionId) return;
|
|
590
606
|
eventQueue.push({ name: "message:queued", ...data });
|
|
@@ -744,7 +760,10 @@ Either:
|
|
|
744
760
|
contentParts = [{ type: "text", text: textContent }];
|
|
745
761
|
}
|
|
746
762
|
const session = await this.sessionManager.getSession(sessionId) || await this.sessionManager.createSession(sessionId);
|
|
747
|
-
await session.stream(
|
|
763
|
+
const _streamResult = await session.stream(
|
|
764
|
+
contentParts,
|
|
765
|
+
signal ? { signal } : void 0
|
|
766
|
+
);
|
|
748
767
|
this.sessionManager.incrementMessageCount(session.id).catch(
|
|
749
768
|
(error) => this.logger.warn(
|
|
750
769
|
`Failed to increment message count: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -1123,6 +1142,167 @@ Either:
|
|
|
1123
1142
|
sessionId
|
|
1124
1143
|
});
|
|
1125
1144
|
}
|
|
1145
|
+
/**
|
|
1146
|
+
* Manually compact the context for a session.
|
|
1147
|
+
*
|
|
1148
|
+
* Compaction generates a summary of older messages and adds it to the conversation history.
|
|
1149
|
+
* When the context is loaded, filterCompacted() will exclude messages before the summary,
|
|
1150
|
+
* effectively reducing the context window while preserving the full history in storage.
|
|
1151
|
+
*
|
|
1152
|
+
* @param sessionId Session ID of the session to compact (required)
|
|
1153
|
+
* @returns Compaction result with stats, or null if compaction was skipped
|
|
1154
|
+
*/
|
|
1155
|
+
async compactContext(sessionId) {
|
|
1156
|
+
this.ensureStarted();
|
|
1157
|
+
if (!sessionId || typeof sessionId !== "string") {
|
|
1158
|
+
throw AgentError.apiValidationError(
|
|
1159
|
+
"sessionId is required and must be a non-empty string"
|
|
1160
|
+
);
|
|
1161
|
+
}
|
|
1162
|
+
const session = await this.sessionManager.getSession(sessionId);
|
|
1163
|
+
if (!session) {
|
|
1164
|
+
throw SessionError.notFound(sessionId);
|
|
1165
|
+
}
|
|
1166
|
+
const llmService = session.getLLMService();
|
|
1167
|
+
const compactionStrategy = llmService.getCompactionStrategy();
|
|
1168
|
+
if (!compactionStrategy) {
|
|
1169
|
+
this.logger.warn(
|
|
1170
|
+
`Compaction strategy not configured for session ${sessionId} - skipping manual compaction`
|
|
1171
|
+
);
|
|
1172
|
+
return null;
|
|
1173
|
+
}
|
|
1174
|
+
const contextManager = session.getContextManager();
|
|
1175
|
+
const history = await contextManager.getHistory();
|
|
1176
|
+
if (history.length < 4) {
|
|
1177
|
+
this.logger.debug(`Compaction skipped for session ${sessionId} - history too short`);
|
|
1178
|
+
return null;
|
|
1179
|
+
}
|
|
1180
|
+
const contributorContext = { mcpManager: this.mcpManager };
|
|
1181
|
+
const tools = await llmService.getAllTools();
|
|
1182
|
+
const beforeEstimate = await contextManager.getContextTokenEstimate(
|
|
1183
|
+
contributorContext,
|
|
1184
|
+
tools
|
|
1185
|
+
);
|
|
1186
|
+
const originalTokens = beforeEstimate.estimated;
|
|
1187
|
+
const originalMessages = beforeEstimate.stats.filteredMessageCount;
|
|
1188
|
+
this.agentEventBus.emit("context:compacting", {
|
|
1189
|
+
estimatedTokens: originalTokens,
|
|
1190
|
+
sessionId
|
|
1191
|
+
});
|
|
1192
|
+
const summaryMessages = await compactionStrategy.compact(history);
|
|
1193
|
+
if (summaryMessages.length === 0) {
|
|
1194
|
+
this.logger.debug(`Compaction skipped for session ${sessionId} - nothing to compact`);
|
|
1195
|
+
this.agentEventBus.emit("context:compacted", {
|
|
1196
|
+
originalTokens,
|
|
1197
|
+
compactedTokens: originalTokens,
|
|
1198
|
+
originalMessages,
|
|
1199
|
+
compactedMessages: originalMessages,
|
|
1200
|
+
strategy: compactionStrategy.name,
|
|
1201
|
+
reason: "manual",
|
|
1202
|
+
sessionId
|
|
1203
|
+
});
|
|
1204
|
+
return null;
|
|
1205
|
+
}
|
|
1206
|
+
for (const summary of summaryMessages) {
|
|
1207
|
+
await contextManager.addMessage(summary);
|
|
1208
|
+
}
|
|
1209
|
+
contextManager.resetActualTokenTracking();
|
|
1210
|
+
const afterEstimate = await contextManager.getContextTokenEstimate(
|
|
1211
|
+
contributorContext,
|
|
1212
|
+
tools
|
|
1213
|
+
);
|
|
1214
|
+
const compactedTokens = afterEstimate.estimated;
|
|
1215
|
+
const compactedMessages = afterEstimate.stats.filteredMessageCount;
|
|
1216
|
+
this.agentEventBus.emit("context:compacted", {
|
|
1217
|
+
originalTokens,
|
|
1218
|
+
compactedTokens,
|
|
1219
|
+
originalMessages,
|
|
1220
|
+
compactedMessages,
|
|
1221
|
+
strategy: compactionStrategy.name,
|
|
1222
|
+
reason: "manual",
|
|
1223
|
+
sessionId
|
|
1224
|
+
});
|
|
1225
|
+
this.logger.info(
|
|
1226
|
+
`Compaction complete for session ${sessionId}: ${originalMessages} messages \u2192 ${compactedMessages} messages (~${compactedTokens} tokens)`
|
|
1227
|
+
);
|
|
1228
|
+
return {
|
|
1229
|
+
sessionId,
|
|
1230
|
+
compactedContextTokens: compactedTokens,
|
|
1231
|
+
originalMessages,
|
|
1232
|
+
compactedMessages
|
|
1233
|
+
};
|
|
1234
|
+
}
|
|
1235
|
+
/**
|
|
1236
|
+
* Get context usage statistics for a session.
|
|
1237
|
+
* Useful for monitoring context window usage and compaction status.
|
|
1238
|
+
*
|
|
1239
|
+
* @param sessionId Session ID (required)
|
|
1240
|
+
* @returns Context statistics including token estimates and message counts
|
|
1241
|
+
*/
|
|
1242
|
+
async getContextStats(sessionId) {
|
|
1243
|
+
this.ensureStarted();
|
|
1244
|
+
if (!sessionId || typeof sessionId !== "string") {
|
|
1245
|
+
throw AgentError.apiValidationError(
|
|
1246
|
+
"sessionId is required and must be a non-empty string"
|
|
1247
|
+
);
|
|
1248
|
+
}
|
|
1249
|
+
const session = await this.sessionManager.getSession(sessionId);
|
|
1250
|
+
if (!session) {
|
|
1251
|
+
throw SessionError.notFound(sessionId);
|
|
1252
|
+
}
|
|
1253
|
+
const contextManager = session.getContextManager();
|
|
1254
|
+
const contributorContext = { mcpManager: this.mcpManager };
|
|
1255
|
+
const llmService = session.getLLMService();
|
|
1256
|
+
const tools = await llmService.getAllTools();
|
|
1257
|
+
const tokenEstimate = await contextManager.getContextTokenEstimate(
|
|
1258
|
+
contributorContext,
|
|
1259
|
+
tools
|
|
1260
|
+
);
|
|
1261
|
+
const history = await contextManager.getHistory();
|
|
1262
|
+
const runtimeConfig = this.stateManager.getRuntimeConfig(sessionId);
|
|
1263
|
+
const compactionConfig = runtimeConfig.compaction;
|
|
1264
|
+
const modelContextWindow = contextManager.getMaxInputTokens();
|
|
1265
|
+
let maxContextTokens = modelContextWindow;
|
|
1266
|
+
if (compactionConfig?.maxContextTokens !== void 0) {
|
|
1267
|
+
maxContextTokens = Math.min(maxContextTokens, compactionConfig.maxContextTokens);
|
|
1268
|
+
}
|
|
1269
|
+
const thresholdPercent = compactionConfig?.thresholdPercent ?? 0.9;
|
|
1270
|
+
if (thresholdPercent < 1) {
|
|
1271
|
+
maxContextTokens = Math.floor(maxContextTokens * thresholdPercent);
|
|
1272
|
+
}
|
|
1273
|
+
const hasSummary = history.some(
|
|
1274
|
+
(msg) => msg.metadata?.isSummary === true || msg.metadata?.isSessionSummary === true
|
|
1275
|
+
);
|
|
1276
|
+
const llmConfig = runtimeConfig.llm;
|
|
1277
|
+
const { getModelDisplayName } = await import("../llm/registry.js");
|
|
1278
|
+
const modelDisplayName = getModelDisplayName(llmConfig.model, llmConfig.provider);
|
|
1279
|
+
const estimatedTokens = tokenEstimate.estimated;
|
|
1280
|
+
const autoCompactBuffer = thresholdPercent > 0 && thresholdPercent < 1 ? Math.floor(maxContextTokens * (1 - thresholdPercent) / thresholdPercent) : 0;
|
|
1281
|
+
const totalTokenSpace = maxContextTokens + autoCompactBuffer;
|
|
1282
|
+
const usedTokens = estimatedTokens + autoCompactBuffer;
|
|
1283
|
+
return {
|
|
1284
|
+
estimatedTokens,
|
|
1285
|
+
actualTokens: tokenEstimate.actual,
|
|
1286
|
+
maxContextTokens,
|
|
1287
|
+
modelContextWindow,
|
|
1288
|
+
thresholdPercent,
|
|
1289
|
+
usagePercent: totalTokenSpace > 0 ? Math.round(usedTokens / totalTokenSpace * 100) : 0,
|
|
1290
|
+
messageCount: tokenEstimate.stats.originalMessageCount,
|
|
1291
|
+
filteredMessageCount: tokenEstimate.stats.filteredMessageCount,
|
|
1292
|
+
prunedToolCount: tokenEstimate.stats.prunedToolCount,
|
|
1293
|
+
hasSummary,
|
|
1294
|
+
model: llmConfig.model,
|
|
1295
|
+
modelDisplayName,
|
|
1296
|
+
breakdown: {
|
|
1297
|
+
systemPrompt: tokenEstimate.breakdown.systemPrompt,
|
|
1298
|
+
tools: tokenEstimate.breakdown.tools,
|
|
1299
|
+
messages: tokenEstimate.breakdown.messages
|
|
1300
|
+
},
|
|
1301
|
+
...tokenEstimate.calculationBasis && {
|
|
1302
|
+
calculationBasis: tokenEstimate.calculationBasis
|
|
1303
|
+
}
|
|
1304
|
+
};
|
|
1305
|
+
}
|
|
1126
1306
|
// ============= LLM MANAGEMENT =============
|
|
1127
1307
|
/**
|
|
1128
1308
|
* Gets the current LLM configuration with all defaults applied.
|