@caupulican/pi-ai 0.81.2 → 0.81.4

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
@@ -6,7 +6,9 @@ type ModelApi<TProvider extends KnownProvider, TModelId extends keyof (typeof MO
6
6
  export declare function getModel<TProvider extends KnownProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(provider: TProvider, modelId: TModelId): Model<ModelApi<TProvider, TModelId>>;
7
7
  export declare function getProviders(): KnownProvider[];
8
8
  export declare function getModels<TProvider extends KnownProvider>(provider: TProvider): Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[];
9
- export declare function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage["cost"];
9
+ export declare function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage, options?: {
10
+ providerSuppliedTotal?: boolean;
11
+ }): Usage["cost"];
10
12
  export declare function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[];
11
13
  export declare function clampThinkingLevel<TApi extends Api>(model: Model<TApi>, level: ModelThinkingLevel): ModelThinkingLevel;
12
14
  /**
@@ -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,kBAAkB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAavF,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,CAS/F;AAID,wBAAgB,0BAA0B,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,EAAE,CASrG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,GAAG,EAClD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EAAE,kBAAkB,GACvB,kBAAkB,CAgBpB;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.ts\";\nimport type { Api, KnownProvider, Model, ModelThinkingLevel, Usage } from \"./types.ts\";\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\tif (usage.cost.total <= 0) {\n\t\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\t}\n\treturn usage.cost;\n}\n\nconst EXTENDED_THINKING_LEVELS: ModelThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"];\n\nexport function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[] {\n\tif (!model.reasoning) return [\"off\"];\n\n\treturn EXTENDED_THINKING_LEVELS.filter((level) => {\n\t\tconst mapped = model.thinkingLevelMap?.[level];\n\t\tif (mapped === null) return false;\n\t\tif (level === \"xhigh\") return mapped !== undefined;\n\t\treturn true;\n\t});\n}\n\nexport function clampThinkingLevel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tlevel: ModelThinkingLevel,\n): ModelThinkingLevel {\n\tconst availableLevels = getSupportedThinkingLevels(model);\n\tif (availableLevels.includes(level)) return level;\n\n\tconst requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);\n\tif (requestedIndex === -1) return availableLevels[0] ?? \"off\";\n\n\tfor (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i++) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\tfor (let i = requestedIndex - 1; i >= 0; i--) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\treturn availableLevels[0] ?? \"off\";\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,kBAAkB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAavF,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,EAC7C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,KAAK,CAAC,MAAM,CAAC,CASf;AAID,wBAAgB,0BAA0B,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,EAAE,CASrG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,GAAG,EAClD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EAAE,kBAAkB,GACvB,kBAAkB,CAgBpB;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.ts\";\nimport type { Api, KnownProvider, Model, ModelThinkingLevel, Usage } from \"./types.ts\";\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>(\n\tmodel: Model<TApi>,\n\tusage: Usage,\n\toptions: { providerSuppliedTotal?: boolean } = {},\n): 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\tif (!options.providerSuppliedTotal) {\n\t\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\t}\n\treturn usage.cost;\n}\n\nconst EXTENDED_THINKING_LEVELS: ModelThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"];\n\nexport function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[] {\n\tif (!model.reasoning) return [\"off\"];\n\n\treturn EXTENDED_THINKING_LEVELS.filter((level) => {\n\t\tconst mapped = model.thinkingLevelMap?.[level];\n\t\tif (mapped === null) return false;\n\t\tif (level === \"xhigh\") return mapped !== undefined;\n\t\treturn true;\n\t});\n}\n\nexport function clampThinkingLevel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tlevel: ModelThinkingLevel,\n): ModelThinkingLevel {\n\tconst availableLevels = getSupportedThinkingLevels(model);\n\tif (availableLevels.includes(level)) return level;\n\n\tconst requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);\n\tif (requestedIndex === -1) return availableLevels[0] ?? \"off\";\n\n\tfor (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i++) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\tfor (let i = requestedIndex - 1; i >= 0; i--) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\treturn availableLevels[0] ?? \"off\";\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"]}
@@ -764,6 +764,23 @@ export declare const MODELS: {
764
764
  contextWindow: number;
765
765
  maxTokens: number;
766
766
  };
767
+ readonly "jp.anthropic.claude-haiku-4-5-20251001-v1:0": {
768
+ id: string;
769
+ name: string;
770
+ api: "bedrock-converse-stream";
771
+ provider: string;
772
+ baseUrl: string;
773
+ reasoning: true;
774
+ input: ("image" | "text")[];
775
+ cost: {
776
+ input: number;
777
+ output: number;
778
+ cacheRead: number;
779
+ cacheWrite: number;
780
+ };
781
+ contextWindow: number;
782
+ maxTokens: number;
783
+ };
767
784
  readonly "jp.anthropic.claude-opus-4-7": {
768
785
  id: string;
769
786
  name: string;
@@ -1841,108 +1858,6 @@ export declare const MODELS: {
1841
1858
  };
1842
1859
  };
1843
1860
  readonly anthropic: {
1844
- readonly "claude-3-5-sonnet-20240620": {
1845
- id: string;
1846
- name: string;
1847
- api: "anthropic-messages";
1848
- provider: string;
1849
- baseUrl: string;
1850
- reasoning: false;
1851
- input: ("image" | "text")[];
1852
- cost: {
1853
- input: number;
1854
- output: number;
1855
- cacheRead: number;
1856
- cacheWrite: number;
1857
- };
1858
- contextWindow: number;
1859
- maxTokens: number;
1860
- };
1861
- readonly "claude-3-5-sonnet-20241022": {
1862
- id: string;
1863
- name: string;
1864
- api: "anthropic-messages";
1865
- provider: string;
1866
- baseUrl: string;
1867
- reasoning: false;
1868
- input: ("image" | "text")[];
1869
- cost: {
1870
- input: number;
1871
- output: number;
1872
- cacheRead: number;
1873
- cacheWrite: number;
1874
- };
1875
- contextWindow: number;
1876
- maxTokens: number;
1877
- };
1878
- readonly "claude-3-7-sonnet-20250219": {
1879
- id: string;
1880
- name: string;
1881
- api: "anthropic-messages";
1882
- provider: string;
1883
- baseUrl: string;
1884
- reasoning: true;
1885
- input: ("image" | "text")[];
1886
- cost: {
1887
- input: number;
1888
- output: number;
1889
- cacheRead: number;
1890
- cacheWrite: number;
1891
- };
1892
- contextWindow: number;
1893
- maxTokens: number;
1894
- };
1895
- readonly "claude-3-haiku-20240307": {
1896
- id: string;
1897
- name: string;
1898
- api: "anthropic-messages";
1899
- provider: string;
1900
- baseUrl: string;
1901
- reasoning: false;
1902
- input: ("image" | "text")[];
1903
- cost: {
1904
- input: number;
1905
- output: number;
1906
- cacheRead: number;
1907
- cacheWrite: number;
1908
- };
1909
- contextWindow: number;
1910
- maxTokens: number;
1911
- };
1912
- readonly "claude-3-opus-20240229": {
1913
- id: string;
1914
- name: string;
1915
- api: "anthropic-messages";
1916
- provider: string;
1917
- baseUrl: string;
1918
- reasoning: false;
1919
- input: ("image" | "text")[];
1920
- cost: {
1921
- input: number;
1922
- output: number;
1923
- cacheRead: number;
1924
- cacheWrite: number;
1925
- };
1926
- contextWindow: number;
1927
- maxTokens: number;
1928
- };
1929
- readonly "claude-3-sonnet-20240229": {
1930
- id: string;
1931
- name: string;
1932
- api: "anthropic-messages";
1933
- provider: string;
1934
- baseUrl: string;
1935
- reasoning: false;
1936
- input: ("image" | "text")[];
1937
- cost: {
1938
- input: number;
1939
- output: number;
1940
- cacheRead: number;
1941
- cacheWrite: number;
1942
- };
1943
- contextWindow: number;
1944
- maxTokens: number;
1945
- };
1946
1861
  readonly "claude-fable-5": {
1947
1862
  id: string;
1948
1863
  name: string;
@@ -1994,23 +1909,6 @@ export declare const MODELS: {
1994
1909
  contextWindow: number;
1995
1910
  maxTokens: number;
1996
1911
  };
1997
- readonly "claude-opus-4-0": {
1998
- id: string;
1999
- name: string;
2000
- api: "anthropic-messages";
2001
- provider: string;
2002
- baseUrl: string;
2003
- reasoning: true;
2004
- input: ("image" | "text")[];
2005
- cost: {
2006
- input: number;
2007
- output: number;
2008
- cacheRead: number;
2009
- cacheWrite: number;
2010
- };
2011
- contextWindow: number;
2012
- maxTokens: number;
2013
- };
2014
1912
  readonly "claude-opus-4-1": {
2015
1913
  id: string;
2016
1914
  name: string;
@@ -2045,23 +1943,6 @@ export declare const MODELS: {
2045
1943
  contextWindow: number;
2046
1944
  maxTokens: number;
2047
1945
  };
2048
- readonly "claude-opus-4-20250514": {
2049
- id: string;
2050
- name: string;
2051
- api: "anthropic-messages";
2052
- provider: string;
2053
- baseUrl: string;
2054
- reasoning: true;
2055
- input: ("image" | "text")[];
2056
- cost: {
2057
- input: number;
2058
- output: number;
2059
- cacheRead: number;
2060
- cacheWrite: number;
2061
- };
2062
- contextWindow: number;
2063
- maxTokens: number;
2064
- };
2065
1946
  readonly "claude-opus-4-5": {
2066
1947
  id: string;
2067
1948
  name: string;
@@ -2167,40 +2048,6 @@ export declare const MODELS: {
2167
2048
  contextWindow: number;
2168
2049
  maxTokens: number;
2169
2050
  };
2170
- readonly "claude-sonnet-4-0": {
2171
- id: string;
2172
- name: string;
2173
- api: "anthropic-messages";
2174
- provider: string;
2175
- baseUrl: string;
2176
- reasoning: true;
2177
- input: ("image" | "text")[];
2178
- cost: {
2179
- input: number;
2180
- output: number;
2181
- cacheRead: number;
2182
- cacheWrite: number;
2183
- };
2184
- contextWindow: number;
2185
- maxTokens: number;
2186
- };
2187
- readonly "claude-sonnet-4-20250514": {
2188
- id: string;
2189
- name: string;
2190
- api: "anthropic-messages";
2191
- provider: string;
2192
- baseUrl: string;
2193
- reasoning: true;
2194
- input: ("image" | "text")[];
2195
- cost: {
2196
- input: number;
2197
- output: number;
2198
- cacheRead: number;
2199
- cacheWrite: number;
2200
- };
2201
- contextWindow: number;
2202
- maxTokens: number;
2203
- };
2204
2051
  readonly "claude-sonnet-4-5": {
2205
2052
  id: string;
2206
2053
  name: string;