@clinebot/core 0.0.35 → 0.0.36
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/README.md +1 -2
- package/dist/ClineCore.d.ts +53 -39
- package/dist/ClineCore.d.ts.map +1 -1
- package/dist/account/index.d.ts +1 -1
- package/dist/account/index.d.ts.map +1 -1
- package/dist/account/rpc.d.ts +6 -6
- package/dist/account/rpc.d.ts.map +1 -1
- package/dist/cron/index.d.ts +6 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/resource-limiter.d.ts +9 -0
- package/dist/cron/resource-limiter.d.ts.map +1 -0
- package/dist/cron/schedule-command-service.d.ts +10 -0
- package/dist/cron/schedule-command-service.d.ts.map +1 -0
- package/dist/cron/schedule-service.d.ts +100 -0
- package/dist/cron/schedule-service.d.ts.map +1 -0
- package/dist/cron/scheduler.d.ts +66 -0
- package/dist/cron/scheduler.d.ts.map +1 -0
- package/dist/cron/sqlite-schedule-store.d.ts +52 -0
- package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
- package/dist/extensions/config/agent-config-loader.d.ts +4 -3
- package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
- package/dist/extensions/config/runtime-commands.d.ts +1 -0
- package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
- package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
- package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
- package/dist/extensions/context/agentic-compaction.d.ts +2 -2
- package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
- package/dist/extensions/context/compaction-shared.d.ts +5 -4
- package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
- package/dist/extensions/context/compaction.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-config-loader.d.ts +9 -2
- package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-loader.d.ts +5 -3
- package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-sandbox.d.ts +15 -2
- package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
- package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
- package/dist/extensions/plugin-sandbox-bootstrap.js +211 -211
- package/dist/extensions/tools/definitions.d.ts +1 -1
- package/dist/extensions/tools/definitions.d.ts.map +1 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
- package/dist/extensions/tools/executors/search.d.ts +1 -1
- package/dist/extensions/tools/executors/search.d.ts.map +1 -1
- package/dist/extensions/tools/index.d.ts +2 -0
- package/dist/extensions/tools/index.d.ts.map +1 -1
- package/dist/extensions/tools/presets.d.ts +26 -43
- package/dist/extensions/tools/presets.d.ts.map +1 -1
- package/dist/extensions/tools/runtime.d.ts +25 -0
- package/dist/extensions/tools/runtime.d.ts.map +1 -0
- package/dist/extensions/tools/schemas.d.ts.map +1 -1
- package/dist/extensions/tools/team/team-tools.d.ts +1 -0
- package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
- package/dist/hooks/hook-file-hooks.d.ts +4 -1
- package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/subprocess.d.ts +8 -1
- package/dist/hooks/subprocess.d.ts.map +1 -1
- package/dist/hub/browser-websocket.d.ts +18 -0
- package/dist/hub/browser-websocket.d.ts.map +1 -0
- package/dist/hub/client.d.ts +45 -0
- package/dist/hub/client.d.ts.map +1 -0
- package/dist/hub/connect.d.ts +15 -0
- package/dist/hub/connect.d.ts.map +1 -0
- package/dist/hub/daemon-entry.d.ts +2 -0
- package/dist/hub/daemon-entry.d.ts.map +1 -0
- package/dist/hub/daemon-entry.js +1045 -0
- package/dist/hub/daemon.d.ts +5 -0
- package/dist/hub/daemon.d.ts.map +1 -0
- package/dist/hub/defaults.d.ts +13 -0
- package/dist/hub/defaults.d.ts.map +1 -0
- package/dist/hub/discovery.d.ts +29 -0
- package/dist/hub/discovery.d.ts.map +1 -0
- package/dist/hub/index.d.ts +15 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +1044 -0
- package/dist/hub/native-transport.d.ts +17 -0
- package/dist/hub/native-transport.d.ts.map +1 -0
- package/dist/hub/runtime-handlers.d.ts +11 -0
- package/dist/hub/runtime-handlers.d.ts.map +1 -0
- package/dist/hub/server.d.ts +86 -0
- package/dist/hub/server.d.ts.map +1 -0
- package/dist/hub/session-client.d.ts +87 -0
- package/dist/hub/session-client.d.ts.map +1 -0
- package/dist/hub/start-shared-server.d.ts +19 -0
- package/dist/hub/start-shared-server.d.ts.map +1 -0
- package/dist/hub/transport.d.ts +8 -0
- package/dist/hub/transport.d.ts.map +1 -0
- package/dist/hub/ui-client.d.ts +44 -0
- package/dist/hub/ui-client.d.ts.map +1 -0
- package/dist/hub/workspace.d.ts +4 -0
- package/dist/hub/workspace.d.ts.map +1 -0
- package/dist/index.d.ts +26 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +498 -476
- package/dist/llms/configured-provider-registry.d.ts +28 -0
- package/dist/llms/configured-provider-registry.d.ts.map +1 -0
- package/dist/llms/provider-defaults.d.ts +27 -0
- package/dist/llms/provider-defaults.d.ts.map +1 -0
- package/dist/llms/provider-settings.d.ts +202 -0
- package/dist/llms/provider-settings.d.ts.map +1 -0
- package/dist/llms/runtime-config.d.ts +4 -0
- package/dist/llms/runtime-config.d.ts.map +1 -0
- package/dist/llms/runtime-registry.d.ts +20 -0
- package/dist/llms/runtime-registry.d.ts.map +1 -0
- package/dist/llms/runtime-types.d.ts +85 -0
- package/dist/llms/runtime-types.d.ts.map +1 -0
- package/dist/runtime/host.d.ts +1 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/rules.d.ts +1 -0
- package/dist/runtime/rules.d.ts.map +1 -1
- package/dist/runtime/runtime-builder.d.ts.map +1 -1
- package/dist/runtime/runtime-host.d.ts +22 -24
- package/dist/runtime/runtime-host.d.ts.map +1 -1
- package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
- package/dist/runtime/session-runtime.d.ts +1 -19
- package/dist/runtime/session-runtime.d.ts.map +1 -1
- package/dist/services/global-settings.d.ts +12 -0
- package/dist/services/global-settings.d.ts.map +1 -0
- package/dist/services/local-runtime-bootstrap.d.ts +9 -3
- package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
- package/dist/services/plugin-tools.d.ts +16 -0
- package/dist/services/plugin-tools.d.ts.map +1 -0
- package/dist/services/providers/local-provider-registry.d.ts +4 -4
- package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
- package/dist/services/providers/local-provider-service.d.ts +13 -13
- package/dist/services/providers/local-provider-service.d.ts.map +1 -1
- package/dist/services/session-data.d.ts +1 -1
- package/dist/services/session-data.d.ts.map +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
- package/dist/services/telemetry/index.js +28 -15
- package/dist/services/workspace-manifest.d.ts +11 -0
- package/dist/services/workspace-manifest.d.ts.map +1 -1
- package/dist/session/persistence-service.d.ts +11 -23
- package/dist/session/persistence-service.d.ts.map +1 -1
- package/dist/session/session-manifest-store.d.ts +22 -0
- package/dist/session/session-manifest-store.d.ts.map +1 -0
- package/dist/session/session-row.d.ts +93 -0
- package/dist/session/session-row.d.ts.map +1 -0
- package/dist/session/session-service.d.ts +2 -102
- package/dist/session/session-service.d.ts.map +1 -1
- package/dist/session/subagent-session-manager.d.ts +36 -0
- package/dist/session/subagent-session-manager.d.ts.map +1 -0
- package/dist/session/team-persistence-store.d.ts +24 -0
- package/dist/session/team-persistence-store.d.ts.map +1 -0
- package/dist/transports/hub.d.ts +47 -0
- package/dist/transports/hub.d.ts.map +1 -0
- package/dist/transports/local.d.ts +10 -6
- package/dist/transports/local.d.ts.map +1 -1
- package/dist/transports/remote.d.ts +10 -0
- package/dist/transports/remote.d.ts.map +1 -0
- package/dist/transports/runtime-host-support.d.ts +3 -2
- package/dist/transports/runtime-host-support.d.ts.map +1 -1
- package/dist/types/chat-schema.d.ts +10 -12
- package/dist/types/chat-schema.d.ts.map +1 -1
- package/dist/types/config.d.ts +8 -7
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/provider-settings.d.ts +4 -5
- package/dist/types/provider-settings.d.ts.map +1 -1
- package/dist/types/session.d.ts +2 -1
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -6
- package/src/ClineCore.ts +68 -40
- package/src/account/index.ts +3 -3
- package/src/account/rpc.ts +12 -12
- package/src/cron/index.ts +5 -0
- package/src/cron/resource-limiter.ts +46 -0
- package/src/cron/schedule-command-service.ts +193 -0
- package/src/cron/schedule-service.ts +703 -0
- package/src/cron/scheduler.ts +637 -0
- package/src/cron/sqlite-schedule-store.ts +708 -0
- package/src/extensions/config/agent-config-loader.ts +17 -7
- package/src/extensions/config/runtime-commands.ts +6 -0
- package/src/extensions/config/user-instruction-config-loader.ts +1 -0
- package/src/extensions/context/agentic-compaction.ts +3 -3
- package/src/extensions/context/basic-compaction.ts +2 -2
- package/src/extensions/context/compaction-shared.ts +5 -4
- package/src/extensions/context/compaction.ts +3 -3
- package/src/extensions/plugin/plugin-config-loader.ts +17 -2
- package/src/extensions/plugin/plugin-loader.ts +48 -4
- package/src/extensions/plugin/plugin-module-import.ts +0 -2
- package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +93 -39
- package/src/extensions/plugin/plugin-sandbox.ts +47 -27
- package/src/extensions/plugin/plugin-targeting.ts +32 -0
- package/src/extensions/tools/definitions.ts +30 -49
- package/src/extensions/tools/executors/apply-patch.ts +69 -80
- package/src/extensions/tools/executors/search.ts +195 -3
- package/src/extensions/tools/index.ts +10 -0
- package/src/extensions/tools/presets.ts +31 -46
- package/src/extensions/tools/runtime.ts +261 -0
- package/src/extensions/tools/schemas.ts +4 -2
- package/src/extensions/tools/team/team-tools.ts +21 -0
- package/src/hooks/hook-file-hooks.ts +8 -2
- package/src/hooks/index.ts +0 -7
- package/src/hooks/subprocess-runner.ts +1 -1
- package/src/hooks/subprocess.ts +9 -0
- package/src/hub/browser-websocket.ts +137 -0
- package/src/hub/client.ts +574 -0
- package/src/hub/connect.ts +156 -0
- package/src/hub/daemon-entry.ts +87 -0
- package/src/hub/daemon.ts +181 -0
- package/src/hub/defaults.ts +43 -0
- package/src/hub/discovery.ts +247 -0
- package/src/hub/index.ts +14 -0
- package/src/hub/native-transport.ts +31 -0
- package/src/hub/runtime-handlers.ts +140 -0
- package/src/hub/server.ts +1888 -0
- package/src/hub/session-client.ts +460 -0
- package/src/hub/start-shared-server.ts +58 -0
- package/src/hub/transport.ts +14 -0
- package/src/hub/ui-client.ts +122 -0
- package/src/hub/workspace.ts +19 -0
- package/src/index.ts +124 -68
- package/src/llms/configured-provider-registry.ts +193 -0
- package/src/llms/provider-defaults.ts +637 -0
- package/src/llms/provider-settings.ts +263 -0
- package/src/llms/runtime-config.ts +43 -0
- package/src/llms/runtime-registry.ts +171 -0
- package/src/llms/runtime-types.ts +121 -0
- package/src/runtime/host.ts +107 -269
- package/src/runtime/index.ts +1 -0
- package/src/runtime/rules.ts +12 -0
- package/src/runtime/runtime-builder.ts +24 -8
- package/src/runtime/runtime-host.ts +89 -61
- package/src/runtime/runtime-oauth-token-manager.ts +11 -15
- package/src/runtime/session-runtime.ts +0 -24
- package/src/services/global-settings.ts +122 -0
- package/src/services/local-runtime-bootstrap.ts +51 -13
- package/src/services/plugin-tools.ts +85 -0
- package/src/services/providers/local-provider-registry.ts +6 -6
- package/src/services/providers/local-provider-service.ts +42 -37
- package/src/services/session-data.ts +15 -9
- package/src/services/storage/provider-settings-legacy-migration.ts +6 -4
- package/src/services/storage/provider-settings-manager.ts +1 -1
- package/src/services/workspace-manifest.ts +18 -0
- package/src/session/file-session-service.ts +1 -1
- package/src/session/index.ts +6 -27
- package/src/session/persistence-service.ts +119 -504
- package/src/session/session-manifest-store.ts +158 -0
- package/src/session/session-row.ts +199 -0
- package/src/session/session-service.ts +17 -376
- package/src/session/session-team-coordination.ts +1 -1
- package/src/session/subagent-session-manager.ts +397 -0
- package/src/session/team-persistence-store.ts +176 -0
- package/src/transports/hub.ts +656 -0
- package/src/transports/local.ts +135 -40
- package/src/transports/remote.ts +26 -0
- package/src/transports/runtime-host-support.ts +63 -9
- package/src/types/chat-schema.ts +4 -5
- package/src/types/config.ts +8 -7
- package/src/types/provider-settings.ts +11 -7
- package/src/types/session.ts +2 -4
- package/src/types.ts +27 -1
- package/dist/hooks/persistent.d.ts +0 -64
- package/dist/hooks/persistent.d.ts.map +0 -1
- package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
- package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
- package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
- package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
- package/dist/session/rpc-session-service.d.ts +0 -16
- package/dist/session/rpc-session-service.d.ts.map +0 -1
- package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
- package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
- package/dist/transports/rpc.d.ts +0 -51
- package/dist/transports/rpc.d.ts.map +0 -1
- package/src/ClineCore.test.ts +0 -226
- package/src/account/cline-account-service.test.ts +0 -185
- package/src/account/featurebase-token.test.ts +0 -175
- package/src/account/rpc.test.ts +0 -63
- package/src/auth/bounded-ttl-cache.test.ts +0 -38
- package/src/auth/client.test.ts +0 -69
- package/src/auth/cline.test.ts +0 -267
- package/src/auth/codex.test.ts +0 -170
- package/src/auth/oca.test.ts +0 -340
- package/src/auth/server.test.ts +0 -287
- package/src/auth/utils.test.ts +0 -128
- package/src/extensions/config/agent-config-loader.test.ts +0 -236
- package/src/extensions/config/hooks-config-loader.test.ts +0 -20
- package/src/extensions/config/runtime-commands.test.ts +0 -115
- package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
- package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
- package/src/extensions/context/compaction.test.ts +0 -483
- package/src/extensions/mcp/config-loader.test.ts +0 -238
- package/src/extensions/mcp/manager.test.ts +0 -105
- package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
- package/src/extensions/plugin/plugin-loader.test.ts +0 -292
- package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
- package/src/extensions/tools/definitions.test.ts +0 -780
- package/src/extensions/tools/executors/bash.test.ts +0 -87
- package/src/extensions/tools/executors/editor.test.ts +0 -35
- package/src/extensions/tools/executors/file-read.test.ts +0 -125
- package/src/extensions/tools/model-tool-routing.test.ts +0 -86
- package/src/extensions/tools/presets.test.ts +0 -70
- package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
- package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
- package/src/extensions/tools/team/team-tools.test.ts +0 -918
- package/src/hooks/checkpoint-hooks.test.ts +0 -168
- package/src/hooks/hook-file-hooks.test.ts +0 -311
- package/src/hooks/persistent.ts +0 -661
- package/src/runtime/history.test.ts +0 -114
- package/src/runtime/host.test.ts +0 -230
- package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
- package/src/runtime/rpc-runtime-ensure.ts +0 -659
- package/src/runtime/rpc-spawn-lease.test.ts +0 -81
- package/src/runtime/rpc-spawn-lease.ts +0 -156
- package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
- package/src/runtime/runtime-builder.test.ts +0 -615
- package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
- package/src/runtime/runtime-parity.test.ts +0 -143
- package/src/services/providers/local-provider-service.test.ts +0 -1062
- package/src/services/session-data.test.ts +0 -160
- package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
- package/src/services/storage/provider-settings-manager.test.ts +0 -191
- package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
- package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
- package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
- package/src/services/telemetry/TelemetryService.test.ts +0 -134
- package/src/services/telemetry/distinct-id.test.ts +0 -57
- package/src/services/workspace/file-indexer.d.ts +0 -11
- package/src/services/workspace/file-indexer.test.ts +0 -156
- package/src/services/workspace/mention-enricher.test.ts +0 -106
- package/src/session/persistence-service.test.ts +0 -300
- package/src/session/rpc-session-service.ts +0 -114
- package/src/session/session-service.team-persistence.test.ts +0 -48
- package/src/session/sqlite-rpc-session-backend.ts +0 -301
- package/src/transports/local.e2e.test.ts +0 -380
- package/src/transports/local.test.ts +0 -2559
- package/src/transports/rpc.test.ts +0 -82
- package/src/transports/rpc.ts +0 -665
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import * as Llms from "@clinebot/llms";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import {
|
|
4
|
+
DEFAULT_EXTERNAL_OCA_BASE_URL,
|
|
5
|
+
DEFAULT_INTERNAL_OCA_BASE_URL,
|
|
6
|
+
} from "../auth/oca";
|
|
7
|
+
import {
|
|
8
|
+
OPENAI_COMPATIBLE_PROVIDERS,
|
|
9
|
+
type ProviderDefaults,
|
|
10
|
+
} from "./provider-defaults";
|
|
11
|
+
|
|
12
|
+
export type ModelInfo = Llms.ModelInfo;
|
|
13
|
+
export type ProviderClient = Llms.ProviderClient;
|
|
14
|
+
export type ProviderProtocol = Llms.ProviderProtocol;
|
|
15
|
+
export type ProviderId = Llms.ProviderId;
|
|
16
|
+
export type ProviderCapability = Llms.ProviderCapability;
|
|
17
|
+
export type ProviderConfig = Llms.ProviderConfig;
|
|
18
|
+
export type BuiltInProviderId = Llms.BuiltInProviderId;
|
|
19
|
+
|
|
20
|
+
export const BUILT_IN_PROVIDER = Llms.BUILT_IN_PROVIDER;
|
|
21
|
+
export const BUILT_IN_PROVIDER_IDS = Llms.BUILT_IN_PROVIDER_IDS;
|
|
22
|
+
export const isBuiltInProviderId = Llms.isBuiltInProviderId;
|
|
23
|
+
export const normalizeProviderId = Llms.normalizeProviderId;
|
|
24
|
+
|
|
25
|
+
export type ProviderDefaultsConfig = ProviderDefaults;
|
|
26
|
+
|
|
27
|
+
export const ProviderIdSchema = z
|
|
28
|
+
.string()
|
|
29
|
+
.min(1)
|
|
30
|
+
.regex(/^[a-z0-9][a-z0-9-]*$/i);
|
|
31
|
+
|
|
32
|
+
export const AuthSettingsSchema = z.object({
|
|
33
|
+
apiKey: z.string().optional(),
|
|
34
|
+
accessToken: z.string().optional(),
|
|
35
|
+
refreshToken: z.string().optional(),
|
|
36
|
+
expiresAt: z.number().int().positive().optional(),
|
|
37
|
+
accountId: z.string().optional(),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export type AuthSettings = z.infer<typeof AuthSettingsSchema>;
|
|
41
|
+
|
|
42
|
+
const ReasoningLevelSchema = z.enum(["none", "low", "medium", "high", "xhigh"]);
|
|
43
|
+
|
|
44
|
+
export const ReasoningSettingsSchema = z.object({
|
|
45
|
+
enabled: z.boolean().optional(),
|
|
46
|
+
effort: ReasoningLevelSchema.optional(),
|
|
47
|
+
budgetTokens: z.number().int().positive().optional(),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
export type ReasoningSettings = z.infer<typeof ReasoningSettingsSchema>;
|
|
51
|
+
|
|
52
|
+
export const AwsSettingsSchema = z.object({
|
|
53
|
+
accessKey: z.string().optional(),
|
|
54
|
+
secretKey: z.string().optional(),
|
|
55
|
+
sessionToken: z.string().optional(),
|
|
56
|
+
region: z.string().optional(),
|
|
57
|
+
profile: z.string().optional(),
|
|
58
|
+
authentication: z.enum(["iam", "api-key", "profile"]).optional(),
|
|
59
|
+
usePromptCache: z.boolean().optional(),
|
|
60
|
+
useCrossRegionInference: z.boolean().optional(),
|
|
61
|
+
useGlobalInference: z.boolean().optional(),
|
|
62
|
+
endpoint: z.string().url().optional(),
|
|
63
|
+
customModelBaseId: z.string().optional(),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export type AwsSettings = z.infer<typeof AwsSettingsSchema>;
|
|
67
|
+
|
|
68
|
+
export const GcpSettingsSchema = z.object({
|
|
69
|
+
projectId: z.string().optional(),
|
|
70
|
+
region: z.string().optional(),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export type GcpSettings = z.infer<typeof GcpSettingsSchema>;
|
|
74
|
+
|
|
75
|
+
export const AzureSettingsSchema = z.object({
|
|
76
|
+
apiVersion: z.string().optional(),
|
|
77
|
+
useIdentity: z.boolean().optional(),
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
export type AzureSettings = z.infer<typeof AzureSettingsSchema>;
|
|
81
|
+
|
|
82
|
+
export const SapSettingsSchema = z.object({
|
|
83
|
+
clientId: z.string().optional(),
|
|
84
|
+
clientSecret: z.string().optional(),
|
|
85
|
+
tokenUrl: z.string().url().optional(),
|
|
86
|
+
resourceGroup: z.string().optional(),
|
|
87
|
+
deploymentId: z.string().optional(),
|
|
88
|
+
useOrchestrationMode: z.boolean().optional(),
|
|
89
|
+
api: z.enum(["orchestration", "foundation-models"]).optional(),
|
|
90
|
+
defaultSettings: z.record(z.string(), z.unknown()).optional(),
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
export type SapSettings = z.infer<typeof SapSettingsSchema>;
|
|
94
|
+
|
|
95
|
+
export const OcaSettingsSchema = z.object({
|
|
96
|
+
mode: z.enum(["internal", "external"]).optional(),
|
|
97
|
+
usePromptCache: z.boolean().optional(),
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
export type OcaSettings = z.infer<typeof OcaSettingsSchema>;
|
|
101
|
+
|
|
102
|
+
export const ModelCatalogSettingsSchema = z.object({
|
|
103
|
+
loadLatestOnInit: z.boolean().optional(),
|
|
104
|
+
loadPrivateOnAuth: z.boolean().optional(),
|
|
105
|
+
url: z.string().url().optional(),
|
|
106
|
+
cacheTtlMs: z.number().int().positive().optional(),
|
|
107
|
+
failOnError: z.boolean().optional(),
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
export type ModelCatalogSettings = z.infer<typeof ModelCatalogSettingsSchema>;
|
|
111
|
+
export type ModelCatalogConfig = ModelCatalogSettings;
|
|
112
|
+
|
|
113
|
+
export const ProviderSettingsSchema = z.object({
|
|
114
|
+
provider: ProviderIdSchema,
|
|
115
|
+
apiKey: z.string().optional(),
|
|
116
|
+
auth: AuthSettingsSchema.optional(),
|
|
117
|
+
model: z.string().optional(),
|
|
118
|
+
maxTokens: z.number().int().positive().optional(),
|
|
119
|
+
contextWindow: z.number().int().positive().optional(),
|
|
120
|
+
baseUrl: z.string().url().optional(),
|
|
121
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
122
|
+
timeout: z.number().int().positive().optional(),
|
|
123
|
+
reasoning: ReasoningSettingsSchema.optional(),
|
|
124
|
+
aws: AwsSettingsSchema.optional(),
|
|
125
|
+
gcp: GcpSettingsSchema.optional(),
|
|
126
|
+
azure: AzureSettingsSchema.optional(),
|
|
127
|
+
sap: SapSettingsSchema.optional(),
|
|
128
|
+
oca: OcaSettingsSchema.optional(),
|
|
129
|
+
region: z.string().optional(),
|
|
130
|
+
apiLine: z.enum(["china", "international"]).optional(),
|
|
131
|
+
capabilities: z
|
|
132
|
+
.array(
|
|
133
|
+
z.enum([
|
|
134
|
+
"reasoning",
|
|
135
|
+
"prompt-cache",
|
|
136
|
+
"streaming",
|
|
137
|
+
"tools",
|
|
138
|
+
"vision",
|
|
139
|
+
"computer-use",
|
|
140
|
+
"oauth",
|
|
141
|
+
]),
|
|
142
|
+
)
|
|
143
|
+
.optional(),
|
|
144
|
+
modelCatalog: ModelCatalogSettingsSchema.optional(),
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
export type ProviderSettings = z.infer<typeof ProviderSettingsSchema>;
|
|
148
|
+
|
|
149
|
+
export function parseSettings(input: unknown): ProviderSettings {
|
|
150
|
+
return ProviderSettingsSchema.parse(input);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export function safeParseSettings(
|
|
154
|
+
input: unknown,
|
|
155
|
+
): ReturnType<typeof ProviderSettingsSchema.safeParse> {
|
|
156
|
+
return ProviderSettingsSchema.safeParse(input);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function toProviderConfig(settings: ProviderSettings): ProviderConfig {
|
|
160
|
+
const providerId = settings.provider as ProviderId;
|
|
161
|
+
const normalizedProviderId = normalizeProviderId(providerId);
|
|
162
|
+
const unifiedReasoningLevel = settings.reasoning?.effort || "none";
|
|
163
|
+
const reasoningEffort =
|
|
164
|
+
unifiedReasoningLevel === "none" ? undefined : unifiedReasoningLevel;
|
|
165
|
+
|
|
166
|
+
const providerDefaults = OPENAI_COMPATIBLE_PROVIDERS[normalizedProviderId];
|
|
167
|
+
const generatedKnownModels = Object.assign(
|
|
168
|
+
{},
|
|
169
|
+
...Llms.resolveProviderModelCatalogKeys(normalizedProviderId).map(
|
|
170
|
+
(catalogKey) => Llms.getGeneratedModelsForProvider(catalogKey),
|
|
171
|
+
),
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
const apiKey =
|
|
175
|
+
settings.auth?.accessToken ?? settings.apiKey ?? settings.auth?.apiKey;
|
|
176
|
+
const resolvedBaseUrl =
|
|
177
|
+
settings.baseUrl ??
|
|
178
|
+
(normalizedProviderId === "oca"
|
|
179
|
+
? settings.oca?.mode === "internal"
|
|
180
|
+
? DEFAULT_INTERNAL_OCA_BASE_URL
|
|
181
|
+
: DEFAULT_EXTERNAL_OCA_BASE_URL
|
|
182
|
+
: providerDefaults?.baseUrl);
|
|
183
|
+
|
|
184
|
+
const config: ProviderConfig = {
|
|
185
|
+
providerId,
|
|
186
|
+
modelId: settings.model ?? providerDefaults?.modelId ?? "default",
|
|
187
|
+
knownModels:
|
|
188
|
+
providerDefaults?.knownModels ??
|
|
189
|
+
(Object.keys(generatedKnownModels).length > 0
|
|
190
|
+
? generatedKnownModels
|
|
191
|
+
: undefined),
|
|
192
|
+
apiKey,
|
|
193
|
+
accessToken: settings.auth?.accessToken,
|
|
194
|
+
refreshToken: settings.auth?.refreshToken,
|
|
195
|
+
accountId: settings.auth?.accountId,
|
|
196
|
+
baseUrl: resolvedBaseUrl,
|
|
197
|
+
headers: settings.headers,
|
|
198
|
+
timeoutMs: settings.timeout,
|
|
199
|
+
maxOutputTokens: settings.maxTokens,
|
|
200
|
+
maxContextTokens: settings.contextWindow,
|
|
201
|
+
thinking: settings.reasoning?.enabled,
|
|
202
|
+
reasoningEffort,
|
|
203
|
+
thinkingBudgetTokens: settings.reasoning?.budgetTokens,
|
|
204
|
+
region: settings.region ?? settings.aws?.region ?? settings.gcp?.region,
|
|
205
|
+
apiLine: settings.apiLine,
|
|
206
|
+
useCrossRegionInference: settings.aws?.useCrossRegionInference,
|
|
207
|
+
useGlobalInference: settings.aws?.useGlobalInference,
|
|
208
|
+
aws: settings.aws
|
|
209
|
+
? {
|
|
210
|
+
accessKey: settings.aws.accessKey,
|
|
211
|
+
secretKey: settings.aws.secretKey,
|
|
212
|
+
sessionToken: settings.aws.sessionToken,
|
|
213
|
+
authentication: settings.aws.authentication,
|
|
214
|
+
profile: settings.aws.profile,
|
|
215
|
+
usePromptCache: settings.aws.usePromptCache,
|
|
216
|
+
endpoint: settings.aws.endpoint,
|
|
217
|
+
customModelBaseId: settings.aws.customModelBaseId,
|
|
218
|
+
}
|
|
219
|
+
: undefined,
|
|
220
|
+
gcp: settings.gcp
|
|
221
|
+
? {
|
|
222
|
+
projectId: settings.gcp.projectId,
|
|
223
|
+
region: settings.gcp.region,
|
|
224
|
+
}
|
|
225
|
+
: undefined,
|
|
226
|
+
azure: settings.azure,
|
|
227
|
+
sap: settings.sap,
|
|
228
|
+
oca: settings.oca,
|
|
229
|
+
capabilities: (settings.capabilities ?? providerDefaults?.capabilities) as
|
|
230
|
+
| ProviderCapability[]
|
|
231
|
+
| undefined,
|
|
232
|
+
modelCatalog: settings.modelCatalog
|
|
233
|
+
? {
|
|
234
|
+
loadLatestOnInit: settings.modelCatalog.loadLatestOnInit,
|
|
235
|
+
loadPrivateOnAuth: settings.modelCatalog.loadPrivateOnAuth,
|
|
236
|
+
url: settings.modelCatalog.url,
|
|
237
|
+
cacheTtlMs: settings.modelCatalog.cacheTtlMs,
|
|
238
|
+
failOnError: settings.modelCatalog.failOnError,
|
|
239
|
+
}
|
|
240
|
+
: undefined,
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
return Object.fromEntries(
|
|
244
|
+
Object.entries(config).filter(([_, value]) => value !== undefined),
|
|
245
|
+
) as ProviderConfig;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export function createProviderConfig(input: unknown): ProviderConfig {
|
|
249
|
+
const settings = parseSettings(input);
|
|
250
|
+
return toProviderConfig(settings);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export function safeCreateProviderConfig(
|
|
254
|
+
input: unknown,
|
|
255
|
+
):
|
|
256
|
+
| { success: true; config: ProviderConfig }
|
|
257
|
+
| { success: false; error: z.ZodError } {
|
|
258
|
+
const result = safeParseSettings(input);
|
|
259
|
+
if (result.success) {
|
|
260
|
+
return { success: true, config: toProviderConfig(result.data) };
|
|
261
|
+
}
|
|
262
|
+
return { success: false, error: result.error };
|
|
263
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import type { LlmsConfig } from "./runtime-types";
|
|
4
|
+
|
|
5
|
+
export function defineLlmsConfig(config: LlmsConfig): LlmsConfig {
|
|
6
|
+
return config;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function loadLlmsConfigFromFile(
|
|
10
|
+
configPath: string,
|
|
11
|
+
): Promise<LlmsConfig> {
|
|
12
|
+
const resolvedPath = path.resolve(configPath);
|
|
13
|
+
const raw = await readFile(resolvedPath, "utf8");
|
|
14
|
+
let parsed: unknown;
|
|
15
|
+
try {
|
|
16
|
+
parsed = JSON.parse(raw);
|
|
17
|
+
} catch (error) {
|
|
18
|
+
const details = error instanceof Error ? error.message : String(error);
|
|
19
|
+
throw new Error(
|
|
20
|
+
`Failed to parse JSON config at "${resolvedPath}": ${details}`,
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
return assertLlmsConfig(parsed, resolvedPath);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function assertLlmsConfig(value: unknown, source: string): LlmsConfig {
|
|
27
|
+
if (!value || typeof value !== "object") {
|
|
28
|
+
throw new Error(`Invalid llms config in "${source}": expected an object.`);
|
|
29
|
+
}
|
|
30
|
+
const config = value as Record<string, unknown>;
|
|
31
|
+
const providers = config.providers;
|
|
32
|
+
if (!Array.isArray(providers)) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`Invalid llms config in "${source}": "providers" must be an array.`,
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
if (!providers.length) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
`Invalid llms config in "${source}": "providers" cannot be empty.`,
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return value as LlmsConfig;
|
|
43
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { ApiHandler } from "@clinebot/llms";
|
|
2
|
+
import {
|
|
3
|
+
BUILT_IN_PROVIDER_IDS,
|
|
4
|
+
createHandler as createProviderHandler,
|
|
5
|
+
createHandlerAsync as createProviderHandlerAsync,
|
|
6
|
+
getProviderCollection,
|
|
7
|
+
hasProvider,
|
|
8
|
+
registerAsyncHandler,
|
|
9
|
+
registerHandler,
|
|
10
|
+
registerModel as registerModelInCatalog,
|
|
11
|
+
registerProvider as registerProviderInCatalog,
|
|
12
|
+
} from "@clinebot/llms";
|
|
13
|
+
import {
|
|
14
|
+
ConfiguredProviderRegistry,
|
|
15
|
+
toBuiltInProviderSummary,
|
|
16
|
+
} from "./configured-provider-registry";
|
|
17
|
+
import type {
|
|
18
|
+
BuiltInProviderSummary,
|
|
19
|
+
CreateHandlerInput,
|
|
20
|
+
LlmsConfig,
|
|
21
|
+
LlmsSdk,
|
|
22
|
+
RegisterBuiltinProviderInput,
|
|
23
|
+
RegisteredProviderSummary,
|
|
24
|
+
RegisterModelInput,
|
|
25
|
+
RegisterProviderInput,
|
|
26
|
+
} from "./runtime-types";
|
|
27
|
+
|
|
28
|
+
export class DefaultLlmsSdk implements LlmsSdk {
|
|
29
|
+
private readonly configuredProviders = new ConfiguredProviderRegistry();
|
|
30
|
+
|
|
31
|
+
constructor(config: LlmsConfig) {
|
|
32
|
+
this.applyConfig(config);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
createHandler(input: CreateHandlerInput): ApiHandler {
|
|
36
|
+
return createProviderHandler(
|
|
37
|
+
this.configuredProviders.createHandlerConfig(input),
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async createHandlerAsync(input: CreateHandlerInput): Promise<ApiHandler> {
|
|
42
|
+
return createProviderHandlerAsync(
|
|
43
|
+
this.configuredProviders.createHandlerConfig(input),
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
registerProvider(input: RegisterProviderInput): void {
|
|
48
|
+
registerProviderInCatalog(input.collection);
|
|
49
|
+
if (input.handlerFactory && input.asyncHandlerFactory) {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Provider "${input.collection.provider.id}" cannot register both sync and async handlers.`,
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
if (input.handlerFactory) {
|
|
55
|
+
registerHandler(input.collection.provider.id, input.handlerFactory);
|
|
56
|
+
}
|
|
57
|
+
if (input.asyncHandlerFactory) {
|
|
58
|
+
registerAsyncHandler(
|
|
59
|
+
input.collection.provider.id,
|
|
60
|
+
input.asyncHandlerFactory,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
this.configuredProviders.register({
|
|
64
|
+
id: input.collection.provider.id,
|
|
65
|
+
models: input.exposeModels ?? Object.keys(input.collection.models),
|
|
66
|
+
defaultModel:
|
|
67
|
+
input.defaultModel ?? input.collection.provider.defaultModelId,
|
|
68
|
+
defaults: input.defaults,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
registerBuiltinProvider(input: RegisterBuiltinProviderInput): void {
|
|
73
|
+
const exposedModels = input.exposeModels ?? Object.keys(input.models);
|
|
74
|
+
const defaultModel = input.defaultModel ?? exposedModels[0];
|
|
75
|
+
if (!defaultModel) {
|
|
76
|
+
throw new Error(`Provider "${input.id}" must define a default model.`);
|
|
77
|
+
}
|
|
78
|
+
registerProviderInCatalog({
|
|
79
|
+
provider: {
|
|
80
|
+
id: input.id,
|
|
81
|
+
name: input.name ?? input.id,
|
|
82
|
+
description: input.description,
|
|
83
|
+
protocol: input.protocol,
|
|
84
|
+
baseUrl: input.baseUrl,
|
|
85
|
+
defaultModelId: defaultModel,
|
|
86
|
+
client: input.client ?? "openai-compatible",
|
|
87
|
+
capabilities: input.capabilities,
|
|
88
|
+
env: input.env,
|
|
89
|
+
},
|
|
90
|
+
models: input.models,
|
|
91
|
+
});
|
|
92
|
+
this.configuredProviders.register({
|
|
93
|
+
id: input.id,
|
|
94
|
+
models: exposedModels,
|
|
95
|
+
defaultModel,
|
|
96
|
+
defaults: {
|
|
97
|
+
routingProviderId: input.builtinProviderId,
|
|
98
|
+
...(input.defaults ?? {}),
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
registerModel(input: RegisterModelInput): void {
|
|
104
|
+
registerModelInCatalog(input.providerId, input.modelId, input.info);
|
|
105
|
+
this.configuredProviders.registerModel(input.providerId, input.modelId);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
getProviders(): RegisteredProviderSummary[] {
|
|
109
|
+
return this.configuredProviders.list();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
getBuiltInProviderIds() {
|
|
113
|
+
return [...BUILT_IN_PROVIDER_IDS];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async getBuiltInProviders(): Promise<BuiltInProviderSummary[]> {
|
|
117
|
+
const collections = await Promise.all(
|
|
118
|
+
BUILT_IN_PROVIDER_IDS.map((providerId: string) =>
|
|
119
|
+
getProviderCollection(providerId),
|
|
120
|
+
),
|
|
121
|
+
);
|
|
122
|
+
return collections
|
|
123
|
+
.filter(
|
|
124
|
+
(collection): collection is NonNullable<typeof collection> =>
|
|
125
|
+
collection !== undefined,
|
|
126
|
+
)
|
|
127
|
+
.map((collection) => toBuiltInProviderSummary({ collection }));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
getModels(providerId: string): string[] {
|
|
131
|
+
return this.configuredProviders.getModels(providerId);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
isProviderConfigured(providerId: string): boolean {
|
|
135
|
+
return this.configuredProviders.hasProvider(providerId);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
isModelConfigured(providerId: string, modelId: string): boolean {
|
|
139
|
+
return this.configuredProviders.hasModel(providerId, modelId);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private applyConfig(config: LlmsConfig): void {
|
|
143
|
+
for (const provider of config.providers) {
|
|
144
|
+
this.configuredProviders.registerSelectionConfig(provider);
|
|
145
|
+
}
|
|
146
|
+
for (const model of config.models ?? []) {
|
|
147
|
+
this.registerModel(model);
|
|
148
|
+
}
|
|
149
|
+
for (const provider of config.customProviders ?? []) {
|
|
150
|
+
this.registerProvider(provider);
|
|
151
|
+
}
|
|
152
|
+
for (const provider of this.configuredProviders.list()) {
|
|
153
|
+
const providerExists = hasProvider(provider.id);
|
|
154
|
+
const routedProviderId = this.configuredProviders.createHandlerConfig({
|
|
155
|
+
providerId: provider.id,
|
|
156
|
+
modelId: provider.defaultModel,
|
|
157
|
+
}).routingProviderId;
|
|
158
|
+
const routedProviderExists =
|
|
159
|
+
typeof routedProviderId === "string" && hasProvider(routedProviderId);
|
|
160
|
+
if (!providerExists && !routedProviderExists) {
|
|
161
|
+
throw new Error(
|
|
162
|
+
`Provider "${provider.id}" is not known. Register it through customProviders/registerProvider, registerBuiltinProvider, or use a built-in provider ID.`,
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export function createLlmsSdk(config: LlmsConfig): LlmsSdk {
|
|
170
|
+
return new DefaultLlmsSdk(config);
|
|
171
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ApiHandler,
|
|
3
|
+
BuiltInProviderId,
|
|
4
|
+
HandlerFactory,
|
|
5
|
+
LazyHandlerFactory,
|
|
6
|
+
ModelCollection,
|
|
7
|
+
ModelInfo,
|
|
8
|
+
CatalogProviderCapability as ModelProviderCapability,
|
|
9
|
+
ProviderClient,
|
|
10
|
+
ProviderConfig,
|
|
11
|
+
ProviderInfo,
|
|
12
|
+
ProviderProtocol,
|
|
13
|
+
} from "@clinebot/llms";
|
|
14
|
+
import type { ProviderCapability } from "./provider-settings";
|
|
15
|
+
|
|
16
|
+
export type ProviderConfigDefaults = Omit<
|
|
17
|
+
ProviderConfig,
|
|
18
|
+
"providerId" | "modelId"
|
|
19
|
+
>;
|
|
20
|
+
|
|
21
|
+
export interface ProviderSelectionConfig {
|
|
22
|
+
id: string;
|
|
23
|
+
models: string[];
|
|
24
|
+
defaultModel?: string;
|
|
25
|
+
builtinProviderId?: BuiltInProviderId;
|
|
26
|
+
apiKey?: string;
|
|
27
|
+
apiKeyEnv?: string;
|
|
28
|
+
baseUrl?: string;
|
|
29
|
+
headers?: Record<string, string>;
|
|
30
|
+
timeoutMs?: number;
|
|
31
|
+
capabilities?: ProviderCapability[];
|
|
32
|
+
settings?: ProviderConfigDefaults;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface AdditionalModelConfig {
|
|
36
|
+
providerId: string;
|
|
37
|
+
modelId: string;
|
|
38
|
+
info: ModelInfo;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface CustomProviderConfig {
|
|
42
|
+
collection: ModelCollection;
|
|
43
|
+
defaults?: ProviderConfigDefaults;
|
|
44
|
+
handlerFactory?: HandlerFactory;
|
|
45
|
+
asyncHandlerFactory?: LazyHandlerFactory;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface LlmsConfig {
|
|
49
|
+
providers: ProviderSelectionConfig[];
|
|
50
|
+
models?: AdditionalModelConfig[];
|
|
51
|
+
customProviders?: CustomProviderConfig[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface CreateHandlerInput {
|
|
55
|
+
providerId: string;
|
|
56
|
+
modelId?: string;
|
|
57
|
+
overrides?: ProviderConfigDefaults;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface RegisteredProviderSummary {
|
|
61
|
+
id: string;
|
|
62
|
+
models: string[];
|
|
63
|
+
defaultModel: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface BuiltInProviderSummary
|
|
67
|
+
extends Pick<
|
|
68
|
+
ProviderInfo,
|
|
69
|
+
| "id"
|
|
70
|
+
| "name"
|
|
71
|
+
| "description"
|
|
72
|
+
| "protocol"
|
|
73
|
+
| "baseUrl"
|
|
74
|
+
| "capabilities"
|
|
75
|
+
| "env"
|
|
76
|
+
> {
|
|
77
|
+
models: string[];
|
|
78
|
+
defaultModel: string;
|
|
79
|
+
modelCount: number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface RegisterBuiltinProviderInput {
|
|
83
|
+
id: string;
|
|
84
|
+
builtinProviderId: BuiltInProviderId;
|
|
85
|
+
models: Record<string, ModelInfo>;
|
|
86
|
+
name?: string;
|
|
87
|
+
description?: string;
|
|
88
|
+
protocol?: ProviderProtocol;
|
|
89
|
+
baseUrl?: string;
|
|
90
|
+
client?: ProviderClient;
|
|
91
|
+
capabilities?: ModelProviderCapability[];
|
|
92
|
+
env?: string[];
|
|
93
|
+
defaultModel?: string;
|
|
94
|
+
defaults?: ProviderConfigDefaults;
|
|
95
|
+
exposeModels?: string[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface RegisterProviderInput extends CustomProviderConfig {
|
|
99
|
+
exposeModels?: string[];
|
|
100
|
+
defaultModel?: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface RegisterModelInput {
|
|
104
|
+
providerId: string;
|
|
105
|
+
modelId: string;
|
|
106
|
+
info: ModelInfo;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface LlmsSdk {
|
|
110
|
+
createHandler(input: CreateHandlerInput): ApiHandler;
|
|
111
|
+
createHandlerAsync(input: CreateHandlerInput): Promise<ApiHandler>;
|
|
112
|
+
registerProvider(input: RegisterProviderInput): void;
|
|
113
|
+
registerBuiltinProvider(input: RegisterBuiltinProviderInput): void;
|
|
114
|
+
registerModel(input: RegisterModelInput): void;
|
|
115
|
+
getProviders(): RegisteredProviderSummary[];
|
|
116
|
+
getBuiltInProviderIds(): BuiltInProviderId[];
|
|
117
|
+
getBuiltInProviders(): Promise<BuiltInProviderSummary[]>;
|
|
118
|
+
getModels(providerId: string): string[];
|
|
119
|
+
isProviderConfigured(providerId: string): boolean;
|
|
120
|
+
isModelConfigured(providerId: string, modelId: string): boolean;
|
|
121
|
+
}
|