@codeworksh/aikit 0.4.1-dev.20260530173432 → 0.4.1-dev.20260530183219
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/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as protocolForPackage, c as ModelCatalog, l as lazy, n as isAISDKPackage, s as Model, u as Filesystem } from "./registry-
|
|
2
|
+
import { a as protocolForPackage, c as ModelCatalog, l as lazy, n as isAISDKPackage, s as Model, u as Filesystem } from "./registry-Cfdk78qk.mjs";
|
|
3
3
|
import { c as openAICodexHeaders, n as OpenAICodexOAuthClient, t as JsonOpenAICodexAuthStorage } from "./codex-DfYk740t.mjs";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import yargs from "yargs";
|
|
@@ -19,7 +19,7 @@ function modelsDevURL() {
|
|
|
19
19
|
return process.env.OPENCODE_MODELS_URL || "https://models.dev";
|
|
20
20
|
}
|
|
21
21
|
function modelsDevPath() {
|
|
22
|
-
return process.env.
|
|
22
|
+
return process.env.OPENCODE_MODELS_DEV_FILE;
|
|
23
23
|
}
|
|
24
24
|
const modelsDevData = lazy(async () => {
|
|
25
25
|
const path = modelsDevPath();
|
|
@@ -93,7 +93,7 @@ const ModelgenCommand = {
|
|
|
93
93
|
describe: "generate models.gen.json",
|
|
94
94
|
builder: (yargs) => yargs.positional("path", {
|
|
95
95
|
type: "string",
|
|
96
|
-
describe: "output path (defaults to
|
|
96
|
+
describe: "output path (defaults to CODEWORK_MODELS_FILE or ./models.gen.json)"
|
|
97
97
|
}),
|
|
98
98
|
handler: async (args) => {
|
|
99
99
|
const path = await generateModels(args);
|
package/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.mjs","names":["pkg.version"],"sources":["../../package.json","../../src/cli/modelgen.ts","../../src/cli/oauth.ts","../../src/cli.ts"],"sourcesContent":["","import { Filesystem, lazy } from \"@codeworksh/utils\";\nimport { resolve } from \"node:path\";\nimport { mapValues, pickBy, pipe } from \"remeda\";\nimport type { CommandModule } from \"yargs\";\nimport { DEFAULT_AI_SDK_PACKAGE, isAISDKPackage, protocolForPackage } from \"../llm/registry\";\nimport { ModelCatalog } from \"../model/catalog\";\nimport { Model } from \"../model/model\";\n\nconst DEFAULT_PROVIDER_BASE_URLS: Partial<Record<Model.KnownProviderEnum, string>> = {\n\t[Model.KnownProviderEnum.anthropic]: \"https://api.anthropic.com/v1\",\n\t[Model.KnownProviderEnum.openai]: \"https://api.openai.com/v1\",\n\t[Model.KnownProviderEnum.openrouter]: \"https://openrouter.ai/api/v1\",\n\t[Model.KnownProviderEnum.xai]: \"https://api.x.ai/v1\",\n};\n\ninterface ModelsDevModel {\n\tid: string;\n\tname: string;\n\tfamily: string;\n\tattachment: boolean;\n\treasoning?: boolean;\n\ttool_call?: boolean;\n\ttemperature?: boolean;\n\tknowledge?: string | boolean;\n\trelease_date: string;\n\tlast_updated: string;\n\tmodalities: {\n\t\tinput?: string[];\n\t\toutput: string[];\n\t};\n\topen_weights: boolean;\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\tcost?: {\n\t\tinput?: number;\n\t\toutput?: number;\n\t\tcache_read?: number;\n\t\tcache_write?: number;\n\t};\n\tlimit?: {\n\t\tcontext?: number;\n\t\toutput?: number;\n\t};\n\tstructured_output?: boolean;\n\tprovider?: {\n\t\tnpm?: string;\n\t\tapi?: string;\n\t\theaders?: Record<string, string>;\n\t};\n}\n\ninterface ModelsDevProvider {\n\tid: string;\n\tenv: string[];\n\tnpm?: string;\n\tapi?: string;\n\tname: string;\n\tdoc?: string; // reference documentation link\n\tkey?: string; // runtime placeholder for api/oauth key\n\theaders?: Record<string, string>; // custom overrides at provider level\n\tmodels: Record<string, ModelsDevModel>;\n}\n\nexport type BuiltInModels = Partial<Record<string, Record<string, Model.Info>>>;\n\n// Doesn't represent the full spec from models.dev.\n// Represents the provider entries on a best-effort basis.\ntype ModelsDevCatalog = Record<string, ModelsDevProvider>;\ntype LazyModelsDevCatalog = ReturnType<typeof lazy<Promise<ModelsDevCatalog>>>;\n\nfunction modelsDevURL(): string {\n\treturn process.env.OPENCODE_MODELS_URL || \"https://models.dev\";\n}\n\nfunction modelsDevPath(): string | undefined {\n\treturn process.env.CODEWORK_MODELS_DEV;\n}\n\nconst modelsDevData: LazyModelsDevCatalog = lazy(async () => {\n\tconst path = modelsDevPath();\n\tif (path) {\n\t\tconst result = await Filesystem.readJson<ModelsDevCatalog>(path).catch(() => undefined);\n\t\tif (result) return result;\n\t}\n\n\tconst json = await fetch(`${modelsDevURL()}/api.json`).then((x) => x.text());\n\treturn JSON.parse(json) as ModelsDevCatalog;\n});\n\nasync function pullModelsDevData(): Promise<ModelsDevCatalog> {\n\treturn modelsDevData();\n}\n\nfunction toModelValue(providerId: string, provider: ModelsDevProvider, model: ModelsDevModel): Model.Info | undefined {\n\treturn applyModification(providerId, provider, model);\n}\n\nasync function loadBuiltInFromModelsDev() {\n\tconst catalog = await pullModelsDevData();\n\treturn pipe(\n\t\tcatalog,\n\t\tpickBy((provider) =>\n\t\t\tObject.values(provider.models).some(\n\t\t\t\t(model) => Boolean(model.tool_call) && isAISDKPackage(resolveModelNpm(provider, model)),\n\t\t\t),\n\t\t),\n\t\tmapValues((provider, providerId) =>\n\t\t\tpipe(\n\t\t\t\tprovider.models,\n\t\t\t\tpickBy((model) => Boolean(model.tool_call) && isAISDKPackage(resolveModelNpm(provider, model))),\n\t\t\t\tmapValues((model) => toModelValue(providerId, provider, model)),\n\t\t\t\tpickBy((model): model is Model.Info => model !== undefined),\n\t\t\t),\n\t\t),\n\t) as BuiltInModels;\n}\n\ntype ThinkingLevelMap = NonNullable<Model.Info[\"thinkingLevelMap\"]>;\n\nfunction resolveModelNpm(provider: ModelsDevProvider, model: ModelsDevModel): string {\n\treturn model.provider?.npm ?? provider.npm ?? DEFAULT_AI_SDK_PACKAGE;\n}\n\nfunction resolveModelBaseUrl(provider: ModelsDevProvider, model: ModelsDevModel): string {\n\tconst npm = resolveModelNpm(provider, model);\n\tconst protocol = protocolForPackage(npm);\n\treturn model.baseUrl ?? model.provider?.api ?? provider.api ?? DEFAULT_PROVIDER_BASE_URLS[protocol] ?? \"\";\n}\n\nfunction resolveModelAPIMethod(npm: string): Model.APIMethodEnum {\n\tconst protocol = protocolForPackage(npm);\n\t// `By default, xai(modelId) uses the Chat API.\n\t// To use the Responses API with server-side agentic tools, explicitly use xai.responses(modelId).`\n\t// References: https://ai-sdk.dev/providers/ai-sdk-providers/xai\n\tif (protocol === Model.KnownProviderEnum.openai || protocol === Model.KnownProviderEnum.xai) {\n\t\treturn Model.APIMethodEnum.responses;\n\t}\n\treturn Model.APIMethodEnum.languageModel;\n}\n\nfunction resolveProviderOptionsKey(protocol: Model.KnownProviderEnum): string {\n\tif (protocol === Model.KnownProviderEnum.openaiCompatible) return \"openai-compatible\";\n\tif (protocol === Model.KnownProviderEnum.googleVertex) return \"google-vertex\";\n\tif (protocol === Model.KnownProviderEnum.googleVertexAnthropic) return \"google-vertex-anthropic\";\n\treturn protocol;\n}\n\n//\n// adhoc helpers variations\nconst OPENAI_RESPONSES_NONE_REASONING_MODELS = new Set([\n\t\"gpt-5.1\",\n\t\"gpt-5.2\",\n\t\"gpt-5.3-codex\",\n\t\"gpt-5.4\",\n\t\"gpt-5.4-mini\",\n\t\"gpt-5.4-nano\",\n\t\"gpt-5.5\",\n]);\n\nfunction supportsOpenAiXhigh(modelId: string): boolean {\n\treturn (\n\t\tmodelId.includes(\"gpt-5.2\") ||\n\t\tmodelId.includes(\"gpt-5.3\") ||\n\t\tmodelId.includes(\"gpt-5.4\") ||\n\t\tmodelId.includes(\"gpt-5.5\")\n\t);\n}\n\nfunction mergeThinkingLevelMap(model: Model.Info, map: ThinkingLevelMap): void {\n\tmodel.thinkingLevelMap = { ...model.thinkingLevelMap, ...map };\n}\n\nfunction applyThinkingLevelMetadata(model: Model.Info): void {\n\tif (model.protocol === Model.KnownProviderEnum.openai && model.id.startsWith(\"gpt-5\")) {\n\t\tmergeThinkingLevelMap(model, { off: null });\n\t}\n\tif (\n\t\tmodel.protocol === Model.KnownProviderEnum.openai &&\n\t\tmodel.provider.id === \"openai\" &&\n\t\tOPENAI_RESPONSES_NONE_REASONING_MODELS.has(model.id)\n\t) {\n\t\tmergeThinkingLevelMap(model, { off: \"none\" });\n\t}\n\tif (supportsOpenAiXhigh(model.id)) {\n\t\tmergeThinkingLevelMap(model, { xhigh: \"xhigh\" });\n\t}\n\tif (model.id.includes(\"opus-4-6\") || model.id.includes(\"opus-4.6\")) {\n\t\tmergeThinkingLevelMap(model, { xhigh: \"max\" });\n\t}\n\tif (model.id.includes(\"opus-4-7\") || model.id.includes(\"opus-4.7\")) {\n\t\tmergeThinkingLevelMap(model, { xhigh: \"xhigh\" });\n\t}\n}\n\nexport async function generateModels(args: { path?: string } = {}): Promise<string> {\n\tconst path = resolve(args.path ?? ModelCatalog.path());\n\tconst models = await loadBuiltInFromModelsDev();\n\tawait Filesystem.writeJson(path, models);\n\treturn path;\n}\n\n//\n// CLI entry\nexport const ModelgenCommand: CommandModule<object, { path?: string }> = {\n\tcommand: \"modelgen [path]\",\n\tdescribe: \"generate models.gen.json\",\n\tbuilder: (yargs) =>\n\t\tyargs.positional(\"path\", {\n\t\t\ttype: \"string\",\n\t\t\tdescribe: \"output path (defaults to CODEWORK_MODELGEN_PATH or ./models.gen.json)\",\n\t\t}),\n\thandler: async (args) => {\n\t\tconst path = await generateModels(args);\n\t\tconsole.log(`Generated model catalog at ${path}`);\n\t},\n};\n\nexport function applyModification(\n\tproviderId: string,\n\tprovider: ModelsDevProvider,\n\tmodel: ModelsDevModel,\n): Model.Info | undefined {\n\tconst npm = resolveModelNpm(provider, model);\n\tif (!isAISDKPackage(npm)) return;\n\n\tconst protocol = protocolForPackage(npm);\n\tconst baseUrl = resolveModelBaseUrl(provider, model);\n\tconst providerInfo: Model.ProviderInfo = {\n\t\tid: providerId,\n\t\tname: provider.name,\n\t\tsource: \"api\",\n\t\tenv: provider.env,\n\t};\n\tif (provider.key) providerInfo.key = provider.key;\n\tconst api: Model.APIMetadata = {\n\t\tid: model.id,\n\t\tmethod: resolveModelAPIMethod(npm),\n\t};\n\tif (baseUrl) api.url = baseUrl;\n\n\tconst info: Model.Info = {\n\t\tid: model.id,\n\t\tname: model.name,\n\t\tprovider: providerInfo,\n\t\tbaseUrl,\n\t\treasoning: Boolean(model.reasoning),\n\t\tinput: Model.normalizeInput(model.modalities.input),\n\t\tcost: {\n\t\t\tinput: model.cost?.input ?? 0,\n\t\t\toutput: model.cost?.output ?? 0,\n\t\t\tcacheRead: model.cost?.cache_read ?? 0,\n\t\t\tcacheWrite: model.cost?.cache_write ?? 0,\n\t\t},\n\t\tcontextWindow: model.limit?.context ?? 4096,\n\t\tmaxTokens: model.limit?.output ?? 4096,\n\t\theaders: {\n\t\t\t...provider.headers,\n\t\t\t...model.provider?.headers,\n\t\t\t...model.headers,\n\t\t},\n\t\tnpm,\n\t\tapi,\n\t\tproviderOptionsKey: resolveProviderOptionsKey(protocol),\n\t\tprotocol,\n\t};\n\tif (Object.keys(info.headers ?? {}).length === 0) delete info.headers;\n\tapplyThinkingLevelMetadata(info);\n\treturn info;\n}\n","import type { CommandModule } from \"yargs\";\nimport {\n\tJsonOpenAICodexAuthStorage,\n\tOpenAICodexOAuthClient,\n\ttype OpenAICodexOAuthCredentials,\n\topenAICodexHeaders,\n} from \"../oauth/openai/codex\";\n\ntype AuthArgs = {\n\topenaiCodex?: boolean;\n\tauthFile?: string;\n\tbrowser?: boolean;\n\tmanual?: boolean;\n\tstatus?: boolean;\n\trefresh?: boolean;\n\tlogout?: boolean;\n\tjson?: boolean;\n\tprintHeaders?: boolean;\n\toriginator?: string;\n};\n\nasync function promptLine(message: string): Promise<string> {\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\treturn await rl.question(`${message} `);\n\t} finally {\n\t\trl.close();\n\t}\n}\n\nasync function openBrowser(url: string): Promise<void> {\n\tconst { spawn } = await import(\"node:child_process\");\n\tconst command =\n\t\tprocess.platform === \"darwin\"\n\t\t\t? { file: \"open\", args: [url] }\n\t\t\t: process.platform === \"win32\"\n\t\t\t\t? { file: \"cmd\", args: [\"/c\", \"start\", \"\", url] }\n\t\t\t\t: { file: \"xdg-open\", args: [url] };\n\n\tconst child = spawn(command.file, command.args, {\n\t\tdetached: true,\n\t\tstdio: \"ignore\",\n\t});\n\tchild.unref();\n}\n\nfunction printCredentials(\n\tcredentials: OpenAICodexOAuthCredentials,\n\toptions: { json?: boolean; printHeaders?: boolean },\n) {\n\tif (options.json) {\n\t\tconsole.log(\n\t\t\tJSON.stringify(\n\t\t\t\t{\n\t\t\t\t\taccountId: credentials.accountId,\n\t\t\t\t\texpires: credentials.expires,\n\t\t\t\t\texpiresAt: new Date(credentials.expires).toISOString(),\n\t\t\t\t\theaders: options.printHeaders ? openAICodexHeaders(credentials) : undefined,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t);\n\t\treturn;\n\t}\n\n\tconsole.log(`Account: ${credentials.accountId}`);\n\tconsole.log(`Expires: ${new Date(credentials.expires).toLocaleString()}`);\n\tif (options.printHeaders) {\n\t\tconsole.log(\"Headers:\");\n\t\tfor (const [name, value] of Object.entries(openAICodexHeaders(credentials))) {\n\t\t\tconsole.log(`${name}: ${value}`);\n\t\t}\n\t}\n}\n\nasync function runOpenAICodexAuth(args: AuthArgs): Promise<void> {\n\tconst storage = new JsonOpenAICodexAuthStorage({ path: args.authFile });\n\tconst client = new OpenAICodexOAuthClient({ storage });\n\n\tif (args.logout) {\n\t\tawait client.logout();\n\t\tconsole.log(`Cleared OpenAI Codex credentials from ${storage.path}`);\n\t\treturn;\n\t}\n\n\tif (args.status) {\n\t\tconst credentials = await storage.get();\n\t\tif (!credentials) {\n\t\t\tconsole.log(`No OpenAI Codex credentials found at ${storage.path}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn;\n\t\t}\n\t\tprintCredentials(credentials, args);\n\t\treturn;\n\t}\n\n\tif (args.refresh) {\n\t\tconst credentials = await client.getCredentials();\n\t\tif (!credentials) {\n\t\t\tconsole.log(`No OpenAI Codex credentials found at ${storage.path}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(`Refreshed OpenAI Codex credentials in ${storage.path}`);\n\t\tprintCredentials(credentials, args);\n\t\treturn;\n\t}\n\n\tconst credentials = await client.login({\n\t\toriginator: args.originator,\n\t\tonAuth: (info) => {\n\t\t\tconsole.log(info.instructions ?? \"Complete OpenAI Codex authentication in your browser.\");\n\t\t\tconsole.log(info.url);\n\t\t\tif (args.browser !== false) {\n\t\t\t\tvoid openBrowser(info.url).catch((error) => {\n\t\t\t\t\tconsole.warn(`Failed to open browser: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tonPrompt: async (prompt) => promptLine(prompt.message),\n\t\tonManualCodeInput: args.manual\n\t\t\t? async () => promptLine(\"Paste the redirect URL or authorization code, or wait for browser callback:\")\n\t\t\t: undefined,\n\t});\n\n\tconsole.log(`Saved OpenAI Codex credentials to ${storage.path}`);\n\tprintCredentials(credentials, args);\n}\n\nexport const OAuthCommand: CommandModule<object, AuthArgs> = {\n\tcommand: \"auth\",\n\tdescribe: \"manage OAuth credentials\",\n\tbuilder: (yargs) =>\n\t\tyargs\n\t\t\t.option(\"openai-codex\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"use OpenAI Codex OAuth\",\n\t\t\t})\n\t\t\t.option(\"auth-file\", {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescribe: \"path to auth.json (defaults to CODEWORK_CREDENTIALS or ~/.codework/aikit/auth.json)\",\n\t\t\t})\n\t\t\t.option(\"browser\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: true,\n\t\t\t\tdescribe: \"open the authorization URL in the default browser\",\n\t\t\t})\n\t\t\t.option(\"manual\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t\tdescribe: \"also prompt for a pasted redirect URL or authorization code\",\n\t\t\t})\n\t\t\t.option(\"originator\", {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: \"codework\",\n\t\t\t\tdescribe: \"OAuth originator value\",\n\t\t\t})\n\t\t\t.option(\"status\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"show stored credential status without refreshing\",\n\t\t\t})\n\t\t\t.option(\"refresh\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"refresh stored credentials if expired\",\n\t\t\t})\n\t\t\t.option(\"logout\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"clear stored credentials\",\n\t\t\t})\n\t\t\t.option(\"json\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"print machine-readable output\",\n\t\t\t})\n\t\t\t.option(\"print-headers\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"print request headers for Codex API calls\",\n\t\t\t})\n\t\t\t.check((args) => {\n\t\t\t\tif (!args.openaiCodex) throw new Error(\"Choose an auth provider, for example: auth --openai-codex\");\n\t\t\t\tconst actions = [args.status, args.refresh, args.logout].filter(Boolean).length;\n\t\t\t\tif (actions > 1) throw new Error(\"Choose only one of --status, --refresh, or --logout\");\n\t\t\t\treturn true;\n\t\t\t}),\n\thandler: async (args) => {\n\t\tawait runOpenAICodexAuth(args);\n\t},\n};\n","#!/usr/bin/env node\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { ModelgenCommand } from \"./cli/modelgen\";\nimport { OAuthCommand } from \"./cli/oauth\";\n\nconst cli = yargs(hideBin(process.argv))\n\t.scriptName(\"aikit\")\n\t.wrap(100)\n\t.help(\"help\", \"show help\")\n\t.alias(\"help\", \"h\")\n\t.version(\"version\", \"show version number\", pkg.version)\n\t.alias(\"version\", \"v\")\n\t.command(ModelgenCommand)\n\t.command(OAuthCommand)\n\t.demandCommand(1, \"Choose a command\")\n\t.strict()\n\t.fail((message, error) => {\n\t\tif (error) throw error;\n\t\tif (message) throw new Error(message);\n\t});\n\ntry {\n\tawait cli.parse();\n} catch (error) {\n\tprocess.exitCode = 1;\n\tconsole.error(error instanceof Error ? error.message : String(error));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.mjs","names":["pkg.version"],"sources":["../../package.json","../../src/cli/modelgen.ts","../../src/cli/oauth.ts","../../src/cli.ts"],"sourcesContent":["","import { Filesystem, lazy } from \"@codeworksh/utils\";\nimport { resolve } from \"node:path\";\nimport { mapValues, pickBy, pipe } from \"remeda\";\nimport type { CommandModule } from \"yargs\";\nimport { DEFAULT_AI_SDK_PACKAGE, isAISDKPackage, protocolForPackage } from \"../llm/registry\";\nimport { ModelCatalog } from \"../model/catalog\";\nimport { Model } from \"../model/model\";\n\nconst DEFAULT_PROVIDER_BASE_URLS: Partial<Record<Model.KnownProviderEnum, string>> = {\n\t[Model.KnownProviderEnum.anthropic]: \"https://api.anthropic.com/v1\",\n\t[Model.KnownProviderEnum.openai]: \"https://api.openai.com/v1\",\n\t[Model.KnownProviderEnum.openrouter]: \"https://openrouter.ai/api/v1\",\n\t[Model.KnownProviderEnum.xai]: \"https://api.x.ai/v1\",\n};\n\ninterface ModelsDevModel {\n\tid: string;\n\tname: string;\n\tfamily: string;\n\tattachment: boolean;\n\treasoning?: boolean;\n\ttool_call?: boolean;\n\ttemperature?: boolean;\n\tknowledge?: string | boolean;\n\trelease_date: string;\n\tlast_updated: string;\n\tmodalities: {\n\t\tinput?: string[];\n\t\toutput: string[];\n\t};\n\topen_weights: boolean;\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\tcost?: {\n\t\tinput?: number;\n\t\toutput?: number;\n\t\tcache_read?: number;\n\t\tcache_write?: number;\n\t};\n\tlimit?: {\n\t\tcontext?: number;\n\t\toutput?: number;\n\t};\n\tstructured_output?: boolean;\n\tprovider?: {\n\t\tnpm?: string;\n\t\tapi?: string;\n\t\theaders?: Record<string, string>;\n\t};\n}\n\ninterface ModelsDevProvider {\n\tid: string;\n\tenv: string[];\n\tnpm?: string;\n\tapi?: string;\n\tname: string;\n\tdoc?: string; // reference documentation link\n\tkey?: string; // runtime placeholder for api/oauth key\n\theaders?: Record<string, string>; // custom overrides at provider level\n\tmodels: Record<string, ModelsDevModel>;\n}\n\nexport type BuiltInModels = Partial<Record<string, Record<string, Model.Info>>>;\n\n// Doesn't represent the full spec from models.dev.\n// Represents the provider entries on a best-effort basis.\ntype ModelsDevCatalog = Record<string, ModelsDevProvider>;\ntype LazyModelsDevCatalog = ReturnType<typeof lazy<Promise<ModelsDevCatalog>>>;\n\nfunction modelsDevURL(): string {\n\treturn process.env.OPENCODE_MODELS_URL || \"https://models.dev\";\n}\n\nfunction modelsDevPath(): string | undefined {\n\treturn process.env.OPENCODE_MODELS_DEV_FILE;\n}\n\nconst modelsDevData: LazyModelsDevCatalog = lazy(async () => {\n\tconst path = modelsDevPath();\n\tif (path) {\n\t\tconst result = await Filesystem.readJson<ModelsDevCatalog>(path).catch(() => undefined);\n\t\tif (result) return result;\n\t}\n\n\tconst json = await fetch(`${modelsDevURL()}/api.json`).then((x) => x.text());\n\treturn JSON.parse(json) as ModelsDevCatalog;\n});\n\nasync function pullModelsDevData(): Promise<ModelsDevCatalog> {\n\treturn modelsDevData();\n}\n\nfunction toModelValue(providerId: string, provider: ModelsDevProvider, model: ModelsDevModel): Model.Info | undefined {\n\treturn applyModification(providerId, provider, model);\n}\n\nasync function loadBuiltInFromModelsDev() {\n\tconst catalog = await pullModelsDevData();\n\treturn pipe(\n\t\tcatalog,\n\t\tpickBy((provider) =>\n\t\t\tObject.values(provider.models).some(\n\t\t\t\t(model) => Boolean(model.tool_call) && isAISDKPackage(resolveModelNpm(provider, model)),\n\t\t\t),\n\t\t),\n\t\tmapValues((provider, providerId) =>\n\t\t\tpipe(\n\t\t\t\tprovider.models,\n\t\t\t\tpickBy((model) => Boolean(model.tool_call) && isAISDKPackage(resolveModelNpm(provider, model))),\n\t\t\t\tmapValues((model) => toModelValue(providerId, provider, model)),\n\t\t\t\tpickBy((model): model is Model.Info => model !== undefined),\n\t\t\t),\n\t\t),\n\t) as BuiltInModels;\n}\n\ntype ThinkingLevelMap = NonNullable<Model.Info[\"thinkingLevelMap\"]>;\n\nfunction resolveModelNpm(provider: ModelsDevProvider, model: ModelsDevModel): string {\n\treturn model.provider?.npm ?? provider.npm ?? DEFAULT_AI_SDK_PACKAGE;\n}\n\nfunction resolveModelBaseUrl(provider: ModelsDevProvider, model: ModelsDevModel): string {\n\tconst npm = resolveModelNpm(provider, model);\n\tconst protocol = protocolForPackage(npm);\n\treturn model.baseUrl ?? model.provider?.api ?? provider.api ?? DEFAULT_PROVIDER_BASE_URLS[protocol] ?? \"\";\n}\n\nfunction resolveModelAPIMethod(npm: string): Model.APIMethodEnum {\n\tconst protocol = protocolForPackage(npm);\n\t// `By default, xai(modelId) uses the Chat API.\n\t// To use the Responses API with server-side agentic tools, explicitly use xai.responses(modelId).`\n\t// References: https://ai-sdk.dev/providers/ai-sdk-providers/xai\n\tif (protocol === Model.KnownProviderEnum.openai || protocol === Model.KnownProviderEnum.xai) {\n\t\treturn Model.APIMethodEnum.responses;\n\t}\n\treturn Model.APIMethodEnum.languageModel;\n}\n\nfunction resolveProviderOptionsKey(protocol: Model.KnownProviderEnum): string {\n\tif (protocol === Model.KnownProviderEnum.openaiCompatible) return \"openai-compatible\";\n\tif (protocol === Model.KnownProviderEnum.googleVertex) return \"google-vertex\";\n\tif (protocol === Model.KnownProviderEnum.googleVertexAnthropic) return \"google-vertex-anthropic\";\n\treturn protocol;\n}\n\n//\n// adhoc helpers variations\nconst OPENAI_RESPONSES_NONE_REASONING_MODELS = new Set([\n\t\"gpt-5.1\",\n\t\"gpt-5.2\",\n\t\"gpt-5.3-codex\",\n\t\"gpt-5.4\",\n\t\"gpt-5.4-mini\",\n\t\"gpt-5.4-nano\",\n\t\"gpt-5.5\",\n]);\n\nfunction supportsOpenAiXhigh(modelId: string): boolean {\n\treturn (\n\t\tmodelId.includes(\"gpt-5.2\") ||\n\t\tmodelId.includes(\"gpt-5.3\") ||\n\t\tmodelId.includes(\"gpt-5.4\") ||\n\t\tmodelId.includes(\"gpt-5.5\")\n\t);\n}\n\nfunction mergeThinkingLevelMap(model: Model.Info, map: ThinkingLevelMap): void {\n\tmodel.thinkingLevelMap = { ...model.thinkingLevelMap, ...map };\n}\n\nfunction applyThinkingLevelMetadata(model: Model.Info): void {\n\tif (model.protocol === Model.KnownProviderEnum.openai && model.id.startsWith(\"gpt-5\")) {\n\t\tmergeThinkingLevelMap(model, { off: null });\n\t}\n\tif (\n\t\tmodel.protocol === Model.KnownProviderEnum.openai &&\n\t\tmodel.provider.id === \"openai\" &&\n\t\tOPENAI_RESPONSES_NONE_REASONING_MODELS.has(model.id)\n\t) {\n\t\tmergeThinkingLevelMap(model, { off: \"none\" });\n\t}\n\tif (supportsOpenAiXhigh(model.id)) {\n\t\tmergeThinkingLevelMap(model, { xhigh: \"xhigh\" });\n\t}\n\tif (model.id.includes(\"opus-4-6\") || model.id.includes(\"opus-4.6\")) {\n\t\tmergeThinkingLevelMap(model, { xhigh: \"max\" });\n\t}\n\tif (model.id.includes(\"opus-4-7\") || model.id.includes(\"opus-4.7\")) {\n\t\tmergeThinkingLevelMap(model, { xhigh: \"xhigh\" });\n\t}\n}\n\nexport async function generateModels(args: { path?: string } = {}): Promise<string> {\n\tconst path = resolve(args.path ?? ModelCatalog.path());\n\tconst models = await loadBuiltInFromModelsDev();\n\tawait Filesystem.writeJson(path, models);\n\treturn path;\n}\n\n//\n// CLI entry\nexport const ModelgenCommand: CommandModule<object, { path?: string }> = {\n\tcommand: \"modelgen [path]\",\n\tdescribe: \"generate models.gen.json\",\n\tbuilder: (yargs) =>\n\t\tyargs.positional(\"path\", {\n\t\t\ttype: \"string\",\n\t\t\tdescribe: \"output path (defaults to CODEWORK_MODELS_FILE or ./models.gen.json)\",\n\t\t}),\n\thandler: async (args) => {\n\t\tconst path = await generateModels(args);\n\t\tconsole.log(`Generated model catalog at ${path}`);\n\t},\n};\n\nexport function applyModification(\n\tproviderId: string,\n\tprovider: ModelsDevProvider,\n\tmodel: ModelsDevModel,\n): Model.Info | undefined {\n\tconst npm = resolveModelNpm(provider, model);\n\tif (!isAISDKPackage(npm)) return;\n\n\tconst protocol = protocolForPackage(npm);\n\tconst baseUrl = resolveModelBaseUrl(provider, model);\n\tconst providerInfo: Model.ProviderInfo = {\n\t\tid: providerId,\n\t\tname: provider.name,\n\t\tsource: \"api\",\n\t\tenv: provider.env,\n\t};\n\tif (provider.key) providerInfo.key = provider.key;\n\tconst api: Model.APIMetadata = {\n\t\tid: model.id,\n\t\tmethod: resolveModelAPIMethod(npm),\n\t};\n\tif (baseUrl) api.url = baseUrl;\n\n\tconst info: Model.Info = {\n\t\tid: model.id,\n\t\tname: model.name,\n\t\tprovider: providerInfo,\n\t\tbaseUrl,\n\t\treasoning: Boolean(model.reasoning),\n\t\tinput: Model.normalizeInput(model.modalities.input),\n\t\tcost: {\n\t\t\tinput: model.cost?.input ?? 0,\n\t\t\toutput: model.cost?.output ?? 0,\n\t\t\tcacheRead: model.cost?.cache_read ?? 0,\n\t\t\tcacheWrite: model.cost?.cache_write ?? 0,\n\t\t},\n\t\tcontextWindow: model.limit?.context ?? 4096,\n\t\tmaxTokens: model.limit?.output ?? 4096,\n\t\theaders: {\n\t\t\t...provider.headers,\n\t\t\t...model.provider?.headers,\n\t\t\t...model.headers,\n\t\t},\n\t\tnpm,\n\t\tapi,\n\t\tproviderOptionsKey: resolveProviderOptionsKey(protocol),\n\t\tprotocol,\n\t};\n\tif (Object.keys(info.headers ?? {}).length === 0) delete info.headers;\n\tapplyThinkingLevelMetadata(info);\n\treturn info;\n}\n","import type { CommandModule } from \"yargs\";\nimport {\n\tJsonOpenAICodexAuthStorage,\n\tOpenAICodexOAuthClient,\n\ttype OpenAICodexOAuthCredentials,\n\topenAICodexHeaders,\n} from \"../oauth/openai/codex\";\n\ntype AuthArgs = {\n\topenaiCodex?: boolean;\n\tauthFile?: string;\n\tbrowser?: boolean;\n\tmanual?: boolean;\n\tstatus?: boolean;\n\trefresh?: boolean;\n\tlogout?: boolean;\n\tjson?: boolean;\n\tprintHeaders?: boolean;\n\toriginator?: string;\n};\n\nasync function promptLine(message: string): Promise<string> {\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\treturn await rl.question(`${message} `);\n\t} finally {\n\t\trl.close();\n\t}\n}\n\nasync function openBrowser(url: string): Promise<void> {\n\tconst { spawn } = await import(\"node:child_process\");\n\tconst command =\n\t\tprocess.platform === \"darwin\"\n\t\t\t? { file: \"open\", args: [url] }\n\t\t\t: process.platform === \"win32\"\n\t\t\t\t? { file: \"cmd\", args: [\"/c\", \"start\", \"\", url] }\n\t\t\t\t: { file: \"xdg-open\", args: [url] };\n\n\tconst child = spawn(command.file, command.args, {\n\t\tdetached: true,\n\t\tstdio: \"ignore\",\n\t});\n\tchild.unref();\n}\n\nfunction printCredentials(\n\tcredentials: OpenAICodexOAuthCredentials,\n\toptions: { json?: boolean; printHeaders?: boolean },\n) {\n\tif (options.json) {\n\t\tconsole.log(\n\t\t\tJSON.stringify(\n\t\t\t\t{\n\t\t\t\t\taccountId: credentials.accountId,\n\t\t\t\t\texpires: credentials.expires,\n\t\t\t\t\texpiresAt: new Date(credentials.expires).toISOString(),\n\t\t\t\t\theaders: options.printHeaders ? openAICodexHeaders(credentials) : undefined,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t);\n\t\treturn;\n\t}\n\n\tconsole.log(`Account: ${credentials.accountId}`);\n\tconsole.log(`Expires: ${new Date(credentials.expires).toLocaleString()}`);\n\tif (options.printHeaders) {\n\t\tconsole.log(\"Headers:\");\n\t\tfor (const [name, value] of Object.entries(openAICodexHeaders(credentials))) {\n\t\t\tconsole.log(`${name}: ${value}`);\n\t\t}\n\t}\n}\n\nasync function runOpenAICodexAuth(args: AuthArgs): Promise<void> {\n\tconst storage = new JsonOpenAICodexAuthStorage({ path: args.authFile });\n\tconst client = new OpenAICodexOAuthClient({ storage });\n\n\tif (args.logout) {\n\t\tawait client.logout();\n\t\tconsole.log(`Cleared OpenAI Codex credentials from ${storage.path}`);\n\t\treturn;\n\t}\n\n\tif (args.status) {\n\t\tconst credentials = await storage.get();\n\t\tif (!credentials) {\n\t\t\tconsole.log(`No OpenAI Codex credentials found at ${storage.path}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn;\n\t\t}\n\t\tprintCredentials(credentials, args);\n\t\treturn;\n\t}\n\n\tif (args.refresh) {\n\t\tconst credentials = await client.getCredentials();\n\t\tif (!credentials) {\n\t\t\tconsole.log(`No OpenAI Codex credentials found at ${storage.path}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(`Refreshed OpenAI Codex credentials in ${storage.path}`);\n\t\tprintCredentials(credentials, args);\n\t\treturn;\n\t}\n\n\tconst credentials = await client.login({\n\t\toriginator: args.originator,\n\t\tonAuth: (info) => {\n\t\t\tconsole.log(info.instructions ?? \"Complete OpenAI Codex authentication in your browser.\");\n\t\t\tconsole.log(info.url);\n\t\t\tif (args.browser !== false) {\n\t\t\t\tvoid openBrowser(info.url).catch((error) => {\n\t\t\t\t\tconsole.warn(`Failed to open browser: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tonPrompt: async (prompt) => promptLine(prompt.message),\n\t\tonManualCodeInput: args.manual\n\t\t\t? async () => promptLine(\"Paste the redirect URL or authorization code, or wait for browser callback:\")\n\t\t\t: undefined,\n\t});\n\n\tconsole.log(`Saved OpenAI Codex credentials to ${storage.path}`);\n\tprintCredentials(credentials, args);\n}\n\nexport const OAuthCommand: CommandModule<object, AuthArgs> = {\n\tcommand: \"auth\",\n\tdescribe: \"manage OAuth credentials\",\n\tbuilder: (yargs) =>\n\t\tyargs\n\t\t\t.option(\"openai-codex\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"use OpenAI Codex OAuth\",\n\t\t\t})\n\t\t\t.option(\"auth-file\", {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescribe: \"path to auth.json (defaults to CODEWORK_CREDENTIALS or ~/.codework/aikit/auth.json)\",\n\t\t\t})\n\t\t\t.option(\"browser\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: true,\n\t\t\t\tdescribe: \"open the authorization URL in the default browser\",\n\t\t\t})\n\t\t\t.option(\"manual\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t\tdescribe: \"also prompt for a pasted redirect URL or authorization code\",\n\t\t\t})\n\t\t\t.option(\"originator\", {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: \"codework\",\n\t\t\t\tdescribe: \"OAuth originator value\",\n\t\t\t})\n\t\t\t.option(\"status\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"show stored credential status without refreshing\",\n\t\t\t})\n\t\t\t.option(\"refresh\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"refresh stored credentials if expired\",\n\t\t\t})\n\t\t\t.option(\"logout\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"clear stored credentials\",\n\t\t\t})\n\t\t\t.option(\"json\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"print machine-readable output\",\n\t\t\t})\n\t\t\t.option(\"print-headers\", {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdescribe: \"print request headers for Codex API calls\",\n\t\t\t})\n\t\t\t.check((args) => {\n\t\t\t\tif (!args.openaiCodex) throw new Error(\"Choose an auth provider, for example: auth --openai-codex\");\n\t\t\t\tconst actions = [args.status, args.refresh, args.logout].filter(Boolean).length;\n\t\t\t\tif (actions > 1) throw new Error(\"Choose only one of --status, --refresh, or --logout\");\n\t\t\t\treturn true;\n\t\t\t}),\n\thandler: async (args) => {\n\t\tawait runOpenAICodexAuth(args);\n\t},\n};\n","#!/usr/bin/env node\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { ModelgenCommand } from \"./cli/modelgen\";\nimport { OAuthCommand } from \"./cli/oauth\";\n\nconst cli = yargs(hideBin(process.argv))\n\t.scriptName(\"aikit\")\n\t.wrap(100)\n\t.help(\"help\", \"show help\")\n\t.alias(\"help\", \"h\")\n\t.version(\"version\", \"show version number\", pkg.version)\n\t.alias(\"version\", \"v\")\n\t.command(ModelgenCommand)\n\t.command(OAuthCommand)\n\t.demandCommand(1, \"Choose a command\")\n\t.strict()\n\t.fail((message, error) => {\n\t\tif (error) throw error;\n\t\tif (message) throw new Error(message);\n\t});\n\ntry {\n\tawait cli.parse();\n} catch (error) {\n\tprocess.exitCode = 1;\n\tconsole.error(error instanceof Error ? error.message : String(error));\n}\n"],"mappings":"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"}
|
package/index.d.mts
CHANGED
|
@@ -5424,13 +5424,13 @@ declare namespace Model {
|
|
|
5424
5424
|
function getBuiltInModels(): Promise<BuiltInModels>;
|
|
5425
5425
|
const registry: {
|
|
5426
5426
|
(): Promise<Map<string, Map<string, {
|
|
5427
|
+
headers?: Record<string, string> | undefined;
|
|
5427
5428
|
api?: {
|
|
5428
5429
|
id?: string | undefined;
|
|
5429
5430
|
url?: string | undefined;
|
|
5430
|
-
method?: "
|
|
5431
|
+
method?: "languageModel" | "chat" | "completion" | "completionModel" | "messages" | "responses" | undefined;
|
|
5431
5432
|
} | undefined;
|
|
5432
5433
|
options?: Record<string, unknown> | undefined;
|
|
5433
|
-
headers?: Record<string, string> | undefined;
|
|
5434
5434
|
thinkingLevelMap?: {
|
|
5435
5435
|
off?: string | null | undefined;
|
|
5436
5436
|
minimal?: string | null | undefined;
|
|
@@ -5452,7 +5452,7 @@ declare namespace Model {
|
|
|
5452
5452
|
googleVertexAnthropic?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5453
5453
|
openaiCompatible?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5454
5454
|
} | undefined;
|
|
5455
|
-
|
|
5455
|
+
maxTokens: number;
|
|
5456
5456
|
id: string;
|
|
5457
5457
|
name: string;
|
|
5458
5458
|
provider: {
|
|
@@ -5463,6 +5463,8 @@ declare namespace Model {
|
|
|
5463
5463
|
source: "env" | "config" | "custom" | "api" | "unknown";
|
|
5464
5464
|
env: string[];
|
|
5465
5465
|
};
|
|
5466
|
+
baseUrl: string;
|
|
5467
|
+
reasoning: boolean;
|
|
5466
5468
|
input: ("text" | "image")[];
|
|
5467
5469
|
cost: {
|
|
5468
5470
|
input: number;
|
|
@@ -5470,66 +5472,13 @@ declare namespace Model {
|
|
|
5470
5472
|
cacheRead: number;
|
|
5471
5473
|
cacheWrite: number;
|
|
5472
5474
|
};
|
|
5473
|
-
maxTokens: number;
|
|
5474
|
-
baseUrl: string;
|
|
5475
|
-
reasoning: boolean;
|
|
5476
5475
|
contextWindow: number;
|
|
5476
|
+
protocol: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai";
|
|
5477
5477
|
}>>>;
|
|
5478
5478
|
reset(): void;
|
|
5479
5479
|
};
|
|
5480
5480
|
function supportsProtocol(model: Info, protocol: KnownProviderEnum): boolean;
|
|
5481
|
-
function getModel<TProvider extends string, TModel extends Info["id"]>(provider: TProvider, model: TModel, overrides?: Partial<Info>): Promise<
|
|
5482
|
-
api?: {
|
|
5483
|
-
id?: string | undefined;
|
|
5484
|
-
url?: string | undefined;
|
|
5485
|
-
method?: "messages" | "languageModel" | "chat" | "completion" | "completionModel" | "responses" | undefined;
|
|
5486
|
-
} | undefined;
|
|
5487
|
-
options?: Record<string, unknown> | undefined;
|
|
5488
|
-
headers?: Record<string, string> | undefined;
|
|
5489
|
-
thinkingLevelMap?: {
|
|
5490
|
-
off?: string | null | undefined;
|
|
5491
|
-
minimal?: string | null | undefined;
|
|
5492
|
-
low?: string | null | undefined;
|
|
5493
|
-
medium?: string | null | undefined;
|
|
5494
|
-
high?: string | null | undefined;
|
|
5495
|
-
xhigh?: string | null | undefined;
|
|
5496
|
-
} | undefined;
|
|
5497
|
-
npm?: string | undefined;
|
|
5498
|
-
providerOptionsKey?: string | undefined;
|
|
5499
|
-
providerOptions?: Record<string, unknown> | undefined;
|
|
5500
|
-
supportedProtocols?: {
|
|
5501
|
-
anthropic?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5502
|
-
google?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5503
|
-
openai?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5504
|
-
openrouter?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5505
|
-
xai?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5506
|
-
googleVertex?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5507
|
-
googleVertexAnthropic?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5508
|
-
openaiCompatible?: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai" | undefined;
|
|
5509
|
-
} | undefined;
|
|
5510
|
-
protocol: "anthropic" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-compatible" | "openrouter" | "xai";
|
|
5511
|
-
id: string;
|
|
5512
|
-
name: string;
|
|
5513
|
-
provider: {
|
|
5514
|
-
key?: string | undefined;
|
|
5515
|
-
options?: Record<string, any> | undefined;
|
|
5516
|
-
id: string;
|
|
5517
|
-
name: string;
|
|
5518
|
-
source: "env" | "config" | "custom" | "api" | "unknown";
|
|
5519
|
-
env: string[];
|
|
5520
|
-
};
|
|
5521
|
-
input: ("text" | "image")[];
|
|
5522
|
-
cost: {
|
|
5523
|
-
input: number;
|
|
5524
|
-
output: number;
|
|
5525
|
-
cacheRead: number;
|
|
5526
|
-
cacheWrite: number;
|
|
5527
|
-
};
|
|
5528
|
-
maxTokens: number;
|
|
5529
|
-
baseUrl: string;
|
|
5530
|
-
reasoning: boolean;
|
|
5531
|
-
contextWindow: number;
|
|
5532
|
-
} | undefined>;
|
|
5481
|
+
function getModel<TProvider extends string, TModel extends Info["id"]>(provider: TProvider, model: TModel, overrides?: Partial<Info>): Promise<Info | undefined>;
|
|
5533
5482
|
function getProviders(): Promise<string[]>;
|
|
5534
5483
|
function getModels<TProvider extends string>(provider: TProvider): Promise<Info[]>;
|
|
5535
5484
|
/**
|
package/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as NamedError, i as packageForModel, o as resolveLanguageModel, r as loadProviderFactory, s as Model } from "./registry-
|
|
1
|
+
import { d as NamedError, i as packageForModel, o as resolveLanguageModel, r as loadProviderFactory, s as Model } from "./registry-Cfdk78qk.mjs";
|
|
2
2
|
import Type$1, { Type, Type as Type$2 } from "typebox";
|
|
3
3
|
import { uuidv7 } from "uuidv7";
|
|
4
4
|
import Value from "typebox/value";
|
package/package.json
CHANGED
|
@@ -4854,12 +4854,12 @@ let ModelCatalog;
|
|
|
4854
4854
|
Type.Literal(KnownProviderEnum.xai)
|
|
4855
4855
|
]);
|
|
4856
4856
|
function projectRoot() {
|
|
4857
|
-
return
|
|
4857
|
+
return process.cwd();
|
|
4858
4858
|
}
|
|
4859
4859
|
_ModelCatalog.projectRoot = projectRoot;
|
|
4860
4860
|
const filename = _ModelCatalog.filename = "models.gen.json";
|
|
4861
4861
|
function path() {
|
|
4862
|
-
return resolve$1(process.env.
|
|
4862
|
+
return resolve$1(process.env.CODEWORK_MODELS_FILE ?? join$1(projectRoot(), filename));
|
|
4863
4863
|
}
|
|
4864
4864
|
_ModelCatalog.path = path;
|
|
4865
4865
|
const data = _ModelCatalog.data = lazy(async () => {
|
|
@@ -5133,4 +5133,4 @@ function resolveLanguageModel(provider, model, methodOverride) {
|
|
|
5133
5133
|
//#endregion
|
|
5134
5134
|
export { protocolForPackage as a, ModelCatalog as c, NamedError as d, packageForModel as i, lazy as l, isAISDKPackage as n, resolveLanguageModel as o, loadProviderFactory as r, Model as s, DEFAULT_AI_SDK_PACKAGE as t, Filesystem as u };
|
|
5135
5135
|
|
|
5136
|
-
//# sourceMappingURL=registry-
|
|
5136
|
+
//# sourceMappingURL=registry-Cfdk78qk.mjs.map
|