node-llama-cpp 3.0.0-beta.9 → 3.0.0

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 (684) hide show
  1. package/README.md +42 -27
  2. package/bins/_linux-arm64.moved.txt +1 -0
  3. package/bins/_linux-armv7l.moved.txt +1 -0
  4. package/bins/_linux-x64-cuda.moved.txt +1 -0
  5. package/bins/_linux-x64-vulkan.moved.txt +1 -0
  6. package/bins/_linux-x64.moved.txt +1 -0
  7. package/bins/_mac-arm64-metal.moved.txt +1 -0
  8. package/bins/_mac-x64.moved.txt +1 -0
  9. package/bins/_win-arm64.moved.txt +1 -0
  10. package/bins/_win-x64-cuda.moved.txt +1 -0
  11. package/bins/_win-x64-vulkan.moved.txt +1 -0
  12. package/bins/_win-x64.moved.txt +1 -0
  13. package/dist/ChatWrapper.d.ts +19 -39
  14. package/dist/ChatWrapper.js +129 -72
  15. package/dist/ChatWrapper.js.map +1 -1
  16. package/dist/apiDocsIndex.d.ts +1 -0
  17. package/dist/apiDocsIndex.js +7 -0
  18. package/dist/apiDocsIndex.js.map +1 -0
  19. package/dist/bindings/AddonTypes.d.ts +88 -20
  20. package/dist/bindings/Llama.d.ts +43 -3
  21. package/dist/bindings/Llama.js +193 -23
  22. package/dist/bindings/Llama.js.map +1 -1
  23. package/dist/bindings/consts.d.ts +2 -0
  24. package/dist/bindings/consts.js +13 -0
  25. package/dist/bindings/consts.js.map +1 -0
  26. package/dist/bindings/getLlama.d.ts +123 -18
  27. package/dist/bindings/getLlama.js +264 -75
  28. package/dist/bindings/getLlama.js.map +1 -1
  29. package/dist/bindings/types.d.ts +29 -5
  30. package/dist/bindings/types.js +51 -2
  31. package/dist/bindings/types.js.map +1 -1
  32. package/dist/bindings/utils/MemoryOrchestrator.d.ts +21 -0
  33. package/dist/bindings/utils/MemoryOrchestrator.js +49 -0
  34. package/dist/bindings/utils/MemoryOrchestrator.js.map +1 -0
  35. package/dist/bindings/utils/asyncEvery.d.ts +5 -0
  36. package/dist/bindings/utils/asyncEvery.js +15 -0
  37. package/dist/bindings/utils/asyncEvery.js.map +1 -0
  38. package/dist/bindings/utils/asyncSome.d.ts +5 -0
  39. package/dist/bindings/utils/asyncSome.js +27 -0
  40. package/dist/bindings/utils/asyncSome.js.map +1 -0
  41. package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -1
  42. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +1 -1
  43. package/dist/bindings/utils/cloneLlamaCppRepo.js +39 -28
  44. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -1
  45. package/dist/bindings/utils/compileLLamaCpp.d.ts +11 -3
  46. package/dist/bindings/utils/compileLLamaCpp.js +250 -81
  47. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  48. package/dist/bindings/utils/detectAvailableComputeLayers.d.ts +14 -0
  49. package/dist/bindings/utils/detectAvailableComputeLayers.js +305 -0
  50. package/dist/bindings/utils/detectAvailableComputeLayers.js.map +1 -0
  51. package/dist/bindings/utils/detectGlibc.d.ts +4 -0
  52. package/dist/bindings/utils/detectGlibc.js +46 -0
  53. package/dist/bindings/utils/detectGlibc.js.map +1 -0
  54. package/dist/bindings/utils/getBestComputeLayersAvailable.d.ts +9 -0
  55. package/dist/bindings/utils/getBestComputeLayersAvailable.js +29 -0
  56. package/dist/bindings/utils/getBestComputeLayersAvailable.js.map +1 -0
  57. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js +14 -6
  58. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -1
  59. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -1
  60. package/dist/bindings/utils/getGpuTypesToUseForOption.d.ts +12 -0
  61. package/dist/bindings/utils/getGpuTypesToUseForOption.js +39 -0
  62. package/dist/bindings/utils/getGpuTypesToUseForOption.js.map +1 -0
  63. package/dist/bindings/utils/getLinuxDistroInfo.d.ts +9 -0
  64. package/dist/bindings/utils/getLinuxDistroInfo.js +46 -0
  65. package/dist/bindings/utils/getLinuxDistroInfo.js.map +1 -0
  66. package/dist/bindings/utils/getLlamaWithoutBackend.d.ts +5 -0
  67. package/dist/bindings/utils/getLlamaWithoutBackend.js +27 -0
  68. package/dist/bindings/utils/getLlamaWithoutBackend.js.map +1 -0
  69. package/dist/bindings/utils/getPlatform.js.map +1 -1
  70. package/dist/bindings/utils/getPlatformInfo.d.ts +5 -0
  71. package/dist/bindings/utils/getPlatformInfo.js +28 -0
  72. package/dist/bindings/utils/getPlatformInfo.js.map +1 -0
  73. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.d.ts +3 -0
  74. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.js +27 -0
  75. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.js.map +1 -0
  76. package/dist/bindings/utils/hasFileInPath.d.ts +2 -0
  77. package/dist/bindings/utils/hasFileInPath.js +34 -0
  78. package/dist/bindings/utils/hasFileInPath.js.map +1 -0
  79. package/dist/bindings/utils/lastBuildInfo.js.map +1 -1
  80. package/dist/bindings/utils/logBinaryUsageExampleToConsole.d.ts +1 -1
  81. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js +3 -9
  82. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -1
  83. package/dist/bindings/utils/logDistroInstallInstruction.d.ts +14 -0
  84. package/dist/bindings/utils/logDistroInstallInstruction.js +48 -0
  85. package/dist/bindings/utils/logDistroInstallInstruction.js.map +1 -0
  86. package/dist/bindings/utils/resolveCustomCmakeOptions.js +26 -26
  87. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -1
  88. package/dist/bindings/utils/testBindingBinary.d.ts +1 -0
  89. package/dist/bindings/utils/testBindingBinary.js +100 -0
  90. package/dist/bindings/utils/testBindingBinary.js.map +1 -0
  91. package/dist/bindings/utils/testCmakeBinary.d.ts +5 -0
  92. package/dist/bindings/utils/testCmakeBinary.js +32 -0
  93. package/dist/bindings/utils/testCmakeBinary.js.map +1 -0
  94. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +2 -1
  95. package/dist/chatWrappers/AlpacaChatWrapper.js +10 -2
  96. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -1
  97. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +2 -14
  98. package/dist/chatWrappers/ChatMLChatWrapper.js +23 -21
  99. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -1
  100. package/dist/chatWrappers/FalconChatWrapper.d.ts +4 -10
  101. package/dist/chatWrappers/FalconChatWrapper.js +39 -21
  102. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  103. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +8 -32
  104. package/dist/chatWrappers/FunctionaryChatWrapper.js +514 -118
  105. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  106. package/dist/chatWrappers/GemmaChatWrapper.d.ts +7 -0
  107. package/dist/chatWrappers/GemmaChatWrapper.js +96 -0
  108. package/dist/chatWrappers/GemmaChatWrapper.js.map +1 -0
  109. package/dist/chatWrappers/GeneralChatWrapper.d.ts +4 -10
  110. package/dist/chatWrappers/GeneralChatWrapper.js +46 -22
  111. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  112. package/dist/chatWrappers/Llama2ChatWrapper.d.ts +12 -0
  113. package/dist/chatWrappers/{LlamaChatWrapper.js → Llama2ChatWrapper.js} +37 -20
  114. package/dist/chatWrappers/Llama2ChatWrapper.js.map +1 -0
  115. package/dist/chatWrappers/Llama3ChatWrapper.d.ts +16 -0
  116. package/dist/chatWrappers/Llama3ChatWrapper.js +173 -0
  117. package/dist/chatWrappers/Llama3ChatWrapper.js.map +1 -0
  118. package/dist/chatWrappers/Llama3_1ChatWrapper.d.ts +35 -0
  119. package/dist/chatWrappers/Llama3_1ChatWrapper.js +277 -0
  120. package/dist/chatWrappers/Llama3_1ChatWrapper.js.map +1 -0
  121. package/dist/chatWrappers/MistralChatWrapper.d.ts +15 -0
  122. package/dist/chatWrappers/MistralChatWrapper.js +169 -0
  123. package/dist/chatWrappers/MistralChatWrapper.js.map +1 -0
  124. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +100 -0
  125. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +409 -0
  126. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -0
  127. package/dist/chatWrappers/generic/TemplateChatWrapper.d.ts +60 -0
  128. package/dist/chatWrappers/generic/TemplateChatWrapper.js +204 -0
  129. package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -0
  130. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.d.ts +23 -0
  131. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js +45 -0
  132. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js.map +1 -0
  133. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.d.ts +57 -0
  134. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js +119 -0
  135. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js.map +1 -0
  136. package/dist/chatWrappers/utils/chunkChatItems.d.ts +10 -0
  137. package/dist/chatWrappers/utils/chunkChatItems.js +44 -0
  138. package/dist/chatWrappers/utils/chunkChatItems.js.map +1 -0
  139. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.d.ts +4 -0
  140. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +221 -0
  141. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -0
  142. package/dist/chatWrappers/utils/jsonDumps.d.ts +7 -0
  143. package/dist/chatWrappers/utils/jsonDumps.js +18 -0
  144. package/dist/chatWrappers/utils/jsonDumps.js.map +1 -0
  145. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +95 -0
  146. package/dist/chatWrappers/utils/resolveChatWrapper.js +335 -0
  147. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -0
  148. package/dist/cli/cli.js +19 -11
  149. package/dist/cli/cli.js.map +1 -1
  150. package/dist/cli/commands/ChatCommand.d.ts +16 -7
  151. package/dist/cli/commands/ChatCommand.js +321 -190
  152. package/dist/cli/commands/ChatCommand.js.map +1 -1
  153. package/dist/cli/commands/CompleteCommand.d.ts +31 -0
  154. package/dist/cli/commands/CompleteCommand.js +402 -0
  155. package/dist/cli/commands/CompleteCommand.js.map +1 -0
  156. package/dist/cli/commands/DebugCommand.d.ts +7 -0
  157. package/dist/cli/commands/DebugCommand.js +54 -0
  158. package/dist/cli/commands/DebugCommand.js.map +1 -0
  159. package/dist/cli/commands/InfillCommand.d.ts +33 -0
  160. package/dist/cli/commands/InfillCommand.js +438 -0
  161. package/dist/cli/commands/InfillCommand.js.map +1 -0
  162. package/dist/cli/commands/InitCommand.d.ts +11 -0
  163. package/dist/cli/commands/InitCommand.js +195 -0
  164. package/dist/cli/commands/InitCommand.js.map +1 -0
  165. package/dist/cli/commands/OnPostInstallCommand.js +6 -2
  166. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  167. package/dist/cli/commands/PullCommand.d.ts +13 -0
  168. package/dist/cli/commands/PullCommand.js +158 -0
  169. package/dist/cli/commands/PullCommand.js.map +1 -0
  170. package/dist/cli/commands/inspect/InspectCommand.d.ts +4 -0
  171. package/dist/cli/commands/inspect/InspectCommand.js +21 -0
  172. package/dist/cli/commands/inspect/InspectCommand.js.map +1 -0
  173. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.d.ts +12 -0
  174. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js +225 -0
  175. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js.map +1 -0
  176. package/dist/cli/commands/inspect/commands/InspectGgufCommand.d.ts +12 -0
  177. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +149 -0
  178. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -0
  179. package/dist/cli/commands/inspect/commands/InspectGpuCommand.d.ts +4 -0
  180. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +202 -0
  181. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -0
  182. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +18 -0
  183. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +629 -0
  184. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -0
  185. package/dist/cli/commands/source/SourceCommand.d.ts +4 -0
  186. package/dist/cli/commands/source/SourceCommand.js +19 -0
  187. package/dist/cli/commands/source/SourceCommand.js.map +1 -0
  188. package/dist/cli/commands/source/commands/BuildCommand.d.ts +16 -0
  189. package/dist/cli/commands/source/commands/BuildCommand.js +148 -0
  190. package/dist/cli/commands/source/commands/BuildCommand.js.map +1 -0
  191. package/dist/cli/commands/{ClearCommand.d.ts → source/commands/ClearCommand.d.ts} +1 -1
  192. package/dist/cli/commands/{ClearCommand.js → source/commands/ClearCommand.js} +11 -10
  193. package/dist/cli/commands/source/commands/ClearCommand.js.map +1 -0
  194. package/dist/cli/commands/{DownloadCommand.d.ts → source/commands/DownloadCommand.d.ts} +5 -4
  195. package/dist/cli/commands/source/commands/DownloadCommand.js +217 -0
  196. package/dist/cli/commands/source/commands/DownloadCommand.js.map +1 -0
  197. package/dist/cli/projectTemplates.d.ts +7 -0
  198. package/dist/cli/projectTemplates.js +10 -0
  199. package/dist/cli/projectTemplates.js.map +1 -0
  200. package/dist/cli/recommendedModels.d.ts +2 -0
  201. package/dist/cli/recommendedModels.js +585 -0
  202. package/dist/cli/recommendedModels.js.map +1 -0
  203. package/dist/cli/startCreateCli.d.ts +2 -0
  204. package/dist/cli/startCreateCli.js +26 -0
  205. package/dist/cli/startCreateCli.js.map +1 -0
  206. package/dist/cli/utils/ConsoleInteraction.d.ts +22 -0
  207. package/dist/cli/utils/ConsoleInteraction.js +122 -0
  208. package/dist/cli/utils/ConsoleInteraction.js.map +1 -0
  209. package/dist/cli/utils/ConsoleTable.d.ts +23 -0
  210. package/dist/cli/utils/ConsoleTable.js +86 -0
  211. package/dist/cli/utils/ConsoleTable.js.map +1 -0
  212. package/dist/cli/utils/basicChooseFromListConsoleInteraction.d.ts +13 -0
  213. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js +111 -0
  214. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js.map +1 -0
  215. package/dist/cli/utils/consolePromptQuestion.d.ts +6 -0
  216. package/dist/cli/utils/consolePromptQuestion.js +82 -0
  217. package/dist/cli/utils/consolePromptQuestion.js.map +1 -0
  218. package/dist/cli/utils/getReadablePath.d.ts +1 -0
  219. package/dist/cli/utils/getReadablePath.js +14 -0
  220. package/dist/cli/utils/getReadablePath.js.map +1 -0
  221. package/dist/cli/utils/interactivelyAskForModel.d.ts +8 -0
  222. package/dist/cli/utils/interactivelyAskForModel.js +450 -0
  223. package/dist/cli/utils/interactivelyAskForModel.js.map +1 -0
  224. package/dist/cli/utils/logUsedGpuTypeOption.d.ts +2 -0
  225. package/dist/cli/utils/logUsedGpuTypeOption.js +9 -0
  226. package/dist/cli/utils/logUsedGpuTypeOption.js.map +1 -0
  227. package/dist/cli/utils/printCommonInfoLines.d.ts +9 -0
  228. package/dist/cli/utils/printCommonInfoLines.js +82 -0
  229. package/dist/cli/utils/printCommonInfoLines.js.map +1 -0
  230. package/dist/cli/utils/printInfoLine.d.ts +12 -0
  231. package/dist/cli/utils/printInfoLine.js +54 -0
  232. package/dist/cli/utils/printInfoLine.js.map +1 -0
  233. package/dist/cli/utils/projectTemplates.d.ts +19 -0
  234. package/dist/cli/utils/projectTemplates.js +47 -0
  235. package/dist/cli/utils/projectTemplates.js.map +1 -0
  236. package/dist/cli/utils/renderModelCompatibilityPercentageWithColors.d.ts +6 -0
  237. package/dist/cli/utils/renderModelCompatibilityPercentageWithColors.js +14 -0
  238. package/dist/cli/utils/renderModelCompatibilityPercentageWithColors.js.map +1 -0
  239. package/dist/cli/utils/resolveCommandGgufPath.d.ts +5 -0
  240. package/dist/cli/utils/resolveCommandGgufPath.js +72 -0
  241. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -0
  242. package/dist/cli/utils/resolveHeaderFlag.d.ts +1 -0
  243. package/dist/cli/utils/resolveHeaderFlag.js +21 -0
  244. package/dist/cli/utils/resolveHeaderFlag.js.map +1 -0
  245. package/dist/cli/utils/resolveModelRecommendationFileOptions.d.ts +19 -0
  246. package/dist/cli/utils/resolveModelRecommendationFileOptions.js +7 -0
  247. package/dist/cli/utils/resolveModelRecommendationFileOptions.js.map +1 -0
  248. package/dist/cli/utils/splitAnsiToLines.d.ts +1 -0
  249. package/dist/cli/utils/splitAnsiToLines.js +32 -0
  250. package/dist/cli/utils/splitAnsiToLines.js.map +1 -0
  251. package/dist/cli/utils/withCliCommandDescriptionDocsUrl.d.ts +2 -0
  252. package/dist/cli/utils/withCliCommandDescriptionDocsUrl.js +23 -0
  253. package/dist/cli/utils/withCliCommandDescriptionDocsUrl.js.map +1 -0
  254. package/dist/commands.d.ts +4 -3
  255. package/dist/commands.js +6 -3
  256. package/dist/commands.js.map +1 -1
  257. package/dist/config.d.ts +35 -4
  258. package/dist/config.js +58 -17
  259. package/dist/config.js.map +1 -1
  260. package/dist/consts.d.ts +4 -0
  261. package/dist/consts.js +11 -0
  262. package/dist/consts.js.map +1 -0
  263. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +151 -41
  264. package/dist/evaluator/LlamaChat/LlamaChat.js +1289 -437
  265. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  266. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.d.ts +11 -0
  267. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.js +55 -0
  268. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.js.map +1 -0
  269. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.d.ts +16 -0
  270. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js +45 -0
  271. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js.map +1 -0
  272. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.d.ts +8 -0
  273. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.js +12 -0
  274. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.js.map +1 -0
  275. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +27 -17
  276. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -1
  277. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +187 -13
  278. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +280 -53
  279. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  280. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.d.ts +40 -0
  281. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js +186 -0
  282. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js.map +1 -0
  283. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +10 -2
  284. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
  285. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -1
  286. package/dist/evaluator/LlamaCompletion.d.ts +168 -0
  287. package/dist/evaluator/LlamaCompletion.js +470 -0
  288. package/dist/evaluator/LlamaCompletion.js.map +1 -0
  289. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +62 -21
  290. package/dist/evaluator/LlamaContext/LlamaContext.js +501 -120
  291. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  292. package/dist/evaluator/LlamaContext/LlamaSampler.d.ts +1 -0
  293. package/dist/evaluator/LlamaContext/LlamaSampler.js +31 -0
  294. package/dist/evaluator/LlamaContext/LlamaSampler.js.map +1 -0
  295. package/dist/evaluator/LlamaContext/types.d.ts +177 -16
  296. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js.map +1 -0
  297. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.js.map +1 -0
  298. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.d.ts +2 -0
  299. package/dist/evaluator/LlamaContext/utils/{resolveBatchItemsPrioritizingStrategy.js → resolveBatchItemsPrioritizationStrategy.js} +5 -5
  300. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.js.map +1 -0
  301. package/dist/evaluator/LlamaEmbedding.d.ts +21 -0
  302. package/dist/evaluator/LlamaEmbedding.js +53 -0
  303. package/dist/evaluator/LlamaEmbedding.js.map +1 -0
  304. package/dist/evaluator/LlamaEmbeddingContext.d.ts +29 -19
  305. package/dist/evaluator/LlamaEmbeddingContext.js +36 -43
  306. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  307. package/dist/evaluator/LlamaGrammar.d.ts +16 -13
  308. package/dist/evaluator/LlamaGrammar.js +17 -10
  309. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  310. package/dist/evaluator/LlamaGrammarEvaluationState.d.ts +7 -3
  311. package/dist/evaluator/LlamaGrammarEvaluationState.js +8 -4
  312. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -1
  313. package/dist/evaluator/LlamaJsonSchemaGrammar.d.ts +3 -0
  314. package/dist/evaluator/LlamaJsonSchemaGrammar.js +5 -3
  315. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  316. package/dist/evaluator/LlamaModel/LlamaModel.d.ts +255 -0
  317. package/dist/evaluator/LlamaModel/LlamaModel.js +780 -0
  318. package/dist/evaluator/LlamaModel/LlamaModel.js.map +1 -0
  319. package/dist/evaluator/LlamaModel/utils/TokenAttributes.d.ts +29 -0
  320. package/dist/evaluator/LlamaModel/utils/TokenAttributes.js +65 -0
  321. package/dist/evaluator/LlamaModel/utils/TokenAttributes.js.map +1 -0
  322. package/dist/evaluator/TokenBias.d.ts +34 -0
  323. package/dist/evaluator/TokenBias.js +65 -0
  324. package/dist/evaluator/TokenBias.js.map +1 -0
  325. package/dist/evaluator/TokenMeter.d.ts +45 -0
  326. package/dist/evaluator/TokenMeter.js +74 -0
  327. package/dist/evaluator/TokenMeter.js.map +1 -0
  328. package/dist/gguf/consts.d.ts +4 -0
  329. package/dist/gguf/consts.js +12 -0
  330. package/dist/gguf/consts.js.map +1 -0
  331. package/dist/gguf/errors/InvalidGgufMagicError.d.ts +3 -0
  332. package/dist/gguf/errors/InvalidGgufMagicError.js +6 -0
  333. package/dist/gguf/errors/InvalidGgufMagicError.js.map +1 -0
  334. package/dist/gguf/errors/UnsupportedGgufValueTypeError.d.ts +4 -0
  335. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js +9 -0
  336. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js.map +1 -0
  337. package/dist/gguf/fileReaders/GgufFileReader.d.ts +36 -0
  338. package/dist/gguf/fileReaders/GgufFileReader.js +109 -0
  339. package/dist/gguf/fileReaders/GgufFileReader.js.map +1 -0
  340. package/dist/gguf/fileReaders/GgufFsFileReader.d.ts +16 -0
  341. package/dist/gguf/fileReaders/GgufFsFileReader.js +62 -0
  342. package/dist/gguf/fileReaders/GgufFsFileReader.js.map +1 -0
  343. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.d.ts +25 -0
  344. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js +92 -0
  345. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js.map +1 -0
  346. package/dist/gguf/insights/GgufInsights.d.ts +50 -0
  347. package/dist/gguf/insights/GgufInsights.js +401 -0
  348. package/dist/gguf/insights/GgufInsights.js.map +1 -0
  349. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +146 -0
  350. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +226 -0
  351. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -0
  352. package/dist/gguf/insights/utils/resolveContextContextSizeOption.d.ts +19 -0
  353. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js +78 -0
  354. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js.map +1 -0
  355. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +15 -0
  356. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js +183 -0
  357. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -0
  358. package/dist/gguf/insights/utils/scoreLevels.d.ts +5 -0
  359. package/dist/gguf/insights/utils/scoreLevels.js +16 -0
  360. package/dist/gguf/insights/utils/scoreLevels.js.map +1 -0
  361. package/dist/gguf/parser/GgufV2Parser.d.ts +20 -0
  362. package/dist/gguf/parser/GgufV2Parser.js +156 -0
  363. package/dist/gguf/parser/GgufV2Parser.js.map +1 -0
  364. package/dist/gguf/parser/GgufV3Parser.d.ts +3 -0
  365. package/dist/gguf/parser/GgufV3Parser.js +4 -0
  366. package/dist/gguf/parser/GgufV3Parser.js.map +1 -0
  367. package/dist/gguf/parser/parseGguf.d.ts +8 -0
  368. package/dist/gguf/parser/parseGguf.js +61 -0
  369. package/dist/gguf/parser/parseGguf.js.map +1 -0
  370. package/dist/gguf/readGgufFileInfo.d.ts +45 -0
  371. package/dist/gguf/readGgufFileInfo.js +71 -0
  372. package/dist/gguf/readGgufFileInfo.js.map +1 -0
  373. package/dist/gguf/types/GgufFileInfoTypes.d.ts +84 -0
  374. package/dist/gguf/types/GgufFileInfoTypes.js +18 -0
  375. package/dist/gguf/types/GgufFileInfoTypes.js.map +1 -0
  376. package/dist/gguf/types/GgufMetadataTypes.d.ts +372 -0
  377. package/dist/gguf/types/GgufMetadataTypes.js +114 -0
  378. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -0
  379. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +37 -0
  380. package/dist/gguf/types/GgufTensorInfoTypes.js +33 -0
  381. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -0
  382. package/dist/gguf/utils/GgufReadOffset.d.ts +6 -0
  383. package/dist/gguf/utils/GgufReadOffset.js +18 -0
  384. package/dist/gguf/utils/GgufReadOffset.js.map +1 -0
  385. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.d.ts +6 -0
  386. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js +76 -0
  387. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js.map +1 -0
  388. package/dist/gguf/utils/getGgufFileTypeName.d.ts +4 -0
  389. package/dist/gguf/utils/getGgufFileTypeName.js +13 -0
  390. package/dist/gguf/utils/getGgufFileTypeName.js.map +1 -0
  391. package/dist/gguf/utils/getGgufMetadataArchitectureData.d.ts +3 -0
  392. package/dist/gguf/utils/getGgufMetadataArchitectureData.js +4 -0
  393. package/dist/gguf/utils/getGgufMetadataArchitectureData.js.map +1 -0
  394. package/dist/gguf/utils/normalizeGgufDownloadUrl.d.ts +1 -0
  395. package/dist/gguf/utils/normalizeGgufDownloadUrl.js +16 -0
  396. package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -0
  397. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.d.ts +2 -0
  398. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js +39 -0
  399. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js.map +1 -0
  400. package/dist/gguf/utils/resolveSplitGgufParts.d.ts +7 -0
  401. package/dist/gguf/utils/resolveSplitGgufParts.js +55 -0
  402. package/dist/gguf/utils/resolveSplitGgufParts.js.map +1 -0
  403. package/dist/index.d.ts +39 -14
  404. package/dist/index.js +29 -8
  405. package/dist/index.js.map +1 -1
  406. package/dist/state.d.ts +2 -0
  407. package/dist/state.js +7 -0
  408. package/dist/state.js.map +1 -1
  409. package/dist/tsconfig.tsbuildinfo +1 -0
  410. package/dist/types.d.ts +131 -5
  411. package/dist/types.js.map +1 -1
  412. package/dist/utils/DisposeGuard.d.ts +13 -0
  413. package/dist/utils/DisposeGuard.js +120 -0
  414. package/dist/utils/DisposeGuard.js.map +1 -0
  415. package/dist/utils/InsufficientMemoryError.d.ts +3 -0
  416. package/dist/utils/InsufficientMemoryError.js +6 -0
  417. package/dist/utils/InsufficientMemoryError.js.map +1 -0
  418. package/dist/utils/LlamaText.d.ts +73 -26
  419. package/dist/utils/LlamaText.js +475 -157
  420. package/dist/utils/LlamaText.js.map +1 -1
  421. package/dist/utils/LruCache.d.ts +12 -0
  422. package/dist/utils/LruCache.js +44 -0
  423. package/dist/utils/LruCache.js.map +1 -0
  424. package/dist/utils/OverridesObject.d.ts +7 -0
  425. package/dist/utils/OverridesObject.js +2 -0
  426. package/dist/utils/OverridesObject.js.map +1 -0
  427. package/dist/utils/ReplHistory.js +5 -1
  428. package/dist/utils/ReplHistory.js.map +1 -1
  429. package/dist/utils/StopGenerationDetector.d.ts +27 -8
  430. package/dist/utils/StopGenerationDetector.js +108 -22
  431. package/dist/utils/StopGenerationDetector.js.map +1 -1
  432. package/dist/utils/ThreadsSplitter.d.ts +32 -0
  433. package/dist/utils/ThreadsSplitter.js +177 -0
  434. package/dist/utils/ThreadsSplitter.js.map +1 -0
  435. package/dist/utils/TokenStreamRegulator.d.ts +10 -4
  436. package/dist/utils/TokenStreamRegulator.js +102 -10
  437. package/dist/utils/TokenStreamRegulator.js.map +1 -1
  438. package/dist/utils/UnsupportedError.d.ts +2 -0
  439. package/dist/utils/UnsupportedError.js +7 -0
  440. package/dist/utils/UnsupportedError.js.map +1 -0
  441. package/dist/utils/appendUserMessageToChatHistory.d.ts +4 -0
  442. package/dist/utils/appendUserMessageToChatHistory.js +4 -0
  443. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -1
  444. package/dist/utils/clearTempFolder.js.map +1 -1
  445. package/dist/utils/cmake.js +23 -10
  446. package/dist/utils/cmake.js.map +1 -1
  447. package/dist/utils/compareTokens.d.ts +1 -1
  448. package/dist/utils/compareTokens.js.map +1 -1
  449. package/dist/utils/createModelDownloader.d.ts +199 -0
  450. package/dist/utils/createModelDownloader.js +405 -0
  451. package/dist/utils/createModelDownloader.js.map +1 -0
  452. package/dist/utils/findBestOption.d.ts +4 -0
  453. package/dist/utils/findBestOption.js +15 -0
  454. package/dist/utils/findBestOption.js.map +1 -0
  455. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +1 -0
  456. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +23 -12
  457. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -1
  458. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  459. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.d.ts +5 -0
  460. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js +11 -0
  461. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js.map +1 -0
  462. package/dist/utils/gbnfJson/terminals/GbnfArray.d.ts +3 -1
  463. package/dist/utils/gbnfJson/terminals/GbnfArray.js +10 -5
  464. package/dist/utils/gbnfJson/terminals/GbnfArray.js.map +1 -1
  465. package/dist/utils/gbnfJson/terminals/GbnfBoolean.d.ts +1 -1
  466. package/dist/utils/gbnfJson/terminals/GbnfBoolean.js.map +1 -1
  467. package/dist/utils/gbnfJson/terminals/GbnfBooleanValue.js.map +1 -1
  468. package/dist/utils/gbnfJson/terminals/GbnfGrammar.js.map +1 -1
  469. package/dist/utils/gbnfJson/terminals/GbnfNull.d.ts +1 -1
  470. package/dist/utils/gbnfJson/terminals/GbnfNull.js.map +1 -1
  471. package/dist/utils/gbnfJson/terminals/GbnfNumber.d.ts +1 -1
  472. package/dist/utils/gbnfJson/terminals/GbnfNumber.js.map +1 -1
  473. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.js.map +1 -1
  474. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.d.ts +3 -1
  475. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.js +9 -4
  476. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.js.map +1 -1
  477. package/dist/utils/gbnfJson/terminals/GbnfOr.js.map +1 -1
  478. package/dist/utils/gbnfJson/terminals/GbnfRepetition.d.ts +9 -0
  479. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js +37 -0
  480. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js.map +1 -0
  481. package/dist/utils/gbnfJson/terminals/GbnfString.d.ts +1 -1
  482. package/dist/utils/gbnfJson/terminals/GbnfString.js +23 -5
  483. package/dist/utils/gbnfJson/terminals/GbnfString.js.map +1 -1
  484. package/dist/utils/gbnfJson/terminals/GbnfStringValue.js.map +1 -1
  485. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -1
  486. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.d.ts +7 -4
  487. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js +37 -9
  488. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js.map +1 -1
  489. package/dist/utils/gbnfJson/terminals/gbnfConsts.d.ts +5 -4
  490. package/dist/utils/gbnfJson/terminals/gbnfConsts.js +14 -3
  491. package/dist/utils/gbnfJson/terminals/gbnfConsts.js.map +1 -1
  492. package/dist/utils/gbnfJson/types.d.ts +3 -0
  493. package/dist/utils/gbnfJson/types.js.map +1 -1
  494. package/dist/utils/gbnfJson/utils/GbnfJsonScopeState.d.ts +10 -0
  495. package/dist/utils/gbnfJson/utils/GbnfJsonScopeState.js +15 -0
  496. package/dist/utils/gbnfJson/utils/GbnfJsonScopeState.js.map +1 -0
  497. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.d.ts +2 -1
  498. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js +6 -5
  499. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js.map +1 -1
  500. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js +3 -3
  501. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  502. package/dist/utils/getBuildDefaults.d.ts +1 -2
  503. package/dist/utils/getBuildDefaults.js +2 -3
  504. package/dist/utils/getBuildDefaults.js.map +1 -1
  505. package/dist/utils/getConsoleLogPrefix.d.ts +1 -1
  506. package/dist/utils/getConsoleLogPrefix.js +5 -4
  507. package/dist/utils/getConsoleLogPrefix.js.map +1 -1
  508. package/dist/utils/getGrammarsFolder.js +1 -1
  509. package/dist/utils/getGrammarsFolder.js.map +1 -1
  510. package/dist/utils/getQueuedTokensBeforeStopTrigger.d.ts +6 -0
  511. package/dist/utils/getQueuedTokensBeforeStopTrigger.js +22 -0
  512. package/dist/utils/getQueuedTokensBeforeStopTrigger.js.map +1 -0
  513. package/dist/utils/getReadableContextSize.d.ts +1 -0
  514. package/dist/utils/getReadableContextSize.js +7 -0
  515. package/dist/utils/getReadableContextSize.js.map +1 -0
  516. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +15 -11
  517. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -1
  518. package/dist/utils/gitReleaseBundles.js +68 -1
  519. package/dist/utils/gitReleaseBundles.js.map +1 -1
  520. package/dist/utils/isToken.d.ts +2 -0
  521. package/dist/utils/isToken.js +4 -0
  522. package/dist/utils/isToken.js.map +1 -0
  523. package/dist/utils/isUrl.d.ts +1 -0
  524. package/dist/utils/isUrl.js +15 -0
  525. package/dist/utils/isUrl.js.map +1 -0
  526. package/dist/utils/mergeUnionTypes.d.ts +10 -0
  527. package/dist/utils/mergeUnionTypes.js +2 -0
  528. package/dist/utils/mergeUnionTypes.js.map +1 -0
  529. package/dist/utils/modelFileAccesTokens.d.ts +4 -0
  530. package/dist/utils/modelFileAccesTokens.js +40 -0
  531. package/dist/utils/modelFileAccesTokens.js.map +1 -0
  532. package/dist/utils/parseModelFileName.d.ts +1 -0
  533. package/dist/utils/parseModelFileName.js +6 -1
  534. package/dist/utils/parseModelFileName.js.map +1 -1
  535. package/dist/utils/parseTextTemplate.d.ts +66 -0
  536. package/dist/utils/parseTextTemplate.js +116 -0
  537. package/dist/utils/parseTextTemplate.js.map +1 -0
  538. package/dist/utils/prettyPrintObject.d.ts +10 -1
  539. package/dist/utils/prettyPrintObject.js +61 -15
  540. package/dist/utils/prettyPrintObject.js.map +1 -1
  541. package/dist/utils/pushAll.d.ts +6 -0
  542. package/dist/utils/pushAll.js +11 -0
  543. package/dist/utils/pushAll.js.map +1 -0
  544. package/dist/utils/removeNullFields.d.ts +2 -2
  545. package/dist/utils/removeNullFields.js.map +1 -1
  546. package/dist/utils/resolveGithubRelease.d.ts +2 -2
  547. package/dist/utils/resolveGithubRelease.js.map +1 -1
  548. package/dist/utils/resolveLastTokens.d.ts +2 -0
  549. package/dist/utils/resolveLastTokens.js +12 -0
  550. package/dist/utils/resolveLastTokens.js.map +1 -0
  551. package/dist/utils/runtime.d.ts +4 -0
  552. package/dist/utils/runtime.js +8 -0
  553. package/dist/utils/runtime.js.map +1 -0
  554. package/dist/utils/safeEventCallback.d.ts +6 -0
  555. package/dist/utils/safeEventCallback.js +29 -0
  556. package/dist/utils/safeEventCallback.js.map +1 -0
  557. package/dist/utils/spawnCommand.d.ts +11 -2
  558. package/dist/utils/spawnCommand.js +55 -7
  559. package/dist/utils/spawnCommand.js.map +1 -1
  560. package/dist/utils/tokenizeInput.d.ts +1 -1
  561. package/dist/utils/tokenizeInput.js +6 -3
  562. package/dist/utils/tokenizeInput.js.map +1 -1
  563. package/dist/utils/transformPromisable.d.ts +40 -0
  564. package/dist/utils/transformPromisable.js +64 -0
  565. package/dist/utils/transformPromisable.js.map +1 -0
  566. package/dist/utils/truncateTextAndRoundToWords.d.ts +2 -0
  567. package/dist/utils/truncateTextAndRoundToWords.js +32 -0
  568. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -1
  569. package/dist/utils/utilTypes.d.ts +3 -0
  570. package/dist/utils/utilTypes.js +2 -0
  571. package/dist/utils/utilTypes.js.map +1 -0
  572. package/dist/utils/waitForLockfileRelease.js.map +1 -1
  573. package/dist/utils/withLockfile.js.map +1 -1
  574. package/dist/utils/withOra.d.ts +2 -0
  575. package/dist/utils/withOra.js +16 -6
  576. package/dist/utils/withOra.js.map +1 -1
  577. package/dist/utils/withProgressLog.d.ts +22 -0
  578. package/dist/utils/withProgressLog.js +211 -0
  579. package/dist/utils/withProgressLog.js.map +1 -0
  580. package/dist/utils/withStatusLogs.js +1 -1
  581. package/dist/utils/withStatusLogs.js.map +1 -1
  582. package/dist/utils/wrapAbortSignal.d.ts +1 -0
  583. package/dist/utils/wrapAbortSignal.js +9 -0
  584. package/dist/utils/wrapAbortSignal.js.map +1 -0
  585. package/llama/CMakeLists.txt +134 -5
  586. package/llama/addon/AddonContext.cpp +629 -0
  587. package/llama/addon/AddonContext.h +52 -0
  588. package/llama/addon/AddonGrammar.cpp +39 -0
  589. package/llama/addon/AddonGrammar.h +19 -0
  590. package/llama/addon/AddonGrammarEvaluationState.cpp +25 -0
  591. package/llama/addon/AddonGrammarEvaluationState.h +17 -0
  592. package/llama/addon/AddonModel.cpp +672 -0
  593. package/llama/addon/AddonModel.h +61 -0
  594. package/llama/addon/AddonModelData.cpp +25 -0
  595. package/llama/addon/AddonModelData.h +15 -0
  596. package/llama/addon/AddonModelLora.cpp +105 -0
  597. package/llama/addon/AddonModelLora.h +28 -0
  598. package/llama/addon/AddonSampler.cpp +513 -0
  599. package/llama/addon/AddonSampler.h +65 -0
  600. package/llama/addon/RingBuffer.h +109 -0
  601. package/llama/addon/addon.cpp +223 -0
  602. package/llama/addon/addonGlobals.cpp +22 -0
  603. package/llama/addon/addonGlobals.h +12 -0
  604. package/llama/addon/globals/addonLog.cpp +136 -0
  605. package/llama/addon/globals/addonLog.h +21 -0
  606. package/llama/addon/globals/addonProgress.cpp +15 -0
  607. package/llama/addon/globals/addonProgress.h +15 -0
  608. package/llama/addon/globals/getGpuInfo.cpp +108 -0
  609. package/llama/addon/globals/getGpuInfo.h +6 -0
  610. package/llama/binariesGithubRelease.json +1 -1
  611. package/llama/gitRelease.bundle +0 -0
  612. package/llama/gpuInfo/cuda-gpu-info.cu +120 -0
  613. package/llama/gpuInfo/cuda-gpu-info.h +10 -0
  614. package/llama/gpuInfo/metal-gpu-info.h +8 -0
  615. package/llama/gpuInfo/metal-gpu-info.mm +30 -0
  616. package/llama/gpuInfo/vulkan-gpu-info.cpp +83 -0
  617. package/llama/gpuInfo/vulkan-gpu-info.h +9 -0
  618. package/llama/grammars/README.md +297 -6
  619. package/llama/grammars/json.gbnf +4 -4
  620. package/llama/grammars/json_arr.gbnf +4 -4
  621. package/llama/llama.cpp.info.json +1 -1
  622. package/llama/toolchains/win32.host-x64.target-arm64.cmake +41 -0
  623. package/package.json +109 -59
  624. package/templates/packed/electron-typescript-react.json +1 -0
  625. package/templates/packed/node-typescript.json +1 -0
  626. package/dist/AbortError.d.ts +0 -2
  627. package/dist/AbortError.js +0 -7
  628. package/dist/AbortError.js.map +0 -1
  629. package/dist/chatWrappers/LlamaChatWrapper.d.ts +0 -13
  630. package/dist/chatWrappers/LlamaChatWrapper.js.map +0 -1
  631. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +0 -13
  632. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +0 -57
  633. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +0 -1
  634. package/dist/cli/commands/BuildCommand.d.ts +0 -11
  635. package/dist/cli/commands/BuildCommand.js +0 -106
  636. package/dist/cli/commands/BuildCommand.js.map +0 -1
  637. package/dist/cli/commands/ClearCommand.js.map +0 -1
  638. package/dist/cli/commands/DownloadCommand.js +0 -169
  639. package/dist/cli/commands/DownloadCommand.js.map +0 -1
  640. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +0 -22
  641. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js +0 -121
  642. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +0 -1
  643. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  644. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  645. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -2
  646. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  647. package/dist/evaluator/LlamaModel.d.ts +0 -120
  648. package/dist/evaluator/LlamaModel.js +0 -320
  649. package/dist/evaluator/LlamaModel.js.map +0 -1
  650. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.d.ts +0 -2
  651. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +0 -9
  652. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +0 -1
  653. package/dist/utils/parseModelTypeDescription.d.ts +0 -6
  654. package/dist/utils/parseModelTypeDescription.js +0 -9
  655. package/dist/utils/parseModelTypeDescription.js.map +0 -1
  656. package/dist/utils/resolveChatWrapper.d.ts +0 -4
  657. package/dist/utils/resolveChatWrapper.js +0 -16
  658. package/dist/utils/resolveChatWrapper.js.map +0 -1
  659. package/llama/addon.cpp +0 -950
  660. package/llamaBins/linux-arm64/.buildMetadata.json +0 -1
  661. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  662. package/llamaBins/linux-armv7l/.buildMetadata.json +0 -1
  663. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  664. package/llamaBins/linux-x64/.buildMetadata.json +0 -1
  665. package/llamaBins/linux-x64/llama-addon.node +0 -0
  666. package/llamaBins/linux-x64-cuda/.buildMetadata.json +0 -1
  667. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  668. package/llamaBins/mac-arm64-metal/.buildMetadata.json +0 -1
  669. package/llamaBins/mac-arm64-metal/ggml-metal.metal +0 -6119
  670. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  671. package/llamaBins/mac-x64/.buildMetadata.json +0 -1
  672. package/llamaBins/mac-x64/llama-addon.node +0 -0
  673. package/llamaBins/win-x64/.buildMetadata.json +0 -1
  674. package/llamaBins/win-x64/llama-addon.exp +0 -0
  675. package/llamaBins/win-x64/llama-addon.lib +0 -0
  676. package/llamaBins/win-x64/llama-addon.node +0 -0
  677. package/llamaBins/win-x64-cuda/.buildMetadata.json +0 -1
  678. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  679. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  680. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  681. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.d.ts +0 -0
  682. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.js +0 -0
  683. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.d.ts +0 -0
  684. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.js +0 -0
@@ -1,20 +1,25 @@
1
- import { LlamaLogLevel } from "./types.js";
1
+ import { LlamaGpuType, LlamaLogLevel } from "./types.js";
2
2
  import { Llama } from "./Llama.js";
3
3
  export type LlamaOptions = {
4
4
  /**
5
- * Toggle Metal support in llama.cpp.
6
- * Only supported on macOS.
7
- * Enabled by default on Apple Silicon Macs.
8
- */
9
- metal?: boolean;
10
- /**
11
- * Toggle CUDA support on llama.cpp.
12
- * Disabled by default.
5
+ * The compute layer implementation type to use for llama.cpp.
6
+ * - **`"auto"`**: Automatically detect and use the best GPU available (Metal on macOS, and CUDA or Vulkan on Windows and Linux)
7
+ * - **`"metal"`**: Use Metal.
8
+ * Only supported on macOS.
9
+ * Enabled by default on Apple Silicon Macs.
10
+ * - **`"cuda"`**: Use CUDA.
11
+ * - **`"vulkan"`**: Use Vulkan.
12
+ * - **`false`**: Disable any GPU support and only use the CPU.
13
+ *
14
+ * `"auto"` by default.
13
15
  */
14
- cuda?: boolean;
16
+ gpu?: "auto" | LlamaGpuType | {
17
+ type: "auto";
18
+ exclude?: LlamaGpuType[];
19
+ };
15
20
  /**
16
21
  * Set the minimum log level for llama.cpp.
17
- * Defaults to "debug".
22
+ * Defaults to `"warn"`.
18
23
  */
19
24
  logLevel?: LlamaLogLevel;
20
25
  /**
@@ -32,7 +37,11 @@ export type LlamaOptions = {
32
37
  * - **`"forceRebuild"`**: Always build from source.
33
38
  * Be cautious with this option, as it will cause the build to fail on Windows when the binaries are in use by another process.
34
39
  *
35
- * Defaults to "auto".
40
+ * When running from inside an Asar archive in Electron, building from source is not possible, so it'll never build from source.
41
+ * To allow building from source in Electron apps, make sure you ship `node-llama-cpp` as an unpacked module.
42
+ *
43
+ * Defaults to `"auto"`.
44
+ * On Electron, defaults to `"never"`.
36
45
  */
37
46
  build?: "auto" | "never" | "forceRebuild";
38
47
  /**
@@ -60,24 +69,120 @@ export type LlamaOptions = {
60
69
  * Disabled by default.
61
70
  */
62
71
  skipDownload?: boolean;
72
+ /**
73
+ * The maximum number of threads to use for the Llama instance.
74
+ *
75
+ * Set to `0` to have no thread limit.
76
+ *
77
+ * When not using a GPU, defaults to the number of CPU cores that are useful for math (`.cpuMathCores`), or `4`, whichever is higher.
78
+ *
79
+ * When using a GPU, there's no limit by default.
80
+ */
81
+ maxThreads?: number;
82
+ /**
83
+ * Pad the available VRAM for the memory size calculations, as these calculations are not always accurate.
84
+ * Recommended to ensure stability.
85
+ * This only affects the calculations of `"auto"` in function options and is not reflected in the `getVramState` function.
86
+ *
87
+ * Defaults to `6%` of the total VRAM or 1GB, whichever is lower.
88
+ * Set to `0` to disable.
89
+ */
90
+ vramPadding?: number | ((totalVram: number) => number);
91
+ /**
92
+ * Enable debug mode to find issues with llama.cpp.
93
+ * Makes logs print directly to the console from `llama.cpp` and not through the provided logger.
94
+ *
95
+ * Defaults to `false`.
96
+ *
97
+ * The default can be set using the `NODE_LLAMA_CPP_DEBUG` environment variable.
98
+ */
99
+ debug?: boolean;
63
100
  };
64
101
  export type LastBuildOptions = {
65
102
  /**
66
103
  * Set the minimum log level for llama.cpp.
67
- * Defaults to "debug".
104
+ * Defaults to "warn".
68
105
  */
69
106
  logLevel?: LlamaLogLevel;
70
107
  /**
71
108
  * Set a custom logger for llama.cpp logs.
72
109
  */
73
110
  logger?: (level: LlamaLogLevel, message: string) => void;
111
+ /**
112
+ * If a local build is not found, use prebuilt binaries.
113
+ * Enabled by default.
114
+ */
115
+ usePrebuiltBinaries?: boolean;
116
+ /**
117
+ * If a local build is not found, and prebuilt binaries are not found, when building from source,
118
+ * print binary compilation progress logs.
119
+ * Enabled by default.
120
+ */
121
+ progressLogs?: boolean;
122
+ /**
123
+ * If a local build is not found, and prebuilt binaries are not found, don't download llama.cpp source if it's not found.
124
+ * When set to `true`, and llama.cpp source is needed but is not found, a `NoBinaryFoundError` error will be thrown.
125
+ * Disabled by default.
126
+ */
127
+ skipDownload?: boolean;
128
+ /**
129
+ * The maximum number of threads to use for the Llama instance.
130
+ *
131
+ * Set to `0` to have no thread limit.
132
+ *
133
+ * When not using a GPU, defaults to the number of CPU cores that are useful for math (`.cpuMathCores`), or `4`, whichever is higher.
134
+ *
135
+ * When using a GPU, there's no limit by default.
136
+ */
137
+ maxThreads?: number;
138
+ /**
139
+ * Pad the available VRAM for the memory size calculations, as these calculations are not always accurate.
140
+ * Recommended to ensure stability.
141
+ * This only affects the calculations of `"auto"` in function options and is not reflected in the `getVramState` function.
142
+ *
143
+ * Defaults to `6%` of the total VRAM or 1GB, whichever is lower.
144
+ * Set to `0` to disable.
145
+ */
146
+ vramPadding?: number | ((totalVram: number) => number);
147
+ /**
148
+ * Enable debug mode to find issues with llama.cpp.
149
+ * Makes logs print directly to the console from `llama.cpp` and not through the provided logger.
150
+ *
151
+ * Defaults to `false`.
152
+ *
153
+ * The default can be set using the `NODE_LLAMA_CPP_DEBUG` environment variable.
154
+ */
155
+ debug?: boolean;
74
156
  };
75
157
  export declare const getLlamaFunctionName = "getLlama";
158
+ export declare const defaultLlamaVramPadding: (totalVram: number) => number;
76
159
  /**
77
- * Get a llama.cpp binding.
78
- * Defaults to prefer a prebuilt binary, and fallbacks to building from source if a prebuilt binary is not found.
79
- * Pass `"lastCliBuild"` to default to use the last successful build created using the `download` or `build` CLI commands if one exists.
160
+ * Get a `llama.cpp` binding.
161
+ *
162
+ * Defaults to use a local binary built using the `source download` or `source build` CLI commands if one exists,
163
+ * otherwise, uses a prebuilt binary, and fallbacks to building from source if a prebuilt binary is not found.
164
+ *
165
+ * Pass `"lastBuild"` to default to use the last successful build created
166
+ * using the `source download` or `source build` CLI commands if one exists.
167
+ *
168
+ * The difference between using `"lastBuild"` and not using it is that `"lastBuild"` will use the binary built using a CLI command
169
+ * with the configuration used to build that binary (like using its GPU type),
170
+ * while not using `"lastBuild"` will only attempt to only use a binary that complies with the given options.
171
+ *
172
+ * For example, if your machine supports both CUDA and Vulkan, and you run the `source download --gpu vulkan` command,
173
+ * calling `getLlama("lastBuild")` will return the binary you built with Vulkan,
174
+ * while calling `getLlama()` will return a binding from a pre-built binary with CUDA,
175
+ * since CUDA is preferable on systems that support it.
176
+ *
177
+ * For example, if your machine supports CUDA, and you run the `source download --gpu cuda` command,
178
+ * calling `getLlama("lastBuild")` will return the binary you built with CUDA,
179
+ * and calling `getLlama()` will also return that same binary you built with CUDA.
180
+ *
181
+ * You should prefer to use `getLlama()` without `"lastBuild"` unless you have a specific reason to use the last build.
80
182
  */
81
- export declare function getLlama(): Promise<Llama>;
82
- export declare function getLlama(options: LlamaOptions, lastBuildOptions?: never): Promise<Llama>;
183
+ export declare function getLlama(options?: LlamaOptions): Promise<Llama>;
83
184
  export declare function getLlama(type: "lastBuild", lastBuildOptions?: LastBuildOptions): Promise<Llama>;
185
+ export declare function getLlamaForOptions({ gpu, logLevel, logger, build, cmakeOptions, existingPrebuiltBinaryMustMatchBuildOptions, usePrebuiltBinaries, progressLogs, skipDownload, maxThreads, vramPadding, debug }: LlamaOptions, { updateLastBuildInfoOnCompile, skipLlamaInit }?: {
186
+ updateLastBuildInfoOnCompile?: boolean;
187
+ skipLlamaInit?: boolean;
188
+ }): Promise<Llama>;
@@ -2,10 +2,11 @@ import process from "process";
2
2
  import path from "path";
3
3
  import console from "console";
4
4
  import { createRequire } from "module";
5
- import { builtinLlamaCppGitHubRepo, builtinLlamaCppRelease, defaultLlamaCppCudaSupport, defaultLlamaCppDebugLogs, defaultLlamaCppGitHubRepo, defaultLlamaCppMetalSupport, defaultLlamaCppRelease, defaultSkipDownload, llamaLocalBuildBinsDirectory } from "../config.js";
5
+ import { builtinLlamaCppGitHubRepo, builtinLlamaCppRelease, defaultLlamaCppLogLevel, defaultLlamaCppGitHubRepo, defaultLlamaCppGpuSupport, defaultLlamaCppRelease, defaultSkipDownload, llamaLocalBuildBinsDirectory, recommendedBaseDockerImage, defaultLlamaCppDebugMode } from "../config.js";
6
6
  import { getConsoleLogPrefix } from "../utils/getConsoleLogPrefix.js";
7
7
  import { waitForLockfileRelease } from "../utils/waitForLockfileRelease.js";
8
8
  import { isGithubReleaseNeedsResolving, resolveGithubRelease } from "../utils/resolveGithubRelease.js";
9
+ import { runningInsideAsar, runningInElectron } from "../utils/runtime.js";
9
10
  import { compileLlamaCpp, getLocalBuildBinaryBuildMetadata, getLocalBuildBinaryPath, getPrebuiltBinaryBuildMetadata, getPrebuiltBinaryPath } from "./utils/compileLLamaCpp.js";
10
11
  import { getLastBuildInfo } from "./utils/lastBuildInfo.js";
11
12
  import { getClonedLlamaCppRepoReleaseInfo, isLlamaCppRepoCloned } from "./utils/cloneLlamaCppRepo.js";
@@ -15,14 +16,31 @@ import { resolveCustomCmakeOptions } from "./utils/resolveCustomCmakeOptions.js"
15
16
  import { getCanUsePrebuiltBinaries } from "./utils/getCanUsePrebuiltBinaries.js";
16
17
  import { NoBinaryFoundError } from "./utils/NoBinaryFoundError.js";
17
18
  import { Llama } from "./Llama.js";
19
+ import { getGpuTypesToUseForOption } from "./utils/getGpuTypesToUseForOption.js";
20
+ import { getPrettyBuildGpuName } from "./consts.js";
21
+ import { detectGlibc } from "./utils/detectGlibc.js";
22
+ import { getLinuxDistroInfo, isDistroAlpineLinux } from "./utils/getLinuxDistroInfo.js";
23
+ import { testBindingBinary } from "./utils/testBindingBinary.js";
24
+ import { getPlatformInfo } from "./utils/getPlatformInfo.js";
25
+ import { hasBuildingFromSourceDependenciesInstalled } from "./utils/hasBuildingFromSourceDependenciesInstalled.js";
18
26
  const require = createRequire(import.meta.url);
19
27
  export const getLlamaFunctionName = "getLlama";
28
+ export const defaultLlamaVramPadding = (totalVram) => Math.floor(Math.min(totalVram * 0.06, 1024 * 1024 * 1024));
29
+ const defaultBuildOption = runningInElectron
30
+ ? "never"
31
+ : "auto";
20
32
  export async function getLlama(options, lastBuildOptions) {
21
33
  if (options === "lastBuild") {
22
34
  const lastBuildInfo = await getLastBuildInfo();
23
35
  const getLlamaOptions = {
24
- logLevel: lastBuildOptions?.logLevel ?? defaultLlamaCppDebugLogs,
25
- logger: lastBuildOptions?.logger ?? Llama.defaultConsoleLogger
36
+ logLevel: lastBuildOptions?.logLevel ?? defaultLlamaCppLogLevel,
37
+ logger: lastBuildOptions?.logger ?? Llama.defaultConsoleLogger,
38
+ usePrebuiltBinaries: lastBuildOptions?.usePrebuiltBinaries ?? true,
39
+ progressLogs: lastBuildOptions?.progressLogs ?? true,
40
+ skipDownload: lastBuildOptions?.skipDownload ?? defaultSkipDownload,
41
+ maxThreads: lastBuildOptions?.maxThreads,
42
+ vramPadding: lastBuildOptions?.vramPadding ?? defaultLlamaVramPadding,
43
+ debug: lastBuildOptions?.debug ?? defaultLlamaCppDebugMode
26
44
  };
27
45
  if (lastBuildInfo == null)
28
46
  return getLlamaForOptions(getLlamaOptions);
@@ -38,7 +56,10 @@ export async function getLlama(options, lastBuildOptions) {
38
56
  buildType: "localBuild",
39
57
  buildMetadata,
40
58
  logger: lastBuildOptions?.logger ?? Llama.defaultConsoleLogger,
41
- logLevel: lastBuildOptions?.logLevel ?? defaultLlamaCppDebugLogs
59
+ logLevel: lastBuildOptions?.logLevel ?? defaultLlamaCppLogLevel,
60
+ maxThreads: lastBuildOptions?.maxThreads,
61
+ vramPadding: lastBuildOptions?.vramPadding ?? defaultLlamaVramPadding,
62
+ debug: lastBuildOptions?.debug ?? defaultLlamaCppDebugMode
42
63
  });
43
64
  }
44
65
  catch (err) {
@@ -50,19 +71,15 @@ export async function getLlama(options, lastBuildOptions) {
50
71
  }
51
72
  return getLlamaForOptions(options ?? {});
52
73
  }
53
- async function getLlamaForOptions({ metal = defaultLlamaCppMetalSupport, cuda = defaultLlamaCppCudaSupport, logLevel = defaultLlamaCppDebugLogs, logger = Llama.defaultConsoleLogger, build = "auto", cmakeOptions = {}, existingPrebuiltBinaryMustMatchBuildOptions = false, usePrebuiltBinaries = true, progressLogs = true, skipDownload = defaultSkipDownload }) {
74
+ export async function getLlamaForOptions({ gpu = defaultLlamaCppGpuSupport, logLevel = defaultLlamaCppLogLevel, logger = Llama.defaultConsoleLogger, build = defaultBuildOption, cmakeOptions = {}, existingPrebuiltBinaryMustMatchBuildOptions = false, usePrebuiltBinaries = true, progressLogs = true, skipDownload = defaultSkipDownload, maxThreads, vramPadding = defaultLlamaVramPadding, debug = defaultLlamaCppDebugMode }, { updateLastBuildInfoOnCompile = false, skipLlamaInit = false } = {}) {
54
75
  const platform = getPlatform();
55
76
  const arch = process.arch;
56
- if (platform !== "mac")
57
- metal = false;
58
- else if (platform === "mac" && arch === "arm64")
59
- cuda = false;
60
77
  if (logLevel == null)
61
- logLevel = defaultLlamaCppDebugLogs;
78
+ logLevel = defaultLlamaCppLogLevel;
62
79
  if (logger == null)
63
80
  logger = Llama.defaultConsoleLogger;
64
81
  if (build == null)
65
- build = "auto";
82
+ build = defaultBuildOption;
66
83
  if (cmakeOptions == null)
67
84
  cmakeOptions = {};
68
85
  if (existingPrebuiltBinaryMustMatchBuildOptions == null)
@@ -73,99 +90,240 @@ async function getLlamaForOptions({ metal = defaultLlamaCppMetalSupport, cuda =
73
90
  progressLogs = true;
74
91
  if (skipDownload == null)
75
92
  skipDownload = defaultSkipDownload;
93
+ if (vramPadding == null)
94
+ vramPadding = defaultLlamaVramPadding;
95
+ if (debug == null)
96
+ debug = defaultLlamaCppDebugMode;
76
97
  const clonedLlamaCppRepoReleaseInfo = await getClonedLlamaCppRepoReleaseInfo();
77
- const buildOptions = {
78
- customCmakeOptions: resolveCustomCmakeOptions(cmakeOptions),
79
- progressLogs,
80
- platform,
81
- arch,
82
- computeLayers: {
83
- metal,
84
- cuda
85
- },
86
- llamaCpp: {
87
- repo: clonedLlamaCppRepoReleaseInfo?.llamaCppGithubRepo ?? builtinLlamaCppGitHubRepo,
88
- release: clonedLlamaCppRepoReleaseInfo?.tag ?? builtinLlamaCppRelease
89
- }
90
- };
91
- const canUsePrebuiltBinaries = (build === "forceRebuild" || !usePrebuiltBinaries)
98
+ let canUsePrebuiltBinaries = (build === "forceRebuild" || !usePrebuiltBinaries)
92
99
  ? false
93
100
  : await getCanUsePrebuiltBinaries();
94
- let buildFolderName = await getBuildFolderNameForBuildOptions(buildOptions);
101
+ const buildGpusToTry = await getGpuTypesToUseForOption(gpu, { platform, arch });
102
+ const platformInfo = await getPlatformInfo();
103
+ const llamaCppInfo = {
104
+ repo: clonedLlamaCppRepoReleaseInfo?.llamaCppGithubRepo ?? builtinLlamaCppGitHubRepo,
105
+ release: clonedLlamaCppRepoReleaseInfo?.tag ?? builtinLlamaCppRelease
106
+ };
107
+ let shouldLogNoGlibcWarningIfNoBuildIsAvailable = false;
108
+ const canBuild = build !== "never" && !runningInsideAsar &&
109
+ (!runningInElectron || await hasBuildingFromSourceDependenciesInstalled());
110
+ if (canUsePrebuiltBinaries && platform === "linux") {
111
+ if (!(await detectGlibc({ platform }))) {
112
+ canUsePrebuiltBinaries = false;
113
+ shouldLogNoGlibcWarningIfNoBuildIsAvailable = true;
114
+ }
115
+ }
116
+ if (buildGpusToTry.length === 0)
117
+ throw new Error("No GPU types available to try building with");
95
118
  if (build === "auto" || build === "never") {
96
- const localBuildFolder = path.join(llamaLocalBuildBinsDirectory, buildFolderName.withCustomCmakeOptions);
97
- const localBuildBinPath = await getLocalBuildBinaryPath(buildFolderName.withCustomCmakeOptions);
98
- await waitForLockfileRelease({ resourcePath: localBuildFolder });
99
- if (localBuildBinPath != null) {
100
- try {
119
+ for (let i = 0; i < buildGpusToTry.length; i++) {
120
+ const gpu = buildGpusToTry[i];
121
+ const isLastItem = i === buildGpusToTry.length - 1;
122
+ if (gpu == null)
123
+ continue;
124
+ const buildOptions = {
125
+ customCmakeOptions: resolveCustomCmakeOptions(cmakeOptions),
126
+ progressLogs,
127
+ platform,
128
+ platformInfo,
129
+ arch,
130
+ gpu,
131
+ llamaCpp: llamaCppInfo
132
+ };
133
+ const llama = await loadExistingLlamaBinary({
134
+ buildOptions,
135
+ canUsePrebuiltBinaries,
136
+ logLevel,
137
+ logger,
138
+ existingPrebuiltBinaryMustMatchBuildOptions,
139
+ progressLogs,
140
+ platform,
141
+ platformInfo,
142
+ skipLlamaInit,
143
+ maxThreads,
144
+ vramPadding,
145
+ fallbackMessage: !isLastItem
146
+ ? `falling back to using ${getPrettyBuildGpuName(buildGpusToTry[i + 1])}`
147
+ : (canBuild
148
+ ? "falling back to building from source"
149
+ : null),
150
+ debug
151
+ });
152
+ if (llama != null)
153
+ return llama;
154
+ }
155
+ }
156
+ if (shouldLogNoGlibcWarningIfNoBuildIsAvailable && progressLogs)
157
+ await logNoGlibcWarning();
158
+ if (!canBuild)
159
+ throw new NoBinaryFoundError();
160
+ const llamaCppRepoCloned = await isLlamaCppRepoCloned();
161
+ if (!llamaCppRepoCloned) {
162
+ if (skipDownload)
163
+ throw new NoBinaryFoundError("No prebuilt binaries found, no llama.cpp source found and `skipDownload` or NODE_LLAMA_CPP_SKIP_DOWNLOAD env var is set to true, so llama.cpp cannot be built from source");
164
+ llamaCppInfo.repo = defaultLlamaCppGitHubRepo;
165
+ llamaCppInfo.release = defaultLlamaCppRelease;
166
+ if (isGithubReleaseNeedsResolving(llamaCppInfo.release)) {
167
+ const [owner, name] = defaultLlamaCppGitHubRepo.split("/");
168
+ llamaCppInfo.release = await resolveGithubRelease(owner, name, llamaCppInfo.release);
169
+ }
170
+ }
171
+ for (let i = 0; i < buildGpusToTry.length; i++) {
172
+ const gpu = buildGpusToTry[i];
173
+ const isLastItem = i === buildGpusToTry.length - 1;
174
+ if (gpu == null)
175
+ continue;
176
+ const buildOptions = {
177
+ customCmakeOptions: resolveCustomCmakeOptions(cmakeOptions),
178
+ progressLogs,
179
+ platform,
180
+ platformInfo,
181
+ arch,
182
+ gpu,
183
+ llamaCpp: llamaCppInfo
184
+ };
185
+ try {
186
+ return await buildAndLoadLlamaBinary({
187
+ buildOptions,
188
+ skipDownload,
189
+ logLevel,
190
+ logger,
191
+ updateLastBuildInfoOnCompile,
192
+ maxThreads,
193
+ vramPadding,
194
+ skipLlamaInit,
195
+ debug
196
+ });
197
+ }
198
+ catch (err) {
199
+ console.error(getConsoleLogPrefix() +
200
+ `Failed to build llama.cpp with ${getPrettyBuildGpuName(gpu)} support. ` +
201
+ (!isLastItem
202
+ ? `falling back to building llama.cpp with ${getPrettyBuildGpuName(buildGpusToTry[i + 1])} support. `
203
+ : "") +
204
+ "Error:", err);
205
+ if (isLastItem)
206
+ throw err;
207
+ }
208
+ }
209
+ throw new Error("Failed to build llama.cpp");
210
+ }
211
+ async function loadExistingLlamaBinary({ buildOptions, canUsePrebuiltBinaries, logLevel, logger, existingPrebuiltBinaryMustMatchBuildOptions, progressLogs, platform, platformInfo, skipLlamaInit, maxThreads, vramPadding, fallbackMessage, debug }) {
212
+ const buildFolderName = await getBuildFolderNameForBuildOptions(buildOptions);
213
+ const localBuildFolder = path.join(llamaLocalBuildBinsDirectory, buildFolderName.withCustomCmakeOptions);
214
+ const localBuildBinPath = await getLocalBuildBinaryPath(buildFolderName.withCustomCmakeOptions);
215
+ await waitForLockfileRelease({ resourcePath: localBuildFolder });
216
+ if (localBuildBinPath != null) {
217
+ try {
218
+ const buildMetadata = await getLocalBuildBinaryBuildMetadata(buildFolderName.withCustomCmakeOptions);
219
+ const shouldTestBinaryBeforeLoading = getShouldTestBinaryBeforeLoading({
220
+ isPrebuiltBinary: false,
221
+ platform,
222
+ platformInfo,
223
+ buildMetadata
224
+ });
225
+ const binaryCompatible = shouldTestBinaryBeforeLoading
226
+ ? await testBindingBinary(localBuildBinPath)
227
+ : true;
228
+ if (binaryCompatible) {
101
229
  const binding = loadBindingModule(localBuildBinPath);
102
- const buildMetadata = await getLocalBuildBinaryBuildMetadata(buildFolderName.withCustomCmakeOptions);
103
230
  return await Llama._create({
104
231
  bindings: binding,
105
232
  buildType: "localBuild",
106
233
  buildMetadata,
107
234
  logLevel,
108
- logger
235
+ logger,
236
+ maxThreads,
237
+ vramPadding,
238
+ skipLlamaInit,
239
+ debug
109
240
  });
110
241
  }
111
- catch (err) {
112
- const binaryDescription = describeBinary(buildOptions);
113
- console.error(getConsoleLogPrefix() + `Failed to load a local build ${binaryDescription}. Error:`, err);
114
- console.info(getConsoleLogPrefix() + "Falling back to prebuilt binaries");
242
+ else if (progressLogs) {
243
+ console.warn(getConsoleLogPrefix() + "The local build binary was not built in the current system and is incompatible with it");
244
+ if (canUsePrebuiltBinaries)
245
+ console.info(getConsoleLogPrefix() + "Falling back to prebuilt binaries");
246
+ else if (fallbackMessage != null)
247
+ console.info(getConsoleLogPrefix() + fallbackMessage);
115
248
  }
116
249
  }
117
- if (canUsePrebuiltBinaries) {
118
- const prebuiltBinPath = await getPrebuiltBinaryPath(existingPrebuiltBinaryMustMatchBuildOptions
119
- ? buildFolderName.withCustomCmakeOptions
120
- : buildFolderName.withoutCustomCmakeOptions);
121
- if (prebuiltBinPath != null) {
122
- try {
123
- const binding = loadBindingModule(prebuiltBinPath);
124
- const buildMetadata = await getPrebuiltBinaryBuildMetadata(buildFolderName.withCustomCmakeOptions);
250
+ catch (err) {
251
+ const binaryDescription = describeBinary(buildOptions);
252
+ console.error(getConsoleLogPrefix() + `Failed to load a local build ${binaryDescription}. Error:`, err);
253
+ if (canUsePrebuiltBinaries)
254
+ console.info(getConsoleLogPrefix() + "Falling back to prebuilt binaries");
255
+ else if (fallbackMessage != null)
256
+ console.info(getConsoleLogPrefix() + fallbackMessage);
257
+ }
258
+ }
259
+ if (canUsePrebuiltBinaries) {
260
+ const prebuiltBinDetails = await getPrebuiltBinaryPath(buildOptions, existingPrebuiltBinaryMustMatchBuildOptions
261
+ ? buildFolderName.withCustomCmakeOptions
262
+ : buildFolderName.withoutCustomCmakeOptions);
263
+ if (prebuiltBinDetails != null) {
264
+ try {
265
+ const buildMetadata = await getPrebuiltBinaryBuildMetadata(prebuiltBinDetails.folderPath, prebuiltBinDetails.folderName);
266
+ const shouldTestBinaryBeforeLoading = getShouldTestBinaryBeforeLoading({
267
+ isPrebuiltBinary: true,
268
+ platform,
269
+ platformInfo,
270
+ buildMetadata
271
+ });
272
+ const binaryCompatible = shouldTestBinaryBeforeLoading
273
+ ? await testBindingBinary(prebuiltBinDetails.binaryPath)
274
+ : true;
275
+ if (binaryCompatible) {
276
+ const binding = loadBindingModule(prebuiltBinDetails.binaryPath);
125
277
  return await Llama._create({
126
278
  bindings: binding,
127
279
  buildType: "prebuilt",
128
280
  buildMetadata,
129
281
  logLevel,
130
- logger
282
+ logger,
283
+ maxThreads,
284
+ vramPadding,
285
+ skipLlamaInit,
286
+ debug
131
287
  });
132
288
  }
133
- catch (err) {
289
+ else if (progressLogs) {
134
290
  const binaryDescription = describeBinary({
135
291
  ...buildOptions,
136
292
  customCmakeOptions: existingPrebuiltBinaryMustMatchBuildOptions
137
293
  ? buildOptions.customCmakeOptions
138
294
  : new Map()
139
295
  });
140
- console.error(getConsoleLogPrefix() + `Failed to load a prebuilt ${binaryDescription}` + (build !== "never"
141
- ? ", falling back to building from source"
142
- : "") + ". Error:", err);
296
+ console.warn(getConsoleLogPrefix() +
297
+ `The prebuilt ${binaryDescription} is not compatible with the current system` + (fallbackMessage != null
298
+ ? ", " + fallbackMessage
299
+ : ""));
143
300
  }
144
301
  }
145
- else if (progressLogs)
146
- console.warn(getConsoleLogPrefix() + "A prebuilt binary was not found" + (build !== "never"
147
- ? ", falling back to building from source"
148
- : ""));
149
- }
150
- }
151
- if (build === "never")
152
- throw new NoBinaryFoundError();
153
- const llamaCppRepoCloned = await isLlamaCppRepoCloned();
154
- if (!llamaCppRepoCloned) {
155
- if (skipDownload)
156
- throw new NoBinaryFoundError("No prebuilt binaries found, no llama.cpp source found and `skipDownload` or NODE_LLAMA_CPP_SKIP_DOWNLOAD env var is set to true, so llama.cpp cannot be built from source");
157
- buildOptions.llamaCpp.repo = defaultLlamaCppGitHubRepo;
158
- buildOptions.llamaCpp.release = defaultLlamaCppRelease;
159
- if (isGithubReleaseNeedsResolving(buildOptions.llamaCpp.release)) {
160
- const [owner, name] = defaultLlamaCppGitHubRepo.split("/");
161
- buildOptions.llamaCpp.release = await resolveGithubRelease(owner, name, buildOptions.llamaCpp.release);
162
- buildFolderName = await getBuildFolderNameForBuildOptions(buildOptions);
302
+ catch (err) {
303
+ const binaryDescription = describeBinary({
304
+ ...buildOptions,
305
+ customCmakeOptions: existingPrebuiltBinaryMustMatchBuildOptions
306
+ ? buildOptions.customCmakeOptions
307
+ : new Map()
308
+ });
309
+ console.error(getConsoleLogPrefix() + `Failed to load a prebuilt ${binaryDescription}` + (fallbackMessage != null
310
+ ? ", " + fallbackMessage
311
+ : "") + ". Error:", err);
312
+ }
163
313
  }
314
+ else if (progressLogs)
315
+ console.warn(getConsoleLogPrefix() + "A prebuilt binary was not found" + (fallbackMessage != null
316
+ ? ", " + fallbackMessage
317
+ : ""));
164
318
  }
319
+ return null;
320
+ }
321
+ async function buildAndLoadLlamaBinary({ buildOptions, skipDownload, logLevel, logger, updateLastBuildInfoOnCompile, maxThreads, vramPadding, skipLlamaInit, debug }) {
322
+ const buildFolderName = await getBuildFolderNameForBuildOptions(buildOptions);
165
323
  await compileLlamaCpp(buildOptions, {
166
324
  ensureLlamaCppRepoIsCloned: !skipDownload,
167
325
  downloadCmakeIfNeeded: true,
168
- updateLastBuildInfo: false
326
+ updateLastBuildInfo: updateLastBuildInfoOnCompile
169
327
  });
170
328
  const localBuildFolder = path.join(llamaLocalBuildBinsDirectory, buildFolderName.withCustomCmakeOptions);
171
329
  await waitForLockfileRelease({ resourcePath: localBuildFolder });
@@ -180,16 +338,33 @@ async function getLlamaForOptions({ metal = defaultLlamaCppMetalSupport, cuda =
180
338
  buildType: "localBuild",
181
339
  buildMetadata,
182
340
  logLevel,
183
- logger
341
+ logger,
342
+ maxThreads,
343
+ vramPadding,
344
+ skipLlamaInit,
345
+ debug
184
346
  });
185
347
  }
348
+ async function logNoGlibcWarning() {
349
+ console.warn(getConsoleLogPrefix() +
350
+ "The prebuilt binaries cannot be used in this Linux distro, as `glibc` is not detected");
351
+ const linuxDistroInfo = await getLinuxDistroInfo();
352
+ const isAlpineLinux = await isDistroAlpineLinux(linuxDistroInfo);
353
+ if (isAlpineLinux) {
354
+ console.warn(getConsoleLogPrefix() +
355
+ "Using Alpine Linux is not recommended for running LLMs, " +
356
+ "as using GPU drivers is complicated and suboptimal in this distro at the moment.\n" +
357
+ getConsoleLogPrefix() +
358
+ "Consider using a different Linux distro, such as Debian or Ubuntu.\n" +
359
+ getConsoleLogPrefix() +
360
+ `If you're trying to run this inside of a Docker container, consider using "${recommendedBaseDockerImage}" image`);
361
+ }
362
+ }
186
363
  function describeBinary(binaryOptions) {
187
364
  let res = `binary for platform "${binaryOptions.platform}" "${binaryOptions.arch}"`;
188
365
  const additions = [];
189
- if (binaryOptions.computeLayers.metal)
190
- additions.push("with Metal support");
191
- if (binaryOptions.computeLayers.cuda)
192
- additions.push("with CUDA support");
366
+ if (binaryOptions.gpu != false)
367
+ additions.push(`with ${getPrettyBuildGpuName(binaryOptions.gpu)} support`);
193
368
  if (binaryOptions.customCmakeOptions.size > 0)
194
369
  additions.push("with custom build options");
195
370
  res += additions
@@ -222,4 +397,18 @@ function loadBindingModule(bindingModulePath) {
222
397
  catch (err) { }
223
398
  }
224
399
  }
400
+ function getShouldTestBinaryBeforeLoading({ isPrebuiltBinary, platform, platformInfo, buildMetadata }) {
401
+ if (platform === "linux") {
402
+ if (isPrebuiltBinary)
403
+ return true;
404
+ if (platformInfo.name !== buildMetadata.buildOptions.platformInfo.name ||
405
+ platformInfo.version !== buildMetadata.buildOptions.platformInfo.version)
406
+ return true;
407
+ }
408
+ else if (platform === "win") {
409
+ if (buildMetadata.buildOptions.gpu !== false)
410
+ return true;
411
+ }
412
+ return false;
413
+ }
225
414
  //# sourceMappingURL=getLlama.js.map