@tyvm/knowhow 0.0.105 → 0.0.106
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/CONFIG.md +8 -5
- package/package.json +3 -2
- package/scripts/check-model-pricing.ts +509 -0
- package/scripts/compare-openrouter-coverage.ts +576 -0
- package/src/agents/base/base.ts +127 -2
- package/src/agents/tools/execCommand.ts +4 -0
- package/src/agents/tools/executeScript/definition.ts +1 -1
- package/src/agents/tools/index.ts +0 -1
- package/src/agents/tools/list.ts +3 -43
- package/src/agents/tools/writeFile.ts +1 -1
- package/src/auth/browserLogin.ts +9 -4
- package/src/chat/modules/RemoteSyncModule.ts +3 -0
- package/src/cli.ts +31 -1
- package/src/clients/cerebras.ts +10 -0
- package/src/clients/contextLimits.ts +7 -2
- package/src/clients/copilot.ts +23 -0
- package/src/clients/deepseek.ts +16 -0
- package/src/clients/fireworks.ts +15 -0
- package/src/clients/gemini.ts +45 -2
- package/src/clients/github.ts +16 -0
- package/src/clients/groq.ts +15 -0
- package/src/clients/http.ts +190 -6
- package/src/clients/index.ts +116 -4
- package/src/clients/llama.ts +16 -0
- package/src/clients/mistral.ts +16 -0
- package/src/clients/nvidia.ts +16 -0
- package/src/clients/openai.ts +41 -11
- package/src/clients/openrouter.ts +17 -0
- package/src/clients/pricing/anthropic.ts +105 -78
- package/src/clients/pricing/cerebras.ts +11 -0
- package/src/clients/pricing/copilot.ts +60 -0
- package/src/clients/pricing/deepseek.ts +15 -0
- package/src/clients/pricing/fireworks.ts +32 -0
- package/src/clients/pricing/github.ts +69 -0
- package/src/clients/pricing/google.ts +245 -206
- package/src/clients/pricing/groq.ts +56 -0
- package/src/clients/pricing/index.ts +42 -5
- package/src/clients/pricing/llama.ts +18 -0
- package/src/clients/pricing/mistral.ts +34 -0
- package/src/clients/pricing/models.ts +7 -236
- package/src/clients/pricing/nvidia.ts +102 -0
- package/src/clients/pricing/openai.ts +347 -171
- package/src/clients/pricing/openrouter.ts +36 -0
- package/src/clients/pricing/types.ts +83 -2
- package/src/clients/pricing/xai.ts +121 -65
- package/src/clients/types.ts +4 -0
- package/src/clients/xai.ts +150 -0
- package/src/fileSync.ts +8 -2
- package/src/login.ts +11 -3
- package/src/services/AgentSyncFs.ts +36 -12
- package/src/services/KnowhowClient.ts +11 -0
- package/src/services/LazyToolsService.ts +6 -0
- package/src/services/S3.ts +0 -7
- package/src/services/modules/index.ts +11 -2
- package/src/types.ts +56 -279
- package/src/worker.ts +174 -0
- package/tests/clients/pricing.test.ts +37 -0
- package/tests/manual/clients/completions.json +838 -226
- package/tests/manual/clients/completions.test.ts +46 -31
- package/ts_build/package.json +3 -2
- package/ts_build/src/agents/base/base.d.ts +17 -1
- package/ts_build/src/agents/base/base.js +82 -1
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.js +3 -0
- package/ts_build/src/agents/tools/execCommand.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/definition.js +1 -1
- package/ts_build/src/agents/tools/executeScript/definition.js.map +1 -1
- package/ts_build/src/agents/tools/index.d.ts +0 -1
- package/ts_build/src/agents/tools/index.js +0 -1
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +3 -38
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
- package/ts_build/src/agents/tools/writeFile.js +1 -1
- package/ts_build/src/agents/tools/writeFile.js.map +1 -1
- package/ts_build/src/ai.d.ts +1 -1
- package/ts_build/src/auth/browserLogin.d.ts +2 -1
- package/ts_build/src/auth/browserLogin.js +10 -3
- package/ts_build/src/auth/browserLogin.js.map +1 -1
- package/ts_build/src/chat/modules/RemoteSyncModule.js +1 -0
- package/ts_build/src/chat/modules/RemoteSyncModule.js.map +1 -1
- package/ts_build/src/cli.js +19 -0
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/anthropic.d.ts +1 -82
- package/ts_build/src/clients/cerebras.d.ts +4 -0
- package/ts_build/src/clients/cerebras.js +14 -0
- package/ts_build/src/clients/cerebras.js.map +1 -0
- package/ts_build/src/clients/contextLimits.js +7 -2
- package/ts_build/src/clients/contextLimits.js.map +1 -1
- package/ts_build/src/clients/copilot.d.ts +4 -0
- package/ts_build/src/clients/copilot.js +15 -0
- package/ts_build/src/clients/copilot.js.map +1 -0
- package/ts_build/src/clients/deepseek.d.ts +4 -0
- package/ts_build/src/clients/deepseek.js +15 -0
- package/ts_build/src/clients/deepseek.js.map +1 -0
- package/ts_build/src/clients/fireworks.d.ts +4 -0
- package/ts_build/src/clients/fireworks.js +15 -0
- package/ts_build/src/clients/fireworks.js.map +1 -0
- package/ts_build/src/clients/gemini.d.ts +1 -0
- package/ts_build/src/clients/gemini.js +28 -1
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/github.d.ts +4 -0
- package/ts_build/src/clients/github.js +15 -0
- package/ts_build/src/clients/github.js.map +1 -0
- package/ts_build/src/clients/groq.d.ts +4 -0
- package/ts_build/src/clients/groq.js +15 -0
- package/ts_build/src/clients/groq.js.map +1 -0
- package/ts_build/src/clients/http.d.ts +22 -1
- package/ts_build/src/clients/http.js +132 -7
- package/ts_build/src/clients/http.js.map +1 -1
- package/ts_build/src/clients/index.d.ts +14 -0
- package/ts_build/src/clients/index.js +94 -4
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/llama.d.ts +4 -0
- package/ts_build/src/clients/llama.js +15 -0
- package/ts_build/src/clients/llama.js.map +1 -0
- package/ts_build/src/clients/mistral.d.ts +4 -0
- package/ts_build/src/clients/mistral.js +15 -0
- package/ts_build/src/clients/mistral.js.map +1 -0
- package/ts_build/src/clients/nvidia.d.ts +4 -0
- package/ts_build/src/clients/nvidia.js +15 -0
- package/ts_build/src/clients/nvidia.js.map +1 -0
- package/ts_build/src/clients/openai.d.ts +4 -206
- package/ts_build/src/clients/openai.js +27 -9
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/openrouter.d.ts +4 -0
- package/ts_build/src/clients/openrouter.js +15 -0
- package/ts_build/src/clients/openrouter.js.map +1 -0
- package/ts_build/src/clients/pricing/anthropic.d.ts +26 -78
- package/ts_build/src/clients/pricing/anthropic.js +75 -78
- package/ts_build/src/clients/pricing/anthropic.js.map +1 -1
- package/ts_build/src/clients/pricing/cerebras.d.ts +4 -0
- package/ts_build/src/clients/pricing/cerebras.js +11 -0
- package/ts_build/src/clients/pricing/cerebras.js.map +1 -0
- package/ts_build/src/clients/pricing/copilot.d.ts +5 -0
- package/ts_build/src/clients/pricing/copilot.js +35 -0
- package/ts_build/src/clients/pricing/copilot.js.map +1 -0
- package/ts_build/src/clients/pricing/deepseek.d.ts +5 -0
- package/ts_build/src/clients/pricing/deepseek.js +10 -0
- package/ts_build/src/clients/pricing/deepseek.js.map +1 -0
- package/ts_build/src/clients/pricing/fireworks.d.ts +5 -0
- package/ts_build/src/clients/pricing/fireworks.js +21 -0
- package/ts_build/src/clients/pricing/fireworks.js.map +1 -0
- package/ts_build/src/clients/pricing/github.d.ts +4 -0
- package/ts_build/src/clients/pricing/github.js +58 -0
- package/ts_build/src/clients/pricing/github.js.map +1 -0
- package/ts_build/src/clients/pricing/google.d.ts +59 -6
- package/ts_build/src/clients/pricing/google.js +214 -167
- package/ts_build/src/clients/pricing/google.js.map +1 -1
- package/ts_build/src/clients/pricing/groq.d.ts +5 -0
- package/ts_build/src/clients/pricing/groq.js +41 -0
- package/ts_build/src/clients/pricing/groq.js.map +1 -0
- package/ts_build/src/clients/pricing/index.d.ts +16 -5
- package/ts_build/src/clients/pricing/index.js +62 -7
- package/ts_build/src/clients/pricing/index.js.map +1 -1
- package/ts_build/src/clients/pricing/llama.d.ts +4 -0
- package/ts_build/src/clients/pricing/llama.js +14 -0
- package/ts_build/src/clients/pricing/llama.js.map +1 -0
- package/ts_build/src/clients/pricing/mistral.d.ts +5 -0
- package/ts_build/src/clients/pricing/mistral.js +23 -0
- package/ts_build/src/clients/pricing/mistral.js.map +1 -0
- package/ts_build/src/clients/pricing/models.d.ts +5 -4
- package/ts_build/src/clients/pricing/models.js +8 -162
- package/ts_build/src/clients/pricing/models.js.map +1 -1
- package/ts_build/src/clients/pricing/nvidia.d.ts +8 -0
- package/ts_build/src/clients/pricing/nvidia.js +96 -0
- package/ts_build/src/clients/pricing/nvidia.js.map +1 -0
- package/ts_build/src/clients/pricing/openai.d.ts +86 -197
- package/ts_build/src/clients/pricing/openai.js +294 -168
- package/ts_build/src/clients/pricing/openai.js.map +1 -1
- package/ts_build/src/clients/pricing/openrouter.d.ts +4 -0
- package/ts_build/src/clients/pricing/openrouter.js +29 -0
- package/ts_build/src/clients/pricing/openrouter.js.map +1 -0
- package/ts_build/src/clients/pricing/types.d.ts +27 -2
- package/ts_build/src/clients/pricing/types.js +46 -0
- package/ts_build/src/clients/pricing/types.js.map +1 -1
- package/ts_build/src/clients/pricing/xai.d.ts +37 -57
- package/ts_build/src/clients/pricing/xai.js +92 -59
- package/ts_build/src/clients/pricing/xai.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +1 -0
- package/ts_build/src/clients/xai.d.ts +2 -62
- package/ts_build/src/clients/xai.js +121 -0
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/fileSync.js +7 -2
- package/ts_build/src/fileSync.js.map +1 -1
- package/ts_build/src/login.js +8 -2
- package/ts_build/src/login.js.map +1 -1
- package/ts_build/src/services/AgentSyncFs.js +1 -0
- package/ts_build/src/services/AgentSyncFs.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.d.ts +1 -0
- package/ts_build/src/services/KnowhowClient.js +7 -0
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/LazyToolsService.d.ts +1 -0
- package/ts_build/src/services/LazyToolsService.js +3 -0
- package/ts_build/src/services/LazyToolsService.js.map +1 -1
- package/ts_build/src/services/S3.js +0 -7
- package/ts_build/src/services/S3.js.map +1 -1
- package/ts_build/src/services/modules/index.js +41 -1
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/types.d.ts +163 -124
- package/ts_build/src/types.js +33 -213
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/worker.d.ts +4 -0
- package/ts_build/src/worker.js +140 -0
- package/ts_build/src/worker.js.map +1 -1
- package/ts_build/tests/clients/pricing.test.js +21 -0
- package/ts_build/tests/clients/pricing.test.js.map +1 -1
- package/ts_build/tests/manual/clients/completions.test.js +27 -24
- package/ts_build/tests/manual/clients/completions.test.js.map +1 -1
|
@@ -144,6 +144,17 @@ export class KnowhowSimpleClient {
|
|
|
144
144
|
this.setJwt(jwt);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
+
/**
|
|
148
|
+
* Reload the JWT from disk (useful after login refreshes the token).
|
|
149
|
+
*/
|
|
150
|
+
refreshJwt() {
|
|
151
|
+
const freshJwt = loadKnowhowJwt();
|
|
152
|
+
if (freshJwt) {
|
|
153
|
+
this.setJwt(freshJwt);
|
|
154
|
+
this.jwtValidated = false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
147
158
|
setJwt(jwt: string) {
|
|
148
159
|
this.jwt = jwt;
|
|
149
160
|
this.headers = {
|
|
@@ -57,6 +57,12 @@ export class LazyToolsService extends ToolsService {
|
|
|
57
57
|
this.updateVisibleTools();
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
// Override addTool (singular) to also route through allTools so that
|
|
61
|
+
// module-registered tools (via ModulesService.addTool) are tracked correctly.
|
|
62
|
+
addTool(tool: Tool) {
|
|
63
|
+
this.addTools([tool]);
|
|
64
|
+
}
|
|
65
|
+
|
|
60
66
|
// Override getTools to return only enabled tools
|
|
61
67
|
getTools() {
|
|
62
68
|
return this.tools; // Returns filtered subset
|
package/src/services/S3.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
|
-
import * as crypto from "crypto";
|
|
3
2
|
import { createWriteStream, createReadStream } from "fs";
|
|
4
3
|
import { pipeline, Readable } from "stream";
|
|
5
4
|
import * as util from "util";
|
|
@@ -14,17 +13,11 @@ export class S3Service {
|
|
|
14
13
|
try {
|
|
15
14
|
const fileContent = fs.readFileSync(filePath);
|
|
16
15
|
const fileStats = await fs.promises.stat(filePath);
|
|
17
|
-
const sha256Base64 = crypto
|
|
18
|
-
.createHash("sha256")
|
|
19
|
-
.update(fileContent)
|
|
20
|
-
.digest("base64");
|
|
21
16
|
|
|
22
17
|
const response = await fetch(presignedUrl, {
|
|
23
18
|
method: "PUT",
|
|
24
19
|
headers: {
|
|
25
20
|
"Content-Length": String(fileStats.size),
|
|
26
|
-
"x-amz-checksum-sha256": sha256Base64,
|
|
27
|
-
"x-amz-sdk-checksum-algorithm": "SHA256",
|
|
28
21
|
},
|
|
29
22
|
body: fileContent,
|
|
30
23
|
// @ts-ignore
|
|
@@ -2,7 +2,7 @@ import { getConfig, getGlobalConfig } from "../../config";
|
|
|
2
2
|
import { KnowhowModule, ModuleContext } from "./types";
|
|
3
3
|
import { ToolsService } from "../Tools";
|
|
4
4
|
import { services } from "../";
|
|
5
|
-
import
|
|
5
|
+
import * as path from "path";
|
|
6
6
|
|
|
7
7
|
export class ModulesService {
|
|
8
8
|
async loadModulesFromConfig(context?: ModuleContext) {
|
|
@@ -35,8 +35,17 @@ export class ModulesService {
|
|
|
35
35
|
];
|
|
36
36
|
|
|
37
37
|
for (const modulePath of allModulePaths) {
|
|
38
|
-
|
|
38
|
+
// Resolve relative paths relative to process.cwd() so that paths like
|
|
39
|
+
// "../../packages/knowhow-module-load-webpage" in knowhow.json work
|
|
40
|
+
// regardless of where the compiled output lives.
|
|
41
|
+
const resolvedPath = modulePath.startsWith(".")
|
|
42
|
+
? path.resolve(process.cwd(), modulePath)
|
|
43
|
+
: modulePath;
|
|
44
|
+
const rawModule = require(resolvedPath);
|
|
45
|
+
const importedModule = (rawModule.default || rawModule) as KnowhowModule;
|
|
46
|
+
console.log(`🔌 Loading module: ${modulePath} (resolved: ${resolvedPath})`);
|
|
39
47
|
await importedModule.init({ config, cwd: process.cwd(), context });
|
|
48
|
+
console.log(`✅ Module initialized: ${modulePath} (tools: ${importedModule.tools.length}, agents: ${importedModule.agents.length}, plugins: ${importedModule.plugins.length}, clients: ${importedModule.clients.length})`);
|
|
40
49
|
|
|
41
50
|
for (const agent of importedModule.agents) {
|
|
42
51
|
agentService.registerAgent(agent);
|
package/src/types.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { WebSocket } from "ws";
|
|
|
4
4
|
export type Hashes = {
|
|
5
5
|
[file: string]: {
|
|
6
6
|
[promptHash: string]: string;
|
|
7
|
-
|
|
8
7
|
promptHash: string;
|
|
9
8
|
fileHash: string;
|
|
10
9
|
};
|
|
@@ -38,37 +37,25 @@ export type Config = {
|
|
|
38
37
|
openaiBaseUrl?: string;
|
|
39
38
|
promptsDir: string;
|
|
40
39
|
lintCommands?: { [fileExtension: string]: string };
|
|
41
|
-
|
|
40
|
+
orgId?: string;
|
|
42
41
|
syncRemote?: boolean;
|
|
43
|
-
|
|
44
42
|
micCommand?: string;
|
|
45
43
|
defaultMic?: string;
|
|
46
|
-
|
|
47
44
|
sources: GenerationSource[];
|
|
48
45
|
embedSources: EmbedSource[];
|
|
49
46
|
embeddingModel: string;
|
|
50
|
-
|
|
51
47
|
skills?: string[];
|
|
52
|
-
|
|
53
48
|
plugins: { enabled: string[]; disabled: string[] };
|
|
54
|
-
|
|
55
49
|
chat?: {
|
|
56
|
-
/** Path to a custom root chat module (npm package or local file) */
|
|
57
50
|
rootModule?: string;
|
|
58
|
-
/** Path to a custom renderer (npm package or local file, can be .ts) */
|
|
59
51
|
renderer?: string;
|
|
60
|
-
/** Additional chat modules to load (npm packages or local files, can be .ts) */
|
|
61
52
|
modules?: string[];
|
|
62
53
|
};
|
|
63
|
-
|
|
64
54
|
modules: string[];
|
|
65
|
-
|
|
66
55
|
pluginPackages?: Record<string, string>;
|
|
67
|
-
|
|
68
56
|
agents: Assistant[];
|
|
69
57
|
mcps: McpConfig[];
|
|
70
58
|
modelProviders: ModelProvider[];
|
|
71
|
-
|
|
72
59
|
ycmd?: {
|
|
73
60
|
enabled?: boolean;
|
|
74
61
|
installPath?: string;
|
|
@@ -76,13 +63,11 @@ export type Config = {
|
|
|
76
63
|
logLevel?: "debug" | "info" | "warning" | "error";
|
|
77
64
|
completionTimeout?: number;
|
|
78
65
|
};
|
|
79
|
-
|
|
80
66
|
files?: {
|
|
81
|
-
remotePath: string;
|
|
82
|
-
localPath: string;
|
|
83
|
-
direction?: "download" | "upload" | "sync";
|
|
67
|
+
remotePath: string;
|
|
68
|
+
localPath: string;
|
|
69
|
+
direction?: "download" | "upload" | "sync";
|
|
84
70
|
}[];
|
|
85
|
-
|
|
86
71
|
worker?: {
|
|
87
72
|
allowedTools?: string[];
|
|
88
73
|
workerId?: string;
|
|
@@ -92,24 +77,20 @@ export type Config = {
|
|
|
92
77
|
auth?: {
|
|
93
78
|
required?: boolean;
|
|
94
79
|
passkey?: {
|
|
95
|
-
publicKey?: string;
|
|
96
|
-
credentialId?: string;
|
|
97
|
-
algorithm?: string;
|
|
80
|
+
publicKey?: string;
|
|
81
|
+
credentialId?: string;
|
|
82
|
+
algorithm?: string;
|
|
98
83
|
};
|
|
99
84
|
sessionDurationHours?: number;
|
|
100
85
|
};
|
|
101
|
-
commandAuth?: {
|
|
102
|
-
[toolName: string]: "always" | "session" | "never";
|
|
103
|
-
};
|
|
86
|
+
commandAuth?: { [toolName: string]: "always" | "session" | "never" };
|
|
104
87
|
tunnel?: {
|
|
105
88
|
enabled?: boolean;
|
|
106
89
|
allowedPorts?: number[];
|
|
107
90
|
maxConcurrentStreams?: number;
|
|
108
|
-
portMapping?: {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
localHost?: string; // Default: "127.0.0.1", can be "host.docker.internal" for Docker
|
|
112
|
-
enableUrlRewriting?: boolean; // Enable URL rewriting for localhost URLs (default: true)
|
|
91
|
+
portMapping?: { [containerPort: number]: number };
|
|
92
|
+
localHost?: string;
|
|
93
|
+
enableUrlRewriting?: boolean;
|
|
113
94
|
};
|
|
114
95
|
};
|
|
115
96
|
};
|
|
@@ -124,7 +105,7 @@ export type Assistant = {
|
|
|
124
105
|
|
|
125
106
|
export type McpConfig = {
|
|
126
107
|
name: string;
|
|
127
|
-
autoConnect?: boolean;
|
|
108
|
+
autoConnect?: boolean;
|
|
128
109
|
command?: string;
|
|
129
110
|
url?: string;
|
|
130
111
|
args?: string[];
|
|
@@ -140,6 +121,10 @@ export type ModelProvider = {
|
|
|
140
121
|
envKey?: string;
|
|
141
122
|
headers?: { [key: string]: string };
|
|
142
123
|
jwtFile?: string;
|
|
124
|
+
timeout?: number;
|
|
125
|
+
extra_body?: Record<string, any>;
|
|
126
|
+
/** Optional pricing map (model id → per-million-token prices) passed to HttpClient.setPrices() */
|
|
127
|
+
pricing?: Record<string, { input?: number; output?: number; cached_input?: number; cache_hit?: number }>;
|
|
143
128
|
};
|
|
144
129
|
|
|
145
130
|
export type AssistantConfig = {
|
|
@@ -153,17 +138,13 @@ export interface Embeddable<T = any> {
|
|
|
153
138
|
metadata: T;
|
|
154
139
|
}
|
|
155
140
|
|
|
156
|
-
export type MinimalEmbedding<T = any> = Pick<
|
|
157
|
-
Embeddable<T>,
|
|
158
|
-
"id" | "text" | "metadata"
|
|
159
|
-
>;
|
|
141
|
+
export type MinimalEmbedding<T = any> = Pick<Embeddable<T>, "id" | "text" | "metadata">;
|
|
160
142
|
|
|
161
143
|
export interface EmbeddingBase<T = any> extends Embeddable<T> {
|
|
162
144
|
similarity?: number;
|
|
163
145
|
}
|
|
164
146
|
|
|
165
147
|
export type GptQuestionEmbedding = any & EmbeddingBase;
|
|
166
|
-
|
|
167
148
|
export type DatasourceType = "file" | "url" | "text";
|
|
168
149
|
|
|
169
150
|
export interface IDatasource {
|
|
@@ -186,150 +167,55 @@ export type ChatInteraction = {
|
|
|
186
167
|
taskId: string;
|
|
187
168
|
};
|
|
188
169
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
Grok4_1_Fast_Reasoning: "grok-4-1-fast-reasoning",
|
|
208
|
-
Grok4_1_Fast_NonReasoning: "grok-4-1-fast-non-reasoning",
|
|
209
|
-
GrokCodeFast: "grok-code-fast-1",
|
|
210
|
-
Grok4: "grok-4-0709",
|
|
211
|
-
Grok3Beta: "grok-3-beta",
|
|
212
|
-
Grok3MiniBeta: "grok-3-mini-beta",
|
|
213
|
-
Grok3FastBeta: "grok-3-fast-beta",
|
|
214
|
-
Grok3MiniFastBeta: "grok-3-mini-fast-beta",
|
|
215
|
-
Grok21212: "grok-2-1212",
|
|
216
|
-
Grok2Vision1212: "grok-2-vision-1212",
|
|
217
|
-
GrokImagineImage: "grok-imagine-image",
|
|
218
|
-
GrokImagineVideo: "grok-imagine-video",
|
|
219
|
-
},
|
|
220
|
-
openai: {
|
|
221
|
-
GPT_54: "gpt-5.4",
|
|
222
|
-
GPT_54_Mini: "gpt-5.4-mini",
|
|
223
|
-
GPT_54_Nano: "gpt-5.4-nano",
|
|
224
|
-
GPT_54_Pro: "gpt-5.4-pro",
|
|
225
|
-
GPT_53_Chat: "gpt-5.3-chat-latest",
|
|
226
|
-
GPT_53_Codex: "gpt-5.3-codex",
|
|
227
|
-
GPT_5_2: "gpt-5.2",
|
|
228
|
-
GPT_5_1: "gpt-5.1",
|
|
229
|
-
GPT_5: "gpt-5",
|
|
230
|
-
GPT_5_Mini: "gpt-5-mini",
|
|
231
|
-
GPT_5_Nano: "gpt-5-nano",
|
|
232
|
-
GPT_41: "gpt-4.1-2025-04-14",
|
|
233
|
-
GPT_41_Mini: "gpt-4.1-mini-2025-04-14",
|
|
234
|
-
GPT_41_Nano: "gpt-4.1-nano-2025-04-14",
|
|
235
|
-
GPT_45: "gpt-4.5-preview-2025-02-27",
|
|
236
|
-
GPT_4o: "gpt-4o-2024-08-06",
|
|
237
|
-
GPT_4o_Audio: "gpt-4o-audio-preview-2024-12-17",
|
|
238
|
-
GPT_4o_Realtime: "gpt-4o-realtime-preview-2024-12-17",
|
|
239
|
-
GPT_4o_Mini: "gpt-4o-mini-2024-07-18",
|
|
240
|
-
GPT_4o_Mini_Audio: "gpt-4o-mini-audio-preview-2024-12-17",
|
|
241
|
-
GPT_4o_Mini_Realtime: "gpt-4o-mini-realtime-preview-2024-12-17",
|
|
242
|
-
o1: "o1-2024-12-17",
|
|
243
|
-
o1_Pro: "o1-pro-2025-03-19",
|
|
244
|
-
o3: "o3-2025-04-16",
|
|
245
|
-
o3_Pro: "o3-pro-2025-01-31",
|
|
246
|
-
o4_Mini: "o4-mini-2025-04-16",
|
|
247
|
-
o3_Mini: "o3-mini-2025-01-31",
|
|
248
|
-
o1_Mini: "o1-mini-2024-09-12",
|
|
249
|
-
GPT_4o_Mini_Search: "gpt-4o-mini-search-preview-2025-03-11",
|
|
250
|
-
GPT_4o_Search: "gpt-4o-search-preview-2025-03-11",
|
|
170
|
+
// ─── Model IDs ────────────────────────────────────────────────────────────────
|
|
171
|
+
// Each provider's pricing file is the single source of truth.
|
|
172
|
+
|
|
173
|
+
import { AnthropicModels, AnthropicTextModels } from "./clients/pricing/anthropic";
|
|
174
|
+
import {
|
|
175
|
+
OpenAiModels, OpenAiEmbeddingModels,
|
|
176
|
+
OpenAiReasoningModels, OpenAiChatModels, OpenAiEmbeddingModelsList,
|
|
177
|
+
OpenAiResponsesOnlyModels, OpenAiImageModels, OpenAiVideoModels,
|
|
178
|
+
OpenAiTTSModels, OpenAiTranscriptionModels, OpenAiRealtimeModels,
|
|
179
|
+
} from "./clients/pricing/openai";
|
|
180
|
+
import {
|
|
181
|
+
GoogleModels, GoogleEmbeddingModels,
|
|
182
|
+
GoogleTextModels, GoogleImageModels, GoogleVideoModels,
|
|
183
|
+
GoogleTTSModels, GoogleEmbeddingModelsList, GoogleThinkingLevelModels, GoogleThinkingBudgetModels,
|
|
184
|
+
} from "./clients/pricing/google";
|
|
185
|
+
import {
|
|
186
|
+
XaiModels, XaiTextModels, XaiImageModels, XaiVideoModels, XaiResponsesOnlyModels, XaiReasoningModels,
|
|
187
|
+
} from "./clients/pricing/xai";
|
|
251
188
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
GPT_Image_1_Mini: "gpt-image-1-mini",
|
|
258
|
-
TTS_1: "tts-1",
|
|
259
|
-
Whisper_1: "whisper-1",
|
|
260
|
-
DALL_E_3: "dall-e-3",
|
|
261
|
-
DALL_E_2: "dall-e-2",
|
|
262
|
-
Sora: "sora",
|
|
263
|
-
Sora_2: "sora-2",
|
|
264
|
-
Sora_2_Pro: "sora-2-pro",
|
|
265
|
-
// Computer_Use: "computer-use-preview-2025-03-11",
|
|
266
|
-
// Codex_Mini: "codex-mini-latest",
|
|
267
|
-
},
|
|
268
|
-
google: {
|
|
269
|
-
// Gemini 3.x
|
|
270
|
-
Gemini_31_Pro_Preview: "gemini-3.1-pro-preview",
|
|
271
|
-
Gemini_31_Flash_Image_Preview: "gemini-3.1-flash-image-preview",
|
|
272
|
-
Gemini_31_Flash_Lite_Preview: "gemini-3.1-flash-lite-preview",
|
|
273
|
-
Gemini_31_Flash_Live_Preview: "gemini-3.1-flash-live-preview",
|
|
274
|
-
Gemini_3_Flash_Preview: "gemini-3-flash-preview",
|
|
275
|
-
Gemini_3_Pro_Image_Preview: "gemini-3-pro-image-preview",
|
|
276
|
-
// Gemini 2.5
|
|
277
|
-
Gemini_25_Pro: "gemini-2.5-pro",
|
|
278
|
-
Gemini_25_Flash: "gemini-2.5-flash",
|
|
279
|
-
Gemini_25_Flash_Lite: "gemini-2.5-flash-lite",
|
|
280
|
-
Gemini_25_Flash_Preview: "gemini-2.5-flash-preview-05-20",
|
|
281
|
-
Gemini_25_Pro_Preview: "gemini-2.5-pro-preview-05-06",
|
|
282
|
-
Gemini_25_Flash_Image: "gemini-2.5-flash-image",
|
|
283
|
-
Gemini_25_Flash_Live: "gemini-2.5-flash-live-preview",
|
|
284
|
-
Gemini_25_Flash_Native_Audio:
|
|
285
|
-
"gemini-2.5-flash-native-audio-preview-12-2025",
|
|
286
|
-
Gemini_25_Pro_TTS: "gemini-2.5-pro-preview-tts",
|
|
287
|
-
// Gemini 2.0 (deprecated)
|
|
288
|
-
Gemini_20_Flash: "gemini-2.0-flash",
|
|
289
|
-
Gemini_20_Flash_Preview_Image_Generation:
|
|
290
|
-
"gemini-2.0-flash-exp-image-generation",
|
|
291
|
-
// Gemini 1.5 (legacy)
|
|
292
|
-
Gemini_15_Flash: "gemini-1.5-flash",
|
|
293
|
-
Gemini_15_Flash_8B: "gemini-1.5-flash-8b",
|
|
294
|
-
Gemini_15_Pro: "gemini-1.5-pro",
|
|
295
|
-
// Media generation
|
|
296
|
-
Imagen_3: "imagen-4.0-generate-001",
|
|
297
|
-
Imagen_4_Fast: "imagen-4.0-fast-generate-001",
|
|
298
|
-
Imagen_4_Ultra: "imagen-4.0-ultra-generate-001",
|
|
299
|
-
Veo_2: "veo-2.0-generate-001",
|
|
300
|
-
Veo_3: "veo-3.0-generate-001",
|
|
301
|
-
Veo_3_Fast: "veo-3.0-fast-generate-001",
|
|
302
|
-
Veo_3_1: "veo-3.1-generate-preview",
|
|
303
|
-
Veo_3_1_Fast: "veo-3.1-fast-generate-preview",
|
|
304
|
-
// Audio / Live
|
|
305
|
-
Gemini_20_Flash_Live: "gemini-2.0-flash-live-001",
|
|
306
|
-
Gemini_25_Flash_TTS: "gemini-2.5-flash-preview-tts",
|
|
307
|
-
Gemini_20_Flash_TTS: "gemini-2.0-flash-preview-tts",
|
|
308
|
-
},
|
|
189
|
+
export const Models = {
|
|
190
|
+
anthropic: AnthropicModels,
|
|
191
|
+
xai: XaiModels,
|
|
192
|
+
openai: OpenAiModels,
|
|
193
|
+
google: GoogleModels,
|
|
309
194
|
};
|
|
310
195
|
|
|
311
196
|
export const EmbeddingModels = {
|
|
312
|
-
openai:
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
197
|
+
openai: OpenAiEmbeddingModels,
|
|
198
|
+
google: GoogleEmbeddingModels,
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// Re-export modality arrays for consumers
|
|
202
|
+
export {
|
|
203
|
+
OpenAiReasoningModels, OpenAiChatModels, OpenAiEmbeddingModelsList,
|
|
204
|
+
OpenAiResponsesOnlyModels, OpenAiImageModels, OpenAiVideoModels,
|
|
205
|
+
OpenAiTTSModels, OpenAiTranscriptionModels, OpenAiRealtimeModels,
|
|
206
|
+
GoogleTextModels as GoogleReasoningModels,
|
|
207
|
+
GoogleImageModels, GoogleVideoModels, GoogleTTSModels, GoogleEmbeddingModelsList,
|
|
208
|
+
GoogleThinkingLevelModels, GoogleThinkingBudgetModels,
|
|
209
|
+
AnthropicTextModels,
|
|
210
|
+
XaiTextModels, XaiImageModels, XaiVideoModels, XaiResponsesOnlyModels, XaiReasoningModels,
|
|
321
211
|
};
|
|
322
212
|
|
|
323
|
-
export function getEnabledPlugins(
|
|
324
|
-
plugins: Config["plugins"] | undefined
|
|
325
|
-
): string[] {
|
|
213
|
+
export function getEnabledPlugins(plugins: Config["plugins"] | undefined): string[] {
|
|
326
214
|
if (!plugins) return [];
|
|
327
215
|
return plugins.enabled ?? [];
|
|
328
216
|
}
|
|
329
217
|
|
|
330
|
-
export function getDisabledPlugins(
|
|
331
|
-
plugins: Config["plugins"] | undefined
|
|
332
|
-
): string[] {
|
|
218
|
+
export function getDisabledPlugins(plugins: Config["plugins"] | undefined): string[] {
|
|
333
219
|
if (!plugins) return [];
|
|
334
220
|
return plugins.disabled ?? [];
|
|
335
221
|
}
|
|
@@ -338,112 +224,3 @@ export const Providers = Object.keys(Models).reduce((obj, key) => {
|
|
|
338
224
|
obj[key] = key;
|
|
339
225
|
return obj;
|
|
340
226
|
}, {}) as { [key in keyof typeof Models]: keyof typeof Models };
|
|
341
|
-
|
|
342
|
-
export const OpenAiReasoningModels = [
|
|
343
|
-
Models.openai.o1,
|
|
344
|
-
Models.openai.o1_Mini,
|
|
345
|
-
Models.openai.o3_Mini,
|
|
346
|
-
Models.openai.o3,
|
|
347
|
-
Models.openai.o3_Pro,
|
|
348
|
-
Models.openai.o4_Mini,
|
|
349
|
-
Models.openai.GPT_54,
|
|
350
|
-
Models.openai.GPT_54_Mini,
|
|
351
|
-
Models.openai.GPT_54_Nano,
|
|
352
|
-
Models.openai.GPT_54_Pro,
|
|
353
|
-
Models.openai.GPT_53_Chat,
|
|
354
|
-
Models.openai.GPT_53_Codex,
|
|
355
|
-
Models.openai.GPT_5,
|
|
356
|
-
Models.openai.GPT_5_Mini,
|
|
357
|
-
Models.openai.GPT_5_Nano,
|
|
358
|
-
Models.openai.GPT_5_1,
|
|
359
|
-
Models.openai.GPT_5_2,
|
|
360
|
-
];
|
|
361
|
-
|
|
362
|
-
export const OpenAiEmbeddingModels = [
|
|
363
|
-
EmbeddingModels.openai.EmbeddingAda2,
|
|
364
|
-
EmbeddingModels.openai.EmbeddingLarge3,
|
|
365
|
-
EmbeddingModels.openai.EmbeddingSmall3,
|
|
366
|
-
];
|
|
367
|
-
|
|
368
|
-
// Models that ONLY support the Responses API (not Chat Completions)
|
|
369
|
-
export const OpenAiResponsesOnlyModels = [
|
|
370
|
-
Models.openai.GPT_53_Codex,
|
|
371
|
-
Models.openai.GPT_54,
|
|
372
|
-
Models.openai.GPT_54_Mini,
|
|
373
|
-
Models.openai.GPT_54_Nano,
|
|
374
|
-
Models.openai.GPT_54_Pro,
|
|
375
|
-
];
|
|
376
|
-
|
|
377
|
-
export const GoogleReasoningModels = [
|
|
378
|
-
Models.google.Gemini_31_Pro_Preview,
|
|
379
|
-
Models.google.Gemini_31_Flash_Lite_Preview,
|
|
380
|
-
Models.google.Gemini_3_Flash_Preview,
|
|
381
|
-
Models.google.Gemini_25_Pro,
|
|
382
|
-
Models.google.Gemini_25_Flash,
|
|
383
|
-
Models.google.Gemini_25_Flash_Lite,
|
|
384
|
-
Models.google.Gemini_25_Flash_Preview,
|
|
385
|
-
Models.google.Gemini_25_Pro_Preview,
|
|
386
|
-
Models.google.Gemini_20_Flash,
|
|
387
|
-
Models.google.Gemini_15_Flash,
|
|
388
|
-
Models.google.Gemini_15_Flash_8B,
|
|
389
|
-
Models.google.Gemini_15_Pro,
|
|
390
|
-
];
|
|
391
|
-
|
|
392
|
-
export const GoogleImageModels = [
|
|
393
|
-
Models.google.Gemini_31_Flash_Image_Preview,
|
|
394
|
-
Models.google.Gemini_3_Pro_Image_Preview,
|
|
395
|
-
Models.google.Gemini_25_Flash_Image,
|
|
396
|
-
Models.google.Gemini_20_Flash_Preview_Image_Generation,
|
|
397
|
-
Models.google.Imagen_3,
|
|
398
|
-
Models.google.Imagen_4_Fast,
|
|
399
|
-
Models.google.Imagen_4_Ultra,
|
|
400
|
-
];
|
|
401
|
-
|
|
402
|
-
export const OpenAiImageModels = [
|
|
403
|
-
Models.openai.DALL_E_3,
|
|
404
|
-
Models.openai.DALL_E_2,
|
|
405
|
-
Models.openai.GPT_Image_15,
|
|
406
|
-
Models.openai.GPT_Image_1_Mini,
|
|
407
|
-
];
|
|
408
|
-
|
|
409
|
-
export const OpenAiVideoModels = [
|
|
410
|
-
Models.openai.Sora,
|
|
411
|
-
Models.openai.Sora_2,
|
|
412
|
-
Models.openai.Sora_2_Pro,
|
|
413
|
-
];
|
|
414
|
-
|
|
415
|
-
export const OpenAiTTSModels = [Models.openai.TTS_1];
|
|
416
|
-
|
|
417
|
-
export const XaiImageModels = [Models.xai.GrokImagineImage];
|
|
418
|
-
export const OpenAiTranscriptionModels = [
|
|
419
|
-
Models.openai.Whisper_1,
|
|
420
|
-
Models.openai.GPT_4o_Transcribe,
|
|
421
|
-
Models.openai.GPT_4o_Mini_Transcribe,
|
|
422
|
-
];
|
|
423
|
-
|
|
424
|
-
export const OpenAiRealtimeModels = [
|
|
425
|
-
Models.openai.GPT_4o_Realtime,
|
|
426
|
-
Models.openai.GPT_4o_Mini_Realtime,
|
|
427
|
-
Models.openai.GPT_Realtime_15,
|
|
428
|
-
Models.openai.GPT_Realtime_Mini,
|
|
429
|
-
];
|
|
430
|
-
export const XaiVideoModels = [Models.xai.GrokImagineVideo];
|
|
431
|
-
|
|
432
|
-
export const GoogleTTSModels = [
|
|
433
|
-
Models.google.Gemini_25_Flash_TTS,
|
|
434
|
-
Models.google.Gemini_25_Pro_TTS,
|
|
435
|
-
Models.google.Gemini_20_Flash_TTS,
|
|
436
|
-
];
|
|
437
|
-
|
|
438
|
-
export const GoogleVideoModels = [
|
|
439
|
-
Models.google.Veo_2,
|
|
440
|
-
Models.google.Veo_3,
|
|
441
|
-
Models.google.Veo_3_Fast,
|
|
442
|
-
Models.google.Veo_3_1,
|
|
443
|
-
Models.google.Veo_3_1_Fast,
|
|
444
|
-
];
|
|
445
|
-
|
|
446
|
-
export const GoogleEmbeddingModels = [
|
|
447
|
-
EmbeddingModels.google.Gemini_Embedding,
|
|
448
|
-
EmbeddingModels.google.Gemini_Embedding_001,
|
|
449
|
-
];
|