@dexto/core 1.8.1 → 1.8.3
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 +12 -12
- package/dist/agent/DextoAgent.d.ts +2 -2
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +12 -12
- package/dist/events/index.cjs +8 -0
- package/dist/events/index.d.ts +22 -14
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +8 -0
- 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/index.d.ts +1 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/services/factory.cjs +118 -24
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +118 -24
- package/dist/llm/services/types.d.ts +7 -0
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/session/chat-session.cjs +38 -33
- 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 +38 -33
- package/dist/session/session-manager.cjs +4 -1
- package/dist/session/session-manager.d.ts +4 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +4 -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 +2 -2
|
@@ -75,34 +75,95 @@ function resolveProviderWorkingDirectory(explicitCwd) {
|
|
|
75
75
|
}
|
|
76
76
|
return (0, import_execution_context.findDextoProjectRoot)(process.cwd()) ?? process.cwd();
|
|
77
77
|
}
|
|
78
|
+
function mergeHeaders(base, override) {
|
|
79
|
+
const merged = {
|
|
80
|
+
...base ?? {},
|
|
81
|
+
...override ?? {}
|
|
82
|
+
};
|
|
83
|
+
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
84
|
+
}
|
|
85
|
+
function logRuntimeAuthResolution(input) {
|
|
86
|
+
const {
|
|
87
|
+
context,
|
|
88
|
+
provider,
|
|
89
|
+
model,
|
|
90
|
+
configApiKey,
|
|
91
|
+
resolvedApiKey,
|
|
92
|
+
runtimeAuth,
|
|
93
|
+
effectiveBaseURL
|
|
94
|
+
} = input;
|
|
95
|
+
if (!context?.logger) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const auth = runtimeAuth?.auth ?? (configApiKey?.trim() ? { source: "config_api_key" } : resolvedApiKey?.trim() ? { source: "environment", envVar: (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(provider) } : { source: "none" });
|
|
99
|
+
context.logger.info("LLM runtime auth resolved", {
|
|
100
|
+
provider,
|
|
101
|
+
model,
|
|
102
|
+
auth,
|
|
103
|
+
runtime: {
|
|
104
|
+
hasRuntimeFetch: Boolean(runtimeAuth?.fetch),
|
|
105
|
+
hasRuntimeHeaders: Boolean(runtimeAuth?.headers),
|
|
106
|
+
hasRuntimeBaseURL: Boolean(runtimeAuth?.baseURL),
|
|
107
|
+
hasEffectiveBaseURL: Boolean(effectiveBaseURL)
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
78
111
|
function createVercelModel(llmConfig, context) {
|
|
79
112
|
const { provider, model, baseURL } = llmConfig;
|
|
80
|
-
const
|
|
81
|
-
|
|
113
|
+
const runtimeAuth = context?.authResolver?.resolveRuntimeAuth({
|
|
114
|
+
provider,
|
|
115
|
+
model,
|
|
116
|
+
apiKey: llmConfig.apiKey,
|
|
117
|
+
baseURL
|
|
118
|
+
}) ?? null;
|
|
119
|
+
const resolvedProviderApiKey = (0, import_api_key_resolver.resolveApiKeyForProvider)(provider);
|
|
120
|
+
const apiKey = runtimeAuth?.apiKey || llmConfig.apiKey || resolvedProviderApiKey;
|
|
121
|
+
const runtimeBaseURL = runtimeAuth?.baseURL;
|
|
122
|
+
const runtimeHeaders = runtimeAuth?.headers;
|
|
123
|
+
const runtimeFetch = runtimeAuth?.fetch;
|
|
124
|
+
const effectiveBaseURL = runtimeBaseURL?.replace(/\/$/, "") || baseURL?.replace(/\/$/, "");
|
|
125
|
+
const usesCodexRuntimeAuth = runtimeBaseURL ? (0, import_codex_base_url.isCodexBaseURL)(runtimeBaseURL) : false;
|
|
126
|
+
logRuntimeAuthResolution({
|
|
127
|
+
context,
|
|
128
|
+
provider,
|
|
129
|
+
model,
|
|
130
|
+
configApiKey: llmConfig.apiKey,
|
|
131
|
+
resolvedApiKey: resolvedProviderApiKey,
|
|
132
|
+
runtimeAuth,
|
|
133
|
+
effectiveBaseURL
|
|
134
|
+
});
|
|
135
|
+
if ((0, import_llm.requiresApiKey)(provider) && !usesCodexRuntimeAuth && !apiKey?.trim()) {
|
|
82
136
|
const envVar = (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(provider);
|
|
83
137
|
throw import_errors.LLMError.apiKeyMissing(provider, envVar);
|
|
84
138
|
}
|
|
85
139
|
switch (provider.toLowerCase()) {
|
|
86
140
|
case "openai": {
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
case "openai-compatible": {
|
|
90
|
-
const compatibleBaseURL = baseURL?.replace(/\/$/, "") || process.env.OPENAI_BASE_URL?.replace(/\/$/, "");
|
|
91
|
-
if (!compatibleBaseURL) {
|
|
92
|
-
throw import_errors.LLMError.baseUrlMissing("openai-compatible");
|
|
93
|
-
}
|
|
94
|
-
if ((0, import_codex_base_url.isCodexBaseURL)(compatibleBaseURL)) {
|
|
141
|
+
if (usesCodexRuntimeAuth && runtimeBaseURL) {
|
|
95
142
|
return (0, import_codex_app_server.createCodexLanguageModel)({
|
|
96
143
|
modelId: model,
|
|
97
|
-
baseURL:
|
|
144
|
+
baseURL: runtimeBaseURL,
|
|
98
145
|
cwd: resolveProviderWorkingDirectory(context?.cwd),
|
|
99
146
|
...context?.onCodexRateLimitStatus ? { onRateLimitStatus: context.onCodexRateLimitStatus } : {}
|
|
100
147
|
});
|
|
101
148
|
}
|
|
149
|
+
return (0, import_openai.createOpenAI)({
|
|
150
|
+
apiKey: apiKey ?? "",
|
|
151
|
+
...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
|
|
152
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
153
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
154
|
+
}).responses(model);
|
|
155
|
+
}
|
|
156
|
+
case "openai-compatible": {
|
|
157
|
+
const compatibleBaseURL = effectiveBaseURL || process.env.OPENAI_BASE_URL?.replace(/\/$/, "");
|
|
158
|
+
if (!compatibleBaseURL) {
|
|
159
|
+
throw import_errors.LLMError.baseUrlMissing("openai-compatible");
|
|
160
|
+
}
|
|
102
161
|
const provider2 = (0, import_openai_compatible.createOpenAICompatible)({
|
|
103
162
|
name: "openaiCompatible",
|
|
104
163
|
baseURL: compatibleBaseURL,
|
|
105
|
-
...apiKey?.trim() ? { apiKey } : {}
|
|
164
|
+
...apiKey?.trim() ? { apiKey } : {},
|
|
165
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
166
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
106
167
|
});
|
|
107
168
|
return provider2.chatModel(model);
|
|
108
169
|
}
|
|
@@ -124,26 +185,47 @@ function createVercelModel(llmConfig, context) {
|
|
|
124
185
|
return chatModel;
|
|
125
186
|
}
|
|
126
187
|
case "minimax": {
|
|
127
|
-
const minimaxBaseURL =
|
|
128
|
-
return (0, import_openai.createOpenAI)({
|
|
188
|
+
const minimaxBaseURL = effectiveBaseURL || "https://api.minimax.chat/v1";
|
|
189
|
+
return (0, import_openai.createOpenAI)({
|
|
190
|
+
apiKey: apiKey ?? "",
|
|
191
|
+
baseURL: minimaxBaseURL,
|
|
192
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
193
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
194
|
+
}).chat(model);
|
|
129
195
|
}
|
|
130
196
|
case "glm": {
|
|
131
|
-
const glmBaseURL =
|
|
132
|
-
return (0, import_openai.createOpenAI)({
|
|
197
|
+
const glmBaseURL = effectiveBaseURL || "https://open.bigmodel.cn/api/paas/v4";
|
|
198
|
+
return (0, import_openai.createOpenAI)({
|
|
199
|
+
apiKey: apiKey ?? "",
|
|
200
|
+
baseURL: glmBaseURL,
|
|
201
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
202
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
203
|
+
}).chat(model);
|
|
133
204
|
}
|
|
134
205
|
case "litellm": {
|
|
135
|
-
if (!
|
|
206
|
+
if (!effectiveBaseURL) {
|
|
136
207
|
throw import_errors.LLMError.baseUrlMissing("litellm");
|
|
137
208
|
}
|
|
138
|
-
return (0, import_openai.createOpenAI)({
|
|
209
|
+
return (0, import_openai.createOpenAI)({
|
|
210
|
+
apiKey: apiKey ?? "",
|
|
211
|
+
baseURL: effectiveBaseURL,
|
|
212
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
213
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
214
|
+
}).chat(model);
|
|
139
215
|
}
|
|
140
216
|
case "glama": {
|
|
141
|
-
const glamaBaseURL = "https://glama.ai/api/gateway/openai/v1";
|
|
142
|
-
return (0, import_openai.createOpenAI)({
|
|
217
|
+
const glamaBaseURL = effectiveBaseURL || "https://glama.ai/api/gateway/openai/v1";
|
|
218
|
+
return (0, import_openai.createOpenAI)({
|
|
219
|
+
apiKey: apiKey ?? "",
|
|
220
|
+
baseURL: glamaBaseURL,
|
|
221
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
222
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
223
|
+
}).chat(model);
|
|
143
224
|
}
|
|
144
225
|
case "dexto-nova": {
|
|
145
226
|
const dextoBaseURL = resolveDextoGatewayBaseURL(baseURL);
|
|
146
227
|
const headers = {
|
|
228
|
+
...runtimeHeaders ?? {},
|
|
147
229
|
[DEXTO_GATEWAY_HEADERS.CLIENT_SOURCE]: context?.clientSource ?? "cli"
|
|
148
230
|
};
|
|
149
231
|
if (context?.sessionId) {
|
|
@@ -207,10 +289,15 @@ function createVercelModel(llmConfig, context) {
|
|
|
207
289
|
return (0, import_amazon_bedrock.createAmazonBedrock)({ region })(modelId);
|
|
208
290
|
}
|
|
209
291
|
case "anthropic": {
|
|
210
|
-
const headers = (
|
|
292
|
+
const headers = mergeHeaders(
|
|
293
|
+
(0, import_llm.supportsAnthropicInterleavedThinking)(model) ? { [import_llm.ANTHROPIC_BETA_HEADER]: import_llm.ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0,
|
|
294
|
+
runtimeHeaders
|
|
295
|
+
);
|
|
211
296
|
return (0, import_anthropic.createAnthropic)({
|
|
212
297
|
apiKey: apiKey ?? "",
|
|
213
|
-
...
|
|
298
|
+
...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
|
|
299
|
+
...headers ? { headers } : {},
|
|
300
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
214
301
|
})(model);
|
|
215
302
|
}
|
|
216
303
|
case "google":
|
|
@@ -222,8 +309,13 @@ function createVercelModel(llmConfig, context) {
|
|
|
222
309
|
case "cohere":
|
|
223
310
|
return (0, import_cohere.createCohere)({ apiKey: apiKey ?? "" })(model);
|
|
224
311
|
case "ollama": {
|
|
225
|
-
const ollamaBaseURL =
|
|
226
|
-
return (0, import_openai.createOpenAI)({
|
|
312
|
+
const ollamaBaseURL = effectiveBaseURL || "http://localhost:11434/v1";
|
|
313
|
+
return (0, import_openai.createOpenAI)({
|
|
314
|
+
apiKey: apiKey ?? "ollama",
|
|
315
|
+
baseURL: ollamaBaseURL,
|
|
316
|
+
...runtimeHeaders ? { headers: runtimeHeaders } : {},
|
|
317
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
318
|
+
}).chat(model);
|
|
227
319
|
}
|
|
228
320
|
case "local": {
|
|
229
321
|
return (0, import_ai_sdk_adapter.createLocalLanguageModel)({
|
|
@@ -239,6 +331,8 @@ function createLLMService(config, toolManager, systemPromptManager, conversation
|
|
|
239
331
|
const providerContext = {
|
|
240
332
|
sessionId,
|
|
241
333
|
...options.cwd !== void 0 ? { cwd: options.cwd } : {},
|
|
334
|
+
authResolver: options.authResolver ?? null,
|
|
335
|
+
logger,
|
|
242
336
|
onCodexRateLimitStatus: (snapshot) => {
|
|
243
337
|
sessionEventBus.emit("llm:rate-limit-status", {
|
|
244
338
|
provider: config.provider,
|
|
@@ -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,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,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;
|
|
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,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,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;AAqHpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC/B,aAAa,CAsSf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB,EACpC,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,CAuClB"}
|
|
@@ -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) {
|
|
@@ -189,10 +271,15 @@ function createVercelModel(llmConfig, context) {
|
|
|
189
271
|
return createAmazonBedrock({ region })(modelId);
|
|
190
272
|
}
|
|
191
273
|
case "anthropic": {
|
|
192
|
-
const headers =
|
|
274
|
+
const headers = mergeHeaders(
|
|
275
|
+
supportsAnthropicInterleavedThinking(model) ? { [ANTHROPIC_BETA_HEADER]: ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0,
|
|
276
|
+
runtimeHeaders
|
|
277
|
+
);
|
|
193
278
|
return createAnthropic({
|
|
194
279
|
apiKey: apiKey ?? "",
|
|
195
|
-
...
|
|
280
|
+
...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
|
|
281
|
+
...headers ? { headers } : {},
|
|
282
|
+
...runtimeFetch ? { fetch: runtimeFetch } : {}
|
|
196
283
|
})(model);
|
|
197
284
|
}
|
|
198
285
|
case "google":
|
|
@@ -204,8 +291,13 @@ function createVercelModel(llmConfig, context) {
|
|
|
204
291
|
case "cohere":
|
|
205
292
|
return createCohere({ apiKey: apiKey ?? "" })(model);
|
|
206
293
|
case "ollama": {
|
|
207
|
-
const ollamaBaseURL =
|
|
208
|
-
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);
|
|
209
301
|
}
|
|
210
302
|
case "local": {
|
|
211
303
|
return createLocalLanguageModel({
|
|
@@ -221,6 +313,8 @@ function createLLMService(config, toolManager, systemPromptManager, conversation
|
|
|
221
313
|
const providerContext = {
|
|
222
314
|
sessionId,
|
|
223
315
|
...options.cwd !== void 0 ? { cwd: options.cwd } : {},
|
|
316
|
+
authResolver: options.authResolver ?? null,
|
|
317
|
+
logger,
|
|
224
318
|
onCodexRateLimitStatus: (snapshot) => {
|
|
225
319
|
sessionEventBus.emit("llm:rate-limit-status", {
|
|
226
320
|
provider: config.provider,
|
|
@@ -2,6 +2,8 @@ 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 { LlmAuthResolver } from '../auth/types.js';
|
|
6
|
+
import type { Logger } from '../../logger/v2/types.js';
|
|
5
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';
|
|
@@ -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,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,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,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"}
|
|
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"}
|
|
@@ -135,39 +135,37 @@ class ChatSession {
|
|
|
135
135
|
*/
|
|
136
136
|
setupTokenAccumulation() {
|
|
137
137
|
this.tokenAccumulatorListener = (payload) => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
-
const modelInfo = {
|
|
152
|
-
provider: payload.provider ?? llmConfig.provider,
|
|
153
|
-
model: payload.model ?? llmConfig.model
|
|
154
|
-
};
|
|
155
|
-
const pricingMetadata = (0, import_usage_metadata.getUsagePricingMetadata)({
|
|
156
|
-
provider: modelInfo.provider,
|
|
157
|
-
model: modelInfo.model,
|
|
158
|
-
tokenUsage
|
|
159
|
-
});
|
|
160
|
-
this.services.sessionManager.accumulateTokenUsage(
|
|
161
|
-
this.id,
|
|
162
|
-
tokenUsage,
|
|
163
|
-
payload.estimatedCost ?? pricingMetadata.estimatedCost,
|
|
164
|
-
modelInfo
|
|
165
|
-
).catch((err) => {
|
|
138
|
+
const tokenUsage = (0, import_usage_metadata.normalizeTokenUsageForAccounting)(payload.tokenUsage);
|
|
139
|
+
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
140
|
+
const isChatGPTLogin = llmConfig.provider === "openai-compatible" && (0, import_codex_base_url.parseCodexBaseURL)(llmConfig.baseURL)?.authMode === "chatgpt";
|
|
141
|
+
const hasMeaningfulUsage = (0, import_usage_metadata.hasMeaningfulTokenUsage)(tokenUsage);
|
|
142
|
+
if (isChatGPTLogin && !hasMeaningfulUsage) {
|
|
143
|
+
this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
|
|
166
144
|
this.logger.warn(
|
|
167
|
-
`Failed to
|
|
145
|
+
`Failed to mark ChatGPT Login usage as untracked: ${err instanceof Error ? err.message : String(err)}`
|
|
168
146
|
);
|
|
169
147
|
});
|
|
148
|
+
return;
|
|
170
149
|
}
|
|
150
|
+
const modelInfo = {
|
|
151
|
+
provider: payload.provider,
|
|
152
|
+
model: payload.model
|
|
153
|
+
};
|
|
154
|
+
const pricingMetadata = (0, import_usage_metadata.getUsagePricingMetadata)({
|
|
155
|
+
provider: modelInfo.provider,
|
|
156
|
+
model: modelInfo.model,
|
|
157
|
+
tokenUsage
|
|
158
|
+
});
|
|
159
|
+
this.services.sessionManager.accumulateTokenUsage(
|
|
160
|
+
this.id,
|
|
161
|
+
tokenUsage,
|
|
162
|
+
payload.estimatedCost ?? pricingMetadata.estimatedCost,
|
|
163
|
+
modelInfo
|
|
164
|
+
).catch((err) => {
|
|
165
|
+
this.logger.warn(
|
|
166
|
+
`Failed to accumulate token usage: ${err instanceof Error ? err.message : String(err)}`
|
|
167
|
+
);
|
|
168
|
+
});
|
|
171
169
|
};
|
|
172
170
|
this.eventBus.on("llm:response", this.tokenAccumulatorListener);
|
|
173
171
|
}
|
|
@@ -190,7 +188,8 @@ class ChatSession {
|
|
|
190
188
|
compactionStrategy: this.services.compactionStrategy,
|
|
191
189
|
...workspace?.path !== void 0 && { cwd: workspace.path },
|
|
192
190
|
steerQueue: this.steerQueue,
|
|
193
|
-
followUpQueue: this.followUpQueue
|
|
191
|
+
followUpQueue: this.followUpQueue,
|
|
192
|
+
authResolver: this.services.authResolver ?? null
|
|
194
193
|
};
|
|
195
194
|
return (0, import_factory.createLLMService)(
|
|
196
195
|
llmConfig,
|
|
@@ -225,8 +224,9 @@ class ChatSession {
|
|
|
225
224
|
content: [{ type: "text", text: "[Blocked by content policy: input redacted]" }]
|
|
226
225
|
};
|
|
227
226
|
const errorContent = `Error: ${errorMessage}`;
|
|
227
|
+
const assistantMessageId = (0, import_crypto.randomUUID)();
|
|
228
228
|
const assistantMessage = {
|
|
229
|
-
id:
|
|
229
|
+
id: assistantMessageId,
|
|
230
230
|
role: "assistant",
|
|
231
231
|
timestamp: timestamp + 1,
|
|
232
232
|
content: [{ type: "text", text: errorContent }]
|
|
@@ -234,11 +234,16 @@ class ChatSession {
|
|
|
234
234
|
await this.conversationStore.saveMessage({ sessionId: this.id, message: userMessage });
|
|
235
235
|
await this.conversationStore.saveMessage({ sessionId: this.id, message: assistantMessage });
|
|
236
236
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
237
|
-
this.eventBus.emit("
|
|
237
|
+
this.eventBus.emit("interaction:blocked", {
|
|
238
238
|
content: errorContent,
|
|
239
239
|
provider: llmConfig.provider,
|
|
240
240
|
model: llmConfig.model,
|
|
241
|
-
|
|
241
|
+
messageId: assistantMessageId
|
|
242
|
+
});
|
|
243
|
+
this.eventBus.emit("run:complete", {
|
|
244
|
+
finishReason: "stop",
|
|
245
|
+
stepCount: 0,
|
|
246
|
+
durationMs: 0
|
|
242
247
|
});
|
|
243
248
|
}
|
|
244
249
|
normalizeContent(content) {
|
|
@@ -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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"}
|