@dexto/core 1.6.25 → 1.6.26
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 +27 -14
- package/dist/agent/DextoAgent.d.ts +7 -6
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +27 -14
- package/dist/approval/manager.cjs +328 -178
- package/dist/approval/manager.d.ts +39 -31
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +328 -178
- package/dist/approval/session-approval-store.cjs +91 -0
- package/dist/approval/session-approval-store.d.ts +55 -0
- package/dist/approval/session-approval-store.d.ts.map +1 -0
- package/dist/approval/session-approval-store.js +68 -0
- package/dist/llm/executor/turn-executor.cjs +7 -3
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +7 -3
- package/dist/llm/services/factory.cjs +10 -4
- package/dist/llm/services/factory.d.ts +2 -21
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +11 -7
- package/dist/llm/services/types.d.ts +33 -2
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +4 -5
- package/dist/llm/services/vercel.d.ts +3 -3
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +2 -3
- package/dist/logger/default-logger-factory.d.ts +12 -12
- package/dist/logger/v2/schemas.d.ts +6 -6
- package/dist/mcp/schemas.d.ts +10 -10
- package/dist/session/chat-session.cjs +39 -41
- package/dist/session/chat-session.d.ts +22 -12
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +39 -41
- package/dist/session/message-queue-store.cjs +75 -0
- package/dist/session/message-queue-store.d.ts +16 -0
- package/dist/session/message-queue-store.d.ts.map +1 -0
- package/dist/session/message-queue-store.js +52 -0
- package/dist/session/message-queue.cjs +140 -46
- package/dist/session/message-queue.d.ts +18 -6
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/message-queue.js +140 -46
- package/dist/session/session-manager.cjs +130 -25
- package/dist/session/session-manager.d.ts +18 -1
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +130 -25
- package/dist/session/title-generator.cjs +9 -2
- package/dist/session/title-generator.d.ts +2 -0
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +9 -2
- package/dist/telemetry/errors.cjs +2 -2
- package/dist/telemetry/errors.js +2 -2
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +3 -1
- package/dist/telemetry/telemetry.cjs +62 -21
- package/dist/telemetry/telemetry.d.ts +14 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +62 -21
- package/dist/test-utils/session-state-stores.cjs +68 -0
- package/dist/test-utils/session-state-stores.js +42 -0
- package/dist/tools/session-tool-preferences-store.cjs +86 -0
- package/dist/tools/session-tool-preferences-store.d.ts +29 -0
- package/dist/tools/session-tool-preferences-store.d.ts.map +1 -0
- package/dist/tools/session-tool-preferences-store.js +63 -0
- package/dist/tools/tool-manager.cjs +131 -32
- package/dist/tools/tool-manager.d.ts +17 -6
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +131 -32
- package/dist/utils/service-initializer.cjs +38 -5
- package/dist/utils/service-initializer.d.ts +11 -1
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +36 -4
- package/package.json +1 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var session_approval_store_exports = {};
|
|
20
|
+
__export(session_approval_store_exports, {
|
|
21
|
+
SessionApprovalStore: () => SessionApprovalStore
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(session_approval_store_exports);
|
|
24
|
+
var import_zod = require("zod");
|
|
25
|
+
const ApprovedDirectoryTypeSchema = import_zod.z.enum(["session", "once"]);
|
|
26
|
+
const PersistedApprovedDirectorySchema = import_zod.z.object({
|
|
27
|
+
path: import_zod.z.string(),
|
|
28
|
+
type: ApprovedDirectoryTypeSchema
|
|
29
|
+
}).strict();
|
|
30
|
+
const SessionApprovalStateSchema = import_zod.z.object({
|
|
31
|
+
toolPatterns: import_zod.z.record(import_zod.z.array(import_zod.z.string())).default({}),
|
|
32
|
+
approvedDirectories: import_zod.z.array(PersistedApprovedDirectorySchema).default([])
|
|
33
|
+
}).strict();
|
|
34
|
+
const DEFAULT_APPROVAL_STATE = {
|
|
35
|
+
toolPatterns: {},
|
|
36
|
+
approvedDirectories: []
|
|
37
|
+
};
|
|
38
|
+
class SessionApprovalStore {
|
|
39
|
+
constructor(storageManager, logger, options = {}) {
|
|
40
|
+
this.storageManager = storageManager;
|
|
41
|
+
this.logger = logger;
|
|
42
|
+
const cacheTtlMs = options.cacheTtlMs ?? 36e5;
|
|
43
|
+
this.cacheTtlSeconds = Math.max(1, Math.floor(cacheTtlMs / 1e3));
|
|
44
|
+
}
|
|
45
|
+
cacheTtlSeconds;
|
|
46
|
+
buildKey(sessionId) {
|
|
47
|
+
return sessionId ? `session-approvals:${sessionId}` : "session-approvals:global";
|
|
48
|
+
}
|
|
49
|
+
async load(sessionId) {
|
|
50
|
+
const key = this.buildKey(sessionId);
|
|
51
|
+
const cached = await this.storageManager.getCache().get(key);
|
|
52
|
+
if (cached !== void 0) {
|
|
53
|
+
return this.parseState(cached, key);
|
|
54
|
+
}
|
|
55
|
+
const stored = await this.storageManager.getDatabase().get(key);
|
|
56
|
+
if (stored === void 0) {
|
|
57
|
+
return structuredClone(DEFAULT_APPROVAL_STATE);
|
|
58
|
+
}
|
|
59
|
+
const parsed = this.parseState(stored, key);
|
|
60
|
+
await this.storageManager.getCache().set(key, parsed, this.cacheTtlSeconds);
|
|
61
|
+
return parsed;
|
|
62
|
+
}
|
|
63
|
+
async save(sessionId, state) {
|
|
64
|
+
const key = this.buildKey(sessionId);
|
|
65
|
+
const normalized = SessionApprovalStateSchema.parse(state);
|
|
66
|
+
await this.storageManager.getDatabase().set(key, normalized);
|
|
67
|
+
await this.storageManager.getCache().set(key, normalized, this.cacheTtlSeconds);
|
|
68
|
+
}
|
|
69
|
+
async delete(sessionId) {
|
|
70
|
+
const key = this.buildKey(sessionId);
|
|
71
|
+
await Promise.all([
|
|
72
|
+
this.storageManager.getDatabase().delete(key),
|
|
73
|
+
this.storageManager.getCache().delete(key)
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
parseState(value, key) {
|
|
77
|
+
const result = SessionApprovalStateSchema.safeParse(value);
|
|
78
|
+
if (result.success) {
|
|
79
|
+
return result.data;
|
|
80
|
+
}
|
|
81
|
+
this.logger.warn("Invalid persisted approval state encountered; using defaults", {
|
|
82
|
+
key,
|
|
83
|
+
error: result.error.message
|
|
84
|
+
});
|
|
85
|
+
return structuredClone(DEFAULT_APPROVAL_STATE);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
89
|
+
0 && (module.exports = {
|
|
90
|
+
SessionApprovalStore
|
|
91
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { StorageManager } from '../storage/index.js';
|
|
3
|
+
import type { Logger } from '../logger/v2/types.js';
|
|
4
|
+
declare const PersistedApprovedDirectorySchema: z.ZodObject<{
|
|
5
|
+
path: z.ZodString;
|
|
6
|
+
type: z.ZodEnum<["session", "once"]>;
|
|
7
|
+
}, "strict", z.ZodTypeAny, {
|
|
8
|
+
path: string;
|
|
9
|
+
type: "session" | "once";
|
|
10
|
+
}, {
|
|
11
|
+
path: string;
|
|
12
|
+
type: "session" | "once";
|
|
13
|
+
}>;
|
|
14
|
+
declare const SessionApprovalStateSchema: z.ZodObject<{
|
|
15
|
+
toolPatterns: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
|
|
16
|
+
approvedDirectories: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
17
|
+
path: z.ZodString;
|
|
18
|
+
type: z.ZodEnum<["session", "once"]>;
|
|
19
|
+
}, "strict", z.ZodTypeAny, {
|
|
20
|
+
path: string;
|
|
21
|
+
type: "session" | "once";
|
|
22
|
+
}, {
|
|
23
|
+
path: string;
|
|
24
|
+
type: "session" | "once";
|
|
25
|
+
}>, "many">>;
|
|
26
|
+
}, "strict", z.ZodTypeAny, {
|
|
27
|
+
toolPatterns: Record<string, string[]>;
|
|
28
|
+
approvedDirectories: {
|
|
29
|
+
path: string;
|
|
30
|
+
type: "session" | "once";
|
|
31
|
+
}[];
|
|
32
|
+
}, {
|
|
33
|
+
toolPatterns?: Record<string, string[]> | undefined;
|
|
34
|
+
approvedDirectories?: {
|
|
35
|
+
path: string;
|
|
36
|
+
type: "session" | "once";
|
|
37
|
+
}[] | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export type PersistedApprovedDirectory = z.output<typeof PersistedApprovedDirectorySchema>;
|
|
40
|
+
export type SessionApprovalState = z.output<typeof SessionApprovalStateSchema>;
|
|
41
|
+
export declare class SessionApprovalStore {
|
|
42
|
+
private readonly storageManager;
|
|
43
|
+
private readonly logger;
|
|
44
|
+
private readonly cacheTtlSeconds;
|
|
45
|
+
constructor(storageManager: StorageManager, logger: Logger, options?: {
|
|
46
|
+
cacheTtlMs?: number;
|
|
47
|
+
});
|
|
48
|
+
private buildKey;
|
|
49
|
+
load(sessionId?: string): Promise<SessionApprovalState>;
|
|
50
|
+
save(sessionId: string | undefined, state: SessionApprovalState): Promise<void>;
|
|
51
|
+
delete(sessionId?: string): Promise<void>;
|
|
52
|
+
private parseState;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=session-approval-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-approval-store.d.ts","sourceRoot":"","sources":["../../src/approval/session-approval-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,QAAA,MAAM,gCAAgC;;;;;;;;;EAKzB,CAAC;AAEd,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;EAKnB,CAAC;AAEd,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC3F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAO/E,qBAAa,oBAAoB;IAIzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAGpB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EAC/B,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAMzC,OAAO,CAAC,QAAQ;IAIV,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiBvD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/E,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,OAAO,CAAC,UAAU;CAYrB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const ApprovedDirectoryTypeSchema = z.enum(["session", "once"]);
|
|
4
|
+
const PersistedApprovedDirectorySchema = z.object({
|
|
5
|
+
path: z.string(),
|
|
6
|
+
type: ApprovedDirectoryTypeSchema
|
|
7
|
+
}).strict();
|
|
8
|
+
const SessionApprovalStateSchema = z.object({
|
|
9
|
+
toolPatterns: z.record(z.array(z.string())).default({}),
|
|
10
|
+
approvedDirectories: z.array(PersistedApprovedDirectorySchema).default([])
|
|
11
|
+
}).strict();
|
|
12
|
+
const DEFAULT_APPROVAL_STATE = {
|
|
13
|
+
toolPatterns: {},
|
|
14
|
+
approvedDirectories: []
|
|
15
|
+
};
|
|
16
|
+
class SessionApprovalStore {
|
|
17
|
+
constructor(storageManager, logger, options = {}) {
|
|
18
|
+
this.storageManager = storageManager;
|
|
19
|
+
this.logger = logger;
|
|
20
|
+
const cacheTtlMs = options.cacheTtlMs ?? 36e5;
|
|
21
|
+
this.cacheTtlSeconds = Math.max(1, Math.floor(cacheTtlMs / 1e3));
|
|
22
|
+
}
|
|
23
|
+
cacheTtlSeconds;
|
|
24
|
+
buildKey(sessionId) {
|
|
25
|
+
return sessionId ? `session-approvals:${sessionId}` : "session-approvals:global";
|
|
26
|
+
}
|
|
27
|
+
async load(sessionId) {
|
|
28
|
+
const key = this.buildKey(sessionId);
|
|
29
|
+
const cached = await this.storageManager.getCache().get(key);
|
|
30
|
+
if (cached !== void 0) {
|
|
31
|
+
return this.parseState(cached, key);
|
|
32
|
+
}
|
|
33
|
+
const stored = await this.storageManager.getDatabase().get(key);
|
|
34
|
+
if (stored === void 0) {
|
|
35
|
+
return structuredClone(DEFAULT_APPROVAL_STATE);
|
|
36
|
+
}
|
|
37
|
+
const parsed = this.parseState(stored, key);
|
|
38
|
+
await this.storageManager.getCache().set(key, parsed, this.cacheTtlSeconds);
|
|
39
|
+
return parsed;
|
|
40
|
+
}
|
|
41
|
+
async save(sessionId, state) {
|
|
42
|
+
const key = this.buildKey(sessionId);
|
|
43
|
+
const normalized = SessionApprovalStateSchema.parse(state);
|
|
44
|
+
await this.storageManager.getDatabase().set(key, normalized);
|
|
45
|
+
await this.storageManager.getCache().set(key, normalized, this.cacheTtlSeconds);
|
|
46
|
+
}
|
|
47
|
+
async delete(sessionId) {
|
|
48
|
+
const key = this.buildKey(sessionId);
|
|
49
|
+
await Promise.all([
|
|
50
|
+
this.storageManager.getDatabase().delete(key),
|
|
51
|
+
this.storageManager.getCache().delete(key)
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
parseState(value, key) {
|
|
55
|
+
const result = SessionApprovalStateSchema.safeParse(value);
|
|
56
|
+
if (result.success) {
|
|
57
|
+
return result.data;
|
|
58
|
+
}
|
|
59
|
+
this.logger.warn("Invalid persisted approval state encountered; using defaults", {
|
|
60
|
+
key,
|
|
61
|
+
error: result.error.message
|
|
62
|
+
});
|
|
63
|
+
return structuredClone(DEFAULT_APPROVAL_STATE);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
SessionApprovalStore
|
|
68
|
+
};
|
|
@@ -187,7 +187,7 @@ class TurnExecutor {
|
|
|
187
187
|
once: true
|
|
188
188
|
});
|
|
189
189
|
}
|
|
190
|
-
const coalesced = this.messageQueue.dequeueAll();
|
|
190
|
+
const coalesced = await this.messageQueue.dequeueAll();
|
|
191
191
|
if (coalesced) {
|
|
192
192
|
await this.injectQueuedMessages(coalesced);
|
|
193
193
|
}
|
|
@@ -320,7 +320,7 @@ class TurnExecutor {
|
|
|
320
320
|
);
|
|
321
321
|
}
|
|
322
322
|
if (result.finishReason !== "tool-calls") {
|
|
323
|
-
const queuedOnTerminate = this.messageQueue.dequeueAll();
|
|
323
|
+
const queuedOnTerminate = await this.messageQueue.dequeueAll();
|
|
324
324
|
if (queuedOnTerminate) {
|
|
325
325
|
this.logger.debug(
|
|
326
326
|
`Continuing: ${queuedOnTerminate.messages.length} queued message(s) to process`
|
|
@@ -757,7 +757,11 @@ class TurnExecutor {
|
|
|
757
757
|
if (!this.stepAbortController.signal.aborted) {
|
|
758
758
|
this.stepAbortController.abort();
|
|
759
759
|
}
|
|
760
|
-
this.messageQueue.clear()
|
|
760
|
+
void this.messageQueue.clear().catch((error) => {
|
|
761
|
+
this.logger.warn(
|
|
762
|
+
`Failed to clear queued follow-up messages during cleanup: ${error instanceof Error ? error.message : String(error)}`
|
|
763
|
+
);
|
|
764
|
+
});
|
|
761
765
|
}
|
|
762
766
|
/**
|
|
763
767
|
* Check if context should be compacted based on estimated token count.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,7 +119,7 @@ class TurnExecutor {
|
|
|
119
119
|
once: true
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
|
-
const coalesced = this.messageQueue.dequeueAll();
|
|
122
|
+
const coalesced = await this.messageQueue.dequeueAll();
|
|
123
123
|
if (coalesced) {
|
|
124
124
|
await this.injectQueuedMessages(coalesced);
|
|
125
125
|
}
|
|
@@ -252,7 +252,7 @@ class TurnExecutor {
|
|
|
252
252
|
);
|
|
253
253
|
}
|
|
254
254
|
if (result.finishReason !== "tool-calls") {
|
|
255
|
-
const queuedOnTerminate = this.messageQueue.dequeueAll();
|
|
255
|
+
const queuedOnTerminate = await this.messageQueue.dequeueAll();
|
|
256
256
|
if (queuedOnTerminate) {
|
|
257
257
|
this.logger.debug(
|
|
258
258
|
`Continuing: ${queuedOnTerminate.messages.length} queued message(s) to process`
|
|
@@ -689,7 +689,11 @@ class TurnExecutor {
|
|
|
689
689
|
if (!this.stepAbortController.signal.aborted) {
|
|
690
690
|
this.stepAbortController.abort();
|
|
691
691
|
}
|
|
692
|
-
this.messageQueue.clear()
|
|
692
|
+
void this.messageQueue.clear().catch((error) => {
|
|
693
|
+
this.logger.warn(
|
|
694
|
+
`Failed to clear queued follow-up messages during cleanup: ${error instanceof Error ? error.message : String(error)}`
|
|
695
|
+
);
|
|
696
|
+
});
|
|
693
697
|
}
|
|
694
698
|
/**
|
|
695
699
|
* Check if context should be compacted based on estimated token count.
|
|
@@ -237,9 +237,9 @@ function createVercelModel(llmConfig, context) {
|
|
|
237
237
|
throw import_errors.LLMError.unsupportedProvider(provider);
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
|
-
function createLLMService(config, toolManager, systemPromptManager, historyProvider, sessionEventBus, sessionId, resourceManager, logger, options
|
|
241
|
-
const { usageScopeId, compactionStrategy } = options;
|
|
242
|
-
const
|
|
240
|
+
function createLLMService(config, toolManager, systemPromptManager, historyProvider, sessionEventBus, sessionId, resourceManager, logger, options, languageModelFactory) {
|
|
241
|
+
const { usageScopeId, compactionStrategy, messageQueue } = options;
|
|
242
|
+
const providerContext = {
|
|
243
243
|
sessionId,
|
|
244
244
|
...options.cwd !== void 0 ? { cwd: options.cwd } : {},
|
|
245
245
|
onCodexRateLimitStatus: (snapshot) => {
|
|
@@ -249,7 +249,12 @@ function createLLMService(config, toolManager, systemPromptManager, historyProvi
|
|
|
249
249
|
snapshot
|
|
250
250
|
});
|
|
251
251
|
}
|
|
252
|
-
}
|
|
252
|
+
};
|
|
253
|
+
const model = languageModelFactory?.({
|
|
254
|
+
config,
|
|
255
|
+
context: providerContext,
|
|
256
|
+
createDefaultLanguageModel: () => createVercelModel(config, providerContext)
|
|
257
|
+
}) ?? createVercelModel(config, providerContext);
|
|
253
258
|
return new import_vercel.VercelLLMService(
|
|
254
259
|
toolManager,
|
|
255
260
|
model,
|
|
@@ -260,6 +265,7 @@ function createLLMService(config, toolManager, systemPromptManager, historyProvi
|
|
|
260
265
|
sessionId,
|
|
261
266
|
resourceManager,
|
|
262
267
|
logger,
|
|
268
|
+
messageQueue,
|
|
263
269
|
usageScopeId,
|
|
264
270
|
compactionStrategy
|
|
265
271
|
);
|
|
@@ -6,26 +6,7 @@ import { SessionEventBus } from '../../events/index.js';
|
|
|
6
6
|
import type { ConversationHistoryProvider } from '../../session/history/types.js';
|
|
7
7
|
import type { SystemPromptManager } from '../../systemPrompt/manager.js';
|
|
8
8
|
import type { Logger } from '../../logger/v2/types.js';
|
|
9
|
-
import {
|
|
10
|
-
import type { CompactionStrategy } from '../../context/compaction/types.js';
|
|
11
|
-
/**
|
|
12
|
-
* Context for model creation, including session info for usage tracking.
|
|
13
|
-
*/
|
|
14
|
-
export interface DextoProviderContext {
|
|
15
|
-
/** Session ID for usage tracking */
|
|
16
|
-
sessionId?: string;
|
|
17
|
-
/** Client source for usage attribution (cli, web, sdk) */
|
|
18
|
-
clientSource?: 'cli' | 'web' | 'sdk';
|
|
19
|
-
/** Working directory for providers that need an explicit workspace root. */
|
|
20
|
-
cwd?: string;
|
|
21
|
-
/** Optional callback for ChatGPT Login rate-limit status updates from Codex. */
|
|
22
|
-
onCodexRateLimitStatus?: (snapshot: CodexRateLimitSnapshot) => void;
|
|
23
|
-
}
|
|
24
|
-
export interface CreateLLMServiceOptions {
|
|
25
|
-
usageScopeId?: string | undefined;
|
|
26
|
-
compactionStrategy?: CompactionStrategy | null | undefined;
|
|
27
|
-
cwd?: string | undefined;
|
|
28
|
-
}
|
|
9
|
+
import type { CreateLLMServiceOptions, DextoProviderContext, LanguageModelFactory } from './types.js';
|
|
29
10
|
/**
|
|
30
11
|
* Create a Vercel AI SDK LanguageModel from config.
|
|
31
12
|
*
|
|
@@ -52,5 +33,5 @@ export declare function createVercelModel(llmConfig: ValidatedLLMConfig, context
|
|
|
52
33
|
* @param options Session-scoped runtime options
|
|
53
34
|
* @returns VercelLLMService instance
|
|
54
35
|
*/
|
|
55
|
-
export declare function createLLMService(config: ValidatedLLMConfig, toolManager: ToolManager, systemPromptManager: SystemPromptManager, historyProvider: ConversationHistoryProvider, sessionEventBus: SessionEventBus, sessionId: string, resourceManager: import('../../resources/index.js').ResourceManager, logger: Logger, options?:
|
|
36
|
+
export declare function createLLMService(config: ValidatedLLMConfig, toolManager: ToolManager, systemPromptManager: SystemPromptManager, historyProvider: ConversationHistoryProvider, sessionEventBus: SessionEventBus, sessionId: string, resourceManager: import('../../resources/index.js').ResourceManager, logger: Logger, options: CreateLLMServiceOptions, languageModelFactory?: LanguageModelFactory): VercelLLMService;
|
|
56
37
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/services/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAYnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/services/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAYnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACR,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,YAAY,CAAC;AA6DpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC/B,aAAa,CAyOf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,2BAA2B,EAC5C,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,0BAA0B,EAAE,eAAe,EACnE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,EAChC,oBAAoB,CAAC,EAAE,oBAAoB,GAC5C,gBAAgB,CAoClB"}
|
|
@@ -15,9 +15,7 @@ import { createCohere } from "@ai-sdk/cohere";
|
|
|
15
15
|
import { createLocalLanguageModel } from "../providers/local/ai-sdk-adapter.js";
|
|
16
16
|
import { requiresApiKey } from "../registry/index.js";
|
|
17
17
|
import { getPrimaryApiKeyEnvVar, resolveApiKeyForProvider } from "../../utils/api-key-resolver.js";
|
|
18
|
-
import {
|
|
19
|
-
createCodexLanguageModel
|
|
20
|
-
} from "../providers/codex-app-server.js";
|
|
18
|
+
import { createCodexLanguageModel } from "../providers/codex-app-server.js";
|
|
21
19
|
import { isCodexBaseURL } from "../providers/codex-base-url.js";
|
|
22
20
|
import { findDextoProjectRoot } from "../../utils/execution-context.js";
|
|
23
21
|
import {
|
|
@@ -219,9 +217,9 @@ function createVercelModel(llmConfig, context) {
|
|
|
219
217
|
throw LLMError.unsupportedProvider(provider);
|
|
220
218
|
}
|
|
221
219
|
}
|
|
222
|
-
function createLLMService(config, toolManager, systemPromptManager, historyProvider, sessionEventBus, sessionId, resourceManager, logger, options
|
|
223
|
-
const { usageScopeId, compactionStrategy } = options;
|
|
224
|
-
const
|
|
220
|
+
function createLLMService(config, toolManager, systemPromptManager, historyProvider, sessionEventBus, sessionId, resourceManager, logger, options, languageModelFactory) {
|
|
221
|
+
const { usageScopeId, compactionStrategy, messageQueue } = options;
|
|
222
|
+
const providerContext = {
|
|
225
223
|
sessionId,
|
|
226
224
|
...options.cwd !== void 0 ? { cwd: options.cwd } : {},
|
|
227
225
|
onCodexRateLimitStatus: (snapshot) => {
|
|
@@ -231,7 +229,12 @@ function createLLMService(config, toolManager, systemPromptManager, historyProvi
|
|
|
231
229
|
snapshot
|
|
232
230
|
});
|
|
233
231
|
}
|
|
234
|
-
}
|
|
232
|
+
};
|
|
233
|
+
const model = languageModelFactory?.({
|
|
234
|
+
config,
|
|
235
|
+
context: providerContext,
|
|
236
|
+
createDefaultLanguageModel: () => createVercelModel(config, providerContext)
|
|
237
|
+
}) ?? createVercelModel(config, providerContext);
|
|
235
238
|
return new VercelLLMService(
|
|
236
239
|
toolManager,
|
|
237
240
|
model,
|
|
@@ -242,6 +245,7 @@ function createLLMService(config, toolManager, systemPromptManager, historyProvi
|
|
|
242
245
|
sessionId,
|
|
243
246
|
resourceManager,
|
|
244
247
|
logger,
|
|
248
|
+
messageQueue,
|
|
245
249
|
usageScopeId,
|
|
246
250
|
compactionStrategy
|
|
247
251
|
);
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CompactionStrategy } from '../../context/compaction/types.js';
|
|
2
|
+
import type { LanguageModel } from 'ai';
|
|
3
|
+
import type { CodexRateLimitSnapshot } from '../providers/codex-app-server.js';
|
|
4
|
+
import type { ValidatedLLMConfig } from '../schemas.js';
|
|
2
5
|
import type { LLMProvider } from '../types.js';
|
|
6
|
+
import type { MessageQueueService } from '../../session/message-queue.js';
|
|
3
7
|
/**
|
|
4
|
-
* Configuration object returned by
|
|
8
|
+
* Configuration object returned by the default session LLM service.
|
|
5
9
|
*/
|
|
6
10
|
export type LLMServiceConfig = {
|
|
7
11
|
provider: LLMProvider;
|
|
@@ -9,6 +13,33 @@ export type LLMServiceConfig = {
|
|
|
9
13
|
configuredMaxInputTokens?: number | null;
|
|
10
14
|
modelMaxInputTokens?: number | null;
|
|
11
15
|
};
|
|
16
|
+
export interface CreateLLMServiceOptions {
|
|
17
|
+
usageScopeId?: string | undefined;
|
|
18
|
+
compactionStrategy?: CompactionStrategy | null | undefined;
|
|
19
|
+
cwd?: string | undefined;
|
|
20
|
+
messageQueue: MessageQueueService;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Context for model creation, including session info for usage tracking.
|
|
24
|
+
*/
|
|
25
|
+
export interface DextoProviderContext {
|
|
26
|
+
/** Session ID for usage tracking */
|
|
27
|
+
sessionId?: string;
|
|
28
|
+
/** Client source for usage attribution (cli, web, sdk) */
|
|
29
|
+
clientSource?: 'cli' | 'web' | 'sdk';
|
|
30
|
+
/** Working directory for providers that need an explicit workspace root. */
|
|
31
|
+
cwd?: string;
|
|
32
|
+
/** Optional callback for ChatGPT Login rate-limit status updates from Codex. */
|
|
33
|
+
onCodexRateLimitStatus?: (snapshot: CodexRateLimitSnapshot) => void;
|
|
34
|
+
}
|
|
35
|
+
export interface LanguageModelFactoryInput {
|
|
36
|
+
config: ValidatedLLMConfig;
|
|
37
|
+
context: DextoProviderContext;
|
|
38
|
+
}
|
|
39
|
+
export interface LanguageModelFactoryContext extends LanguageModelFactoryInput {
|
|
40
|
+
createDefaultLanguageModel: () => LanguageModel;
|
|
41
|
+
}
|
|
42
|
+
export type LanguageModelFactory = (context: LanguageModelFactoryContext) => LanguageModel;
|
|
12
43
|
/**
|
|
13
44
|
* Token usage statistics from LLM
|
|
14
45
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/llm/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/llm/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,YAAY,EAAE,mBAAmB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACrC,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,oBAAoB,CAAC;CACjC;AAED,MAAM,WAAW,2BAA4B,SAAQ,yBAAyB;IAC1E,0BAA0B,EAAE,MAAM,aAAa,CAAC;CACnD;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,2BAA2B,KAAK,aAAa,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -66,14 +66,13 @@ __export(vercel_exports, {
|
|
|
66
66
|
VercelLLMService: () => VercelLLMService
|
|
67
67
|
});
|
|
68
68
|
module.exports = __toCommonJS(vercel_exports);
|
|
69
|
-
var
|
|
69
|
+
var import_types = require("../../logger/v2/types.js");
|
|
70
70
|
var import_manager = require("../../context/manager.js");
|
|
71
71
|
var import_registry = require("../registry/index.js");
|
|
72
72
|
var import_vercel = require("../formatters/vercel.js");
|
|
73
73
|
var import_decorators = require("../../telemetry/decorators.js");
|
|
74
74
|
var import_api = require("@opentelemetry/api");
|
|
75
75
|
var import_turn_executor = require("../executor/turn-executor.js");
|
|
76
|
-
var import_message_queue = require("../../session/message-queue.js");
|
|
77
76
|
var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
|
|
78
77
|
var import_error_codes = require("../error-codes.js");
|
|
79
78
|
var _VercelLLMService_decorators, _init;
|
|
@@ -100,8 +99,8 @@ class VercelLLMService {
|
|
|
100
99
|
getModelId() {
|
|
101
100
|
return typeof this.model === "string" ? this.model : this.model.modelId;
|
|
102
101
|
}
|
|
103
|
-
constructor(toolManager, model, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger, usageScopeId, compactionStrategy) {
|
|
104
|
-
this.logger = logger.createChild(
|
|
102
|
+
constructor(toolManager, model, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger, messageQueue, usageScopeId, compactionStrategy) {
|
|
103
|
+
this.logger = logger.createChild(import_types.DextoLogComponent.LLM);
|
|
105
104
|
this.model = model;
|
|
106
105
|
this.config = config;
|
|
107
106
|
this.toolManager = toolManager;
|
|
@@ -110,7 +109,7 @@ class VercelLLMService {
|
|
|
110
109
|
this.resourceManager = resourceManager;
|
|
111
110
|
this.usageScopeId = usageScopeId;
|
|
112
111
|
this.compactionStrategy = compactionStrategy ?? null;
|
|
113
|
-
this.messageQueue =
|
|
112
|
+
this.messageQueue = messageQueue;
|
|
114
113
|
const formatter = new import_vercel.VercelMessageFormatter(this.logger);
|
|
115
114
|
const maxInputTokens = (0, import_registry.getEffectiveMaxInputTokens)(config, this.logger);
|
|
116
115
|
if (this.compactionStrategy) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LanguageModel } from 'ai';
|
|
2
2
|
import { ToolManager } from '../../tools/tool-manager.js';
|
|
3
|
-
import { LLMServiceConfig } from './types.js';
|
|
3
|
+
import type { LLMServiceConfig } from './types.js';
|
|
4
4
|
import type { Logger } from '../../logger/v2/types.js';
|
|
5
5
|
import { ToolSet } from '../../tools/types.js';
|
|
6
6
|
import { ContextManager } from '../../context/manager.js';
|
|
@@ -12,7 +12,7 @@ import { MessageQueueService } from '../../session/message-queue.js';
|
|
|
12
12
|
import type { ResourceManager } from '../../resources/index.js';
|
|
13
13
|
import type { ContentInput } from '../../agent/types.js';
|
|
14
14
|
/**
|
|
15
|
-
* Vercel AI SDK implementation of
|
|
15
|
+
* Vercel AI SDK implementation of the core session LLM runtime
|
|
16
16
|
*
|
|
17
17
|
* This service delegates actual LLM execution to TurnExecutor, which handles:
|
|
18
18
|
* - Tool execution with multimodal support
|
|
@@ -42,7 +42,7 @@ export declare class VercelLLMService {
|
|
|
42
42
|
* Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
|
|
43
43
|
*/
|
|
44
44
|
private getModelId;
|
|
45
|
-
constructor(toolManager: ToolManager, model: LanguageModel, systemPromptManager: SystemPromptManager, historyProvider: ConversationHistoryProvider, sessionEventBus: SessionEventBus, config: ValidatedLLMConfig, sessionId: string, resourceManager: ResourceManager, logger: Logger, usageScopeId?: string, compactionStrategy?: import('../../context/compaction/types.js').CompactionStrategy | null);
|
|
45
|
+
constructor(toolManager: ToolManager, model: LanguageModel, systemPromptManager: SystemPromptManager, historyProvider: ConversationHistoryProvider, sessionEventBus: SessionEventBus, config: ValidatedLLMConfig, sessionId: string, resourceManager: ResourceManager, logger: Logger, messageQueue: MessageQueueService, usageScopeId?: string, compactionStrategy?: import('../../context/compaction/types.js').CompactionStrategy | null);
|
|
46
46
|
getAllTools(): Promise<ToolSet>;
|
|
47
47
|
getEnabledTools(): Promise<ToolSet>;
|
|
48
48
|
/**
|
|
@@ -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;
|
|
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,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,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;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD;;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,YAAY,EAAE,mBAAmB,EACjC,YAAY,CAAC,EAAE,MAAM,EACrB,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;IA0B1B;;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"}
|
|
@@ -11,7 +11,6 @@ import { VercelMessageFormatter } from "../formatters/vercel.js";
|
|
|
11
11
|
import { InstrumentClass } from "../../telemetry/decorators.js";
|
|
12
12
|
import { trace, context, propagation } from "@opentelemetry/api";
|
|
13
13
|
import { TurnExecutor } from "../executor/turn-executor.js";
|
|
14
|
-
import { MessageQueueService } from "../../session/message-queue.js";
|
|
15
14
|
import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
|
|
16
15
|
import { LLMErrorCode } from "../error-codes.js";
|
|
17
16
|
_VercelLLMService_decorators = [InstrumentClass({
|
|
@@ -37,7 +36,7 @@ class VercelLLMService {
|
|
|
37
36
|
getModelId() {
|
|
38
37
|
return typeof this.model === "string" ? this.model : this.model.modelId;
|
|
39
38
|
}
|
|
40
|
-
constructor(toolManager, model, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger, usageScopeId, compactionStrategy) {
|
|
39
|
+
constructor(toolManager, model, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger, messageQueue, usageScopeId, compactionStrategy) {
|
|
41
40
|
this.logger = logger.createChild(DextoLogComponent.LLM);
|
|
42
41
|
this.model = model;
|
|
43
42
|
this.config = config;
|
|
@@ -47,7 +46,7 @@ class VercelLLMService {
|
|
|
47
46
|
this.resourceManager = resourceManager;
|
|
48
47
|
this.usageScopeId = usageScopeId;
|
|
49
48
|
this.compactionStrategy = compactionStrategy ?? null;
|
|
50
|
-
this.messageQueue =
|
|
49
|
+
this.messageQueue = messageQueue;
|
|
51
50
|
const formatter = new VercelMessageFormatter(this.logger);
|
|
52
51
|
const maxInputTokens = getEffectiveMaxInputTokens(config, this.logger);
|
|
53
52
|
if (this.compactionStrategy) {
|