node-llama-cpp 3.0.0-beta.13 → 3.0.0-beta.15

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.
Files changed (351) hide show
  1. package/README.md +1 -1
  2. package/dist/ChatWrapper.js +4 -0
  3. package/dist/ChatWrapper.js.map +1 -1
  4. package/dist/bindings/AddonTypes.d.ts +35 -6
  5. package/dist/bindings/Llama.d.ts +12 -0
  6. package/dist/bindings/Llama.js +100 -7
  7. package/dist/bindings/Llama.js.map +1 -1
  8. package/dist/bindings/getLlama.d.ts +19 -1
  9. package/dist/bindings/getLlama.js +16 -6
  10. package/dist/bindings/getLlama.js.map +1 -1
  11. package/dist/bindings/types.d.ts +18 -0
  12. package/dist/bindings/types.js +31 -2
  13. package/dist/bindings/types.js.map +1 -1
  14. package/dist/bindings/utils/MemoryOrchestrator.d.ts +21 -0
  15. package/dist/bindings/utils/MemoryOrchestrator.js +49 -0
  16. package/dist/bindings/utils/MemoryOrchestrator.js.map +1 -0
  17. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +1 -1
  18. package/dist/bindings/utils/cloneLlamaCppRepo.js +4 -3
  19. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -1
  20. package/dist/bindings/utils/compileLLamaCpp.d.ts +4 -1
  21. package/dist/bindings/utils/compileLLamaCpp.js +133 -97
  22. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  23. package/dist/bindings/utils/detectAvailableComputeLayers.d.ts +3 -0
  24. package/dist/bindings/utils/detectAvailableComputeLayers.js +155 -13
  25. package/dist/bindings/utils/detectAvailableComputeLayers.js.map +1 -1
  26. package/dist/bindings/utils/getLlamaWithoutBackend.d.ts +5 -0
  27. package/dist/bindings/utils/getLlamaWithoutBackend.js +27 -0
  28. package/dist/bindings/utils/getLlamaWithoutBackend.js.map +1 -0
  29. package/dist/bindings/utils/logDistroInstallInstruction.d.ts +1 -0
  30. package/dist/bindings/utils/logDistroInstallInstruction.js +16 -6
  31. package/dist/bindings/utils/logDistroInstallInstruction.js.map +1 -1
  32. package/dist/bindings/utils/resolveCustomCmakeOptions.js +2 -2
  33. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -1
  34. package/dist/bindings/utils/testBindingBinary.js +2 -2
  35. package/dist/bindings/utils/testBindingBinary.js.map +1 -1
  36. package/dist/bindings/utils/testCmakeBinary.d.ts +5 -0
  37. package/dist/bindings/utils/testCmakeBinary.js +32 -0
  38. package/dist/bindings/utils/testCmakeBinary.js.map +1 -0
  39. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +2 -1
  40. package/dist/chatWrappers/AlpacaChatWrapper.js +9 -2
  41. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -1
  42. package/dist/chatWrappers/ChatMLChatWrapper.js +12 -10
  43. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -1
  44. package/dist/chatWrappers/FalconChatWrapper.d.ts +2 -1
  45. package/dist/chatWrappers/FalconChatWrapper.js +28 -11
  46. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  47. package/dist/chatWrappers/FunctionaryChatWrapper.js +59 -45
  48. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  49. package/dist/chatWrappers/GemmaChatWrapper.js +9 -7
  50. package/dist/chatWrappers/GemmaChatWrapper.js.map +1 -1
  51. package/dist/chatWrappers/GeneralChatWrapper.d.ts +2 -1
  52. package/dist/chatWrappers/GeneralChatWrapper.js +35 -12
  53. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  54. package/dist/chatWrappers/LlamaChatWrapper.d.ts +7 -0
  55. package/dist/chatWrappers/LlamaChatWrapper.js +26 -8
  56. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -1
  57. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +73 -0
  58. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +355 -0
  59. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -0
  60. package/dist/{TemplateChatWrapper.d.ts → chatWrappers/generic/TemplateChatWrapper.d.ts} +16 -18
  61. package/dist/{TemplateChatWrapper.js → chatWrappers/generic/TemplateChatWrapper.js} +31 -69
  62. package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -0
  63. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.d.ts +33 -0
  64. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js +45 -0
  65. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js.map +1 -0
  66. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.d.ts +4 -0
  67. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +206 -0
  68. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -0
  69. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +67 -0
  70. package/dist/chatWrappers/utils/resolveChatWrapper.js +206 -0
  71. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -0
  72. package/dist/cli/cli.js +1 -1
  73. package/dist/cli/cli.js.map +1 -1
  74. package/dist/cli/commands/ChatCommand.d.ts +7 -4
  75. package/dist/cli/commands/ChatCommand.js +177 -70
  76. package/dist/cli/commands/ChatCommand.js.map +1 -1
  77. package/dist/cli/commands/ClearCommand.d.ts +1 -1
  78. package/dist/cli/commands/ClearCommand.js +5 -5
  79. package/dist/cli/commands/ClearCommand.js.map +1 -1
  80. package/dist/cli/commands/CompleteCommand.d.ts +3 -2
  81. package/dist/cli/commands/CompleteCommand.js +115 -51
  82. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  83. package/dist/cli/commands/InfillCommand.d.ts +3 -2
  84. package/dist/cli/commands/InfillCommand.js +115 -51
  85. package/dist/cli/commands/InfillCommand.js.map +1 -1
  86. package/dist/cli/commands/OnPostInstallCommand.js +2 -0
  87. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  88. package/dist/cli/commands/{InspectCommand.d.ts → inspect/InspectCommand.d.ts} +1 -4
  89. package/dist/cli/commands/inspect/InspectCommand.js +17 -0
  90. package/dist/cli/commands/inspect/InspectCommand.js.map +1 -0
  91. package/dist/cli/commands/inspect/commands/InspectGgufCommand.d.ts +10 -0
  92. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +108 -0
  93. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -0
  94. package/dist/cli/commands/inspect/commands/InspectGpuCommand.d.ts +4 -0
  95. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +98 -0
  96. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -0
  97. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +14 -0
  98. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +577 -0
  99. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -0
  100. package/dist/cli/utils/ConsoleTable.d.ts +23 -0
  101. package/dist/cli/utils/ConsoleTable.js +86 -0
  102. package/dist/cli/utils/ConsoleTable.js.map +1 -0
  103. package/dist/cli/utils/printCommonInfoLines.d.ts +9 -0
  104. package/dist/cli/utils/printCommonInfoLines.js +70 -0
  105. package/dist/cli/utils/printCommonInfoLines.js.map +1 -0
  106. package/dist/cli/utils/printInfoLine.d.ts +10 -0
  107. package/dist/cli/utils/printInfoLine.js +45 -0
  108. package/dist/cli/utils/printInfoLine.js.map +1 -0
  109. package/dist/cli/utils/resolveCommandGgufPath.d.ts +1 -0
  110. package/dist/cli/utils/resolveCommandGgufPath.js +6 -0
  111. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -0
  112. package/dist/config.d.ts +3 -1
  113. package/dist/config.js +7 -1
  114. package/dist/config.js.map +1 -1
  115. package/dist/evaluator/LlamaChat/LlamaChat.js +13 -5
  116. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  117. package/dist/evaluator/LlamaCompletion.js +5 -3
  118. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  119. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +43 -9
  120. package/dist/evaluator/LlamaContext/LlamaContext.js +251 -60
  121. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  122. package/dist/evaluator/LlamaContext/types.d.ts +68 -10
  123. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js.map +1 -0
  124. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.js.map +1 -0
  125. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.d.ts +2 -0
  126. package/dist/evaluator/LlamaContext/utils/{resolveBatchItemsPrioritizingStrategy.js → resolveBatchItemsPrioritizationStrategy.js} +4 -4
  127. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.js.map +1 -0
  128. package/dist/evaluator/LlamaEmbeddingContext.d.ts +29 -7
  129. package/dist/evaluator/LlamaEmbeddingContext.js +31 -22
  130. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  131. package/dist/evaluator/LlamaGrammar.js +1 -0
  132. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  133. package/dist/evaluator/LlamaModel.d.ts +78 -20
  134. package/dist/evaluator/LlamaModel.js +385 -21
  135. package/dist/evaluator/LlamaModel.js.map +1 -1
  136. package/dist/evaluator/TokenMeter.d.ts +54 -0
  137. package/dist/evaluator/TokenMeter.js +86 -0
  138. package/dist/evaluator/TokenMeter.js.map +1 -0
  139. package/dist/gguf/GgufInsights.d.ts +40 -0
  140. package/dist/gguf/GgufInsights.js +350 -0
  141. package/dist/gguf/GgufInsights.js.map +1 -0
  142. package/dist/gguf/consts.d.ts +3 -0
  143. package/dist/gguf/consts.js +8 -0
  144. package/dist/gguf/consts.js.map +1 -0
  145. package/dist/gguf/errors/InvalidGgufMagicError.d.ts +3 -0
  146. package/dist/gguf/errors/InvalidGgufMagicError.js +6 -0
  147. package/dist/gguf/errors/InvalidGgufMagicError.js.map +1 -0
  148. package/dist/gguf/errors/UnsupportedGgufValueTypeError.d.ts +4 -0
  149. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js +9 -0
  150. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js.map +1 -0
  151. package/dist/gguf/fileReaders/GgufFileReader.d.ts +33 -0
  152. package/dist/gguf/fileReaders/GgufFileReader.js +76 -0
  153. package/dist/gguf/fileReaders/GgufFileReader.js.map +1 -0
  154. package/dist/gguf/fileReaders/GgufFsFileReader.d.ts +17 -0
  155. package/dist/gguf/fileReaders/GgufFsFileReader.js +45 -0
  156. package/dist/gguf/fileReaders/GgufFsFileReader.js.map +1 -0
  157. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.d.ts +22 -0
  158. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js +63 -0
  159. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js.map +1 -0
  160. package/dist/gguf/parser/GgufV2Parser.d.ts +19 -0
  161. package/dist/gguf/parser/GgufV2Parser.js +115 -0
  162. package/dist/gguf/parser/GgufV2Parser.js.map +1 -0
  163. package/dist/gguf/parser/GgufV3Parser.d.ts +3 -0
  164. package/dist/gguf/parser/GgufV3Parser.js +4 -0
  165. package/dist/gguf/parser/GgufV3Parser.js.map +1 -0
  166. package/dist/gguf/parser/parseGguf.d.ts +8 -0
  167. package/dist/gguf/parser/parseGguf.js +58 -0
  168. package/dist/gguf/parser/parseGguf.js.map +1 -0
  169. package/dist/gguf/readGgufFileInfo.d.ts +30 -0
  170. package/dist/gguf/readGgufFileInfo.js +37 -0
  171. package/dist/gguf/readGgufFileInfo.js.map +1 -0
  172. package/dist/gguf/types/GgufFileInfoTypes.d.ts +52 -0
  173. package/dist/gguf/types/GgufFileInfoTypes.js +18 -0
  174. package/dist/gguf/types/GgufFileInfoTypes.js.map +1 -0
  175. package/dist/gguf/types/GgufMetadataTypes.d.ts +330 -0
  176. package/dist/gguf/types/GgufMetadataTypes.js +86 -0
  177. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -0
  178. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +37 -0
  179. package/dist/gguf/types/GgufTensorInfoTypes.js +33 -0
  180. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -0
  181. package/dist/gguf/utils/GgufReadOffset.d.ts +6 -0
  182. package/dist/gguf/utils/GgufReadOffset.js +18 -0
  183. package/dist/gguf/utils/GgufReadOffset.js.map +1 -0
  184. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.d.ts +5 -0
  185. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js +38 -0
  186. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js.map +1 -0
  187. package/dist/gguf/utils/getGgufFileTypeName.d.ts +4 -0
  188. package/dist/gguf/utils/getGgufFileTypeName.js +13 -0
  189. package/dist/gguf/utils/getGgufFileTypeName.js.map +1 -0
  190. package/dist/gguf/utils/getGgufMetadataArchitectureData.d.ts +3 -0
  191. package/dist/gguf/utils/getGgufMetadataArchitectureData.js +4 -0
  192. package/dist/gguf/utils/getGgufMetadataArchitectureData.js.map +1 -0
  193. package/dist/gguf/utils/normalizeGgufDownloadUrl.d.ts +1 -0
  194. package/dist/gguf/utils/normalizeGgufDownloadUrl.js +16 -0
  195. package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -0
  196. package/dist/index.d.ts +13 -7
  197. package/dist/index.js +11 -6
  198. package/dist/index.js.map +1 -1
  199. package/dist/state.d.ts +2 -0
  200. package/dist/state.js +7 -0
  201. package/dist/state.js.map +1 -1
  202. package/dist/types.d.ts +1 -1
  203. package/dist/utils/DisposeGuard.d.ts +13 -0
  204. package/dist/utils/DisposeGuard.js +120 -0
  205. package/dist/utils/DisposeGuard.js.map +1 -0
  206. package/dist/utils/InsufficientMemoryError.d.ts +3 -0
  207. package/dist/utils/InsufficientMemoryError.js +6 -0
  208. package/dist/utils/InsufficientMemoryError.js.map +1 -0
  209. package/dist/utils/LlamaText.d.ts +25 -10
  210. package/dist/utils/LlamaText.js +205 -23
  211. package/dist/utils/LlamaText.js.map +1 -1
  212. package/dist/utils/StopGenerationDetector.js +3 -1
  213. package/dist/utils/StopGenerationDetector.js.map +1 -1
  214. package/dist/utils/cmake.js +1 -1
  215. package/dist/utils/cmake.js.map +1 -1
  216. package/dist/utils/findBestOption.d.ts +4 -0
  217. package/dist/utils/findBestOption.js +15 -0
  218. package/dist/utils/findBestOption.js.map +1 -0
  219. package/dist/utils/getConsoleLogPrefix.js +3 -2
  220. package/dist/utils/getConsoleLogPrefix.js.map +1 -1
  221. package/dist/utils/getQueuedTokensBeforeStopTrigger.js +3 -3
  222. package/dist/utils/getQueuedTokensBeforeStopTrigger.js.map +1 -1
  223. package/dist/utils/gitReleaseBundles.js +68 -1
  224. package/dist/utils/gitReleaseBundles.js.map +1 -1
  225. package/dist/utils/mergeUnionTypes.d.ts +4 -0
  226. package/dist/utils/parseModelFileName.d.ts +1 -0
  227. package/dist/utils/parseModelFileName.js +6 -1
  228. package/dist/utils/parseModelFileName.js.map +1 -1
  229. package/dist/utils/prettyPrintObject.d.ts +10 -1
  230. package/dist/utils/prettyPrintObject.js +57 -13
  231. package/dist/utils/prettyPrintObject.js.map +1 -1
  232. package/dist/utils/removeNullFields.d.ts +2 -2
  233. package/dist/utils/removeNullFields.js.map +1 -1
  234. package/dist/utils/spawnCommand.d.ts +11 -1
  235. package/dist/utils/spawnCommand.js +55 -7
  236. package/dist/utils/spawnCommand.js.map +1 -1
  237. package/dist/utils/tokenizeInput.d.ts +1 -1
  238. package/dist/utils/tokenizeInput.js +3 -3
  239. package/dist/utils/tokenizeInput.js.map +1 -1
  240. package/dist/utils/withOra.d.ts +1 -0
  241. package/dist/utils/withOra.js +2 -2
  242. package/dist/utils/withOra.js.map +1 -1
  243. package/llama/CMakeLists.txt +5 -5
  244. package/llama/addon.cpp +793 -88
  245. package/llama/binariesGithubRelease.json +1 -1
  246. package/llama/gitRelease.bundle +0 -0
  247. package/llama/gpuInfo/cuda-gpu-info.cu +21 -0
  248. package/llama/gpuInfo/cuda-gpu-info.h +3 -0
  249. package/llama/gpuInfo/metal-gpu-info.h +4 -1
  250. package/llama/gpuInfo/metal-gpu-info.mm +14 -1
  251. package/llama/gpuInfo/vulkan-gpu-info.cpp +20 -2
  252. package/llama/gpuInfo/vulkan-gpu-info.h +2 -0
  253. package/llama/grammars/json.gbnf +1 -1
  254. package/llama/grammars/json_arr.gbnf +1 -1
  255. package/llama/llama.cpp.info.json +1 -1
  256. package/llama/toolchains/win32.host-x64.target-arm64.cmake +41 -0
  257. package/llamaBins/linux-arm64/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  258. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  259. package/llamaBins/linux-armv7l/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  260. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  261. package/llamaBins/linux-x64/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  262. package/llamaBins/linux-x64/llama-addon.node +0 -0
  263. package/llamaBins/linux-x64-cuda/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  264. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  265. package/llamaBins/linux-x64-vulkan/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  266. package/llamaBins/linux-x64-vulkan/llama-addon.node +0 -0
  267. package/llamaBins/mac-arm64-metal/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  268. package/llamaBins/mac-arm64-metal/default.metallib +0 -0
  269. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  270. package/llamaBins/mac-x64/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  271. package/llamaBins/mac-x64/llama-addon.node +0 -0
  272. package/llamaBins/win-arm64/_nlcBuildMetadata.json +1 -0
  273. package/llamaBins/win-arm64/llama-addon.exp +0 -0
  274. package/llamaBins/win-arm64/llama-addon.lib +0 -0
  275. package/llamaBins/win-arm64/llama-addon.node +0 -0
  276. package/llamaBins/win-x64/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  277. package/llamaBins/win-x64/llama-addon.exp +0 -0
  278. package/llamaBins/win-x64/llama-addon.lib +0 -0
  279. package/llamaBins/win-x64/llama-addon.node +0 -0
  280. package/llamaBins/win-x64-cuda/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  281. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  282. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  283. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  284. package/llamaBins/win-x64-vulkan/{.buildMetadata.json → _nlcBuildMetadata.json} +1 -1
  285. package/llamaBins/win-x64-vulkan/llama-addon.exp +0 -0
  286. package/llamaBins/win-x64-vulkan/llama-addon.lib +0 -0
  287. package/llamaBins/win-x64-vulkan/llama-addon.node +0 -0
  288. package/package.json +16 -11
  289. package/dist/TemplateChatWrapper.js.map +0 -1
  290. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.d.ts +0 -33
  291. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js +0 -49
  292. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js.map +0 -1
  293. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +0 -13
  294. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +0 -63
  295. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +0 -1
  296. package/dist/cli/commands/InspectCommand.js +0 -113
  297. package/dist/cli/commands/InspectCommand.js.map +0 -1
  298. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  299. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  300. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -2
  301. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  302. package/dist/gguf/GGUFInsights.d.ts +0 -28
  303. package/dist/gguf/GGUFInsights.js +0 -58
  304. package/dist/gguf/GGUFInsights.js.map +0 -1
  305. package/dist/gguf/GGUFMetadata.d.ts +0 -19
  306. package/dist/gguf/GGUFMetadata.js +0 -38
  307. package/dist/gguf/GGUFMetadata.js.map +0 -1
  308. package/dist/gguf/errors/InvalidGGUFMagicError.d.ts +0 -3
  309. package/dist/gguf/errors/InvalidGGUFMagicError.js +0 -6
  310. package/dist/gguf/errors/InvalidGGUFMagicError.js.map +0 -1
  311. package/dist/gguf/errors/MetadataNotParsedYetError.d.ts +0 -3
  312. package/dist/gguf/errors/MetadataNotParsedYetError.js +0 -6
  313. package/dist/gguf/errors/MetadataNotParsedYetError.js.map +0 -1
  314. package/dist/gguf/errors/MissingNodeLlamaError.d.ts +0 -3
  315. package/dist/gguf/errors/MissingNodeLlamaError.js +0 -6
  316. package/dist/gguf/errors/MissingNodeLlamaError.js.map +0 -1
  317. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.d.ts +0 -5
  318. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.js +0 -12
  319. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.js.map +0 -1
  320. package/dist/gguf/errors/UnsupportedMetadataTypeError.d.ts +0 -4
  321. package/dist/gguf/errors/UnsupportedMetadataTypeError.js +0 -8
  322. package/dist/gguf/errors/UnsupportedMetadataTypeError.js.map +0 -1
  323. package/dist/gguf/ggufParser/GGUFParser.d.ts +0 -18
  324. package/dist/gguf/ggufParser/GGUFParser.js +0 -123
  325. package/dist/gguf/ggufParser/GGUFParser.js.map +0 -1
  326. package/dist/gguf/ggufParser/GGUFTypes.d.ts +0 -257
  327. package/dist/gguf/ggufParser/GGUFTypes.js +0 -2
  328. package/dist/gguf/ggufParser/GGUFTypes.js.map +0 -1
  329. package/dist/gguf/ggufParser/checkArchitecture.d.ts +0 -14
  330. package/dist/gguf/ggufParser/checkArchitecture.js +0 -74
  331. package/dist/gguf/ggufParser/checkArchitecture.js.map +0 -1
  332. package/dist/gguf/ggufParser/stream/GGUFBaseStream.d.ts +0 -38
  333. package/dist/gguf/ggufParser/stream/GGUFBaseStream.js +0 -83
  334. package/dist/gguf/ggufParser/stream/GGUFBaseStream.js.map +0 -1
  335. package/dist/gguf/ggufParser/stream/GGUFFetchStream.d.ts +0 -14
  336. package/dist/gguf/ggufParser/stream/GGUFFetchStream.js +0 -35
  337. package/dist/gguf/ggufParser/stream/GGUFFetchStream.js.map +0 -1
  338. package/dist/gguf/ggufParser/stream/GGUFReadStream.d.ts +0 -15
  339. package/dist/gguf/ggufParser/stream/GGUFReadStream.js +0 -40
  340. package/dist/gguf/ggufParser/stream/GGUFReadStream.js.map +0 -1
  341. package/dist/utils/parseModelTypeDescription.d.ts +0 -6
  342. package/dist/utils/parseModelTypeDescription.js +0 -9
  343. package/dist/utils/parseModelTypeDescription.js.map +0 -1
  344. package/dist/utils/resolveChatWrapper.d.ts +0 -4
  345. package/dist/utils/resolveChatWrapper.js +0 -16
  346. package/dist/utils/resolveChatWrapper.js.map +0 -1
  347. package/llamaBins/mac-arm64-metal/ggml-metal.metal +0 -7731
  348. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.d.ts +0 -0
  349. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.js +0 -0
  350. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.d.ts +0 -0
  351. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.js +0 -0
@@ -0,0 +1,76 @@
1
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
2
+ export const valueTypeToBytesToRead = {
3
+ uint8: 1,
4
+ uint16: 2,
5
+ uint32: 4,
6
+ uint64: 8,
7
+ int8: 1,
8
+ int16: 2,
9
+ int32: 4,
10
+ int64: 8,
11
+ float32: 4,
12
+ float64: 8,
13
+ bool: 1
14
+ };
15
+ export class GgufFileReader {
16
+ _buffer = Buffer.alloc(0);
17
+ async readUint8(offset) {
18
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.uint8);
19
+ return response.readUInt8();
20
+ }
21
+ async readUint16(offset) {
22
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.uint16);
23
+ return response.readUInt16LE();
24
+ }
25
+ async readUint32(offset) {
26
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.uint32);
27
+ return response.readUInt32LE();
28
+ }
29
+ async readUint64(offset) {
30
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.uint64);
31
+ return response.readBigUInt64LE();
32
+ }
33
+ async readInt8(offset) {
34
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.int8);
35
+ return response.readInt8();
36
+ }
37
+ async readInt16(offset) {
38
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.int16);
39
+ return response.readInt16LE();
40
+ }
41
+ async readInt32(offset) {
42
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.int32);
43
+ return response.readInt32LE();
44
+ }
45
+ async readInt64(offset) {
46
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.int64);
47
+ return response.readBigInt64LE();
48
+ }
49
+ async readFloat32(offset) {
50
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.float32);
51
+ return response.readFloatLE();
52
+ }
53
+ async readFloat64(offset) {
54
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.float64);
55
+ return response.readDoubleLE();
56
+ }
57
+ async readBool(offset) {
58
+ const response = await this._readByteRangeAndUpdateOffset(offset, valueTypeToBytesToRead.uint8);
59
+ return response.readUInt8() === 1;
60
+ }
61
+ _addToBuffer(buffer) {
62
+ this._buffer = Buffer.concat([this._buffer, buffer]);
63
+ }
64
+ async _readByteRangeAndUpdateOffset(offset, length) {
65
+ const readOffset = GgufReadOffset.resolveReadOffset(offset);
66
+ const response = await this.readByteRange(readOffset.offset, length);
67
+ readOffset.moveBy(length);
68
+ return response;
69
+ }
70
+ static castNumberIfSafe(value) {
71
+ if (value > Number.MAX_SAFE_INTEGER)
72
+ return value;
73
+ return Number(value);
74
+ }
75
+ }
76
+ //# sourceMappingURL=GgufFileReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GgufFileReader.js","sourceRoot":"","sources":["../../../src/gguf/fileReaders/GgufFileReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;CACD,CAAC;AAEX,MAAM,OAAgB,cAAc;IACtB,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAI7B,KAAK,CAAC,SAAS,CAAC,MAA+B;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAA+B;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjG,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAA+B;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjG,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAA+B;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjG,OAAO,QAAQ,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAA+B;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAA+B;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAA+B;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAA+B;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAA+B;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAClG,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAA+B;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAClG,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAA+B;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAES,YAAY,CAAC,MAAc;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,MAA+B,EAAE,MAAc;QACvF,MAAM,UAAU,GAAG,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAa;QACxC,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB;YAC/B,OAAO,KAAK,CAAC;QAEjB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACJ"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
4
+ import { GgufFileReader } from "./GgufFileReader.js";
5
+ type GgufFsFileReaderOptions = {
6
+ filePath: string;
7
+ signal?: AbortSignal;
8
+ };
9
+ export declare class GgufFsFileReader extends GgufFileReader {
10
+ readonly filePath: string;
11
+ private readonly _signal?;
12
+ constructor({ filePath, signal }: GgufFsFileReaderOptions);
13
+ readByteRange(offset: number | GgufReadOffset, length: number): Promise<Buffer>;
14
+ private _readToExpandBufferUpToOffset;
15
+ private _readByteRange;
16
+ }
17
+ export {};
@@ -0,0 +1,45 @@
1
+ import fs from "node:fs/promises";
2
+ import { withLock } from "lifecycle-utils";
3
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
4
+ import { defaultExtraAllocationSize } from "../consts.js";
5
+ import { GgufFileReader } from "./GgufFileReader.js";
6
+ export class GgufFsFileReader extends GgufFileReader {
7
+ filePath;
8
+ _signal;
9
+ constructor({ filePath, signal }) {
10
+ super();
11
+ this.filePath = filePath;
12
+ this._signal = signal;
13
+ }
14
+ async readByteRange(offset, length) {
15
+ const readOffset = GgufReadOffset.resolveReadOffset(offset);
16
+ const endOffset = readOffset.offset + length;
17
+ if (endOffset >= this._buffer.length)
18
+ await this._readToExpandBufferUpToOffset(endOffset);
19
+ const res = this._buffer.subarray(readOffset.offset, endOffset);
20
+ readOffset.moveBy(length);
21
+ return res;
22
+ }
23
+ async _readToExpandBufferUpToOffset(endOffset, extraAllocationSize = defaultExtraAllocationSize) {
24
+ return await withLock(this, "modifyBuffer", this._signal, async () => {
25
+ if (endOffset < this._buffer.length)
26
+ return;
27
+ const missingBytesBuffer = await this._readByteRange(this._buffer.length, endOffset + extraAllocationSize - this._buffer.length);
28
+ this._addToBuffer(missingBytesBuffer);
29
+ });
30
+ }
31
+ async _readByteRange(start, length) {
32
+ const fd = await fs.open(this.filePath, "r");
33
+ try {
34
+ if (this._signal?.aborted)
35
+ throw this._signal.reason;
36
+ const buffer = Buffer.alloc(length);
37
+ await fd.read(buffer, 0, length, start);
38
+ return buffer;
39
+ }
40
+ finally {
41
+ await fd.close();
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=GgufFsFileReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GgufFsFileReader.js","sourceRoot":"","sources":["../../../src/gguf/fileReaders/GgufFsFileReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,0BAA0B,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAOnD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAChC,QAAQ,CAAS;IAChB,OAAO,CAAe;IAEvC,YAAmB,EAAC,QAAQ,EAAE,MAAM,EAA0B;QAC1D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAA+B,EAAE,MAAc;QACtE,MAAM,UAAU,GAAG,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAE7C,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAChC,MAAM,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,SAAiB,EAAE,sBAA8B,0BAA0B;QACnH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC/B,OAAO;YAEX,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,cAAc,CAChD,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,SAAS,GAAG,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACxD,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,MAAc;QACtD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI;YACA,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;gBACrB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;SACjB;gBAAS;YACN,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;SACpB;IACL,CAAC;CACJ"}
@@ -0,0 +1,22 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import retry from "async-retry";
4
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
5
+ import { GgufFileReader } from "./GgufFileReader.js";
6
+ type GgufFetchFileReaderOptions = {
7
+ url: string;
8
+ retryOptions?: retry.Options;
9
+ headers?: Record<string, string>;
10
+ signal?: AbortSignal;
11
+ };
12
+ export declare class GgufNetworkFetchFileReader extends GgufFileReader {
13
+ readonly url: string;
14
+ readonly retryOptions: retry.Options;
15
+ readonly headers: Record<string, string>;
16
+ private readonly _signal?;
17
+ constructor({ url, retryOptions, headers, signal }: GgufFetchFileReaderOptions);
18
+ readByteRange(offset: number | GgufReadOffset, length: number): Promise<Buffer>;
19
+ private _fetchToExpandBufferUpToOffset;
20
+ private _fetchByteRange;
21
+ }
22
+ export {};
@@ -0,0 +1,63 @@
1
+ import retry from "async-retry";
2
+ import { withLock } from "lifecycle-utils";
3
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
4
+ import { defaultExtraAllocationSize, ggufDefaultFetchRetryOptions } from "../consts.js";
5
+ import { GgufFileReader } from "./GgufFileReader.js";
6
+ export class GgufNetworkFetchFileReader extends GgufFileReader {
7
+ url;
8
+ retryOptions;
9
+ headers;
10
+ _signal;
11
+ constructor({ url, retryOptions = ggufDefaultFetchRetryOptions, headers, signal }) {
12
+ super();
13
+ this.url = url;
14
+ this.retryOptions = retryOptions;
15
+ this.headers = headers ?? {};
16
+ this._signal = signal;
17
+ }
18
+ async readByteRange(offset, length) {
19
+ const readOffset = GgufReadOffset.resolveReadOffset(offset);
20
+ const endOffset = readOffset.offset + length;
21
+ if (endOffset >= this._buffer.length)
22
+ await this._fetchToExpandBufferUpToOffset(endOffset);
23
+ const res = this._buffer.subarray(readOffset.offset, endOffset);
24
+ readOffset.moveBy(length);
25
+ return res;
26
+ }
27
+ async _fetchToExpandBufferUpToOffset(endOffset, extraAllocationSize = defaultExtraAllocationSize) {
28
+ await withLock(this, "modifyBuffer", this._signal, async () => {
29
+ if (endOffset < this._buffer.length)
30
+ return;
31
+ const missingBytesBuffer = await retry(async (bail) => {
32
+ try {
33
+ return await this._fetchByteRange(this._buffer.length, endOffset + extraAllocationSize - this._buffer.length);
34
+ }
35
+ catch (err) {
36
+ if (this._signal?.aborted) {
37
+ bail(this._signal.reason);
38
+ throw this._signal.reason;
39
+ }
40
+ throw err;
41
+ }
42
+ }, this.retryOptions);
43
+ if (this._signal?.aborted)
44
+ throw this._signal.reason;
45
+ this._addToBuffer(missingBytesBuffer);
46
+ });
47
+ }
48
+ async _fetchByteRange(start, length) {
49
+ const response = await fetch(this.url, {
50
+ headers: {
51
+ ...this.headers,
52
+ Range: `bytes=${start}-${start + length}`,
53
+ accept: "*/*"
54
+ },
55
+ signal: this._signal
56
+ });
57
+ if (!response.ok)
58
+ throw new Error(`Failed to fetch byte range: ${response.status} ${response.statusText}`);
59
+ const arrayBuffer = await response.arrayBuffer();
60
+ return Buffer.from(arrayBuffer);
61
+ }
62
+ }
63
+ //# sourceMappingURL=GgufNetworkFetchFileReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GgufNetworkFetchFileReader.js","sourceRoot":"","sources":["../../../src/gguf/fileReaders/GgufNetworkFetchFileReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
2
+ import { GgufValueType, GgufVersionParserOptions, GgufVersionParserResult, MetadataKeyValueRecord, MetadataValue } from "../types/GgufFileInfoTypes.js";
3
+ export declare class GgufV2Parser {
4
+ private readonly _fileReader;
5
+ private readonly _shouldReadTensorInfo;
6
+ private readonly _ignoreKeys;
7
+ private readonly _readOffset;
8
+ private readonly _logWarnings;
9
+ constructor({ fileReader, readTensorInfo, ignoreKeys, readOffset, logWarnings }: GgufVersionParserOptions);
10
+ parse(): Promise<GgufVersionParserResult>;
11
+ protected _readGgufValue(type: GgufValueType, offset: number | GgufReadOffset): Promise<MetadataValue>;
12
+ protected _readStringValue(offset: number | GgufReadOffset): Promise<string>;
13
+ protected _readRawHeader(readOffset: GgufReadOffset): Promise<{
14
+ tensorCount: number | bigint;
15
+ metadata: MetadataKeyValueRecord;
16
+ headerSize: number;
17
+ }>;
18
+ private _readTensorInfo;
19
+ }
@@ -0,0 +1,115 @@
1
+ import { GgufFileReader, valueTypeToBytesToRead } from "../fileReaders/GgufFileReader.js";
2
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
3
+ import { UnsupportedGgufValueTypeError } from "../errors/UnsupportedGgufValueTypeError.js";
4
+ import { GgufValueType } from "../types/GgufFileInfoTypes.js";
5
+ import { convertMetadataKeyValueRecordToNestedObject } from "../utils/convertMetadataKeyValueRecordToNestedObject.js";
6
+ export class GgufV2Parser {
7
+ _fileReader;
8
+ _shouldReadTensorInfo;
9
+ _ignoreKeys;
10
+ _readOffset;
11
+ _logWarnings;
12
+ constructor({ fileReader, readTensorInfo = true, ignoreKeys = [], readOffset, logWarnings }) {
13
+ this._fileReader = fileReader;
14
+ this._shouldReadTensorInfo = readTensorInfo;
15
+ this._ignoreKeys = ignoreKeys;
16
+ this._readOffset = readOffset;
17
+ this._logWarnings = logWarnings;
18
+ }
19
+ async parse() {
20
+ const readOffset = this._readOffset;
21
+ const initialOffset = readOffset.offset;
22
+ const headerReadResult = await this._readRawHeader(readOffset);
23
+ const tensorReadResult = this._shouldReadTensorInfo
24
+ ? await this._readTensorInfo(headerReadResult.tensorCount, readOffset)
25
+ : null;
26
+ const metadata = convertMetadataKeyValueRecordToNestedObject(headerReadResult.metadata, {
27
+ logOverrideWarnings: this._logWarnings,
28
+ ignoreKeys: this._ignoreKeys
29
+ });
30
+ return {
31
+ tensorCount: headerReadResult.tensorCount,
32
+ metadata: metadata,
33
+ tensorInfo: tensorReadResult?.tensorInfo,
34
+ metadataSize: headerReadResult.headerSize + initialOffset,
35
+ tensorInfoSize: tensorReadResult?.tensorInfoSize
36
+ };
37
+ }
38
+ async _readGgufValue(type, offset) {
39
+ const readOffset = GgufReadOffset.resolveReadOffset(offset);
40
+ switch (type) {
41
+ case GgufValueType.Uint8: return await this._fileReader.readUint8(readOffset);
42
+ case GgufValueType.Int8: return await this._fileReader.readInt8(readOffset);
43
+ case GgufValueType.Uint16: return await this._fileReader.readUint16(readOffset);
44
+ case GgufValueType.Int16: return await this._fileReader.readInt16(readOffset);
45
+ case GgufValueType.Uint32: return await this._fileReader.readUint32(readOffset);
46
+ case GgufValueType.Int32: return await this._fileReader.readInt32(readOffset);
47
+ case GgufValueType.Float32: return await this._fileReader.readFloat32(readOffset);
48
+ case GgufValueType.Bool: return await this._fileReader.readBool(readOffset);
49
+ case GgufValueType.String: return await this._readStringValue(readOffset);
50
+ case GgufValueType.Uint64: return await this._fileReader.readUint64(readOffset);
51
+ case GgufValueType.Int64: return await this._fileReader.readInt64(readOffset);
52
+ case GgufValueType.Float64: return await this._fileReader.readFloat64(readOffset);
53
+ }
54
+ if (type === GgufValueType.Array) {
55
+ const arrayType = await this._fileReader.readUint32(readOffset);
56
+ const arrayLength = await this._fileReader.readUint64(readOffset);
57
+ const arrayValues = [];
58
+ for (let i = 0; i < arrayLength; i++) {
59
+ const value = await this._readGgufValue(arrayType, readOffset);
60
+ arrayValues.push(value);
61
+ }
62
+ return arrayValues;
63
+ }
64
+ throw new UnsupportedGgufValueTypeError(type);
65
+ }
66
+ async _readStringValue(offset) {
67
+ const readOffset = GgufReadOffset.resolveReadOffset(offset);
68
+ const length = Number(await this._fileReader.readUint64(readOffset));
69
+ const readLength = valueTypeToBytesToRead.uint8 * length;
70
+ const stringBytes = await this._fileReader.readByteRange(readOffset, readLength);
71
+ return String.fromCharCode(...stringBytes);
72
+ }
73
+ async _readRawHeader(readOffset) {
74
+ const initialOffset = readOffset.offset;
75
+ const tensorCount = await this._fileReader.readUint64(readOffset);
76
+ const metadataKVCount = Number(await this._fileReader.readUint64(readOffset));
77
+ const metadata = {};
78
+ for (let i = 0; i < metadataKVCount; i++) {
79
+ const keyResult = await this._readStringValue(readOffset);
80
+ const valueType = await this._fileReader.readUint32(readOffset);
81
+ metadata[keyResult] = await this._readGgufValue(valueType, readOffset);
82
+ }
83
+ return {
84
+ tensorCount: GgufFileReader.castNumberIfSafe(tensorCount),
85
+ metadata: metadata,
86
+ headerSize: readOffset.offset - initialOffset
87
+ };
88
+ }
89
+ async _readTensorInfo(tensorCount, readOffset) {
90
+ const initialOffset = readOffset.offset;
91
+ const tensorInfo = [];
92
+ for (let i = 0n; i < BigInt(tensorCount); i++) {
93
+ const name = await this._readStringValue(readOffset);
94
+ const dimensionsNumber = await this._fileReader.readUint32(readOffset);
95
+ const dimensions = [];
96
+ for (let i = 0; i < dimensionsNumber; i++) {
97
+ const dimension = await this._fileReader.readUint64(readOffset);
98
+ dimensions.push(GgufFileReader.castNumberIfSafe(dimension));
99
+ }
100
+ const ggmlType = await this._fileReader.readUint32(readOffset);
101
+ const offset = await this._fileReader.readUint64(readOffset);
102
+ tensorInfo.push({
103
+ name,
104
+ dimensions,
105
+ ggmlType: ggmlType,
106
+ offset: GgufFileReader.castNumberIfSafe(offset)
107
+ });
108
+ }
109
+ return {
110
+ tensorInfo,
111
+ tensorInfoSize: readOffset.offset - initialOffset
112
+ };
113
+ }
114
+ }
115
+ //# sourceMappingURL=GgufV2Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GgufV2Parser.js","sourceRoot":"","sources":["../../../src/gguf/parser/GgufV2Parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { GgufV2Parser } from "./GgufV2Parser.js";
2
+ export declare class GgufV3Parser extends GgufV2Parser {
3
+ }
@@ -0,0 +1,4 @@
1
+ import { GgufV2Parser } from "./GgufV2Parser.js";
2
+ export class GgufV3Parser extends GgufV2Parser {
3
+ }
4
+ //# sourceMappingURL=GgufV3Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GgufV3Parser.js","sourceRoot":"","sources":["../../../src/gguf/parser/GgufV3Parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,YAAa,SAAQ,YAAY;CAE7C"}
@@ -0,0 +1,8 @@
1
+ import { GgufFileReader } from "../fileReaders/GgufFileReader.js";
2
+ import { GgufFileInfo } from "../types/GgufFileInfoTypes.js";
3
+ export declare function parseGguf({ fileReader, readTensorInfo, ignoreKeys, logWarnings }: {
4
+ fileReader: GgufFileReader;
5
+ readTensorInfo?: boolean;
6
+ ignoreKeys?: string[];
7
+ logWarnings?: boolean;
8
+ }): Promise<GgufFileInfo>;
@@ -0,0 +1,58 @@
1
+ import { InvalidGgufMagicError } from "../errors/InvalidGgufMagicError.js";
2
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
3
+ import { UnsupportedError } from "../../utils/UnsupportedError.js";
4
+ import { GgufReadOffset } from "../utils/GgufReadOffset.js";
5
+ import { valueTypeToBytesToRead } from "../fileReaders/GgufFileReader.js";
6
+ import { getGgufMetadataArchitectureData } from "../utils/getGgufMetadataArchitectureData.js";
7
+ import { GgufV2Parser } from "./GgufV2Parser.js";
8
+ import { GgufV3Parser } from "./GgufV3Parser.js";
9
+ const ggufMagic = "GGUF";
10
+ export async function parseGguf({ fileReader, readTensorInfo = true, ignoreKeys = [], logWarnings = true }) {
11
+ const readOffset = new GgufReadOffset(0);
12
+ const magicAndVersion = await parseMagicAndVersion(fileReader, readOffset);
13
+ const gguifInfo = await parseGgufUsingASpecificVersionParser({
14
+ fileReader,
15
+ readTensorInfo,
16
+ ignoreKeys,
17
+ version: magicAndVersion.version,
18
+ readOffset,
19
+ logWarnings
20
+ });
21
+ const architectureMetadata = getGgufMetadataArchitectureData(gguifInfo.metadata);
22
+ return {
23
+ version: magicAndVersion.version,
24
+ tensorCount: gguifInfo.tensorCount,
25
+ metadata: gguifInfo.metadata,
26
+ architectureMetadata: architectureMetadata,
27
+ tensorInfo: gguifInfo.tensorInfo,
28
+ metadataSize: gguifInfo.metadataSize,
29
+ tensorInfoSize: gguifInfo.tensorInfoSize
30
+ };
31
+ }
32
+ async function parseMagicAndVersion(fileReader, readOffset) {
33
+ const fileMagicBytes = await fileReader.readByteRange(readOffset, valueTypeToBytesToRead.uint8 * ggufMagic.length);
34
+ const fileMagicText = String.fromCharCode(...fileMagicBytes);
35
+ if (fileMagicText !== ggufMagic)
36
+ throw new InvalidGgufMagicError(ggufMagic, fileMagicText);
37
+ const version = await fileReader.readUint32(readOffset);
38
+ return {
39
+ magic: ggufMagic,
40
+ version
41
+ };
42
+ }
43
+ async function parseGgufUsingASpecificVersionParser(specificVersionParserOptions) {
44
+ switch (specificVersionParserOptions.version) {
45
+ case 1:
46
+ throw new UnsupportedError("GGUF version 1 is not supported by llama.cpp anymore");
47
+ case 2:
48
+ return await (new GgufV2Parser(specificVersionParserOptions)).parse();
49
+ case 3:
50
+ return await (new GgufV3Parser(specificVersionParserOptions)).parse();
51
+ default:
52
+ if (specificVersionParserOptions.logWarnings)
53
+ console.warn(getConsoleLogPrefix() +
54
+ `Unsupported GGUF version "${specificVersionParserOptions.version}". Reading the file as GGUF version 3`);
55
+ return await (new GgufV3Parser(specificVersionParserOptions)).parse();
56
+ }
57
+ }
58
+ //# sourceMappingURL=parseGguf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseGguf.js","sourceRoot":"","sources":["../../../src/gguf/parser/parseGguf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAiB,sBAAsB,EAAC,MAAM,kCAAkC,CAAC;AAExF,OAAO,EAAC,+BAA+B,EAAC,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/C,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC5B,UAAU,EACV,cAAc,GAAG,IAAI,EACrB,UAAU,GAAG,EAAE,EACf,WAAW,GAAG,IAAI,EAMrB;IACG,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,MAAM,oCAAoC,CAAC;QACzD,UAAU;QACV,cAAc;QACd,UAAU;QAEV,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,UAAU;QACV,WAAW;KACd,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,+BAA+B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEjF,OAAO;QACH,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,oBAAoB,EAAE,oBAAoB;QAC1C,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,cAAc,EAAE,SAAS,CAAC,cAAc;KAC3C,CAAC;AACN,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,UAA0B,EAAE,UAA0B;IACtF,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,sBAAsB,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACnH,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,CAAC;IAE7D,IAAI,aAAa,KAAK,SAAS;QAC3B,MAAM,IAAI,qBAAqB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAExD,OAAO;QACH,KAAK,EAAE,SAAS;QAChB,OAAO;KACV,CAAC;AACN,CAAC;AAED,KAAK,UAAU,oCAAoC,CAC/C,4BAAsD;IAEtD,QAAQ,4BAA4B,CAAC,OAAO,EAAE;QAC1C,KAAK,CAAC;YACF,MAAM,IAAI,gBAAgB,CAAC,sDAAsD,CAAC,CAAC;QAEvF,KAAK,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE1E,KAAK,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE1E;YACI,IAAI,4BAA4B,CAAC,WAAW;gBACxC,OAAO,CAAC,IAAI,CACR,mBAAmB,EAAE;oBACrB,6BAA6B,4BAA4B,CAAC,OAAO,uCAAuC,CAC3G,CAAC;YAEN,OAAO,MAAM,CAAC,IAAI,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;KAC7E;AACL,CAAC"}
@@ -0,0 +1,30 @@
1
+ /// <reference types="node" />
2
+ import retry from "async-retry";
3
+ /**
4
+ * Read a GGUF file and return its metadata and tensor info (unless `readTensorInfo` is set to `false`).
5
+ * Only the parts of the file required for the metadata and tensor info are read.
6
+ */
7
+ export declare function readGgufFileInfo(pathOrUrl: string, { readTensorInfo, sourceType, ignoreKeys, logWarnings, fetchRetryOptions, fetchHeaders, signal }?: {
8
+ /**
9
+ * Whether to read the tensor info from the file's header
10
+ * Enabled by default.
11
+ */
12
+ readTensorInfo?: boolean;
13
+ /**
14
+ * Set to a specific value to force it to only use that source type.
15
+ * By default, it detects whether the path is a network URL or a filesystem path and uses the appropriate reader accordingly.
16
+ */
17
+ sourceType?: "network" | "filesystem";
18
+ /**
19
+ * Metadata keys to ignore when parsing the metadata.
20
+ * For example, `["tokenizer.ggml.tokens"]`
21
+ */
22
+ ignoreKeys?: string[];
23
+ /** Whether to log warnings */
24
+ logWarnings?: boolean;
25
+ /** Relevant only when fetching from a network */
26
+ fetchRetryOptions?: retry.Options;
27
+ /** Relevant only when fetching from a network */
28
+ fetchHeaders?: Record<string, string>;
29
+ signal?: AbortSignal;
30
+ }): Promise<import("./types/GgufFileInfoTypes.js").GgufFileInfo>;
@@ -0,0 +1,37 @@
1
+ import { parseGguf } from "./parser/parseGguf.js";
2
+ import { GgufNetworkFetchFileReader } from "./fileReaders/GgufNetworkFetchFileReader.js";
3
+ import { GgufFsFileReader } from "./fileReaders/GgufFsFileReader.js";
4
+ import { ggufDefaultFetchRetryOptions } from "./consts.js";
5
+ import { normalizeGgufDownloadUrl } from "./utils/normalizeGgufDownloadUrl.js";
6
+ /**
7
+ * Read a GGUF file and return its metadata and tensor info (unless `readTensorInfo` is set to `false`).
8
+ * Only the parts of the file required for the metadata and tensor info are read.
9
+ */
10
+ export async function readGgufFileInfo(pathOrUrl, { readTensorInfo = true, sourceType, ignoreKeys = [], logWarnings = true, fetchRetryOptions = ggufDefaultFetchRetryOptions, fetchHeaders = {}, signal } = {}) {
11
+ function createFileReader() {
12
+ if (sourceType === "network" || (sourceType == null && (pathOrUrl.startsWith("http://") || pathOrUrl.startsWith("https://")))) {
13
+ return new GgufNetworkFetchFileReader({
14
+ url: normalizeGgufDownloadUrl(pathOrUrl),
15
+ retryOptions: fetchRetryOptions,
16
+ headers: fetchHeaders,
17
+ signal
18
+ });
19
+ }
20
+ else if (sourceType === "filesystem" || sourceType == null) {
21
+ return new GgufFsFileReader({
22
+ filePath: pathOrUrl,
23
+ signal
24
+ });
25
+ }
26
+ void (sourceType);
27
+ throw new Error(`Unsupported sourceType: ${sourceType}`);
28
+ }
29
+ const fileReader = createFileReader();
30
+ return await parseGguf({
31
+ fileReader,
32
+ ignoreKeys,
33
+ readTensorInfo,
34
+ logWarnings
35
+ });
36
+ }
37
+ //# sourceMappingURL=readGgufFileInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readGgufFileInfo.js","sourceRoot":"","sources":["../../src/gguf/readGgufFileInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,0BAA0B,EAAC,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAC,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAC,4BAA4B,EAAC,MAAM,aAAa,CAAC;AACzD,OAAO,EAAC,wBAAwB,EAAC,MAAM,qCAAqC,CAAC;AAG7E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,EACtD,cAAc,GAAG,IAAI,EACrB,UAAU,EACV,UAAU,GAAG,EAAE,EACf,WAAW,GAAG,IAAI,EAClB,iBAAiB,GAAG,4BAA4B,EAChD,YAAY,GAAG,EAAE,EACjB,MAAM,KA8BN,EAAE;IACF,SAAS,gBAAgB;QACrB,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAC3H,OAAO,IAAI,0BAA0B,CAAC;gBAClC,GAAG,EAAE,wBAAwB,CAAC,SAAS,CAAC;gBACxC,YAAY,EAAE,iBAAiB;gBAC/B,OAAO,EAAE,YAAY;gBACrB,MAAM;aACT,CAAC,CAAC;SACN;aAAM,IAAI,UAAU,KAAK,YAAY,IAAI,UAAU,IAAI,IAAI,EAAE;YAC1D,OAAO,IAAI,gBAAgB,CAAC;gBACxB,QAAQ,EAAE,SAAS;gBACnB,MAAM;aACT,CAAC,CAAC;SACN;QAED,KAAK,CAAC,UAA0B,CAAC,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO,MAAM,SAAS,CAAC;QACnB,UAAU;QACV,UAAU;QACV,cAAc;QACd,WAAW;KACd,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { GgufReadOffset } from "../utils/GgufReadOffset.js";
2
+ import type { GgufFileReader } from "../fileReaders/GgufFileReader.js";
3
+ import type { MergeOptionalUnionTypes } from "../../utils/mergeUnionTypes.js";
4
+ import type { GgufArchitectureType, GgufMetadata } from "./GgufMetadataTypes.js";
5
+ import type { GgufTensorInfo } from "./GgufTensorInfoTypes.js";
6
+ export type MetadataValue = string | number | bigint | boolean | MetadataValue[];
7
+ export type MetadataKeyValueRecord = Record<string, MetadataValue>;
8
+ export type MetadataNestedObject = {
9
+ [key: string]: MetadataValue | MetadataNestedObject;
10
+ };
11
+ export type GgufFileInfo = {
12
+ readonly version: 2 | 3 | number;
13
+ readonly tensorCount: number | bigint;
14
+ readonly metadata: GgufMetadata;
15
+ readonly metadataSize: number;
16
+ /** Same value as `metadata[metadata.general.architecture]`, but with merged types for convenience */
17
+ readonly architectureMetadata: MergeOptionalUnionTypes<Exclude<GgufMetadata[GgufArchitectureType], undefined>>;
18
+ /** can be null if `readTensorInfo` is set to `false` */
19
+ readonly tensorInfo?: GgufTensorInfo[];
20
+ /** can be null if `readTensorInfo` is set to `false` */
21
+ readonly tensorInfoSize?: number;
22
+ };
23
+ export declare const enum GgufValueType {
24
+ Uint8 = 0,
25
+ Int8 = 1,
26
+ Uint16 = 2,
27
+ Int16 = 3,
28
+ Uint32 = 4,
29
+ Int32 = 5,
30
+ Float32 = 6,
31
+ Bool = 7,
32
+ String = 8,
33
+ Array = 9,
34
+ Uint64 = 10,
35
+ Int64 = 11,
36
+ Float64 = 12
37
+ }
38
+ export type GgufVersionParserOptions = {
39
+ fileReader: GgufFileReader;
40
+ readTensorInfo?: boolean;
41
+ ignoreKeys?: string[];
42
+ version: number;
43
+ readOffset: GgufReadOffset;
44
+ logWarnings: boolean;
45
+ };
46
+ export type GgufVersionParserResult = {
47
+ tensorCount: number | bigint;
48
+ metadata: GgufMetadata;
49
+ tensorInfo?: GgufTensorInfo[];
50
+ metadataSize: number;
51
+ tensorInfoSize?: number;
52
+ };
@@ -0,0 +1,18 @@
1
+ // source: `enum gguf_type` in `ggml.h` in the `llama.cpp` source code
2
+ export var GgufValueType;
3
+ (function (GgufValueType) {
4
+ GgufValueType[GgufValueType["Uint8"] = 0] = "Uint8";
5
+ GgufValueType[GgufValueType["Int8"] = 1] = "Int8";
6
+ GgufValueType[GgufValueType["Uint16"] = 2] = "Uint16";
7
+ GgufValueType[GgufValueType["Int16"] = 3] = "Int16";
8
+ GgufValueType[GgufValueType["Uint32"] = 4] = "Uint32";
9
+ GgufValueType[GgufValueType["Int32"] = 5] = "Int32";
10
+ GgufValueType[GgufValueType["Float32"] = 6] = "Float32";
11
+ GgufValueType[GgufValueType["Bool"] = 7] = "Bool";
12
+ GgufValueType[GgufValueType["String"] = 8] = "String";
13
+ GgufValueType[GgufValueType["Array"] = 9] = "Array";
14
+ GgufValueType[GgufValueType["Uint64"] = 10] = "Uint64";
15
+ GgufValueType[GgufValueType["Int64"] = 11] = "Int64";
16
+ GgufValueType[GgufValueType["Float64"] = 12] = "Float64";
17
+ })(GgufValueType || (GgufValueType = {}));
18
+ //# sourceMappingURL=GgufFileInfoTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GgufFileInfoTypes.js","sourceRoot":"","sources":["../../../src/gguf/types/GgufFileInfoTypes.ts"],"names":[],"mappings":"AA6BA,sEAAsE;AACtE,MAAM,CAAN,IAAkB,aAcjB;AAdD,WAAkB,aAAa;IAC3B,mDAAS,CAAA;IACT,iDAAQ,CAAA;IACR,qDAAU,CAAA;IACV,mDAAS,CAAA;IACT,qDAAU,CAAA;IACV,mDAAS,CAAA;IACT,uDAAW,CAAA;IACX,iDAAQ,CAAA;IACR,qDAAU,CAAA;IACV,mDAAS,CAAA;IACT,sDAAW,CAAA;IACX,oDAAU,CAAA;IACV,wDAAY,CAAA;AAChB,CAAC,EAdiB,aAAa,KAAb,aAAa,QAc9B"}