@plurnk/plurnk-models 1.3.5 → 1.3.6

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/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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,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;AAyBF,eAAO,MAAM,MAAM,aAAc,MAAM,SAAS,MAAM,KAAG,SAAS,GAAG,IAGpE,CAAC;AAIF,eAAO,MAAM,eAAe,QAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAS,CAAC"}
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
- // FALLBACK ONLY. Live provider data always wins: a backend's probed context
5
- // window and a provider's fetched per-token pricing are ground truth and may
6
- // change; this snapshot is the last resort when no live source is available
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). Keep in sync with KEEP in generate.mjs.
13
- // The Chinese hosts map to the INTERNATIONAL id (USD pricing), matching the
14
- // standard provider's default intl base; minimax/stepfun/siliconflow/modelscope
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,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,yDAAyD;AAEzD,OAAO,OAAO,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAgB3D,0EAA0E;AAC1E,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,6EAA6E;AAC7E,MAAM,YAAY,GAAqC,MAAM,CAAC,MAAM,CAAC;IACjE,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,uBAAuB;IACnC,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,kBAAkB;CAC9B,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,OAAoD,CAAC;AAElE,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAoB,EAAE;IACxE,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC9C,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC,CAAC;AAEF,4EAA4E;AAC5E,2CAA2C;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAkE,EAAE,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,sDAAsD;AACtD,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,gEAAgE;AAEhE,OAAO,OAAO,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,SAAS,MAAM,kBAAkB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAuB/D,0EAA0E;AAC1E,+EAA+E;AAC/E,uEAAuE;AACvE,wDAAwD;AACxD,MAAM,YAAY,GAAqC,MAAM,CAAC,MAAM,CAAC;IACjE,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,uBAAuB;IACnC,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,gBAAgB;CAC5B,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,OAAoD,CAAC;AAClE,MAAM,YAAY,GAAG,SAAyC,CAAC;AAE/D,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAoB,EAAE;IACxE,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC9C,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CACxB,QAAgB,EAChB,KAAa,EAC2C,EAAE;IAC1D,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE;QAC9C,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAuB,EAAE;IACpE,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC9C,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC,CAAC;AAEF,4EAA4E;AAC5E,2CAA2C;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAkE,EAAE,CAAC,IAAI,CAAC;AAEzG,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAA2C,EAAE,CAAC,YAAY,CAAC;AAElG,4EAA4E;AAC5E,6EAA6E;AAC7E,yCAAyC;AACzC,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAsB,EAAE,CAC9D,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;SAClC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;SACnC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3F,QAAQ,EAAE,CAAC"}
@@ -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.5",
3
+ "version": "1.3.6",
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/catalog.json','dist/catalog.json')\"",
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
  }