@plurnk/plurnk-models 1.3.5 → 1.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog.json +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -10
- package/dist/index.js.map +1 -1
- package/dist/providers.json +1 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,19 @@ export type ModelInfo = {
|
|
|
10
10
|
readonly reasoning?: boolean;
|
|
11
11
|
readonly cost?: ModelCost;
|
|
12
12
|
};
|
|
13
|
+
export type ProviderInfo = {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly npm: string;
|
|
16
|
+
readonly env: readonly string[];
|
|
17
|
+
readonly api?: string;
|
|
18
|
+
};
|
|
13
19
|
export declare const lookup: (provider: string, model: string) => ModelInfo | null;
|
|
20
|
+
export declare const resolveModel: (provider: string, model: string) => {
|
|
21
|
+
readonly id: string;
|
|
22
|
+
readonly info: ModelInfo;
|
|
23
|
+
} | null;
|
|
24
|
+
export declare const lookupProvider: (provider: string) => ProviderInfo | null;
|
|
14
25
|
export declare const catalogSnapshot: () => Readonly<Record<string, Readonly<Record<string, ModelInfo>>>>;
|
|
26
|
+
export declare const providerCatalogSnapshot: () => Readonly<Record<string, ProviderInfo>>;
|
|
27
|
+
export declare const providerCredentialEnvNames: () => readonly string[];
|
|
15
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AA0BF,eAAO,MAAM,MAAM,aAAc,MAAM,SAAS,MAAM,KAAG,SAAS,GAAG,IAGpE,CAAC;AAEF,eAAO,MAAM,YAAY,aACX,MAAM,SACT,MAAM,KACd;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,IAWtD,CAAC;AAEF,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,YAAY,GAAG,IAGhE,CAAC;AAIF,eAAO,MAAM,eAAe,QAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAS,CAAC;AAEzG,eAAO,MAAM,uBAAuB,QAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAiB,CAAC;AAKlG,eAAO,MAAM,0BAA0B,QAAO,SAAS,MAAM,EAI1C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
// @plurnk/plurnk-models — a build-time-vendored snapshot of model metadata
|
|
2
2
|
// (context window + pricing) sourced from models.dev.
|
|
3
3
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// (e.g. a cloud model the endpoint doesn't self-report). Consumers resolve in
|
|
8
|
-
// this order — env override → live probe/fetch → THIS catalog → null. Never let
|
|
9
|
-
// a stale snapshot shadow a live value, especially cost.
|
|
4
|
+
// Cloud provider facts come from this release-time snapshot. Local endpoint
|
|
5
|
+
// probes and explicit operator pins win where present. There is no runtime
|
|
6
|
+
// dependency on models.dev and no parallel PLURNK vendor table.
|
|
10
7
|
import catalog from "./catalog.json" with { type: "json" };
|
|
8
|
+
import providers from "./providers.json" with { type: "json" };
|
|
11
9
|
// plurnk provider name → models.dev provider id. Identity for most; these
|
|
12
|
-
// diverge (verified against api.json).
|
|
13
|
-
// The Chinese hosts map to the
|
|
14
|
-
//
|
|
15
|
-
// are identity. volcengine/baichuan/qianfan have no models.dev entry at all.
|
|
10
|
+
// diverge from the operator-friendly PLURNK alias (verified against api.json).
|
|
11
|
+
// The Chinese hosts map to the international catalog id (USD pricing).
|
|
12
|
+
// volcengine/baichuan/qianfan have no models.dev entry.
|
|
16
13
|
const PROVIDER_IDS = Object.freeze({
|
|
17
14
|
together: "togetherai",
|
|
18
15
|
fireworks: "fireworks-ai",
|
|
@@ -22,8 +19,10 @@ const PROVIDER_IDS = Object.freeze({
|
|
|
22
19
|
dashscope: "alibaba",
|
|
23
20
|
zhipu: "zai",
|
|
24
21
|
hunyuan: "tencent-tokenhub",
|
|
22
|
+
bedrock: "amazon-bedrock",
|
|
25
23
|
});
|
|
26
24
|
const data = catalog;
|
|
25
|
+
const providerData = providers;
|
|
27
26
|
// Snapshot metadata for the FALLBACK lookup. Returns null on a miss — the
|
|
28
27
|
// caller MUST already have preferred any live value; a null here means "no
|
|
29
28
|
// fallback either", i.e. leave the field unknown. `provider` is the plurnk
|
|
@@ -33,7 +32,33 @@ export const lookup = (provider, model) => {
|
|
|
33
32
|
const id = PROVIDER_IDS[provider] ?? provider;
|
|
34
33
|
return data[id]?.[model] ?? null;
|
|
35
34
|
};
|
|
35
|
+
export const resolveModel = (provider, model) => {
|
|
36
|
+
const id = PROVIDER_IDS[provider] ?? provider;
|
|
37
|
+
const models = data[id];
|
|
38
|
+
if (models === undefined)
|
|
39
|
+
return null;
|
|
40
|
+
const exact = models[model];
|
|
41
|
+
if (exact !== undefined)
|
|
42
|
+
return { id: model, info: exact };
|
|
43
|
+
const suffix = `/${model}`;
|
|
44
|
+
const matches = Object.entries(models).filter(([candidate]) => candidate.endsWith(suffix));
|
|
45
|
+
return matches.length === 1
|
|
46
|
+
? { id: matches[0][0], info: matches[0][1] }
|
|
47
|
+
: null;
|
|
48
|
+
};
|
|
49
|
+
export const lookupProvider = (provider) => {
|
|
50
|
+
const id = PROVIDER_IDS[provider] ?? provider;
|
|
51
|
+
return providerData[id] ?? null;
|
|
52
|
+
};
|
|
36
53
|
// The raw snapshot, for a consumer that wants to enumerate (e.g. a client's
|
|
37
54
|
// model picker). Read-only; do not mutate.
|
|
38
55
|
export const catalogSnapshot = () => data;
|
|
56
|
+
export const providerCatalogSnapshot = () => providerData;
|
|
57
|
+
// models.dev's `env` mixes credentials with non-secret endpoint coordinates
|
|
58
|
+
// such as AWS_REGION and CLOUDFLARE_ACCOUNT_ID. Only conventional credential
|
|
59
|
+
// names belong in a subprocess denylist.
|
|
60
|
+
export const providerCredentialEnvNames = () => [...new Set(Object.values(providerData)
|
|
61
|
+
.flatMap((provider) => provider.env)
|
|
62
|
+
.filter((name) => /(?:API_KEY|TOKEN|SECRET|ACCESS_KEY_ID|PASSWORD|CREDENTIAL)/.test(name)))]
|
|
63
|
+
.toSorted();
|
|
39
64
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,sDAAsD;AACtD,EAAE;AACF,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"zhipuai":{"id":"zhipuai","npm":"@ai-sdk/openai-compatible","env":["ZHIPU_API_KEY"],"api":"https://open.bigmodel.cn/api/paas/v4"},"lucidquery":{"id":"lucidquery","npm":"@ai-sdk/openai-compatible","env":["LUCIDQUERY_API_KEY"],"api":"https://api.lucidquery.com/v1"},"anyapi":{"id":"anyapi","npm":"@ai-sdk/openai-compatible","env":["ANYAPI_API_KEY"],"api":"https://api.anyapi.ai/v1"},"blueclaw":{"id":"blueclaw","npm":"@ai-sdk/openai-compatible","env":["BLUECLAW_API_KEY"],"api":"https://openai.blueclaw.network/v1"},"tencent-tokenhub":{"id":"tencent-tokenhub","npm":"@ai-sdk/openai-compatible","env":["TENCENT_TOKENHUB_API_KEY"],"api":"https://tokenhub.tencentmaas.com/v1"},"fireworks-ai":{"id":"fireworks-ai","npm":"@ai-sdk/openai-compatible","env":["FIREWORKS_API_KEY"],"api":"https://api.fireworks.ai/inference/v1/"},"wandb":{"id":"wandb","npm":"@ai-sdk/openai-compatible","env":["WANDB_API_KEY"],"api":"https://api.inference.wandb.ai/v1"},"crossmodel":{"id":"crossmodel","npm":"@ai-sdk/openai-compatible","env":["CROSSMODEL_API_KEY"],"api":"https://api.crossmodel.ai/v1"},"llmtr":{"id":"llmtr","npm":"@ai-sdk/openai-compatible","env":["LLMTR_API_KEY"],"api":"https://llmtr.com/v1"},"claudinio":{"id":"claudinio","npm":"@ai-sdk/openai-compatible","env":["CLAUDINIO_API_KEY"],"api":"https://api.claudin.io/v1"},"snowflake-cortex":{"id":"snowflake-cortex","npm":"@ai-sdk/openai-compatible","env":["SNOWFLAKE_ACCOUNT","SNOWFLAKE_CORTEX_PAT"],"api":"https://${SNOWFLAKE_ACCOUNT}.snowflakecomputing.com/api/v2/cortex/v1"},"opencode-go":{"id":"opencode-go","npm":"@ai-sdk/openai-compatible","env":["OPENCODE_API_KEY"],"api":"https://opencode.ai/zen/go/v1"},"poe":{"id":"poe","npm":"@ai-sdk/openai-compatible","env":["POE_API_KEY"],"api":"https://api.poe.com/v1"},"baseten":{"id":"baseten","npm":"@ai-sdk/openai-compatible","env":["BASETEN_API_KEY"],"api":"https://inference.baseten.co/v1"},"nvidia":{"id":"nvidia","npm":"@ai-sdk/openai-compatible","env":["NVIDIA_API_KEY"],"api":"https://integrate.api.nvidia.com/v1"},"nebius":{"id":"nebius","npm":"@ai-sdk/openai-compatible","env":["NEBIUS_API_KEY"],"api":"https://api.tokenfactory.nebius.com/v1"},"vivgrid":{"id":"vivgrid","npm":"@ai-sdk/openai","env":["VIVGRID_API_KEY"],"api":"https://api.vivgrid.com/v1"},"google":{"id":"google","npm":"@ai-sdk/google","env":["GOOGLE_API_KEY","GOOGLE_GENERATIVE_AI_API_KEY","GEMINI_API_KEY"]},"thinkingmachines":{"id":"thinkingmachines","npm":"@ai-sdk/anthropic","env":["TINKER_API_KEY"],"api":"https://tinker.thinkingmachines.dev/services/tinker-prod/anthropic/api/v1"},"lilac":{"id":"lilac","npm":"@ai-sdk/openai-compatible","env":["LILAC_API_KEY"],"api":"https://api.getlilac.com/v1"},"stepfun-ai-step-plan":{"id":"stepfun-ai-step-plan","npm":"@ai-sdk/openai-compatible","env":["STEPFUN_API_KEY"],"api":"https://api.stepfun.ai/step_plan/v1"},"zhipuai-coding-plan":{"id":"zhipuai-coding-plan","npm":"@ai-sdk/openai-compatible","env":["ZHIPU_API_KEY"],"api":"https://open.bigmodel.cn/api/coding/paas/v4"},"nano-gpt":{"id":"nano-gpt","npm":"@ai-sdk/openai-compatible","env":["NANO_GPT_API_KEY"],"api":"https://nano-gpt.com/api/v1"},"fastrouter":{"id":"fastrouter","npm":"@ai-sdk/openai-compatible","env":["FASTROUTER_API_KEY"],"api":"https://go.fastrouter.ai/api/v1"},"nearai":{"id":"nearai","npm":"@ai-sdk/openai-compatible","env":["NEARAI_API_KEY"],"api":"https://cloud-api.near.ai/v1"},"daoxe":{"id":"daoxe","npm":"@ai-sdk/openai-compatible","env":["DAOXE_API_KEY"],"api":"https://daoxe.com/v1"},"crof":{"id":"crof","npm":"@ai-sdk/openai-compatible","env":["CROF_API_KEY"],"api":"https://crof.ai/v1"},"abliteration-ai":{"id":"abliteration-ai","npm":"@ai-sdk/openai-compatible","env":["ABLIT_KEY"],"api":"https://api.abliteration.ai/v1"},"alibaba-coding-plan-cn":{"id":"alibaba-coding-plan-cn","npm":"@ai-sdk/openai-compatible","env":["ALIBABA_CODING_PLAN_API_KEY"],"api":"https://coding.dashscope.aliyuncs.com/v1"},"llmgateway":{"id":"llmgateway","npm":"@ai-sdk/openai-compatible","env":["LLMGATEWAY_API_KEY"],"api":"https://api.llmgateway.io/v1"},"kenari":{"id":"kenari","npm":"@ai-sdk/openai-compatible","env":["KENARI_API_KEY"],"api":"https://kenari.id/v1"},"friendli":{"id":"friendli","npm":"@ai-sdk/openai-compatible","env":["FRIENDLI_TOKEN"],"api":"https://api.friendli.ai/serverless/v1"},"opencode":{"id":"opencode","npm":"@ai-sdk/openai-compatible","env":["OPENCODE_API_KEY"],"api":"https://opencode.ai/zen/v1"},"sakana":{"id":"sakana","npm":"@ai-sdk/openai-compatible","env":["SAKANA_API_KEY"],"api":"https://api.sakana.ai/v1"},"trustedrouter":{"id":"trustedrouter","npm":"@ai-sdk/openai-compatible","env":["TRUSTEDROUTER_API_KEY"],"api":"https://api.trustedrouter.com/v1"},"atomic-chat":{"id":"atomic-chat","npm":"@ai-sdk/openai-compatible","env":["ATOMIC_CHAT_API_KEY"],"api":"http://127.0.0.1:1337/v1"},"inception":{"id":"inception","npm":"@ai-sdk/openai-compatible","env":["INCEPTION_API_KEY"],"api":"https://api.inceptionlabs.ai/v1/"},"stepfun-step-plan":{"id":"stepfun-step-plan","npm":"@ai-sdk/openai-compatible","env":["STEPFUN_API_KEY"],"api":"https://api.stepfun.com/step_plan/v1"},"cloudflare-workers-ai":{"id":"cloudflare-workers-ai","npm":"@ai-sdk/openai-compatible","env":["CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_API_KEY"],"api":"https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1"},"modelscope":{"id":"modelscope","npm":"@ai-sdk/openai-compatible","env":["MODELSCOPE_API_KEY"],"api":"https://api-inference.modelscope.cn/v1"},"github-copilot":{"id":"github-copilot","npm":"@ai-sdk/openai-compatible","env":["GITHUB_TOKEN"],"api":"https://api.githubcopilot.com"},"302ai":{"id":"302ai","npm":"@ai-sdk/openai-compatible","env":["302AI_API_KEY"],"api":"https://api.302.ai/v1"},"helicone":{"id":"helicone","npm":"@ai-sdk/openai-compatible","env":["HELICONE_API_KEY"],"api":"https://ai-gateway.helicone.ai/v1"},"alibaba-coding-plan":{"id":"alibaba-coding-plan","npm":"@ai-sdk/openai-compatible","env":["ALIBABA_CODING_PLAN_API_KEY"],"api":"https://coding-intl.dashscope.aliyuncs.com/v1"},"submodel":{"id":"submodel","npm":"@ai-sdk/openai-compatible","env":["SUBMODEL_INSTAGEN_ACCESS_KEY"],"api":"https://llm.submodel.ai/v1"},"neon":{"id":"neon","npm":"@ai-sdk/openai-compatible","env":["NEON_AI_GATEWAY_BASE_URL","NEON_AI_GATEWAY_TOKEN"],"api":"${NEON_AI_GATEWAY_BASE_URL}/v1"},"ambient":{"id":"ambient","npm":"@ai-sdk/openai-compatible","env":["AMBIENT_API_KEY"],"api":"https://api.ambient.xyz/v1"},"dinference":{"id":"dinference","npm":"@ai-sdk/openai-compatible","env":["DINFERENCE_API_KEY"],"api":"https://api.dinference.com/v1"},"privatemode-ai":{"id":"privatemode-ai","npm":"@ai-sdk/openai-compatible","env":["PRIVATEMODE_API_KEY","PRIVATEMODE_ENDPOINT"],"api":"http://localhost:8080/v1"},"unorouter":{"id":"unorouter","npm":"@ai-sdk/openai-compatible","env":["UNOROUTER_API_KEY"],"api":"https://api.unorouter.com/v1"},"frogbot":{"id":"frogbot","npm":"@ai-sdk/openai-compatible","env":["FROGBOT_API_KEY"],"api":"https://app.frogbot.ai/api/v1"},"the-grid-ai":{"id":"the-grid-ai","npm":"@ai-sdk/openai-compatible","env":["THEGRIDAI_API_KEY"],"api":"https://api.thegrid.ai/v1"},"upstage":{"id":"upstage","npm":"@ai-sdk/openai-compatible","env":["UPSTAGE_API_KEY"],"api":"https://api.upstage.ai/v1/solar"},"cline-pass":{"id":"cline-pass","npm":"@ai-sdk/openai-compatible","env":["CLINE_API_KEY"],"api":"https://api.cline.bot/api/v1"},"regolo-ai":{"id":"regolo-ai","npm":"@ai-sdk/openai-compatible","env":["REGOLO_API_KEY"],"api":"https://api.regolo.ai/v1"},"aiand":{"id":"aiand","npm":"@ai-sdk/openai-compatible","env":["AIAND_API_KEY"],"api":"https://api.aiand.com/v1"},"pioneer":{"id":"pioneer","npm":"@ai-sdk/openai-compatible","env":["PIONEER_API_KEY"],"api":"https://api.pioneer.ai/v1"},"siliconflow":{"id":"siliconflow","npm":"@ai-sdk/openai-compatible","env":["SILICONFLOW_API_KEY"],"api":"https://api.siliconflow.com/v1"},"ai-router":{"id":"ai-router","npm":"@ai-sdk/openai-compatible","env":["AI_ROUTER_API_KEY"],"api":"https://api.ai-router.dev/v1"},"zenmux":{"id":"zenmux","npm":"@ai-sdk/openai-compatible","env":["ZENMUX_API_KEY"],"api":"https://zenmux.ai/api/v1"},"inference":{"id":"inference","npm":"@ai-sdk/openai-compatible","env":["INFERENCE_API_KEY"],"api":"https://inference.net/v1"},"evroc":{"id":"evroc","npm":"@ai-sdk/openai-compatible","env":["EVROC_API_KEY"],"api":"https://models.think.evroc.com/v1"},"abacus":{"id":"abacus","npm":"@ai-sdk/openai-compatible","env":["ABACUS_API_KEY"],"api":"https://routellm.abacus.ai/v1"},"inceptron":{"id":"inceptron","npm":"@ai-sdk/openai-compatible","env":["INCEPTRON_API_KEY"],"api":"https://api.inceptron.io/v1"},"empiriolabs":{"id":"empiriolabs","npm":"@ai-sdk/openai-compatible","env":["EMPIRIOLABS_API_KEY"],"api":"https://api.empiriolabs.ai/v1"},"alibaba-token-plan":{"id":"alibaba-token-plan","npm":"@ai-sdk/openai-compatible","env":["ALIBABA_TOKEN_PLAN_API_KEY"],"api":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"},"meta":{"id":"meta","npm":"@ai-sdk/openai","env":["META_MODEL_API_KEY"],"api":"https://api.meta.ai/v1"},"wafer.ai":{"id":"wafer.ai","npm":"@ai-sdk/openai-compatible","env":["WAFER_API_KEY"],"api":"https://pass.wafer.ai/v1"},"clarifai":{"id":"clarifai","npm":"@ai-sdk/openai-compatible","env":["CLARIFAI_PAT"],"api":"https://api.clarifai.com/v2/ext/openai/v1"},"iflowcn":{"id":"iflowcn","npm":"@ai-sdk/openai-compatible","env":["IFLOW_API_KEY"],"api":"https://apis.iflow.cn/v1"},"bailing":{"id":"bailing","npm":"@ai-sdk/openai-compatible","env":["BAILING_API_TOKEN"],"api":"https://api.tbox.cn/api/llm/v1/chat/completions"},"mixlayer":{"id":"mixlayer","npm":"@ai-sdk/openai-compatible","env":["MIXLAYER_API_KEY"],"api":"https://models.mixlayer.ai/v1"},"scaleway":{"id":"scaleway","npm":"@ai-sdk/openai-compatible","env":["SCALEWAY_API_KEY"],"api":"https://api.scaleway.ai/v1"},"togetherai":{"id":"togetherai","npm":"@ai-sdk/togetherai","env":["TOGETHER_API_KEY"]},"digitalocean":{"id":"digitalocean","npm":"@ai-sdk/openai-compatible","env":["DIGITALOCEAN_ACCESS_TOKEN"],"api":"https://inference.do-ai.run/v1"},"moonshotai-cn":{"id":"moonshotai-cn","npm":"@ai-sdk/openai-compatible","env":["MOONSHOT_API_KEY"],"api":"https://api.moonshot.cn/v1"},"model-oracle-ai":{"id":"model-oracle-ai","npm":"@ai-sdk/openai-compatible","env":["MODEL_ORACLE_API_KEY"],"api":"https://api.modeloracle.com/api/v1"},"drun":{"id":"drun","npm":"@ai-sdk/openai-compatible","env":["DRUN_API_KEY"],"api":"https://chat.d.run/v1"},"lmstudio":{"id":"lmstudio","npm":"@ai-sdk/openai-compatible","env":["LMSTUDIO_API_KEY"],"api":"http://127.0.0.1:1234/v1"},"ovhcloud":{"id":"ovhcloud","npm":"@ai-sdk/openai-compatible","env":["OVHCLOUD_API_KEY"],"api":"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1"},"zeldoc":{"id":"zeldoc","npm":"@ai-sdk/openai-compatible","env":["ZELDOC_API_KEY"],"api":"https://api.zeldoc.ai/v1"},"auriko":{"id":"auriko","npm":"@ai-sdk/openai-compatible","env":["AURIKO_API_KEY"],"api":"https://api.auriko.ai/v1"},"kuae-cloud-coding-plan":{"id":"kuae-cloud-coding-plan","npm":"@ai-sdk/openai-compatible","env":["KUAE_API_KEY"],"api":"https://coding-plan-endpoint.kuaecloud.net/v1"},"qihang-ai":{"id":"qihang-ai","npm":"@ai-sdk/openai-compatible","env":["QIHANG_API_KEY"],"api":"https://api.qhaigc.net/v1"},"berget":{"id":"berget","npm":"@ai-sdk/openai-compatible","env":["BERGET_API_KEY"],"api":"https://api.berget.ai/v1"},"moark":{"id":"moark","npm":"@ai-sdk/openai-compatible","env":["MOARK_API_KEY"],"api":"https://moark.com/v1"},"nova":{"id":"nova","npm":"@ai-sdk/openai-compatible","env":["NOVA_API_KEY"],"api":"https://api.nova.amazon.com/v1"},"vultr":{"id":"vultr","npm":"@ai-sdk/openai-compatible","env":["VULTR_API_KEY"],"api":"https://api.vultrinference.com/v1"},"io-net":{"id":"io-net","npm":"@ai-sdk/openai-compatible","env":["IOINTELLIGENCE_API_KEY"],"api":"https://api.intelligence.io.solutions/api/v1"},"neuralwatt":{"id":"neuralwatt","npm":"@ai-sdk/openai-compatible","env":["NEURALWATT_API_KEY"],"api":"https://api.neuralwatt.com/v1"},"aki-io":{"id":"aki-io","npm":"@ai-sdk/openai-compatible","env":["AKI_IO_API_KEY"],"api":"https://aki.io/v1"},"xai":{"id":"xai","npm":"@ai-sdk/xai","env":["XAI_API_KEY"]},"hetzner":{"id":"hetzner","npm":"@ai-sdk/openai-compatible","env":["HETZNER_API_KEY"],"api":"https://inference.hetzner.com/api/v1"},"zenifra":{"id":"zenifra","npm":"@ai-sdk/openai-compatible","env":["ZENIFRA_AI_KEY"],"api":"https://ai.zenifra.com/v1"},"morph":{"id":"morph","npm":"@ai-sdk/openai-compatible","env":["MORPH_API_KEY"],"api":"https://api.morphllm.com/v1"},"umans-ai-coding-plan":{"id":"umans-ai-coding-plan","npm":"@ai-sdk/openai-compatible","env":["UMANS_AI_CODING_PLAN_API_KEY"],"api":"https://api.code.umans.ai/v1"},"mistral":{"id":"mistral","npm":"@ai-sdk/mistral","env":["MISTRAL_API_KEY"]},"umans-ai":{"id":"umans-ai","npm":"@ai-sdk/openai-compatible","env":["UMANS_AI_API_KEY"],"api":"https://api.code.umans.ai/v1"},"ofox":{"id":"ofox","npm":"@ai-sdk/openai-compatible","env":["OFOX_API_KEY"],"api":"https://api.ofox.ai/v1"},"orcarouter":{"id":"orcarouter","npm":"@ai-sdk/openai-compatible","env":["ORCAROUTER_API_KEY"],"api":"https://api.orcarouter.ai/v1"},"xiaomi-token-plan-cn":{"id":"xiaomi-token-plan-cn","npm":"@ai-sdk/openai-compatible","env":["XIAOMI_API_KEY"],"api":"https://token-plan-cn.xiaomimimo.com/v1"},"poolside":{"id":"poolside","npm":"@ai-sdk/openai-compatible","env":["POOLSIDE_API_KEY"],"api":"https://inference.poolside.ai/v1"},"routing-run":{"id":"routing-run","npm":"@ai-sdk/openai-compatible","env":["ROUTING_RUN_API_KEY"],"api":"https://api.routing.run/v1"},"tencent-token-plan":{"id":"tencent-token-plan","npm":"@ai-sdk/openai-compatible","env":["TENCENT_TOKEN_PLAN_API_KEY"],"api":"https://api.lkeap.cloud.tencent.com/plan/v3"},"synthetic":{"id":"synthetic","npm":"@ai-sdk/openai-compatible","env":["SYNTHETIC_API_KEY"],"api":"https://api.synthetic.new/openai/v1"},"zai-coding-plan":{"id":"zai-coding-plan","npm":"@ai-sdk/openai-compatible","env":["ZHIPU_API_KEY"],"api":"https://api.z.ai/api/coding/paas/v4"},"gmicloud":{"id":"gmicloud","npm":"@ai-sdk/openai-compatible","env":["GMICLOUD_API_KEY"],"api":"https://api.gmi-serving.com/v1"},"freemodel":{"id":"freemodel","npm":"@ai-sdk/anthropic","env":["FREEMODEL_API_KEY"],"api":"https://cc.freemodel.dev/v1"},"amazon-bedrock":{"id":"amazon-bedrock","npm":"@ai-sdk/amazon-bedrock","env":["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_REGION","AWS_BEARER_TOKEN_BEDROCK"]},"xiaomi-token-plan-ams":{"id":"xiaomi-token-plan-ams","npm":"@ai-sdk/openai-compatible","env":["XIAOMI_API_KEY"],"api":"https://token-plan-ams.xiaomimimo.com/v1"},"minimax":{"id":"minimax","npm":"@ai-sdk/anthropic","env":["MINIMAX_API_KEY"],"api":"https://api.minimax.io/anthropic/v1"},"groq":{"id":"groq","npm":"@ai-sdk/groq","env":["GROQ_API_KEY"]},"deepseek":{"id":"deepseek","npm":"@ai-sdk/openai-compatible","env":["DEEPSEEK_API_KEY"],"api":"https://api.deepseek.com"},"kimi-for-coding":{"id":"kimi-for-coding","npm":"@ai-sdk/anthropic","env":["KIMI_API_KEY"],"api":"https://api.kimi.com/coding/v1"},"requesty":{"id":"requesty","npm":"@ai-sdk/openai-compatible","env":["REQUESTY_API_KEY"],"api":"https://router.requesty.ai/v1"},"llama":{"id":"llama","npm":"@ai-sdk/openai-compatible","env":["LLAMA_API_KEY"],"api":"https://api.llama.com/compat/v1/"},"kilo":{"id":"kilo","npm":"@ai-sdk/openai-compatible","env":["KILO_API_KEY"],"api":"https://api.kilo.ai/api/gateway"},"cloudferro-sherlock":{"id":"cloudferro-sherlock","npm":"@ai-sdk/openai-compatible","env":["CLOUDFERRO_SHERLOCK_API_KEY"],"api":"https://api-sherlock.cloudferro.com/openai/v1/"},"subconscious":{"id":"subconscious","npm":"@ai-sdk/anthropic","env":["SUBCONSCIOUS_API_KEY"],"api":"https://api.subconscious.dev/v1"},"tencent-coding-plan":{"id":"tencent-coding-plan","npm":"@ai-sdk/openai-compatible","env":["TENCENT_CODING_PLAN_API_KEY"],"api":"https://api.lkeap.cloud.tencent.com/coding/v3"},"alibaba":{"id":"alibaba","npm":"@ai-sdk/openai-compatible","env":["DASHSCOPE_API_KEY"],"api":"https://dashscope-intl.aliyuncs.com/compatible-mode/v1"},"github-models":{"id":"github-models","npm":"@ai-sdk/openai-compatible","env":["GITHUB_TOKEN"],"api":"https://models.github.ai/inference"},"alibaba-cn":{"id":"alibaba-cn","npm":"@ai-sdk/openai-compatible","env":["DASHSCOPE_API_KEY"],"api":"https://dashscope.aliyuncs.com/compatible-mode/v1"},"novita-ai":{"id":"novita-ai","npm":"@ai-sdk/openai-compatible","env":["NOVITA_API_KEY"],"api":"https://api.novita.ai/openai"},"openrouter":{"id":"openrouter","npm":"@openrouter/ai-sdk-provider","env":["OPENROUTER_API_KEY"],"api":"https://openrouter.ai/api/v1"},"huggingface":{"id":"huggingface","npm":"@ai-sdk/openai-compatible","env":["HF_TOKEN"],"api":"https://router.huggingface.co/v1"},"minimax-coding-plan":{"id":"minimax-coding-plan","npm":"@ai-sdk/anthropic","env":["MINIMAX_API_KEY"],"api":"https://api.minimax.io/anthropic/v1"},"siliconflow-cn":{"id":"siliconflow-cn","npm":"@ai-sdk/openai-compatible","env":["SILICONFLOW_CN_API_KEY"],"api":"https://api.siliconflow.cn/v1"},"tinfoil":{"id":"tinfoil","npm":"@ai-sdk/openai-compatible","env":["TINFOIL_API_KEY"],"api":"https://inference.tinfoil.sh/v1"},"xiaomi":{"id":"xiaomi","npm":"@ai-sdk/openai-compatible","env":["XIAOMI_API_KEY"],"api":"https://api.xiaomimimo.com/v1"},"stackit":{"id":"stackit","npm":"@ai-sdk/openai-compatible","env":["STACKIT_API_KEY"],"api":"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1"},"deepinfra":{"id":"deepinfra","npm":"@ai-sdk/deepinfra","env":["DEEPINFRA_API_KEY"]},"anthropic":{"id":"anthropic","npm":"@ai-sdk/anthropic","env":["ANTHROPIC_API_KEY"]},"lynkr":{"id":"lynkr","npm":"@ai-sdk/openai-compatible","env":["LYNKR_API_KEY"],"api":"http://127.0.0.1:8081/v1"},"alibaba-token-plan-cn":{"id":"alibaba-token-plan-cn","npm":"@ai-sdk/openai-compatible","env":["ALIBABA_TOKEN_PLAN_API_KEY"],"api":"https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"},"stepfun-ai":{"id":"stepfun-ai","npm":"@ai-sdk/openai-compatible","env":["STEPFUN_API_KEY"],"api":"https://api.stepfun.ai/v1"},"chutes":{"id":"chutes","npm":"@ai-sdk/openai-compatible","env":["CHUTES_API_KEY"],"api":"https://llm.chutes.ai/v1"},"qiniu-ai":{"id":"qiniu-ai","npm":"@ai-sdk/openai-compatible","env":["QINIU_API_KEY"],"api":"https://api.qnaigc.com/v1"},"longcat":{"id":"longcat","npm":"@ai-sdk/openai-compatible","env":["LONGCAT_API_KEY"],"api":"https://api.longcat.chat/openai"},"ollama-cloud":{"id":"ollama-cloud","npm":"@ai-sdk/openai-compatible","env":["OLLAMA_API_KEY"],"api":"https://ollama.com/v1"},"jiekou":{"id":"jiekou","npm":"@ai-sdk/openai-compatible","env":["JIEKOU_API_KEY"],"api":"https://api.jiekou.ai/openai"},"perplexity-agent":{"id":"perplexity-agent","npm":"@ai-sdk/openai","env":["PERPLEXITY_API_KEY"],"api":"https://api.perplexity.ai/v1"},"moonshotai":{"id":"moonshotai","npm":"@ai-sdk/openai-compatible","env":["MOONSHOT_API_KEY"],"api":"https://api.moonshot.ai/v1"},"openai":{"id":"openai","npm":"@ai-sdk/openai","env":["OPENAI_API_KEY"]},"xpersona":{"id":"xpersona","npm":"@ai-sdk/openai-compatible","env":["XPERSONA_API_KEY"],"api":"https://www.xpersona.co/v1"},"sarvam":{"id":"sarvam","npm":"@ai-sdk/openai-compatible","env":["SARVAM_API_KEY"],"api":"https://api.sarvam.ai/v1"},"zai":{"id":"zai","npm":"@ai-sdk/openai-compatible","env":["ZHIPU_API_KEY"],"api":"https://api.z.ai/api/paas/v4"},"inferx":{"id":"inferx","npm":"@ai-sdk/openai-compatible","env":["INFERX_API_KEY"],"api":"https://model.inferx.net/endpoints/v1"},"meganova":{"id":"meganova","npm":"@ai-sdk/openai-compatible","env":["MEGANOVA_API_KEY"],"api":"https://api.meganova.ai/v1"},"stepfun":{"id":"stepfun","npm":"@ai-sdk/openai-compatible","env":["STEPFUN_API_KEY"],"api":"https://api.stepfun.com/v1"},"cortecs":{"id":"cortecs","npm":"@ai-sdk/openai-compatible","env":["CORTECS_API_KEY"],"api":"https://api.cortecs.ai/v1"},"xiaomi-token-plan-sgp":{"id":"xiaomi-token-plan-sgp","npm":"@ai-sdk/openai-compatible","env":["XIAOMI_API_KEY"],"api":"https://token-plan-sgp.xiaomimimo.com/v1"},"hpc-ai":{"id":"hpc-ai","npm":"@ai-sdk/openai-compatible","env":["HPC_AI_API_KEY"],"api":"https://api.hpc-ai.com/inference/v1"},"minimax-cn":{"id":"minimax-cn","npm":"@ai-sdk/anthropic","env":["MINIMAX_API_KEY"],"api":"https://api.minimaxi.com/anthropic/v1"},"ebcloud":{"id":"ebcloud","npm":"@ai-sdk/openai-compatible","env":["EBCLOUD_API_KEY"],"api":"https://maas-api.ebcloud.com/v1"},"databricks":{"id":"databricks","npm":"@ai-sdk/openai-compatible","env":["DATABRICKS_HOST","DATABRICKS_TOKEN"],"api":"https://${DATABRICKS_HOST}/ai-gateway/mlflow/v1"},"minimax-cn-coding-plan":{"id":"minimax-cn-coding-plan","npm":"@ai-sdk/anthropic","env":["MINIMAX_API_KEY"],"api":"https://api.minimaxi.com/anthropic/v1"}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-models",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.7",
|
|
4
4
|
"description": "Build-time-vendored snapshot of model metadata (context window + pricing) from models.dev — a FALLBACK for when no live provider data is available.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"test:unit": "node --conditions=plurnk-dev --test src/**/*.test.ts",
|
|
46
46
|
"test": "npm run test:lint && npm run test:unit",
|
|
47
47
|
"prepublishOnly": "npm audit --audit-level=moderate && npm test",
|
|
48
|
-
"build:dist": "tsc -p tsconfig.build.json && node --conditions=plurnk-dev -e \"require('node:fs').copyFileSync('src/
|
|
48
|
+
"build:dist": "tsc -p tsconfig.build.json && node --conditions=plurnk-dev -e \"const fs=require('node:fs'); for (const name of ['catalog.json','providers.json']) fs.copyFileSync('src/'+name,'dist/'+name)\"",
|
|
49
49
|
"build": "npm run build:dist",
|
|
50
50
|
"prepack": "npm run build"
|
|
51
51
|
}
|