@lota-sdk/core 0.4.39 → 0.4.40
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/package.json +2 -2
- package/src/ai-gateway/ai-gateway.ts +3 -43
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lota-sdk/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.40",
|
|
4
4
|
"files": [
|
|
5
5
|
"src",
|
|
6
6
|
"infrastructure/schema"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@ai-sdk/provider": "^3.0.9",
|
|
33
33
|
"@chat-adapter/slack": "^4.26.0",
|
|
34
34
|
"@chat-adapter/state-ioredis": "^4.26.0",
|
|
35
|
-
"@lota-sdk/shared": "0.4.
|
|
35
|
+
"@lota-sdk/shared": "0.4.40",
|
|
36
36
|
"@mendable/firecrawl-js": "^4.20.0",
|
|
37
37
|
"@surrealdb/node": "^3.0.3",
|
|
38
38
|
"ai": "^6.0.170",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { devToolsMiddleware } from '@ai-sdk/devtools'
|
|
2
2
|
import { createOpenAI } from '@ai-sdk/openai'
|
|
3
3
|
import type { JSONSchema7 } from '@ai-sdk/provider'
|
|
4
|
-
import {
|
|
4
|
+
import { wrapLanguageModel } from 'ai'
|
|
5
5
|
import type { LanguageModelMiddleware } from 'ai'
|
|
6
6
|
import { Cause, Clock, Context, Duration, Effect, Fiber, Layer, Semaphore } from 'effect'
|
|
7
7
|
|
|
@@ -16,7 +16,6 @@ type AiGatewayChatResponse = { body?: unknown }
|
|
|
16
16
|
type AiGatewayTransformParamsOptions = Parameters<NonNullable<LanguageModelMiddleware['transformParams']>>[0]
|
|
17
17
|
type WrapStreamOptions = Parameters<NonNullable<LanguageModelMiddleware['wrapStream']>>[0]
|
|
18
18
|
type AiGatewayLanguageModel = Parameters<typeof wrapLanguageModel>[0]['model']
|
|
19
|
-
type AiGatewayEmbeddingModel = Parameters<typeof wrapEmbeddingModel>[0]['model']
|
|
20
19
|
type AiGatewayCallOptions = WrapStreamOptions['params']
|
|
21
20
|
type AiGatewayFunctionTool = Extract<NonNullable<AiGatewayCallOptions['tools']>[number], { type: 'function' }>
|
|
22
21
|
type AiGatewayGenerateResult = Awaited<ReturnType<WrapStreamOptions['doGenerate']>>
|
|
@@ -45,8 +44,6 @@ const AI_GATEWAY_MAX_RETRIES = 4
|
|
|
45
44
|
const AI_GATEWAY_MAX_RETRY_DELAY_MS = 15_000
|
|
46
45
|
const OPENAI_RESPONSES_PROVIDER_ID = 'openai.responses'
|
|
47
46
|
const OPENAI_CHAT_PROVIDER_ID = 'openai.chat'
|
|
48
|
-
const OPENAI_EMBEDDING_PROVIDER_ID = 'openai.embedding'
|
|
49
|
-
const OPENAI_EMBEDDING_MAX_PER_CALL = 2_048
|
|
50
47
|
const RETRYABLE_NETWORK_ERROR_CODES = new Set([
|
|
51
48
|
'ECONNABORTED',
|
|
52
49
|
'ECONNREFUSED',
|
|
@@ -1244,23 +1241,6 @@ function createAiGatewayLanguageModelPlaceholder(modelId: string, providerId: st
|
|
|
1244
1241
|
}
|
|
1245
1242
|
}
|
|
1246
1243
|
|
|
1247
|
-
function createAiGatewayEmbeddingModelPlaceholder(modelId: string): AiGatewayEmbeddingModel {
|
|
1248
|
-
return {
|
|
1249
|
-
specificationVersion: 'v3',
|
|
1250
|
-
provider: OPENAI_EMBEDDING_PROVIDER_ID,
|
|
1251
|
-
modelId,
|
|
1252
|
-
maxEmbeddingsPerCall: OPENAI_EMBEDDING_MAX_PER_CALL,
|
|
1253
|
-
supportsParallelCalls: true,
|
|
1254
|
-
doEmbed: () =>
|
|
1255
|
-
Promise.reject(
|
|
1256
|
-
new Error(
|
|
1257
|
-
`[ai-gateway] AiGateway embedding model ${modelId}.doEmbed was invoked without the gateway middleware; ` +
|
|
1258
|
-
'this call path should be fully handled by aiGatewayEmbeddingModel middleware.',
|
|
1259
|
-
),
|
|
1260
|
-
),
|
|
1261
|
-
}
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
1244
|
export function aiGatewayModel(modelId: string, deps?: AiGatewayDeps) {
|
|
1265
1245
|
if (isOpenRouterModel(modelId)) {
|
|
1266
1246
|
return aiGatewayChatModel(modelId, deps)
|
|
@@ -1287,28 +1267,8 @@ export function aiGatewayChatModel(modelId: string, deps?: AiGatewayDeps) {
|
|
|
1287
1267
|
)
|
|
1288
1268
|
}
|
|
1289
1269
|
|
|
1290
|
-
export function aiGatewayEmbeddingModel(modelId: string,
|
|
1291
|
-
return
|
|
1292
|
-
model: createAiGatewayEmbeddingModelPlaceholder(modelId),
|
|
1293
|
-
middleware: {
|
|
1294
|
-
specificationVersion: 'v3',
|
|
1295
|
-
wrapEmbed: ({ params }) => {
|
|
1296
|
-
const resolvedDeps = resolveAiGatewayDeps(deps)
|
|
1297
|
-
const embeddingModel = resolvedDeps.gateway.provider.embeddingModel(modelId)
|
|
1298
|
-
return resolvedDeps.runPromise(
|
|
1299
|
-
withAiGatewayConcurrency(
|
|
1300
|
-
withAiGatewayResilience(
|
|
1301
|
-
'ai-gateway.embed',
|
|
1302
|
-
Effect.tryPromise({
|
|
1303
|
-
try: () => embeddingModel.doEmbed(params),
|
|
1304
|
-
catch: (cause) => classifyAiGatewayError('ai-gateway.embed', cause),
|
|
1305
|
-
}),
|
|
1306
|
-
).pipe(Effect.withSpan('AiGateway.embed'), Effect.annotateSpans({ modelId })),
|
|
1307
|
-
).pipe(Effect.provideService(AiGatewayTag, resolvedDeps.gateway)),
|
|
1308
|
-
)
|
|
1309
|
-
},
|
|
1310
|
-
},
|
|
1311
|
-
})
|
|
1270
|
+
export function aiGatewayEmbeddingModel(modelId: string, _deps?: AiGatewayDeps) {
|
|
1271
|
+
return openRouterEmbeddingModel(modelId)
|
|
1312
1272
|
}
|
|
1313
1273
|
|
|
1314
1274
|
/**
|