@mariozechner/pi-ai 0.67.3 → 0.67.5

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/models.d.ts CHANGED
@@ -12,7 +12,7 @@ export declare function calculateCost<TApi extends Api>(model: Model<TApi>, usag
12
12
  *
13
13
  * Supported today:
14
14
  * - GPT-5.2 / GPT-5.3 / GPT-5.4 model families
15
- * - Opus 4.6 models (xhigh maps to adaptive effort "max" on Anthropic-compatible providers)
15
+ * - Opus 4.6+ models (xhigh maps to adaptive effort "max" on Anthropic-compatible providers)
16
16
  */
17
17
  export declare function supportsXhigh<TApi extends Api>(model: Model<TApi>): boolean;
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAanE,KAAK,QAAQ,CACZ,SAAS,SAAS,aAAa,EAC/B,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,IAC9C,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAEjH,wBAAgB,QAAQ,CAAC,SAAS,SAAS,aAAa,EAAE,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,EAC1G,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,GACf,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAGtC;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED,wBAAgB,SAAS,CAAC,SAAS,SAAS,aAAa,EACxD,QAAQ,EAAE,SAAS,GACjB,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAGhE;AAED,wBAAgB,aAAa,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAO/F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAU3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAS,GAAG,EAC9C,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EACjC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/B,OAAO,CAGT","sourcesContent":["import { MODELS } from \"./models.generated.js\";\nimport type { Api, KnownProvider, Model, Usage } from \"./types.js\";\n\nconst modelRegistry: Map<string, Map<string, Model<Api>>> = new Map();\n\n// Initialize registry from MODELS on module load\nfor (const [provider, models] of Object.entries(MODELS)) {\n\tconst providerModels = new Map<string, Model<Api>>();\n\tfor (const [id, model] of Object.entries(models)) {\n\t\tproviderModels.set(id, model as Model<Api>);\n\t}\n\tmodelRegistry.set(provider, providerModels);\n}\n\ntype ModelApi<\n\tTProvider extends KnownProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\nexport function getModel<TProvider extends KnownProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<ModelApi<TProvider, TModelId>> {\n\tconst providerModels = modelRegistry.get(provider);\n\treturn providerModels?.get(modelId as string) as Model<ModelApi<TProvider, TModelId>>;\n}\n\nexport function getProviders(): KnownProvider[] {\n\treturn Array.from(modelRegistry.keys()) as KnownProvider[];\n}\n\nexport function getModels<TProvider extends KnownProvider>(\n\tprovider: TProvider,\n): Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = modelRegistry.get(provider);\n\treturn models ? (Array.from(models.values()) as Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[]) : [];\n}\n\nexport function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage[\"cost\"] {\n\tusage.cost.input = (model.cost.input / 1000000) * usage.input;\n\tusage.cost.output = (model.cost.output / 1000000) * usage.output;\n\tusage.cost.cacheRead = (model.cost.cacheRead / 1000000) * usage.cacheRead;\n\tusage.cost.cacheWrite = (model.cost.cacheWrite / 1000000) * usage.cacheWrite;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\treturn usage.cost;\n}\n\n/**\n * Check if a model supports xhigh thinking level.\n *\n * Supported today:\n * - GPT-5.2 / GPT-5.3 / GPT-5.4 model families\n * - Opus 4.6 models (xhigh maps to adaptive effort \"max\" on Anthropic-compatible providers)\n */\nexport function supportsXhigh<TApi extends Api>(model: Model<TApi>): boolean {\n\tif (model.id.includes(\"gpt-5.2\") || model.id.includes(\"gpt-5.3\") || model.id.includes(\"gpt-5.4\")) {\n\t\treturn true;\n\t}\n\n\tif (model.id.includes(\"opus-4-6\") || model.id.includes(\"opus-4.6\")) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Check if two models are equal by comparing both their id and provider.\n * Returns false if either model is null or undefined.\n */\nexport function modelsAreEqual<TApi extends Api>(\n\ta: Model<TApi> | null | undefined,\n\tb: Model<TApi> | null | undefined,\n): boolean {\n\tif (!a || !b) return false;\n\treturn a.id === b.id && a.provider === b.provider;\n}\n"]}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAanE,KAAK,QAAQ,CACZ,SAAS,SAAS,aAAa,EAC/B,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,IAC9C,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAEjH,wBAAgB,QAAQ,CAAC,SAAS,SAAS,aAAa,EAAE,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,EAC1G,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,GACf,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAGtC;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED,wBAAgB,SAAS,CAAC,SAAS,SAAS,aAAa,EACxD,QAAQ,EAAE,SAAS,GACjB,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAGhE;AAED,wBAAgB,aAAa,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAO/F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAe3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAS,GAAG,EAC9C,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EACjC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/B,OAAO,CAGT","sourcesContent":["import { MODELS } from \"./models.generated.js\";\nimport type { Api, KnownProvider, Model, Usage } from \"./types.js\";\n\nconst modelRegistry: Map<string, Map<string, Model<Api>>> = new Map();\n\n// Initialize registry from MODELS on module load\nfor (const [provider, models] of Object.entries(MODELS)) {\n\tconst providerModels = new Map<string, Model<Api>>();\n\tfor (const [id, model] of Object.entries(models)) {\n\t\tproviderModels.set(id, model as Model<Api>);\n\t}\n\tmodelRegistry.set(provider, providerModels);\n}\n\ntype ModelApi<\n\tTProvider extends KnownProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\nexport function getModel<TProvider extends KnownProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<ModelApi<TProvider, TModelId>> {\n\tconst providerModels = modelRegistry.get(provider);\n\treturn providerModels?.get(modelId as string) as Model<ModelApi<TProvider, TModelId>>;\n}\n\nexport function getProviders(): KnownProvider[] {\n\treturn Array.from(modelRegistry.keys()) as KnownProvider[];\n}\n\nexport function getModels<TProvider extends KnownProvider>(\n\tprovider: TProvider,\n): Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = modelRegistry.get(provider);\n\treturn models ? (Array.from(models.values()) as Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[]) : [];\n}\n\nexport function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage[\"cost\"] {\n\tusage.cost.input = (model.cost.input / 1000000) * usage.input;\n\tusage.cost.output = (model.cost.output / 1000000) * usage.output;\n\tusage.cost.cacheRead = (model.cost.cacheRead / 1000000) * usage.cacheRead;\n\tusage.cost.cacheWrite = (model.cost.cacheWrite / 1000000) * usage.cacheWrite;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\treturn usage.cost;\n}\n\n/**\n * Check if a model supports xhigh thinking level.\n *\n * Supported today:\n * - GPT-5.2 / GPT-5.3 / GPT-5.4 model families\n * - Opus 4.6+ models (xhigh maps to adaptive effort \"max\" on Anthropic-compatible providers)\n */\nexport function supportsXhigh<TApi extends Api>(model: Model<TApi>): boolean {\n\tif (model.id.includes(\"gpt-5.2\") || model.id.includes(\"gpt-5.3\") || model.id.includes(\"gpt-5.4\")) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tmodel.id.includes(\"opus-4-6\") ||\n\t\tmodel.id.includes(\"opus-4.6\") ||\n\t\tmodel.id.includes(\"opus-4-7\") ||\n\t\tmodel.id.includes(\"opus-4.7\")\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Check if two models are equal by comparing both their id and provider.\n * Returns false if either model is null or undefined.\n */\nexport function modelsAreEqual<TApi extends Api>(\n\ta: Model<TApi> | null | undefined,\n\tb: Model<TApi> | null | undefined,\n): boolean {\n\tif (!a || !b) return false;\n\treturn a.id === b.id && a.provider === b.provider;\n}\n"]}
@@ -255,6 +255,23 @@ export declare const MODELS: {
255
255
  contextWindow: number;
256
256
  maxTokens: number;
257
257
  };
258
+ readonly "anthropic.claude-opus-4-7": {
259
+ id: string;
260
+ name: string;
261
+ api: "bedrock-converse-stream";
262
+ provider: string;
263
+ baseUrl: string;
264
+ reasoning: true;
265
+ input: ("image" | "text")[];
266
+ cost: {
267
+ input: number;
268
+ output: number;
269
+ cacheRead: number;
270
+ cacheWrite: number;
271
+ };
272
+ contextWindow: number;
273
+ maxTokens: number;
274
+ };
258
275
  readonly "anthropic.claude-sonnet-4-20250514-v1:0": {
259
276
  id: string;
260
277
  name: string;
@@ -408,6 +425,23 @@ export declare const MODELS: {
408
425
  contextWindow: number;
409
426
  maxTokens: number;
410
427
  };
428
+ readonly "eu.anthropic.claude-opus-4-7": {
429
+ id: string;
430
+ name: string;
431
+ api: "bedrock-converse-stream";
432
+ provider: string;
433
+ baseUrl: string;
434
+ reasoning: true;
435
+ input: ("image" | "text")[];
436
+ cost: {
437
+ input: number;
438
+ output: number;
439
+ cacheRead: number;
440
+ cacheWrite: number;
441
+ };
442
+ contextWindow: number;
443
+ maxTokens: number;
444
+ };
411
445
  readonly "eu.anthropic.claude-sonnet-4-20250514-v1:0": {
412
446
  id: string;
413
447
  name: string;
@@ -510,6 +544,23 @@ export declare const MODELS: {
510
544
  contextWindow: number;
511
545
  maxTokens: number;
512
546
  };
547
+ readonly "global.anthropic.claude-opus-4-7": {
548
+ id: string;
549
+ name: string;
550
+ api: "bedrock-converse-stream";
551
+ provider: string;
552
+ baseUrl: string;
553
+ reasoning: true;
554
+ input: ("image" | "text")[];
555
+ cost: {
556
+ input: number;
557
+ output: number;
558
+ cacheRead: number;
559
+ cacheWrite: number;
560
+ };
561
+ contextWindow: number;
562
+ maxTokens: number;
563
+ };
513
564
  readonly "global.anthropic.claude-sonnet-4-20250514-v1:0": {
514
565
  id: string;
515
566
  name: string;
@@ -1343,6 +1394,23 @@ export declare const MODELS: {
1343
1394
  contextWindow: number;
1344
1395
  maxTokens: number;
1345
1396
  };
1397
+ readonly "us.anthropic.claude-opus-4-7": {
1398
+ id: string;
1399
+ name: string;
1400
+ api: "bedrock-converse-stream";
1401
+ provider: string;
1402
+ baseUrl: string;
1403
+ reasoning: true;
1404
+ input: ("image" | "text")[];
1405
+ cost: {
1406
+ input: number;
1407
+ output: number;
1408
+ cacheRead: number;
1409
+ cacheWrite: number;
1410
+ };
1411
+ contextWindow: number;
1412
+ maxTokens: number;
1413
+ };
1346
1414
  readonly "us.anthropic.claude-sonnet-4-20250514-v1:0": {
1347
1415
  id: string;
1348
1416
  name: string;
@@ -1770,6 +1838,23 @@ export declare const MODELS: {
1770
1838
  contextWindow: number;
1771
1839
  maxTokens: number;
1772
1840
  };
1841
+ readonly "claude-opus-4-7": {
1842
+ id: string;
1843
+ name: string;
1844
+ api: "anthropic-messages";
1845
+ provider: string;
1846
+ baseUrl: string;
1847
+ reasoning: true;
1848
+ input: ("image" | "text")[];
1849
+ cost: {
1850
+ input: number;
1851
+ output: number;
1852
+ cacheRead: number;
1853
+ cacheWrite: number;
1854
+ };
1855
+ contextWindow: number;
1856
+ maxTokens: number;
1857
+ };
1773
1858
  readonly "claude-sonnet-4-0": {
1774
1859
  id: string;
1775
1860
  name: string;
@@ -4868,7 +4953,7 @@ export declare const MODELS: {
4868
4953
  };
4869
4954
  };
4870
4955
  readonly "kimi-coding": {
4871
- readonly k2p5: {
4956
+ readonly "kimi-for-coding": {
4872
4957
  id: string;
4873
4958
  name: string;
4874
4959
  api: "anthropic-messages";
@@ -6376,6 +6461,23 @@ export declare const MODELS: {
6376
6461
  contextWindow: number;
6377
6462
  maxTokens: number;
6378
6463
  };
6464
+ readonly "claude-opus-4-7": {
6465
+ id: string;
6466
+ name: string;
6467
+ api: "anthropic-messages";
6468
+ provider: string;
6469
+ baseUrl: string;
6470
+ reasoning: true;
6471
+ input: ("image" | "text")[];
6472
+ cost: {
6473
+ input: number;
6474
+ output: number;
6475
+ cacheRead: number;
6476
+ cacheWrite: number;
6477
+ };
6478
+ contextWindow: number;
6479
+ maxTokens: number;
6480
+ };
6379
6481
  readonly "claude-sonnet-4": {
6380
6482
  id: string;
6381
6483
  name: string;
@@ -6801,6 +6903,40 @@ export declare const MODELS: {
6801
6903
  contextWindow: number;
6802
6904
  maxTokens: number;
6803
6905
  };
6906
+ readonly "qwen3.5-plus": {
6907
+ id: string;
6908
+ name: string;
6909
+ api: "openai-completions";
6910
+ provider: string;
6911
+ baseUrl: string;
6912
+ reasoning: true;
6913
+ input: ("image" | "text")[];
6914
+ cost: {
6915
+ input: number;
6916
+ output: number;
6917
+ cacheRead: number;
6918
+ cacheWrite: number;
6919
+ };
6920
+ contextWindow: number;
6921
+ maxTokens: number;
6922
+ };
6923
+ readonly "qwen3.6-plus": {
6924
+ id: string;
6925
+ name: string;
6926
+ api: "openai-completions";
6927
+ provider: string;
6928
+ baseUrl: string;
6929
+ reasoning: true;
6930
+ input: ("image" | "text")[];
6931
+ cost: {
6932
+ input: number;
6933
+ output: number;
6934
+ cacheRead: number;
6935
+ cacheWrite: number;
6936
+ };
6937
+ contextWindow: number;
6938
+ maxTokens: number;
6939
+ };
6804
6940
  };
6805
6941
  readonly "opencode-go": {
6806
6942
  readonly "glm-5": {
@@ -6922,6 +7058,40 @@ export declare const MODELS: {
6922
7058
  contextWindow: number;
6923
7059
  maxTokens: number;
6924
7060
  };
7061
+ readonly "qwen3.5-plus": {
7062
+ id: string;
7063
+ name: string;
7064
+ api: "openai-completions";
7065
+ provider: string;
7066
+ baseUrl: string;
7067
+ reasoning: true;
7068
+ input: ("image" | "text")[];
7069
+ cost: {
7070
+ input: number;
7071
+ output: number;
7072
+ cacheRead: number;
7073
+ cacheWrite: number;
7074
+ };
7075
+ contextWindow: number;
7076
+ maxTokens: number;
7077
+ };
7078
+ readonly "qwen3.6-plus": {
7079
+ id: string;
7080
+ name: string;
7081
+ api: "openai-completions";
7082
+ provider: string;
7083
+ baseUrl: string;
7084
+ reasoning: true;
7085
+ input: ("image" | "text")[];
7086
+ cost: {
7087
+ input: number;
7088
+ output: number;
7089
+ cacheRead: number;
7090
+ cacheWrite: number;
7091
+ };
7092
+ contextWindow: number;
7093
+ maxTokens: number;
7094
+ };
6925
7095
  };
6926
7096
  readonly openrouter: {
6927
7097
  readonly "ai21/jamba-large-1.7": {
@@ -7230,6 +7400,23 @@ export declare const MODELS: {
7230
7400
  contextWindow: number;
7231
7401
  maxTokens: number;
7232
7402
  };
7403
+ readonly "anthropic/claude-opus-4.7": {
7404
+ id: string;
7405
+ name: string;
7406
+ api: "openai-completions";
7407
+ provider: string;
7408
+ baseUrl: string;
7409
+ reasoning: true;
7410
+ input: ("image" | "text")[];
7411
+ cost: {
7412
+ input: number;
7413
+ output: number;
7414
+ cacheRead: number;
7415
+ cacheWrite: number;
7416
+ };
7417
+ contextWindow: number;
7418
+ maxTokens: number;
7419
+ };
7233
7420
  readonly "anthropic/claude-sonnet-4": {
7234
7421
  id: string;
7235
7422
  name: string;
@@ -11567,6 +11754,23 @@ export declare const MODELS: {
11567
11754
  contextWindow: number;
11568
11755
  maxTokens: number;
11569
11756
  };
11757
+ readonly "anthropic/claude-opus-4.7": {
11758
+ id: string;
11759
+ name: string;
11760
+ api: "anthropic-messages";
11761
+ provider: string;
11762
+ baseUrl: string;
11763
+ reasoning: true;
11764
+ input: ("image" | "text")[];
11765
+ cost: {
11766
+ input: number;
11767
+ output: number;
11768
+ cacheRead: number;
11769
+ cacheWrite: number;
11770
+ };
11771
+ contextWindow: number;
11772
+ maxTokens: number;
11773
+ };
11570
11774
  readonly "anthropic/claude-sonnet-4": {
11571
11775
  id: string;
11572
11776
  name: string;
@@ -13733,7 +13937,7 @@ export declare const MODELS: {
13733
13937
  provider: string;
13734
13938
  baseUrl: string;
13735
13939
  reasoning: true;
13736
- input: "text"[];
13940
+ input: ("image" | "text")[];
13737
13941
  cost: {
13738
13942
  input: number;
13739
13943
  output: number;