@dexto/core 1.8.0 → 1.8.2
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 +10 -16
- package/dist/agent/DextoAgent.d.ts +2 -2
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +8 -5
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/context/compaction/overflow.d.ts +1 -1
- package/dist/context/compaction/overflow.d.ts.map +1 -1
- package/dist/context/manager.cjs +8 -8
- package/dist/context/manager.d.ts +1 -1
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +1 -1
- package/dist/context/types.d.ts +1 -1
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/utils.cjs +3 -3
- package/dist/context/utils.d.ts +1 -1
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +1 -1
- package/dist/events/index.d.ts +2 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/index.browser.cjs +9 -9
- package/dist/index.browser.d.ts +4 -4
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/llm/auth/index.cjs +16 -0
- package/dist/llm/auth/index.d.ts +2 -0
- package/dist/llm/auth/index.d.ts.map +1 -0
- package/dist/llm/auth/index.js +0 -0
- package/dist/llm/auth/types.cjs +16 -0
- package/dist/llm/auth/types.d.ts +25 -0
- package/dist/llm/auth/types.d.ts.map +1 -0
- package/dist/llm/auth/types.js +0 -0
- package/dist/llm/curation-config.cjs +3 -3
- package/dist/llm/curation-config.d.ts +1 -1
- package/dist/llm/curation-config.js +3 -3
- package/dist/llm/curation.cjs +2 -2
- package/dist/llm/curation.d.ts +2 -2
- package/dist/llm/curation.d.ts.map +1 -1
- package/dist/llm/curation.js +1 -1
- package/dist/llm/errors.cjs +3 -3
- package/dist/llm/errors.d.ts +1 -1
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +1 -1
- package/dist/llm/executor/provider-options.cjs +22 -25
- package/dist/llm/executor/provider-options.d.ts +1 -1
- package/dist/llm/executor/provider-options.d.ts.map +1 -1
- package/dist/llm/executor/provider-options.js +17 -16
- package/dist/llm/executor/stream-processor.d.ts +1 -1
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.d.ts +1 -1
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/types.d.ts +1 -1
- package/dist/llm/executor/types.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.cjs +2 -2
- package/dist/llm/formatters/vercel.d.ts +1 -1
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/index.cjs +0 -4
- package/dist/llm/index.d.ts +1 -2
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +0 -2
- package/dist/llm/registry/auto-update.cjs +5 -5
- package/dist/llm/registry/auto-update.d.ts.map +1 -1
- package/dist/llm/registry/auto-update.js +2 -2
- package/dist/llm/registry/index.cjs +96 -789
- package/dist/llm/registry/index.d.ts +4 -323
- package/dist/llm/registry/index.d.ts.map +1 -1
- package/dist/llm/registry/index.js +99 -762
- package/dist/llm/registry/sync.d.ts +2 -2
- package/dist/llm/registry/sync.d.ts.map +1 -1
- package/dist/llm/resolver.cjs +7 -6
- package/dist/llm/resolver.d.ts +1 -1
- package/dist/llm/resolver.js +4 -4
- package/dist/llm/schemas.cjs +14 -14
- package/dist/llm/schemas.d.ts +1 -1
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -4
- package/dist/llm/services/factory.cjs +124 -33
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +128 -35
- package/dist/llm/services/types.d.ts +8 -1
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/usage-metadata.cjs +3 -3
- package/dist/llm/usage-metadata.d.ts +2 -2
- package/dist/llm/usage-metadata.d.ts.map +1 -1
- package/dist/llm/usage-metadata.js +1 -4
- package/dist/llm/usage-summary.d.ts +1 -1
- package/dist/llm/validation.cjs +4 -4
- package/dist/llm/validation.d.ts +1 -1
- package/dist/llm/validation.js +1 -1
- package/dist/session/chat-session.cjs +2 -12
- package/dist/session/chat-session.d.ts +2 -0
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +2 -13
- package/dist/session/session-manager.cjs +4 -1
- package/dist/session/session-manager.d.ts +5 -1
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +4 -1
- package/dist/utils/api-key-resolver.d.ts +1 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/result.cjs +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/service-initializer.cjs +3 -0
- package/dist/utils/service-initializer.d.ts +2 -0
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +3 -0
- package/package.json +3 -2
- package/dist/llm/reasoning/anthropic-betas.cjs +0 -31
- package/dist/llm/reasoning/anthropic-betas.d.ts +0 -3
- package/dist/llm/reasoning/anthropic-betas.d.ts.map +0 -1
- package/dist/llm/reasoning/anthropic-betas.js +0 -7
- package/dist/llm/reasoning/anthropic-thinking.cjs +0 -79
- package/dist/llm/reasoning/anthropic-thinking.d.ts +0 -15
- package/dist/llm/reasoning/anthropic-thinking.d.ts.map +0 -1
- package/dist/llm/reasoning/anthropic-thinking.js +0 -52
- package/dist/llm/reasoning/openai-reasoning-effort.cjs +0 -86
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts +0 -5
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +0 -1
- package/dist/llm/reasoning/openai-reasoning-effort.js +0 -61
- package/dist/llm/reasoning/profile.cjs +0 -113
- package/dist/llm/reasoning/profile.d.ts +0 -13
- package/dist/llm/reasoning/profile.d.ts.map +0 -1
- package/dist/llm/reasoning/profile.js +0 -92
- package/dist/llm/reasoning/profiles/anthropic.cjs +0 -61
- package/dist/llm/reasoning/profiles/anthropic.d.ts +0 -8
- package/dist/llm/reasoning/profiles/anthropic.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/anthropic.js +0 -45
- package/dist/llm/reasoning/profiles/bedrock.cjs +0 -54
- package/dist/llm/reasoning/profiles/bedrock.d.ts +0 -3
- package/dist/llm/reasoning/profiles/bedrock.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/bedrock.js +0 -36
- package/dist/llm/reasoning/profiles/google.cjs +0 -45
- package/dist/llm/reasoning/profiles/google.d.ts +0 -9
- package/dist/llm/reasoning/profiles/google.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/google.js +0 -21
- package/dist/llm/reasoning/profiles/openai-compatible.cjs +0 -39
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts +0 -3
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/openai-compatible.js +0 -16
- package/dist/llm/reasoning/profiles/openai.cjs +0 -41
- package/dist/llm/reasoning/profiles/openai.d.ts +0 -3
- package/dist/llm/reasoning/profiles/openai.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/openai.js +0 -18
- package/dist/llm/reasoning/profiles/openrouter.cjs +0 -83
- package/dist/llm/reasoning/profiles/openrouter.d.ts +0 -10
- package/dist/llm/reasoning/profiles/openrouter.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/openrouter.js +0 -59
- package/dist/llm/reasoning/profiles/shared.cjs +0 -80
- package/dist/llm/reasoning/profiles/shared.d.ts +0 -25
- package/dist/llm/reasoning/profiles/shared.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/shared.js +0 -53
- package/dist/llm/reasoning/profiles/vertex.cjs +0 -46
- package/dist/llm/reasoning/profiles/vertex.d.ts +0 -3
- package/dist/llm/reasoning/profiles/vertex.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/vertex.js +0 -23
- package/dist/llm/registry/models.generated.cjs +0 -10741
- package/dist/llm/registry/models.generated.d.ts +0 -2945
- package/dist/llm/registry/models.generated.d.ts.map +0 -1
- package/dist/llm/registry/models.generated.js +0 -10717
- package/dist/llm/registry/models.manual.cjs +0 -44
- package/dist/llm/registry/models.manual.d.ts +0 -22
- package/dist/llm/registry/models.manual.d.ts.map +0 -1
- package/dist/llm/registry/models.manual.js +0 -21
- package/dist/llm/types.cjs +0 -55
- package/dist/llm/types.d.ts +0 -39
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js +0 -30
|
@@ -13,16 +13,16 @@ import { createOpenRouter } from "@openrouter/ai-sdk-provider";
|
|
|
13
13
|
import { VercelLLMService } from "./vercel.js";
|
|
14
14
|
import { createCohere } from "@ai-sdk/cohere";
|
|
15
15
|
import { createLocalLanguageModel } from "../providers/local/ai-sdk-adapter.js";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
ANTHROPIC_BETA_HEADER,
|
|
18
|
+
ANTHROPIC_INTERLEAVED_THINKING_BETA,
|
|
19
|
+
requiresApiKey,
|
|
20
|
+
supportsAnthropicInterleavedThinking
|
|
21
|
+
} from "@dexto/llm";
|
|
17
22
|
import { getPrimaryApiKeyEnvVar, resolveApiKeyForProvider } from "../../utils/api-key-resolver.js";
|
|
18
23
|
import { createCodexLanguageModel } from "../providers/codex-app-server.js";
|
|
19
24
|
import { isCodexBaseURL } from "../providers/codex-base-url.js";
|
|
20
25
|
import { findDextoProjectRoot } from "../../utils/execution-context.js";
|
|
21
|
-
import {
|
|
22
|
-
ANTHROPIC_BETA_HEADER,
|
|
23
|
-
ANTHROPIC_INTERLEAVED_THINKING_BETA
|
|
24
|
-
} from "../reasoning/anthropic-betas.js";
|
|
25
|
-
import { supportsAnthropicInterleavedThinking } from "../reasoning/anthropic-thinking.js";
|
|
26
26
|
function isLanguageModel(value) {
|
|
27
27
|
if (!value || typeof value !== "object") return false;
|
|
28
28
|
const candidate = value;
|
|
@@ -57,34 +57,95 @@ function resolveProviderWorkingDirectory(explicitCwd) {
|
|
|
57
57
|
}
|
|
58
58
|
return findDextoProjectRoot(process.cwd()) ?? process.cwd();
|
|
59
59
|
}
|
|
60
|
+
function mergeHeaders(base, override) {
|
|
61
|
+
const merged = {
|
|
62
|
+
...base ?? {},
|
|
63
|
+
...override ?? {}
|
|
64
|
+
};
|
|
65
|
+
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
66
|
+
}
|
|
67
|
+
function logRuntimeAuthResolution(input) {
|
|
68
|
+
const {
|
|
69
|
+
context,
|
|
70
|
+
provider,
|
|
71
|
+
model,
|
|
72
|
+
configApiKey,
|
|
73
|
+
resolvedApiKey,
|
|
74
|
+
runtimeAuth,
|
|
75
|
+
effectiveBaseURL
|
|
76
|
+
} = input;
|
|
77
|
+
if (!context?.logger) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const auth = runtimeAuth?.auth ?? (configApiKey?.trim() ? { source: "config_api_key" } : resolvedApiKey?.trim() ? { source: "environment", envVar: getPrimaryApiKeyEnvVar(provider) } : { source: "none" });
|
|
81
|
+
context.logger.info("LLM runtime auth resolved", {
|
|
82
|
+
provider,
|
|
83
|
+
model,
|
|
84
|
+
auth,
|
|
85
|
+
runtime: {
|
|
86
|
+
hasRuntimeFetch: Boolean(runtimeAuth?.fetch),
|
|
87
|
+
hasRuntimeHeaders: Boolean(runtimeAuth?.headers),
|
|
88
|
+
hasRuntimeBaseURL: Boolean(runtimeAuth?.baseURL),
|
|
89
|
+
hasEffectiveBaseURL: Boolean(effectiveBaseURL)
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
60
93
|
function createVercelModel(llmConfig, context) {
|
|
61
94
|
const { provider, model, baseURL } = llmConfig;
|
|
62
|
-
const
|
|
63
|
-
|
|
95
|
+
const runtimeAuth = context?.authResolver?.resolveRuntimeAuth({
|
|
96
|
+
provider,
|
|
97
|
+
model,
|
|
98
|
+
apiKey: llmConfig.apiKey,
|
|
99
|
+
baseURL
|
|
100
|
+
}) ?? null;
|
|
101
|
+
const resolvedProviderApiKey = resolveApiKeyForProvider(provider);
|
|
102
|
+
const apiKey = runtimeAuth?.apiKey || llmConfig.apiKey || resolvedProviderApiKey;
|
|
103
|
+
const runtimeBaseURL = runtimeAuth?.baseURL;
|
|
104
|
+
const runtimeHeaders = runtimeAuth?.headers;
|
|
105
|
+
const runtimeFetch = runtimeAuth?.fetch;
|
|
106
|
+
const effectiveBaseURL = runtimeBaseURL?.replace(/\/$/, "") || baseURL?.replace(/\/$/, "");
|
|
107
|
+
const usesCodexRuntimeAuth = runtimeBaseURL ? isCodexBaseURL(runtimeBaseURL) : false;
|
|
108
|
+
logRuntimeAuthResolution({
|
|
109
|
+
context,
|
|
110
|
+
provider,
|
|
111
|
+
model,
|
|
112
|
+
configApiKey: llmConfig.apiKey,
|
|
113
|
+
resolvedApiKey: resolvedProviderApiKey,
|
|
114
|
+
runtimeAuth,
|
|
115
|
+
effectiveBaseURL
|
|
116
|
+
});
|
|
117
|
+
if (requiresApiKey(provider) && !usesCodexRuntimeAuth && !apiKey?.trim()) {
|
|
64
118
|
const envVar = getPrimaryApiKeyEnvVar(provider);
|
|
65
119
|
throw LLMError.apiKeyMissing(provider, envVar);
|
|
66
120
|
}
|
|
67
121
|
switch (provider.toLowerCase()) {
|
|
68
122
|
case "openai": {
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
case "openai-compatible": {
|
|
72
|
-
const compatibleBaseURL = baseURL?.replace(/\/$/, "") || process.env.OPENAI_BASE_URL?.replace(/\/$/, "");
|
|
73
|
-
if (!compatibleBaseURL) {
|
|
74
|
-
throw LLMError.baseUrlMissing("openai-compatible");
|
|
75
|
-
}
|
|
76
|
-
if (isCodexBaseURL(compatibleBaseURL)) {
|
|
123
|
+
if (usesCodexRuntimeAuth && runtimeBaseURL) {
|
|
77
124
|
return createCodexLanguageModel({
|
|
78
125
|
modelId: model,
|
|
79
|
-
baseURL:
|
|
126
|
+
baseURL: runtimeBaseURL,
|
|
80
127
|
cwd: resolveProviderWorkingDirectory(context?.cwd),
|
|
81
128
|
...context?.onCodexRateLimitStatus ? { onRateLimitStatus: context.onCodexRateLimitStatus } : {}
|
|
82
129
|
});
|
|
83
130
|
}
|
|
131
|
+
return createOpenAI({
|
|
132
|
+
apiKey: apiKey ?? "",
|
|
133
|
+
...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
|
|
134
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
135
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
136
|
+
}).responses(model);
|
|
137
|
+
}
|
|
138
|
+
case "openai-compatible": {
|
|
139
|
+
const compatibleBaseURL = effectiveBaseURL || process.env.OPENAI_BASE_URL?.replace(/\/$/, "");
|
|
140
|
+
if (!compatibleBaseURL) {
|
|
141
|
+
throw LLMError.baseUrlMissing("openai-compatible");
|
|
142
|
+
}
|
|
84
143
|
const provider2 = createOpenAICompatible({
|
|
85
144
|
name: "openaiCompatible",
|
|
86
145
|
baseURL: compatibleBaseURL,
|
|
87
|
-
...apiKey?.trim() ? { apiKey } : {}
|
|
146
|
+
...apiKey?.trim() ? { apiKey } : {},
|
|
147
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
148
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
88
149
|
});
|
|
89
150
|
return provider2.chatModel(model);
|
|
90
151
|
}
|
|
@@ -106,26 +167,47 @@ function createVercelModel(llmConfig, context) {
|
|
|
106
167
|
return chatModel;
|
|
107
168
|
}
|
|
108
169
|
case "minimax": {
|
|
109
|
-
const minimaxBaseURL =
|
|
110
|
-
return createOpenAI({
|
|
170
|
+
const minimaxBaseURL = effectiveBaseURL || "https://api.minimax.chat/v1";
|
|
171
|
+
return createOpenAI({
|
|
172
|
+
apiKey: apiKey ?? "",
|
|
173
|
+
baseURL: minimaxBaseURL,
|
|
174
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
175
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
176
|
+
}).chat(model);
|
|
111
177
|
}
|
|
112
178
|
case "glm": {
|
|
113
|
-
const glmBaseURL =
|
|
114
|
-
return createOpenAI({
|
|
179
|
+
const glmBaseURL = effectiveBaseURL || "https://open.bigmodel.cn/api/paas/v4";
|
|
180
|
+
return createOpenAI({
|
|
181
|
+
apiKey: apiKey ?? "",
|
|
182
|
+
baseURL: glmBaseURL,
|
|
183
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
184
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
185
|
+
}).chat(model);
|
|
115
186
|
}
|
|
116
187
|
case "litellm": {
|
|
117
|
-
if (!
|
|
188
|
+
if (!effectiveBaseURL) {
|
|
118
189
|
throw LLMError.baseUrlMissing("litellm");
|
|
119
190
|
}
|
|
120
|
-
return createOpenAI({
|
|
191
|
+
return createOpenAI({
|
|
192
|
+
apiKey: apiKey ?? "",
|
|
193
|
+
baseURL: effectiveBaseURL,
|
|
194
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
195
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
196
|
+
}).chat(model);
|
|
121
197
|
}
|
|
122
198
|
case "glama": {
|
|
123
|
-
const glamaBaseURL = "https://glama.ai/api/gateway/openai/v1";
|
|
124
|
-
return createOpenAI({
|
|
199
|
+
const glamaBaseURL = effectiveBaseURL || "https://glama.ai/api/gateway/openai/v1";
|
|
200
|
+
return createOpenAI({
|
|
201
|
+
apiKey: apiKey ?? "",
|
|
202
|
+
baseURL: glamaBaseURL,
|
|
203
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
204
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
205
|
+
}).chat(model);
|
|
125
206
|
}
|
|
126
207
|
case "dexto-nova": {
|
|
127
208
|
const dextoBaseURL = resolveDextoGatewayBaseURL(baseURL);
|
|
128
209
|
const headers = {
|
|
210
|
+
...runtimeHeaders ?? {},
|
|
129
211
|
[DEXTO_GATEWAY_HEADERS.CLIENT_SOURCE]: context?.clientSource ?? "cli"
|
|
130
212
|
};
|
|
131
213
|
if (context?.sessionId) {
|
|
@@ -134,14 +216,13 @@ function createVercelModel(llmConfig, context) {
|
|
|
134
216
|
if (process.env.DEXTO_CLI_VERSION) {
|
|
135
217
|
headers[DEXTO_GATEWAY_HEADERS.CLIENT_VERSION] = process.env.DEXTO_CLI_VERSION;
|
|
136
218
|
}
|
|
137
|
-
const provider2 =
|
|
138
|
-
|
|
219
|
+
const provider2 = createOpenAICompatible({
|
|
220
|
+
name: "dexto-nova",
|
|
139
221
|
baseURL: dextoBaseURL,
|
|
140
222
|
headers,
|
|
141
|
-
|
|
142
|
-
compatibility: "strict"
|
|
223
|
+
...apiKey?.trim() ? { apiKey } : {}
|
|
143
224
|
});
|
|
144
|
-
const chatModel = provider2.
|
|
225
|
+
const chatModel = provider2.chatModel(model);
|
|
145
226
|
if (!isLanguageModel(chatModel)) {
|
|
146
227
|
throw LLMError.generationFailed(
|
|
147
228
|
"Dexto gateway provider returned an invalid language model instance",
|
|
@@ -190,10 +271,15 @@ function createVercelModel(llmConfig, context) {
|
|
|
190
271
|
return createAmazonBedrock({ region })(modelId);
|
|
191
272
|
}
|
|
192
273
|
case "anthropic": {
|
|
193
|
-
const headers =
|
|
274
|
+
const headers = mergeHeaders(
|
|
275
|
+
supportsAnthropicInterleavedThinking(model) ? { [ANTHROPIC_BETA_HEADER]: ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0,
|
|
276
|
+
runtimeHeaders
|
|
277
|
+
);
|
|
194
278
|
return createAnthropic({
|
|
195
279
|
apiKey: apiKey ?? "",
|
|
196
|
-
...
|
|
280
|
+
...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
|
|
281
|
+
...headers ? { headers } : {},
|
|
282
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
197
283
|
})(model);
|
|
198
284
|
}
|
|
199
285
|
case "google":
|
|
@@ -205,8 +291,13 @@ function createVercelModel(llmConfig, context) {
|
|
|
205
291
|
case "cohere":
|
|
206
292
|
return createCohere({ apiKey: apiKey ?? "" })(model);
|
|
207
293
|
case "ollama": {
|
|
208
|
-
const ollamaBaseURL =
|
|
209
|
-
return createOpenAI({
|
|
294
|
+
const ollamaBaseURL = effectiveBaseURL || "http://localhost:11434/v1";
|
|
295
|
+
return createOpenAI({
|
|
296
|
+
apiKey: apiKey ?? "ollama",
|
|
297
|
+
baseURL: ollamaBaseURL,
|
|
298
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
299
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
300
|
+
}).chat(model);
|
|
210
301
|
}
|
|
211
302
|
case "local": {
|
|
212
303
|
return createLocalLanguageModel({
|
|
@@ -222,6 +313,8 @@ function createLLMService(config, toolManager, systemPromptManager, conversation
|
|
|
222
313
|
const providerContext = {
|
|
223
314
|
sessionId,
|
|
224
315
|
...options.cwd !== void 0 ? { cwd: options.cwd } : {},
|
|
316
|
+
authResolver: options.authResolver ?? null,
|
|
317
|
+
logger,
|
|
225
318
|
onCodexRateLimitStatus: (snapshot) => {
|
|
226
319
|
sessionEventBus.emit("llm:rate-limit-status", {
|
|
227
320
|
provider: config.provider,
|
|
@@ -2,7 +2,9 @@ import type { CompactionStrategy } from '../../context/compaction/types.js';
|
|
|
2
2
|
import type { LanguageModel } from 'ai';
|
|
3
3
|
import type { CodexRateLimitSnapshot } from '../providers/codex-app-server.js';
|
|
4
4
|
import type { ValidatedLLMConfig } from '../schemas.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { LlmAuthResolver } from '../auth/types.js';
|
|
6
|
+
import type { Logger } from '../../logger/v2/types.js';
|
|
7
|
+
import type { LLMProvider } from '@dexto/llm';
|
|
6
8
|
import type { MessageQueueService } from '../../session/message-queue.js';
|
|
7
9
|
import type { AgentRunContext } from '../../runtime/run-context.js';
|
|
8
10
|
import type { TurnDriverState } from '../executor/turn-executor.js';
|
|
@@ -19,6 +21,7 @@ export interface CreateLLMServiceOptions {
|
|
|
19
21
|
usageScopeId?: string | undefined;
|
|
20
22
|
compactionStrategy?: CompactionStrategy | null | undefined;
|
|
21
23
|
cwd?: string | undefined;
|
|
24
|
+
authResolver?: LlmAuthResolver | null | undefined;
|
|
22
25
|
steerQueue: MessageQueueService;
|
|
23
26
|
followUpQueue: MessageQueueService;
|
|
24
27
|
}
|
|
@@ -38,6 +41,10 @@ export interface DextoProviderContext {
|
|
|
38
41
|
clientSource?: 'cli' | 'web' | 'sdk';
|
|
39
42
|
/** Working directory for providers that need an explicit workspace root. */
|
|
40
43
|
cwd?: string;
|
|
44
|
+
/** Runtime auth resolver for profile-backed API keys, OAuth, and external accounts. */
|
|
45
|
+
authResolver?: LlmAuthResolver | null;
|
|
46
|
+
/** Logger for non-secret runtime provider/auth observability. */
|
|
47
|
+
logger?: Logger | undefined;
|
|
41
48
|
/** Optional callback for ChatGPT Login rate-limit status updates from Codex. */
|
|
42
49
|
onCodexRateLimitStatus?: (snapshot: CodexRateLimitSnapshot) => void;
|
|
43
50
|
}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;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,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,mBAAmB,CAAC;IAChC,aAAa,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF;;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,uFAAuF;IACvF,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,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"}
|
|
@@ -23,7 +23,7 @@ __export(usage_metadata_exports, {
|
|
|
23
23
|
normalizeTokenUsageForAccounting: () => normalizeTokenUsageForAccounting
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(usage_metadata_exports);
|
|
26
|
-
var
|
|
26
|
+
var import_llm = require("@dexto/llm");
|
|
27
27
|
function finiteTokenCount(value) {
|
|
28
28
|
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
29
29
|
}
|
|
@@ -50,11 +50,11 @@ function getUsagePricingMetadata(config) {
|
|
|
50
50
|
if (!provider || !model || !tokenUsage || !hasMeaningfulTokenUsage(tokenUsage)) {
|
|
51
51
|
return {};
|
|
52
52
|
}
|
|
53
|
-
const pricing = (0,
|
|
53
|
+
const pricing = (0, import_llm.getModelPricing)(provider, model);
|
|
54
54
|
if (!pricing) {
|
|
55
55
|
return { pricingStatus: "unpriced" };
|
|
56
56
|
}
|
|
57
|
-
const costBreakdown = (0,
|
|
57
|
+
const costBreakdown = (0, import_llm.calculateCostBreakdown)(tokenUsage, pricing);
|
|
58
58
|
return {
|
|
59
59
|
estimatedCost: costBreakdown.totalUsd,
|
|
60
60
|
pricingStatus: "estimated",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type TokenUsageCostBreakdown } from '
|
|
2
|
-
import type { LLMProvider, LLMPricingStatus, TokenUsage } from '
|
|
1
|
+
import { type TokenUsageCostBreakdown } from '@dexto/llm';
|
|
2
|
+
import type { LLMProvider, LLMPricingStatus, TokenUsage } from '@dexto/llm';
|
|
3
3
|
export interface LLMUsagePricingMetadata {
|
|
4
4
|
estimatedCost?: number;
|
|
5
5
|
pricingStatus?: LLMPricingStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-metadata.d.ts","sourceRoot":"","sources":["../../src/llm/usage-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"usage-metadata.d.ts","sourceRoot":"","sources":["../../src/llm/usage-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,uBAAuB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,aAAa,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAMD,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAW/F;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAcnF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B,GAAG,uBAAuB,CAqB1B"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import "../chunk-C6A6W6XS.js";
|
|
2
|
-
import {
|
|
3
|
-
calculateCostBreakdown,
|
|
4
|
-
getModelPricing
|
|
5
|
-
} from "./registry/index.js";
|
|
2
|
+
import { calculateCostBreakdown, getModelPricing } from "@dexto/llm";
|
|
6
3
|
function finiteTokenCount(value) {
|
|
7
4
|
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
8
5
|
}
|
package/dist/llm/validation.cjs
CHANGED
|
@@ -21,7 +21,7 @@ __export(validation_exports, {
|
|
|
21
21
|
validateInputForLLM: () => validateInputForLLM
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(validation_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_llm = require("@dexto/llm");
|
|
25
25
|
var import_result = require("../utils/result.js");
|
|
26
26
|
var import_types = require("../errors/types.js");
|
|
27
27
|
var import_error_codes = require("./error-codes.js");
|
|
@@ -100,7 +100,7 @@ function validateFileInput(fileData, config, logger) {
|
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
const baseMimeType = fileData.mimeType.toLowerCase().split(";")[0]?.trim() || fileData.mimeType.toLowerCase();
|
|
103
|
-
const allowedMimeTypes = (0,
|
|
103
|
+
const allowedMimeTypes = (0, import_llm.getAllowedMimeTypes)();
|
|
104
104
|
if (!allowedMimeTypes.includes(baseMimeType)) {
|
|
105
105
|
return {
|
|
106
106
|
isSupported: false,
|
|
@@ -117,7 +117,7 @@ function validateFileInput(fileData, config, logger) {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
if (config.model) {
|
|
120
|
-
return (0,
|
|
120
|
+
return (0, import_llm.validateModelFileSupport)(config.provider, config.model, fileData.mimeType);
|
|
121
121
|
}
|
|
122
122
|
return {
|
|
123
123
|
isSupported: false,
|
|
@@ -149,7 +149,7 @@ function validateImageInput(imageData, config, logger) {
|
|
|
149
149
|
};
|
|
150
150
|
}
|
|
151
151
|
const baseMimeType = resolvedMime.split(";")[0]?.trim() || resolvedMime;
|
|
152
|
-
const res = (0,
|
|
152
|
+
const res = (0, import_llm.validateModelFileSupport)(config.provider, config.model, baseMimeType);
|
|
153
153
|
return {
|
|
154
154
|
isSupported: res.isSupported,
|
|
155
155
|
...res.error ? { error: res.error } : {}
|
package/dist/llm/validation.d.ts
CHANGED
package/dist/llm/validation.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../chunk-C6A6W6XS.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getAllowedMimeTypes, validateModelFileSupport } from "@dexto/llm";
|
|
3
3
|
import { ok, fail } from "../utils/result.js";
|
|
4
4
|
import { ErrorScope, ErrorType } from "../errors/types.js";
|
|
5
5
|
import { LLMErrorCode } from "./error-codes.js";
|
|
@@ -29,7 +29,6 @@ var import_errors = require("../errors/index.js");
|
|
|
29
29
|
var import_error_codes = require("../hooks/error-codes.js");
|
|
30
30
|
var import_message_queue = require("./message-queue.js");
|
|
31
31
|
var import_usage_metadata = require("../llm/usage-metadata.js");
|
|
32
|
-
var import_codex_base_url = require("../llm/providers/codex-base-url.js");
|
|
33
32
|
var import_errors2 = require("./errors.js");
|
|
34
33
|
class ChatSession {
|
|
35
34
|
/**
|
|
@@ -138,16 +137,6 @@ class ChatSession {
|
|
|
138
137
|
if (payload.tokenUsage) {
|
|
139
138
|
const tokenUsage = (0, import_usage_metadata.normalizeTokenUsageForAccounting)(payload.tokenUsage);
|
|
140
139
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
141
|
-
const isChatGPTLogin = llmConfig.provider === "openai-compatible" && (0, import_codex_base_url.parseCodexBaseURL)(llmConfig.baseURL)?.authMode === "chatgpt";
|
|
142
|
-
const hasMeaningfulUsage = (0, import_usage_metadata.hasMeaningfulTokenUsage)(tokenUsage);
|
|
143
|
-
if (isChatGPTLogin && !hasMeaningfulUsage) {
|
|
144
|
-
this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
|
|
145
|
-
this.logger.warn(
|
|
146
|
-
`Failed to mark ChatGPT Login usage as untracked: ${err instanceof Error ? err.message : String(err)}`
|
|
147
|
-
);
|
|
148
|
-
});
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
140
|
const modelInfo = {
|
|
152
141
|
provider: payload.provider ?? llmConfig.provider,
|
|
153
142
|
model: payload.model ?? llmConfig.model
|
|
@@ -190,7 +179,8 @@ class ChatSession {
|
|
|
190
179
|
compactionStrategy: this.services.compactionStrategy,
|
|
191
180
|
...workspace?.path !== void 0 && { cwd: workspace.path },
|
|
192
181
|
steerQueue: this.steerQueue,
|
|
193
|
-
followUpQueue: this.followUpQueue
|
|
182
|
+
followUpQueue: this.followUpQueue,
|
|
183
|
+
authResolver: this.services.authResolver ?? null
|
|
194
184
|
};
|
|
195
185
|
return (0, import_factory.createLLMService)(
|
|
196
186
|
llmConfig,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ContextManager } from '../context/index.js';
|
|
2
2
|
import type { LanguageModelFactory } from '../llm/services/types.js';
|
|
3
|
+
import type { LlmAuthResolver } from '../llm/auth/index.js';
|
|
3
4
|
import type { SystemPromptManager } from '../systemPrompt/manager.js';
|
|
4
5
|
import type { ToolManager } from '../tools/tool-manager.js';
|
|
5
6
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
@@ -144,6 +145,7 @@ export declare class ChatSession {
|
|
|
144
145
|
steerQueueStore: SessionMessageQueueStore;
|
|
145
146
|
followUpQueueStore: SessionMessageQueueStore;
|
|
146
147
|
languageModelFactory?: LanguageModelFactory;
|
|
148
|
+
authResolver?: LlmAuthResolver | null;
|
|
147
149
|
workspaceManager?: import('../workspace/manager.js').WorkspaceManager;
|
|
148
150
|
compactionStrategy: CompactionStrategy | null;
|
|
149
151
|
}, id: string, logger: Logger);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAA2B,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACH,eAAe,EACf,aAAa,EAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,8 @@ import { HookErrorCode } from "../hooks/error-codes.js";
|
|
|
11
11
|
import { MessageQueueService } from "./message-queue.js";
|
|
12
12
|
import {
|
|
13
13
|
getUsagePricingMetadata,
|
|
14
|
-
hasMeaningfulTokenUsage,
|
|
15
14
|
normalizeTokenUsageForAccounting
|
|
16
15
|
} from "../llm/usage-metadata.js";
|
|
17
|
-
import { parseCodexBaseURL } from "../llm/providers/codex-base-url.js";
|
|
18
16
|
import { SessionError } from "./errors.js";
|
|
19
17
|
class ChatSession {
|
|
20
18
|
/**
|
|
@@ -123,16 +121,6 @@ class ChatSession {
|
|
|
123
121
|
if (payload.tokenUsage) {
|
|
124
122
|
const tokenUsage = normalizeTokenUsageForAccounting(payload.tokenUsage);
|
|
125
123
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
126
|
-
const isChatGPTLogin = llmConfig.provider === "openai-compatible" && parseCodexBaseURL(llmConfig.baseURL)?.authMode === "chatgpt";
|
|
127
|
-
const hasMeaningfulUsage = hasMeaningfulTokenUsage(tokenUsage);
|
|
128
|
-
if (isChatGPTLogin && !hasMeaningfulUsage) {
|
|
129
|
-
this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
|
|
130
|
-
this.logger.warn(
|
|
131
|
-
`Failed to mark ChatGPT Login usage as untracked: ${err instanceof Error ? err.message : String(err)}`
|
|
132
|
-
);
|
|
133
|
-
});
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
124
|
const modelInfo = {
|
|
137
125
|
provider: payload.provider ?? llmConfig.provider,
|
|
138
126
|
model: payload.model ?? llmConfig.model
|
|
@@ -175,7 +163,8 @@ class ChatSession {
|
|
|
175
163
|
compactionStrategy: this.services.compactionStrategy,
|
|
176
164
|
...workspace?.path !== void 0 && { cwd: workspace.path },
|
|
177
165
|
steerQueue: this.steerQueue,
|
|
178
|
-
followUpQueue: this.followUpQueue
|
|
166
|
+
followUpQueue: this.followUpQueue,
|
|
167
|
+
authResolver: this.services.authResolver ?? null
|
|
179
168
|
};
|
|
180
169
|
return createLLMService(
|
|
181
170
|
llmConfig,
|
|
@@ -48,6 +48,7 @@ class SessionManager {
|
|
|
48
48
|
this.sessionTTL = config.sessionTTL ?? 36e5;
|
|
49
49
|
this.sessionLoggerFactory = config.sessionLoggerFactory ?? defaultSessionLoggerFactory;
|
|
50
50
|
this.languageModelFactory = config.languageModelFactory;
|
|
51
|
+
this.authResolver = config.authResolver ?? null;
|
|
51
52
|
this.logger = logger.createChild(import_types.DextoLogComponent.SESSION);
|
|
52
53
|
}
|
|
53
54
|
sessions = /* @__PURE__ */ new Map();
|
|
@@ -66,13 +67,15 @@ class SessionManager {
|
|
|
66
67
|
static FORK_PARENT_ID_PREVIEW_LENGTH = 8;
|
|
67
68
|
sessionLoggerFactory;
|
|
68
69
|
languageModelFactory;
|
|
70
|
+
authResolver;
|
|
69
71
|
getChatSessionServices() {
|
|
70
72
|
return {
|
|
71
73
|
...this.services,
|
|
72
74
|
sessionManager: this,
|
|
73
75
|
...this.languageModelFactory !== void 0 && {
|
|
74
76
|
languageModelFactory: this.languageModelFactory
|
|
75
|
-
}
|
|
77
|
+
},
|
|
78
|
+
authResolver: this.authResolver
|
|
76
79
|
};
|
|
77
80
|
}
|
|
78
81
|
/**
|
|
@@ -7,8 +7,9 @@ import type { AgentStateManager } from '../agent/state-manager.js';
|
|
|
7
7
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
8
8
|
import type { HookManager } from '../hooks/manager.js';
|
|
9
9
|
import type { ApprovalManager } from '../approval/manager.js';
|
|
10
|
-
import type { TokenUsage } from '
|
|
10
|
+
import type { TokenUsage } from '@dexto/llm';
|
|
11
11
|
import type { LanguageModelFactory } from '../llm/services/types.js';
|
|
12
|
+
import type { LlmAuthResolver } from '../llm/auth/index.js';
|
|
12
13
|
import type { CompactionStrategy } from '../context/compaction/types.js';
|
|
13
14
|
import { type SessionPromptContributor } from '../systemPrompt/schemas.js';
|
|
14
15
|
import type { SessionMessageQueueStore } from '../storage/message-queue/types.js';
|
|
@@ -58,6 +59,8 @@ export interface SessionManagerConfig {
|
|
|
58
59
|
sessionLoggerFactory?: SessionLoggerFactory;
|
|
59
60
|
/** Host hook for constructing session-scoped LanguageModel instances */
|
|
60
61
|
languageModelFactory?: LanguageModelFactory;
|
|
62
|
+
/** Host hook for resolving runtime provider auth from local/cloud profiles */
|
|
63
|
+
authResolver?: LlmAuthResolver | null;
|
|
61
64
|
}
|
|
62
65
|
type PersistedLLMConfig = Omit<ValidatedLLMConfig, 'apiKey'>;
|
|
63
66
|
export interface SessionData {
|
|
@@ -108,6 +111,7 @@ export declare class SessionManager {
|
|
|
108
111
|
private static readonly FORK_PARENT_ID_PREVIEW_LENGTH;
|
|
109
112
|
private readonly sessionLoggerFactory;
|
|
110
113
|
private readonly languageModelFactory;
|
|
114
|
+
private readonly authResolver;
|
|
111
115
|
constructor(services: {
|
|
112
116
|
stateManager: AgentStateManager;
|
|
113
117
|
systemPromptManager: SystemPromptManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ class SessionManager {
|
|
|
18
18
|
this.sessionTTL = config.sessionTTL ?? 36e5;
|
|
19
19
|
this.sessionLoggerFactory = config.sessionLoggerFactory ?? defaultSessionLoggerFactory;
|
|
20
20
|
this.languageModelFactory = config.languageModelFactory;
|
|
21
|
+
this.authResolver = config.authResolver ?? null;
|
|
21
22
|
this.logger = logger.createChild(DextoLogComponent.SESSION);
|
|
22
23
|
}
|
|
23
24
|
sessions = /* @__PURE__ */ new Map();
|
|
@@ -36,13 +37,15 @@ class SessionManager {
|
|
|
36
37
|
static FORK_PARENT_ID_PREVIEW_LENGTH = 8;
|
|
37
38
|
sessionLoggerFactory;
|
|
38
39
|
languageModelFactory;
|
|
40
|
+
authResolver;
|
|
39
41
|
getChatSessionServices() {
|
|
40
42
|
return {
|
|
41
43
|
...this.services,
|
|
42
44
|
sessionManager: this,
|
|
43
45
|
...this.languageModelFactory !== void 0 && {
|
|
44
46
|
languageModelFactory: this.languageModelFactory
|
|
45
|
-
}
|
|
47
|
+
},
|
|
48
|
+
authResolver: this.authResolver
|
|
46
49
|
};
|
|
47
50
|
}
|
|
48
51
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/api-key-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/api-key-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C;;;GAGG;AAGH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CA+B9D,CAAC;AA2BF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAsBlF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAGpE"}
|