node-llama-cpp 3.0.0-beta.4 → 3.0.0-beta.41

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 (749) hide show
  1. package/README.md +14 -11
  2. package/bins/_linux-x64-cuda.moved.txt +1 -0
  3. package/bins/_win-x64-cuda.moved.txt +1 -0
  4. package/bins/linux-arm64/_nlcBuildMetadata.json +1 -0
  5. package/bins/linux-arm64/libggml.so +0 -0
  6. package/bins/linux-arm64/libllama.so +0 -0
  7. package/bins/linux-arm64/llama-addon.node +0 -0
  8. package/bins/linux-armv7l/_nlcBuildMetadata.json +1 -0
  9. package/bins/linux-armv7l/libggml.so +0 -0
  10. package/bins/linux-armv7l/libllama.so +0 -0
  11. package/bins/linux-armv7l/llama-addon.node +0 -0
  12. package/bins/linux-x64/_nlcBuildMetadata.json +1 -0
  13. package/bins/linux-x64/libggml.so +0 -0
  14. package/bins/linux-x64/libllama.so +0 -0
  15. package/bins/linux-x64/llama-addon.node +0 -0
  16. package/bins/linux-x64-vulkan/_nlcBuildMetadata.json +1 -0
  17. package/bins/linux-x64-vulkan/libggml.so +0 -0
  18. package/bins/linux-x64-vulkan/libllama.so +0 -0
  19. package/bins/linux-x64-vulkan/llama-addon.node +0 -0
  20. package/bins/linux-x64-vulkan/vulkan-shaders-gen +0 -0
  21. package/bins/mac-arm64-metal/_nlcBuildMetadata.json +1 -0
  22. package/bins/mac-arm64-metal/ggml-common.h +1833 -0
  23. package/bins/mac-arm64-metal/ggml-metal.metal +6168 -0
  24. package/bins/mac-arm64-metal/libggml.dylib +0 -0
  25. package/bins/mac-arm64-metal/libllama.dylib +0 -0
  26. package/bins/mac-arm64-metal/llama-addon.node +0 -0
  27. package/bins/mac-x64/_nlcBuildMetadata.json +1 -0
  28. package/bins/mac-x64/libggml.dylib +0 -0
  29. package/bins/mac-x64/libllama.dylib +0 -0
  30. package/bins/mac-x64/llama-addon.node +0 -0
  31. package/bins/win-arm64/_nlcBuildMetadata.json +1 -0
  32. package/bins/win-arm64/ggml.dll +0 -0
  33. package/bins/win-arm64/llama-addon.exp +0 -0
  34. package/bins/win-arm64/llama-addon.lib +0 -0
  35. package/bins/win-arm64/llama-addon.node +0 -0
  36. package/bins/win-arm64/llama.dll +0 -0
  37. package/bins/win-x64/_nlcBuildMetadata.json +1 -0
  38. package/bins/win-x64/ggml.dll +0 -0
  39. package/bins/win-x64/llama-addon.exp +0 -0
  40. package/bins/win-x64/llama-addon.lib +0 -0
  41. package/bins/win-x64/llama-addon.node +0 -0
  42. package/bins/win-x64/llama.dll +0 -0
  43. package/bins/win-x64-vulkan/_nlcBuildMetadata.json +1 -0
  44. package/bins/win-x64-vulkan/ggml.dll +0 -0
  45. package/bins/win-x64-vulkan/llama-addon.exp +0 -0
  46. package/bins/win-x64-vulkan/llama-addon.lib +0 -0
  47. package/bins/win-x64-vulkan/llama-addon.node +0 -0
  48. package/bins/win-x64-vulkan/llama.dll +0 -0
  49. package/bins/win-x64-vulkan/vulkan-shaders-gen.exe +0 -0
  50. package/dist/ChatWrapper.d.ts +9 -39
  51. package/dist/ChatWrapper.js +129 -72
  52. package/dist/ChatWrapper.js.map +1 -1
  53. package/dist/apiDocsIndex.d.ts +1 -0
  54. package/dist/apiDocsIndex.js +7 -0
  55. package/dist/apiDocsIndex.js.map +1 -0
  56. package/dist/{utils/getBin.d.ts → bindings/AddonTypes.d.ts} +66 -9
  57. package/dist/bindings/AddonTypes.js +2 -0
  58. package/dist/bindings/AddonTypes.js.map +1 -0
  59. package/dist/bindings/Llama.d.ts +47 -0
  60. package/dist/bindings/Llama.js +356 -0
  61. package/dist/bindings/Llama.js.map +1 -0
  62. package/dist/bindings/consts.d.ts +2 -0
  63. package/dist/bindings/consts.js +11 -0
  64. package/dist/bindings/consts.js.map +1 -0
  65. package/dist/bindings/getLlama.d.ts +152 -0
  66. package/dist/bindings/getLlama.js +403 -0
  67. package/dist/bindings/getLlama.js.map +1 -0
  68. package/dist/bindings/types.d.ts +57 -0
  69. package/dist/bindings/types.js +77 -0
  70. package/dist/bindings/types.js.map +1 -0
  71. package/dist/bindings/utils/MemoryOrchestrator.d.ts +21 -0
  72. package/dist/bindings/utils/MemoryOrchestrator.js +49 -0
  73. package/dist/bindings/utils/MemoryOrchestrator.js.map +1 -0
  74. package/dist/bindings/utils/NoBinaryFoundError.d.ts +2 -0
  75. package/dist/bindings/utils/NoBinaryFoundError.js +7 -0
  76. package/dist/bindings/utils/NoBinaryFoundError.js.map +1 -0
  77. package/dist/bindings/utils/asyncEvery.d.ts +5 -0
  78. package/dist/bindings/utils/asyncEvery.js +15 -0
  79. package/dist/bindings/utils/asyncEvery.js.map +1 -0
  80. package/dist/bindings/utils/asyncSome.d.ts +5 -0
  81. package/dist/bindings/utils/asyncSome.js +27 -0
  82. package/dist/bindings/utils/asyncSome.js.map +1 -0
  83. package/dist/{utils → bindings/utils}/binariesGithubRelease.js +1 -1
  84. package/dist/bindings/utils/binariesGithubRelease.js.map +1 -0
  85. package/dist/bindings/utils/clearAllLocalBuilds.d.ts +1 -0
  86. package/dist/bindings/utils/clearAllLocalBuilds.js +47 -0
  87. package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -0
  88. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +11 -0
  89. package/dist/bindings/utils/cloneLlamaCppRepo.js +166 -0
  90. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -0
  91. package/dist/bindings/utils/compileLLamaCpp.d.ts +21 -0
  92. package/dist/bindings/utils/compileLLamaCpp.js +288 -0
  93. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -0
  94. package/dist/bindings/utils/detectAvailableComputeLayers.d.ts +14 -0
  95. package/dist/bindings/utils/detectAvailableComputeLayers.js +305 -0
  96. package/dist/bindings/utils/detectAvailableComputeLayers.js.map +1 -0
  97. package/dist/bindings/utils/detectGlibc.d.ts +4 -0
  98. package/dist/bindings/utils/detectGlibc.js +46 -0
  99. package/dist/bindings/utils/detectGlibc.js.map +1 -0
  100. package/dist/bindings/utils/getBestComputeLayersAvailable.d.ts +10 -0
  101. package/dist/bindings/utils/getBestComputeLayersAvailable.js +29 -0
  102. package/dist/bindings/utils/getBestComputeLayersAvailable.js.map +1 -0
  103. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.d.ts +5 -0
  104. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js +93 -0
  105. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -0
  106. package/dist/bindings/utils/getCanUsePrebuiltBinaries.d.ts +1 -0
  107. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js +8 -0
  108. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js.map +1 -0
  109. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.d.ts +2 -0
  110. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js +21 -0
  111. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -0
  112. package/dist/bindings/utils/getGpuTypesToUseForOption.d.ts +13 -0
  113. package/dist/bindings/utils/getGpuTypesToUseForOption.js +39 -0
  114. package/dist/bindings/utils/getGpuTypesToUseForOption.js.map +1 -0
  115. package/dist/bindings/utils/getLinuxDistroInfo.d.ts +9 -0
  116. package/dist/bindings/utils/getLinuxDistroInfo.js +46 -0
  117. package/dist/bindings/utils/getLinuxDistroInfo.js.map +1 -0
  118. package/dist/bindings/utils/getLlamaWithoutBackend.d.ts +5 -0
  119. package/dist/bindings/utils/getLlamaWithoutBackend.js +27 -0
  120. package/dist/bindings/utils/getLlamaWithoutBackend.js.map +1 -0
  121. package/dist/bindings/utils/getPlatform.d.ts +2 -0
  122. package/dist/bindings/utils/getPlatform.js +15 -0
  123. package/dist/bindings/utils/getPlatform.js.map +1 -0
  124. package/dist/bindings/utils/getPlatformInfo.d.ts +5 -0
  125. package/dist/bindings/utils/getPlatformInfo.js +28 -0
  126. package/dist/bindings/utils/getPlatformInfo.js.map +1 -0
  127. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.d.ts +3 -0
  128. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.js +27 -0
  129. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.js.map +1 -0
  130. package/dist/bindings/utils/hasFileInPath.d.ts +2 -0
  131. package/dist/bindings/utils/hasFileInPath.js +34 -0
  132. package/dist/bindings/utils/hasFileInPath.js.map +1 -0
  133. package/dist/bindings/utils/lastBuildInfo.d.ts +6 -0
  134. package/dist/bindings/utils/lastBuildInfo.js +17 -0
  135. package/dist/bindings/utils/lastBuildInfo.js.map +1 -0
  136. package/dist/bindings/utils/logBinaryUsageExampleToConsole.d.ts +2 -0
  137. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js +22 -0
  138. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -0
  139. package/dist/bindings/utils/logDistroInstallInstruction.d.ts +14 -0
  140. package/dist/bindings/utils/logDistroInstallInstruction.js +48 -0
  141. package/dist/bindings/utils/logDistroInstallInstruction.js.map +1 -0
  142. package/dist/bindings/utils/resolveCustomCmakeOptions.d.ts +1 -0
  143. package/dist/bindings/utils/resolveCustomCmakeOptions.js +43 -0
  144. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -0
  145. package/dist/bindings/utils/testBindingBinary.d.ts +1 -0
  146. package/dist/bindings/utils/testBindingBinary.js +100 -0
  147. package/dist/bindings/utils/testBindingBinary.js.map +1 -0
  148. package/dist/bindings/utils/testCmakeBinary.d.ts +6 -0
  149. package/dist/bindings/utils/testCmakeBinary.js +32 -0
  150. package/dist/bindings/utils/testCmakeBinary.js.map +1 -0
  151. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +2 -1
  152. package/dist/chatWrappers/AlpacaChatWrapper.js +9 -2
  153. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -1
  154. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +2 -9
  155. package/dist/chatWrappers/ChatMLChatWrapper.js +23 -21
  156. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -1
  157. package/dist/chatWrappers/FalconChatWrapper.d.ts +4 -10
  158. package/dist/chatWrappers/FalconChatWrapper.js +38 -21
  159. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  160. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +8 -32
  161. package/dist/chatWrappers/FunctionaryChatWrapper.js +326 -118
  162. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  163. package/dist/chatWrappers/GemmaChatWrapper.d.ts +7 -0
  164. package/dist/chatWrappers/GemmaChatWrapper.js +96 -0
  165. package/dist/chatWrappers/GemmaChatWrapper.js.map +1 -0
  166. package/dist/chatWrappers/GeneralChatWrapper.d.ts +4 -10
  167. package/dist/chatWrappers/GeneralChatWrapper.js +45 -22
  168. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  169. package/dist/chatWrappers/Llama2ChatWrapper.d.ts +12 -0
  170. package/dist/chatWrappers/{LlamaChatWrapper.js → Llama2ChatWrapper.js} +38 -20
  171. package/dist/chatWrappers/Llama2ChatWrapper.js.map +1 -0
  172. package/dist/chatWrappers/Llama3ChatWrapper.d.ts +16 -0
  173. package/dist/chatWrappers/Llama3ChatWrapper.js +173 -0
  174. package/dist/chatWrappers/Llama3ChatWrapper.js.map +1 -0
  175. package/dist/chatWrappers/Llama3_1ChatWrapper.d.ts +31 -0
  176. package/dist/chatWrappers/Llama3_1ChatWrapper.js +223 -0
  177. package/dist/chatWrappers/Llama3_1ChatWrapper.js.map +1 -0
  178. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +76 -0
  179. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +371 -0
  180. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -0
  181. package/dist/chatWrappers/generic/TemplateChatWrapper.d.ts +54 -0
  182. package/dist/chatWrappers/generic/TemplateChatWrapper.js +200 -0
  183. package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -0
  184. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.d.ts +23 -0
  185. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js +45 -0
  186. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js.map +1 -0
  187. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.d.ts +57 -0
  188. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js +119 -0
  189. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js.map +1 -0
  190. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.d.ts +4 -0
  191. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +210 -0
  192. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -0
  193. package/dist/chatWrappers/utils/jsonDumps.d.ts +7 -0
  194. package/dist/chatWrappers/utils/jsonDumps.js +18 -0
  195. package/dist/chatWrappers/utils/jsonDumps.js.map +1 -0
  196. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +71 -0
  197. package/dist/chatWrappers/utils/resolveChatWrapper.js +289 -0
  198. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -0
  199. package/dist/cli/cli.js +21 -7
  200. package/dist/cli/cli.js.map +1 -1
  201. package/dist/cli/commands/BuildCommand.d.ts +11 -4
  202. package/dist/cli/commands/BuildCommand.js +114 -41
  203. package/dist/cli/commands/BuildCommand.js.map +1 -1
  204. package/dist/cli/commands/ChatCommand.d.ts +19 -7
  205. package/dist/cli/commands/ChatCommand.js +306 -150
  206. package/dist/cli/commands/ChatCommand.js.map +1 -1
  207. package/dist/cli/commands/ClearCommand.d.ts +1 -1
  208. package/dist/cli/commands/ClearCommand.js +11 -12
  209. package/dist/cli/commands/ClearCommand.js.map +1 -1
  210. package/dist/cli/commands/CompleteCommand.d.ts +30 -0
  211. package/dist/cli/commands/CompleteCommand.js +374 -0
  212. package/dist/cli/commands/CompleteCommand.js.map +1 -0
  213. package/dist/cli/commands/DebugCommand.d.ts +7 -0
  214. package/dist/cli/commands/DebugCommand.js +54 -0
  215. package/dist/cli/commands/DebugCommand.js.map +1 -0
  216. package/dist/cli/commands/DownloadCommand.d.ts +7 -4
  217. package/dist/cli/commands/DownloadCommand.js +121 -70
  218. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  219. package/dist/cli/commands/InfillCommand.d.ts +32 -0
  220. package/dist/cli/commands/InfillCommand.js +410 -0
  221. package/dist/cli/commands/InfillCommand.js.map +1 -0
  222. package/dist/cli/commands/InitCommand.d.ts +11 -0
  223. package/dist/cli/commands/InitCommand.js +195 -0
  224. package/dist/cli/commands/InitCommand.js.map +1 -0
  225. package/dist/cli/commands/OnPostInstallCommand.js +9 -10
  226. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  227. package/dist/cli/commands/PullCommand.d.ts +12 -0
  228. package/dist/cli/commands/PullCommand.js +117 -0
  229. package/dist/cli/commands/PullCommand.js.map +1 -0
  230. package/dist/cli/commands/inspect/InspectCommand.d.ts +4 -0
  231. package/dist/cli/commands/inspect/InspectCommand.js +19 -0
  232. package/dist/cli/commands/inspect/InspectCommand.js.map +1 -0
  233. package/dist/cli/commands/inspect/commands/InspectGgufCommand.d.ts +12 -0
  234. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +136 -0
  235. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -0
  236. package/dist/cli/commands/inspect/commands/InspectGpuCommand.d.ts +4 -0
  237. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +180 -0
  238. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -0
  239. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +18 -0
  240. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +626 -0
  241. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -0
  242. package/dist/cli/projectTemplates.d.ts +7 -0
  243. package/dist/cli/projectTemplates.js +10 -0
  244. package/dist/cli/projectTemplates.js.map +1 -0
  245. package/dist/cli/recommendedModels.d.ts +2 -0
  246. package/dist/cli/recommendedModels.js +376 -0
  247. package/dist/cli/recommendedModels.js.map +1 -0
  248. package/dist/cli/startCreateCli.d.ts +2 -0
  249. package/dist/cli/startCreateCli.js +26 -0
  250. package/dist/cli/startCreateCli.js.map +1 -0
  251. package/dist/cli/utils/ConsoleInteraction.d.ts +23 -0
  252. package/dist/cli/utils/ConsoleInteraction.js +122 -0
  253. package/dist/cli/utils/ConsoleInteraction.js.map +1 -0
  254. package/dist/cli/utils/ConsoleTable.d.ts +23 -0
  255. package/dist/cli/utils/ConsoleTable.js +86 -0
  256. package/dist/cli/utils/ConsoleTable.js.map +1 -0
  257. package/dist/cli/utils/basicChooseFromListConsoleInteraction.d.ts +13 -0
  258. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js +111 -0
  259. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js.map +1 -0
  260. package/dist/cli/utils/consolePromptQuestion.d.ts +6 -0
  261. package/dist/cli/utils/consolePromptQuestion.js +82 -0
  262. package/dist/cli/utils/consolePromptQuestion.js.map +1 -0
  263. package/dist/cli/utils/getReadablePath.d.ts +1 -0
  264. package/dist/cli/utils/getReadablePath.js +14 -0
  265. package/dist/cli/utils/getReadablePath.js.map +1 -0
  266. package/dist/cli/utils/interactivelyAskForModel.d.ts +8 -0
  267. package/dist/cli/utils/interactivelyAskForModel.js +461 -0
  268. package/dist/cli/utils/interactivelyAskForModel.js.map +1 -0
  269. package/dist/cli/utils/logUsedGpuTypeOption.d.ts +2 -0
  270. package/dist/cli/utils/logUsedGpuTypeOption.js +9 -0
  271. package/dist/cli/utils/logUsedGpuTypeOption.js.map +1 -0
  272. package/dist/cli/utils/printCommonInfoLines.d.ts +9 -0
  273. package/dist/cli/utils/printCommonInfoLines.js +79 -0
  274. package/dist/cli/utils/printCommonInfoLines.js.map +1 -0
  275. package/dist/cli/utils/printInfoLine.d.ts +12 -0
  276. package/dist/cli/utils/printInfoLine.js +54 -0
  277. package/dist/cli/utils/printInfoLine.js.map +1 -0
  278. package/dist/cli/utils/projectTemplates.d.ts +19 -0
  279. package/dist/cli/utils/projectTemplates.js +47 -0
  280. package/dist/cli/utils/projectTemplates.js.map +1 -0
  281. package/dist/cli/utils/resolveCommandGgufPath.d.ts +5 -0
  282. package/dist/cli/utils/resolveCommandGgufPath.js +72 -0
  283. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -0
  284. package/dist/cli/utils/resolveHeaderFlag.d.ts +1 -0
  285. package/dist/cli/utils/resolveHeaderFlag.js +21 -0
  286. package/dist/cli/utils/resolveHeaderFlag.js.map +1 -0
  287. package/dist/cli/utils/resolveModelRecommendationFileOptions.d.ts +19 -0
  288. package/dist/cli/utils/resolveModelRecommendationFileOptions.js +7 -0
  289. package/dist/cli/utils/resolveModelRecommendationFileOptions.js.map +1 -0
  290. package/dist/cli/utils/splitAnsiToLines.d.ts +1 -0
  291. package/dist/cli/utils/splitAnsiToLines.js +32 -0
  292. package/dist/cli/utils/splitAnsiToLines.js.map +1 -0
  293. package/dist/cli/utils/withCliCommandDescriptionDocsUrl.d.ts +2 -0
  294. package/dist/cli/utils/withCliCommandDescriptionDocsUrl.js +23 -0
  295. package/dist/cli/utils/withCliCommandDescriptionDocsUrl.js.map +1 -0
  296. package/dist/commands.d.ts +1 -0
  297. package/dist/commands.js +3 -0
  298. package/dist/commands.js.map +1 -1
  299. package/dist/config.d.ts +38 -5
  300. package/dist/config.js +61 -16
  301. package/dist/config.js.map +1 -1
  302. package/dist/consts.d.ts +4 -0
  303. package/dist/consts.js +11 -0
  304. package/dist/consts.js.map +1 -0
  305. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +270 -0
  306. package/dist/evaluator/LlamaChat/LlamaChat.js +1544 -0
  307. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -0
  308. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.d.ts +11 -0
  309. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.js +55 -0
  310. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.js.map +1 -0
  311. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.d.ts +16 -0
  312. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js +45 -0
  313. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js.map +1 -0
  314. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.d.ts +8 -0
  315. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.js +12 -0
  316. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.js.map +1 -0
  317. package/dist/{llamaEvaluator → evaluator}/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +42 -16
  318. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  319. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +310 -0
  320. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +425 -0
  321. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  322. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.d.ts +39 -0
  323. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js +186 -0
  324. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js.map +1 -0
  325. package/dist/{llamaEvaluator → evaluator}/LlamaChatSession/utils/defineChatSessionFunction.d.ts +3 -0
  326. package/dist/{llamaEvaluator → evaluator}/LlamaChatSession/utils/defineChatSessionFunction.js +3 -0
  327. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  328. package/dist/evaluator/LlamaCompletion.d.ts +154 -0
  329. package/dist/evaluator/LlamaCompletion.js +424 -0
  330. package/dist/evaluator/LlamaCompletion.js.map +1 -0
  331. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.d.ts +42 -22
  332. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.js +338 -81
  333. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -0
  334. package/dist/evaluator/LlamaContext/types.d.ts +175 -0
  335. package/dist/evaluator/LlamaContext/types.js.map +1 -0
  336. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js.map +1 -0
  337. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.js.map +1 -0
  338. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.d.ts +2 -0
  339. package/dist/{llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js → evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.js} +4 -4
  340. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.js.map +1 -0
  341. package/dist/evaluator/LlamaEmbeddingContext.d.ts +51 -0
  342. package/dist/evaluator/LlamaEmbeddingContext.js +73 -0
  343. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -0
  344. package/dist/evaluator/LlamaGrammar.d.ts +34 -0
  345. package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.js +15 -12
  346. package/dist/evaluator/LlamaGrammar.js.map +1 -0
  347. package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.js +4 -4
  348. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -0
  349. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.d.ts +2 -1
  350. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.js +3 -3
  351. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -0
  352. package/dist/evaluator/LlamaModel/LlamaModel.d.ts +242 -0
  353. package/dist/evaluator/LlamaModel/LlamaModel.js +765 -0
  354. package/dist/evaluator/LlamaModel/LlamaModel.js.map +1 -0
  355. package/dist/evaluator/LlamaModel/utils/TokenAttributes.d.ts +29 -0
  356. package/dist/evaluator/LlamaModel/utils/TokenAttributes.js +65 -0
  357. package/dist/evaluator/LlamaModel/utils/TokenAttributes.js.map +1 -0
  358. package/dist/evaluator/TokenBias.d.ts +22 -0
  359. package/dist/evaluator/TokenBias.js +33 -0
  360. package/dist/evaluator/TokenBias.js.map +1 -0
  361. package/dist/evaluator/TokenMeter.d.ts +54 -0
  362. package/dist/evaluator/TokenMeter.js +86 -0
  363. package/dist/evaluator/TokenMeter.js.map +1 -0
  364. package/dist/gguf/consts.d.ts +4 -0
  365. package/dist/gguf/consts.js +12 -0
  366. package/dist/gguf/consts.js.map +1 -0
  367. package/dist/gguf/errors/InvalidGgufMagicError.d.ts +3 -0
  368. package/dist/gguf/errors/InvalidGgufMagicError.js +6 -0
  369. package/dist/gguf/errors/InvalidGgufMagicError.js.map +1 -0
  370. package/dist/gguf/errors/UnsupportedGgufValueTypeError.d.ts +4 -0
  371. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js +9 -0
  372. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js.map +1 -0
  373. package/dist/gguf/fileReaders/GgufFileReader.d.ts +37 -0
  374. package/dist/gguf/fileReaders/GgufFileReader.js +109 -0
  375. package/dist/gguf/fileReaders/GgufFileReader.js.map +1 -0
  376. package/dist/gguf/fileReaders/GgufFsFileReader.d.ts +18 -0
  377. package/dist/gguf/fileReaders/GgufFsFileReader.js +62 -0
  378. package/dist/gguf/fileReaders/GgufFsFileReader.js.map +1 -0
  379. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.d.ts +23 -0
  380. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js +79 -0
  381. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js.map +1 -0
  382. package/dist/gguf/insights/GgufInsights.d.ts +50 -0
  383. package/dist/gguf/insights/GgufInsights.js +401 -0
  384. package/dist/gguf/insights/GgufInsights.js.map +1 -0
  385. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +90 -0
  386. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +144 -0
  387. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -0
  388. package/dist/gguf/insights/utils/resolveContextContextSizeOption.d.ts +19 -0
  389. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js +78 -0
  390. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js.map +1 -0
  391. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +15 -0
  392. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js +183 -0
  393. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -0
  394. package/dist/gguf/insights/utils/scoreLevels.d.ts +5 -0
  395. package/dist/gguf/insights/utils/scoreLevels.js +16 -0
  396. package/dist/gguf/insights/utils/scoreLevels.js.map +1 -0
  397. package/dist/gguf/parser/GgufV2Parser.d.ts +20 -0
  398. package/dist/gguf/parser/GgufV2Parser.js +156 -0
  399. package/dist/gguf/parser/GgufV2Parser.js.map +1 -0
  400. package/dist/gguf/parser/GgufV3Parser.d.ts +3 -0
  401. package/dist/gguf/parser/GgufV3Parser.js +4 -0
  402. package/dist/gguf/parser/GgufV3Parser.js.map +1 -0
  403. package/dist/gguf/parser/parseGguf.d.ts +8 -0
  404. package/dist/gguf/parser/parseGguf.js +61 -0
  405. package/dist/gguf/parser/parseGguf.js.map +1 -0
  406. package/dist/gguf/readGgufFileInfo.d.ts +33 -0
  407. package/dist/gguf/readGgufFileInfo.js +66 -0
  408. package/dist/gguf/readGgufFileInfo.js.map +1 -0
  409. package/dist/gguf/types/GgufFileInfoTypes.d.ts +84 -0
  410. package/dist/gguf/types/GgufFileInfoTypes.js +18 -0
  411. package/dist/gguf/types/GgufFileInfoTypes.js.map +1 -0
  412. package/dist/gguf/types/GgufMetadataTypes.d.ts +356 -0
  413. package/dist/gguf/types/GgufMetadataTypes.js +99 -0
  414. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -0
  415. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +37 -0
  416. package/dist/gguf/types/GgufTensorInfoTypes.js +33 -0
  417. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -0
  418. package/dist/gguf/utils/GgufReadOffset.d.ts +6 -0
  419. package/dist/gguf/utils/GgufReadOffset.js +18 -0
  420. package/dist/gguf/utils/GgufReadOffset.js.map +1 -0
  421. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.d.ts +6 -0
  422. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js +74 -0
  423. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js.map +1 -0
  424. package/dist/gguf/utils/getGgufFileTypeName.d.ts +4 -0
  425. package/dist/gguf/utils/getGgufFileTypeName.js +13 -0
  426. package/dist/gguf/utils/getGgufFileTypeName.js.map +1 -0
  427. package/dist/gguf/utils/getGgufMetadataArchitectureData.d.ts +3 -0
  428. package/dist/gguf/utils/getGgufMetadataArchitectureData.js +4 -0
  429. package/dist/gguf/utils/getGgufMetadataArchitectureData.js.map +1 -0
  430. package/dist/gguf/utils/normalizeGgufDownloadUrl.d.ts +1 -0
  431. package/dist/gguf/utils/normalizeGgufDownloadUrl.js +16 -0
  432. package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -0
  433. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.d.ts +2 -0
  434. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js +39 -0
  435. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js.map +1 -0
  436. package/dist/gguf/utils/resolveSplitGgufParts.d.ts +7 -0
  437. package/dist/gguf/utils/resolveSplitGgufParts.js +55 -0
  438. package/dist/gguf/utils/resolveSplitGgufParts.js.map +1 -0
  439. package/dist/index.d.ts +43 -18
  440. package/dist/index.js +38 -15
  441. package/dist/index.js.map +1 -1
  442. package/dist/state.d.ts +4 -0
  443. package/dist/state.js +14 -0
  444. package/dist/state.js.map +1 -1
  445. package/dist/types.d.ts +130 -5
  446. package/dist/types.js.map +1 -1
  447. package/dist/utils/DeepPartialObject.d.ts +3 -0
  448. package/dist/utils/DeepPartialObject.js +2 -0
  449. package/dist/utils/DeepPartialObject.js.map +1 -0
  450. package/dist/utils/DisposeGuard.d.ts +13 -0
  451. package/dist/utils/DisposeGuard.js +120 -0
  452. package/dist/utils/DisposeGuard.js.map +1 -0
  453. package/dist/utils/InsufficientMemoryError.d.ts +3 -0
  454. package/dist/utils/InsufficientMemoryError.js +6 -0
  455. package/dist/utils/InsufficientMemoryError.js.map +1 -0
  456. package/dist/utils/LlamaText.d.ts +70 -26
  457. package/dist/utils/LlamaText.js +472 -157
  458. package/dist/utils/LlamaText.js.map +1 -1
  459. package/dist/utils/LruCache.d.ts +12 -0
  460. package/dist/utils/LruCache.js +44 -0
  461. package/dist/utils/LruCache.js.map +1 -0
  462. package/dist/utils/ReplHistory.js +5 -1
  463. package/dist/utils/ReplHistory.js.map +1 -1
  464. package/dist/utils/StopGenerationDetector.d.ts +27 -8
  465. package/dist/utils/StopGenerationDetector.js +108 -22
  466. package/dist/utils/StopGenerationDetector.js.map +1 -1
  467. package/dist/utils/TokenStreamRegulator.d.ts +10 -4
  468. package/dist/utils/TokenStreamRegulator.js +102 -10
  469. package/dist/utils/TokenStreamRegulator.js.map +1 -1
  470. package/dist/utils/UnsupportedError.d.ts +2 -0
  471. package/dist/utils/UnsupportedError.js +7 -0
  472. package/dist/utils/UnsupportedError.js.map +1 -0
  473. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -1
  474. package/dist/utils/clearTempFolder.js.map +1 -1
  475. package/dist/utils/cmake.js +38 -20
  476. package/dist/utils/cmake.js.map +1 -1
  477. package/dist/utils/createModelDownloader.d.ts +111 -0
  478. package/dist/utils/createModelDownloader.js +273 -0
  479. package/dist/utils/createModelDownloader.js.map +1 -0
  480. package/dist/utils/findBestOption.d.ts +4 -0
  481. package/dist/utils/findBestOption.js +15 -0
  482. package/dist/utils/findBestOption.js.map +1 -0
  483. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +1 -0
  484. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +23 -12
  485. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -1
  486. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  487. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.d.ts +5 -0
  488. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js +11 -0
  489. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js.map +1 -0
  490. package/dist/utils/gbnfJson/terminals/GbnfArray.d.ts +3 -1
  491. package/dist/utils/gbnfJson/terminals/GbnfArray.js +10 -5
  492. package/dist/utils/gbnfJson/terminals/GbnfArray.js.map +1 -1
  493. package/dist/utils/gbnfJson/terminals/GbnfBoolean.d.ts +1 -1
  494. package/dist/utils/gbnfJson/terminals/GbnfBoolean.js.map +1 -1
  495. package/dist/utils/gbnfJson/terminals/GbnfBooleanValue.js.map +1 -1
  496. package/dist/utils/gbnfJson/terminals/GbnfGrammar.js.map +1 -1
  497. package/dist/utils/gbnfJson/terminals/GbnfNull.d.ts +1 -1
  498. package/dist/utils/gbnfJson/terminals/GbnfNull.js.map +1 -1
  499. package/dist/utils/gbnfJson/terminals/GbnfNumber.d.ts +1 -1
  500. package/dist/utils/gbnfJson/terminals/GbnfNumber.js.map +1 -1
  501. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.js.map +1 -1
  502. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.d.ts +3 -1
  503. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.js +9 -4
  504. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.js.map +1 -1
  505. package/dist/utils/gbnfJson/terminals/GbnfOr.js.map +1 -1
  506. package/dist/utils/gbnfJson/terminals/GbnfRepetition.d.ts +9 -0
  507. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js +37 -0
  508. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js.map +1 -0
  509. package/dist/utils/gbnfJson/terminals/GbnfString.d.ts +1 -1
  510. package/dist/utils/gbnfJson/terminals/GbnfString.js +23 -5
  511. package/dist/utils/gbnfJson/terminals/GbnfString.js.map +1 -1
  512. package/dist/utils/gbnfJson/terminals/GbnfStringValue.js.map +1 -1
  513. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -1
  514. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.d.ts +7 -4
  515. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js +37 -9
  516. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js.map +1 -1
  517. package/dist/utils/gbnfJson/terminals/gbnfConsts.d.ts +5 -4
  518. package/dist/utils/gbnfJson/terminals/gbnfConsts.js +14 -3
  519. package/dist/utils/gbnfJson/terminals/gbnfConsts.js.map +1 -1
  520. package/dist/utils/gbnfJson/types.d.ts +3 -0
  521. package/dist/utils/gbnfJson/types.js.map +1 -1
  522. package/dist/utils/gbnfJson/utils/GbnfJsonScopeState.d.ts +10 -0
  523. package/dist/utils/gbnfJson/utils/GbnfJsonScopeState.js +15 -0
  524. package/dist/utils/gbnfJson/utils/GbnfJsonScopeState.js.map +1 -0
  525. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.d.ts +2 -1
  526. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js +6 -5
  527. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js.map +1 -1
  528. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js +2 -2
  529. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  530. package/dist/utils/getBuildDefaults.d.ts +1 -2
  531. package/dist/utils/getBuildDefaults.js +2 -3
  532. package/dist/utils/getBuildDefaults.js.map +1 -1
  533. package/dist/utils/getConsoleLogPrefix.d.ts +1 -0
  534. package/dist/utils/getConsoleLogPrefix.js +10 -0
  535. package/dist/utils/getConsoleLogPrefix.js.map +1 -0
  536. package/dist/utils/getGrammarsFolder.d.ts +2 -1
  537. package/dist/utils/getGrammarsFolder.js +8 -7
  538. package/dist/utils/getGrammarsFolder.js.map +1 -1
  539. package/dist/utils/getModuleVersion.d.ts +1 -0
  540. package/dist/utils/getModuleVersion.js +13 -0
  541. package/dist/utils/getModuleVersion.js.map +1 -0
  542. package/dist/utils/getQueuedTokensBeforeStopTrigger.d.ts +6 -0
  543. package/dist/utils/getQueuedTokensBeforeStopTrigger.js +22 -0
  544. package/dist/utils/getQueuedTokensBeforeStopTrigger.js.map +1 -0
  545. package/dist/utils/getReadableContextSize.d.ts +1 -0
  546. package/dist/utils/getReadableContextSize.js +7 -0
  547. package/dist/utils/getReadableContextSize.js.map +1 -0
  548. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +15 -11
  549. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -1
  550. package/dist/utils/gitReleaseBundles.js +73 -5
  551. package/dist/utils/gitReleaseBundles.js.map +1 -1
  552. package/dist/utils/hashString.d.ts +1 -0
  553. package/dist/utils/hashString.js +8 -0
  554. package/dist/utils/hashString.js.map +1 -0
  555. package/dist/utils/isLockfileActive.d.ts +4 -0
  556. package/dist/utils/isLockfileActive.js +12 -0
  557. package/dist/utils/isLockfileActive.js.map +1 -0
  558. package/dist/utils/isToken.d.ts +2 -0
  559. package/dist/utils/isToken.js +4 -0
  560. package/dist/utils/isToken.js.map +1 -0
  561. package/dist/utils/isUrl.d.ts +1 -0
  562. package/dist/utils/isUrl.js +15 -0
  563. package/dist/utils/isUrl.js.map +1 -0
  564. package/dist/utils/mergeUnionTypes.d.ts +10 -0
  565. package/dist/utils/mergeUnionTypes.js +2 -0
  566. package/dist/utils/mergeUnionTypes.js.map +1 -0
  567. package/dist/utils/parseModelFileName.d.ts +1 -0
  568. package/dist/utils/parseModelFileName.js +6 -1
  569. package/dist/utils/parseModelFileName.js.map +1 -1
  570. package/dist/utils/parseTextTemplate.d.ts +66 -0
  571. package/dist/utils/parseTextTemplate.js +116 -0
  572. package/dist/utils/parseTextTemplate.js.map +1 -0
  573. package/dist/utils/prettyPrintObject.d.ts +10 -0
  574. package/dist/utils/prettyPrintObject.js +84 -0
  575. package/dist/utils/prettyPrintObject.js.map +1 -0
  576. package/dist/utils/pushAll.d.ts +6 -0
  577. package/dist/utils/pushAll.js +11 -0
  578. package/dist/utils/pushAll.js.map +1 -0
  579. package/dist/utils/removeNullFields.d.ts +2 -1
  580. package/dist/utils/removeNullFields.js +8 -0
  581. package/dist/utils/removeNullFields.js.map +1 -1
  582. package/dist/utils/resolveGithubRelease.d.ts +2 -0
  583. package/dist/utils/resolveGithubRelease.js +36 -0
  584. package/dist/utils/resolveGithubRelease.js.map +1 -0
  585. package/dist/utils/resolveLastTokens.d.ts +2 -0
  586. package/dist/utils/resolveLastTokens.js +12 -0
  587. package/dist/utils/resolveLastTokens.js.map +1 -0
  588. package/dist/utils/runtime.d.ts +4 -0
  589. package/dist/utils/runtime.js +8 -0
  590. package/dist/utils/runtime.js.map +1 -0
  591. package/dist/utils/safeEventCallback.d.ts +6 -0
  592. package/dist/utils/safeEventCallback.js +29 -0
  593. package/dist/utils/safeEventCallback.js.map +1 -0
  594. package/dist/utils/spawnCommand.d.ts +11 -1
  595. package/dist/utils/spawnCommand.js +56 -6
  596. package/dist/utils/spawnCommand.js.map +1 -1
  597. package/dist/utils/tokenizeInput.d.ts +3 -0
  598. package/dist/utils/tokenizeInput.js +12 -0
  599. package/dist/utils/tokenizeInput.js.map +1 -0
  600. package/dist/utils/transformPromisable.d.ts +40 -0
  601. package/dist/utils/transformPromisable.js +64 -0
  602. package/dist/utils/transformPromisable.js.map +1 -0
  603. package/dist/utils/truncateTextAndRoundToWords.d.ts +2 -0
  604. package/dist/utils/truncateTextAndRoundToWords.js +30 -0
  605. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -1
  606. package/dist/utils/utilTypes.d.ts +3 -0
  607. package/dist/utils/utilTypes.js +2 -0
  608. package/dist/utils/utilTypes.js.map +1 -0
  609. package/dist/utils/waitForLockfileRelease.d.ts +5 -0
  610. package/dist/utils/waitForLockfileRelease.js +20 -0
  611. package/dist/utils/waitForLockfileRelease.js.map +1 -0
  612. package/dist/utils/withLockfile.d.ts +7 -0
  613. package/dist/utils/withLockfile.js +44 -0
  614. package/dist/utils/withLockfile.js.map +1 -0
  615. package/dist/utils/withOra.d.ts +2 -0
  616. package/dist/utils/withOra.js +22 -6
  617. package/dist/utils/withOra.js.map +1 -1
  618. package/dist/utils/withProgressLog.d.ts +23 -0
  619. package/dist/utils/withProgressLog.js +211 -0
  620. package/dist/utils/withProgressLog.js.map +1 -0
  621. package/dist/utils/withStatusLogs.d.ts +2 -1
  622. package/dist/utils/withStatusLogs.js +12 -9
  623. package/dist/utils/withStatusLogs.js.map +1 -1
  624. package/dist/utils/wrapAbortSignal.d.ts +2 -0
  625. package/dist/utils/wrapAbortSignal.js +9 -0
  626. package/dist/utils/wrapAbortSignal.js.map +1 -0
  627. package/llama/.clang-format +1 -2
  628. package/llama/CMakeLists.txt +126 -5
  629. package/llama/addon/AddonContext.cpp +762 -0
  630. package/llama/addon/AddonContext.h +53 -0
  631. package/llama/addon/AddonGrammar.cpp +42 -0
  632. package/llama/addon/AddonGrammar.h +18 -0
  633. package/llama/addon/AddonGrammarEvaluationState.cpp +26 -0
  634. package/llama/addon/AddonGrammarEvaluationState.h +15 -0
  635. package/llama/addon/AddonModel.cpp +671 -0
  636. package/llama/addon/AddonModel.h +61 -0
  637. package/llama/addon/AddonModelData.cpp +25 -0
  638. package/llama/addon/AddonModelData.h +15 -0
  639. package/llama/addon/AddonModelLora.cpp +105 -0
  640. package/llama/addon/AddonModelLora.h +28 -0
  641. package/llama/addon/addon.cpp +216 -0
  642. package/llama/addon/addonGlobals.cpp +22 -0
  643. package/llama/addon/addonGlobals.h +12 -0
  644. package/llama/addon/globals/addonLog.cpp +135 -0
  645. package/llama/addon/globals/addonLog.h +21 -0
  646. package/llama/addon/globals/addonProgress.cpp +15 -0
  647. package/llama/addon/globals/addonProgress.h +15 -0
  648. package/llama/addon/globals/getGpuInfo.cpp +108 -0
  649. package/llama/addon/globals/getGpuInfo.h +6 -0
  650. package/llama/binariesGithubRelease.json +1 -1
  651. package/llama/gitRelease.bundle +0 -0
  652. package/llama/gpuInfo/cuda-gpu-info.cu +120 -0
  653. package/llama/gpuInfo/cuda-gpu-info.h +10 -0
  654. package/llama/gpuInfo/metal-gpu-info.h +8 -0
  655. package/llama/gpuInfo/metal-gpu-info.mm +30 -0
  656. package/llama/gpuInfo/vulkan-gpu-info.cpp +83 -0
  657. package/llama/gpuInfo/vulkan-gpu-info.h +9 -0
  658. package/llama/grammars/README.md +297 -6
  659. package/llama/grammars/json.gbnf +4 -4
  660. package/llama/grammars/json_arr.gbnf +4 -4
  661. package/llama/llama.cpp.info.json +4 -0
  662. package/llama/toolchains/win32.host-x64.target-arm64.cmake +41 -0
  663. package/package.json +85 -54
  664. package/templates/packed/electron-typescript-react.json +1 -0
  665. package/templates/packed/node-typescript.json +1 -0
  666. package/dist/AbortError.d.ts +0 -2
  667. package/dist/AbortError.js +0 -7
  668. package/dist/AbortError.js.map +0 -1
  669. package/dist/chatWrappers/LlamaChatWrapper.d.ts +0 -13
  670. package/dist/chatWrappers/LlamaChatWrapper.js.map +0 -1
  671. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +0 -13
  672. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +0 -57
  673. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +0 -1
  674. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -18
  675. package/dist/llamaEvaluator/LlamaBins.js +0 -5
  676. package/dist/llamaEvaluator/LlamaBins.js.map +0 -1
  677. package/dist/llamaEvaluator/LlamaChat/LlamaChat.d.ts +0 -175
  678. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js +0 -704
  679. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js.map +0 -1
  680. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +0 -21
  681. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js +0 -120
  682. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js.map +0 -1
  683. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +0 -1
  684. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.d.ts +0 -146
  685. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js +0 -211
  686. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js.map +0 -1
  687. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +0 -1
  688. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +0 -1
  689. package/dist/llamaEvaluator/LlamaContext/types.d.ts +0 -82
  690. package/dist/llamaEvaluator/LlamaContext/types.js.map +0 -1
  691. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  692. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  693. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -2
  694. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  695. package/dist/llamaEvaluator/LlamaEmbeddingContext.d.ts +0 -35
  696. package/dist/llamaEvaluator/LlamaEmbeddingContext.js +0 -73
  697. package/dist/llamaEvaluator/LlamaEmbeddingContext.js.map +0 -1
  698. package/dist/llamaEvaluator/LlamaGrammar.d.ts +0 -28
  699. package/dist/llamaEvaluator/LlamaGrammar.js.map +0 -1
  700. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +0 -1
  701. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +0 -1
  702. package/dist/llamaEvaluator/LlamaModel.d.ts +0 -119
  703. package/dist/llamaEvaluator/LlamaModel.js +0 -322
  704. package/dist/llamaEvaluator/LlamaModel.js.map +0 -1
  705. package/dist/utils/binariesGithubRelease.js.map +0 -1
  706. package/dist/utils/clearLlamaBuild.d.ts +0 -1
  707. package/dist/utils/clearLlamaBuild.js +0 -12
  708. package/dist/utils/clearLlamaBuild.js.map +0 -1
  709. package/dist/utils/cloneLlamaCppRepo.d.ts +0 -2
  710. package/dist/utils/cloneLlamaCppRepo.js +0 -102
  711. package/dist/utils/cloneLlamaCppRepo.js.map +0 -1
  712. package/dist/utils/compileLLamaCpp.d.ts +0 -8
  713. package/dist/utils/compileLLamaCpp.js +0 -132
  714. package/dist/utils/compileLLamaCpp.js.map +0 -1
  715. package/dist/utils/getBin.js +0 -78
  716. package/dist/utils/getBin.js.map +0 -1
  717. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.d.ts +0 -2
  718. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +0 -9
  719. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +0 -1
  720. package/dist/utils/getReleaseInfo.d.ts +0 -7
  721. package/dist/utils/getReleaseInfo.js +0 -30
  722. package/dist/utils/getReleaseInfo.js.map +0 -1
  723. package/dist/utils/parseModelTypeDescription.d.ts +0 -6
  724. package/dist/utils/parseModelTypeDescription.js +0 -9
  725. package/dist/utils/parseModelTypeDescription.js.map +0 -1
  726. package/dist/utils/resolveChatWrapper.d.ts +0 -4
  727. package/dist/utils/resolveChatWrapper.js +0 -16
  728. package/dist/utils/resolveChatWrapper.js.map +0 -1
  729. package/dist/utils/usedBinFlag.d.ts +0 -6
  730. package/dist/utils/usedBinFlag.js +0 -15
  731. package/dist/utils/usedBinFlag.js.map +0 -1
  732. package/llama/addon.cpp +0 -814
  733. package/llama/usedBin.json +0 -3
  734. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  735. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  736. package/llamaBins/linux-x64/llama-addon.node +0 -0
  737. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  738. package/llamaBins/mac-x64/llama-addon.node +0 -0
  739. package/llamaBins/win-x64/llama-addon.exp +0 -0
  740. package/llamaBins/win-x64/llama-addon.lib +0 -0
  741. package/llamaBins/win-x64/llama-addon.node +0 -0
  742. /package/dist/{utils → bindings/utils}/binariesGithubRelease.d.ts +0 -0
  743. /package/dist/{llamaEvaluator → evaluator}/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +0 -0
  744. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.js +0 -0
  745. /package/dist/{llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies → evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.d.ts +0 -0
  746. /package/dist/{llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies → evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.js +0 -0
  747. /package/dist/{llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies → evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies}/maximumParallelismStrategy.d.ts +0 -0
  748. /package/dist/{llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies → evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies}/maximumParallelismStrategy.js +0 -0
  749. /package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.d.ts +0 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns a promise that resolves to true if every promise in the array resolves to true, otherwise false.
3
+ * Note that this function will not throw on error and instead will log the error to the console.
4
+ */
5
+ export declare function asyncEvery(promises: Promise<boolean>[]): Promise<boolean>;
@@ -0,0 +1,15 @@
1
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
2
+ /**
3
+ * Returns a promise that resolves to true if every promise in the array resolves to true, otherwise false.
4
+ * Note that this function will not throw on error and instead will log the error to the console.
5
+ */
6
+ export async function asyncEvery(promises) {
7
+ try {
8
+ return (await Promise.all(promises)).every(Boolean);
9
+ }
10
+ catch (err) {
11
+ console.error(getConsoleLogPrefix(false, false), err);
12
+ return false;
13
+ }
14
+ }
15
+ //# sourceMappingURL=asyncEvery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncEvery.js","sourceRoot":"","sources":["../../../src/bindings/utils/asyncEvery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAA4B;IACzD,IAAI,CAAC;QACD,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAEtD,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns a promise that fulfills as soon as any of the promises return `true`.
3
+ * Note that this function will not throw on error and instead will log the error to the console.
4
+ */
5
+ export declare function asyncSome(promises: Promise<boolean>[]): Promise<boolean>;
@@ -0,0 +1,27 @@
1
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
2
+ /**
3
+ * Returns a promise that fulfills as soon as any of the promises return `true`.
4
+ * Note that this function will not throw on error and instead will log the error to the console.
5
+ */
6
+ export async function asyncSome(promises) {
7
+ return new Promise((resolve) => {
8
+ let fulfilled = 0;
9
+ for (const promise of promises) {
10
+ promise
11
+ .then((result) => {
12
+ if (result)
13
+ return void resolve(true);
14
+ fulfilled++;
15
+ if (fulfilled === promises.length)
16
+ resolve(false);
17
+ })
18
+ .catch((err) => {
19
+ console.error(getConsoleLogPrefix(false, false), err);
20
+ fulfilled++;
21
+ if (fulfilled === promises.length)
22
+ resolve(false);
23
+ });
24
+ }
25
+ });
26
+ }
27
+ //# sourceMappingURL=asyncSome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncSome.js","sourceRoot":"","sources":["../../../src/bindings/utils/asyncSome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAA4B;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,OAAO;iBACF,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACb,IAAI,MAAM;oBACN,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE9B,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM;oBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;gBAEtD,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM;oBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACX,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import fs from "fs-extra";
2
- import { binariesGithubReleasePath } from "../config.js";
2
+ import { binariesGithubReleasePath } from "../../config.js";
3
3
  export async function getBinariesGithubRelease() {
4
4
  const binariesGithubRelease = await fs.readJson(binariesGithubReleasePath);
5
5
  return binariesGithubRelease.release;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binariesGithubRelease.js","sourceRoot":"","sources":["../../../src/bindings/utils/binariesGithubRelease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AAM1D,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC1C,MAAM,qBAAqB,GAA8B,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAEtG,OAAO,qBAAqB,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAA6C;IACxF,MAAM,yBAAyB,GAA8B;QACzD,OAAO,EAAE,OAAO;KACnB,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,yBAAyB,EAAE,yBAAyB,EAAE;QACrE,MAAM,EAAE,CAAC;KACZ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function clearAllLocalBuilds(waitForLocks?: boolean): Promise<void>;
@@ -0,0 +1,47 @@
1
+ import path from "path";
2
+ import fs from "fs-extra";
3
+ import { lastBuildInfoJsonPath, llamaLocalBuildBinsDirectory } from "../../config.js";
4
+ import { clearTempFolder } from "../../utils/clearTempFolder.js";
5
+ import { withLockfile } from "../../utils/withLockfile.js";
6
+ import { isLockfileActive } from "../../utils/isLockfileActive.js";
7
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
8
+ export async function clearAllLocalBuilds(waitForLocks = false) {
9
+ async function removeBuilds() {
10
+ const itemsToRemove = Array.from(new Set((await fs.readdir(llamaLocalBuildBinsDirectory))
11
+ .map(item => (item.endsWith(".lock")
12
+ ? item.slice(0, -".lock".length)
13
+ : item))
14
+ .filter(item => !item.startsWith("."))));
15
+ let hasLocks = false;
16
+ const buildRemovals = itemsToRemove.map(async (item) => {
17
+ const absolutePath = path.join(llamaLocalBuildBinsDirectory, item);
18
+ const pathIsLocked = await isLockfileActive({ resourcePath: absolutePath });
19
+ hasLocks ||= pathIsLocked;
20
+ if (waitForLocks)
21
+ await withLockfile({
22
+ resourcePath: absolutePath
23
+ }, async () => {
24
+ await fs.remove(absolutePath);
25
+ });
26
+ else if (!pathIsLocked)
27
+ await fs.remove(absolutePath);
28
+ });
29
+ return {
30
+ buildRemovals,
31
+ hasLocks
32
+ };
33
+ }
34
+ if (await fs.pathExists(llamaLocalBuildBinsDirectory)) {
35
+ const { hasLocks, buildRemovals } = await removeBuilds();
36
+ if (hasLocks) {
37
+ if (waitForLocks)
38
+ console.log(getConsoleLogPrefix() + "Some builds are in progress. Waiting for those builds to finish before removing them.");
39
+ else
40
+ console.log(getConsoleLogPrefix() + "Some builds are in progress. Skipping removal of those builds.");
41
+ }
42
+ await Promise.all(buildRemovals);
43
+ }
44
+ await fs.remove(lastBuildInfoJsonPath);
45
+ await clearTempFolder();
46
+ }
47
+ //# sourceMappingURL=clearAllLocalBuilds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearAllLocalBuilds.js","sourceRoot":"","sources":["../../../src/bindings/utils/clearAllLocalBuilds.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,qBAAqB,EAAE,4BAA4B,EAAC,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,YAAY,GAAG,KAAK;IAC1D,KAAK,UAAU,YAAY;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC5B,IAAI,GAAG,CACH,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;aAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACT,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAClB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,IAAI,CACb,CAAC;aACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC7C,CACJ,CAAC;QAEF,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,EAAC,YAAY,EAAE,YAAY,EAAC,CAAC,CAAC;YAE1E,QAAQ,KAAK,YAAY,CAAC;YAE1B,IAAI,YAAY;gBACZ,MAAM,YAAY,CAAC;oBACf,YAAY,EAAE,YAAY;iBAC7B,EAAE,KAAK,IAAI,EAAE;oBACV,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;iBACF,IAAI,CAAC,YAAY;gBAClB,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,aAAa;YACb,QAAQ;SACX,CAAC;IACN,CAAC;IAED,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC;QACpD,MAAM,EAAC,QAAQ,EAAE,aAAa,EAAC,GAAG,MAAM,YAAY,EAAE,CAAC;QAEvD,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,YAAY;gBACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,uFAAuF,CAAC,CAAC;;gBAE7H,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,gEAAgE,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACvC,MAAM,eAAe,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,11 @@
1
+ type ClonedLlamaCppRepoTagFile = {
2
+ tag: string;
3
+ llamaCppGithubRepo: string;
4
+ };
5
+ export declare function cloneLlamaCppRepo(githubOwner: string, githubRepo: string, tag: string, useBundles?: boolean, progressLogs?: boolean, recursive?: boolean): Promise<void>;
6
+ export declare function getClonedLlamaCppRepoReleaseInfo(): Promise<ClonedLlamaCppRepoTagFile | null>;
7
+ export declare function isLlamaCppRepoCloned(waitForLock?: boolean): Promise<boolean>;
8
+ export declare function ensureLlamaCppRepoIsCloned({ progressLogs }?: {
9
+ progressLogs?: boolean;
10
+ }): Promise<void>;
11
+ export {};
@@ -0,0 +1,166 @@
1
+ import path from "path";
2
+ import simpleGit from "simple-git";
3
+ import chalk from "chalk";
4
+ import fs from "fs-extra";
5
+ import which from "which";
6
+ import { defaultLlamaCppGitHubRepo, defaultLlamaCppRelease, enableRecursiveClone, llamaCppDirectory, llamaCppDirectoryInfoFilePath } from "../../config.js";
7
+ import { getGitBundlePathForRelease } from "../../utils/gitReleaseBundles.js";
8
+ import { withLockfile } from "../../utils/withLockfile.js";
9
+ import { waitForLockfileRelease } from "../../utils/waitForLockfileRelease.js";
10
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
11
+ import { isLockfileActive } from "../../utils/isLockfileActive.js";
12
+ import { isGithubReleaseNeedsResolving, resolveGithubRelease } from "../../utils/resolveGithubRelease.js";
13
+ import withStatusLogs from "../../utils/withStatusLogs.js";
14
+ import { withProgressLog } from "../../utils/withProgressLog.js";
15
+ import { logDistroInstallInstruction } from "./logDistroInstallInstruction.js";
16
+ export async function cloneLlamaCppRepo(githubOwner, githubRepo, tag, useBundles = true, progressLogs = true, recursive = enableRecursiveClone) {
17
+ const gitBundleForTag = !useBundles ? null : await getGitBundlePathForRelease(githubOwner, githubRepo, tag);
18
+ const remoteGitUrl = `https://github.com/${githubOwner}/${githubRepo}.git`;
19
+ async function withGitCloneProgress(cloneName, callback) {
20
+ if (!progressLogs)
21
+ return await callback(simpleGit({}));
22
+ const repoText = `${githubOwner}/${githubRepo} (${cloneName})`;
23
+ let lastProgress = 0;
24
+ let stages = 1;
25
+ return await withProgressLog({
26
+ loadingText: chalk.bold("Cloning " + repoText),
27
+ successText: chalk.blue("Cloned " + repoText),
28
+ failText: chalk.blue("Failed to clone " + repoText),
29
+ progressFractionDigits: false
30
+ }, async (progressUpdater) => {
31
+ const gitWithCloneProgress = simpleGit({
32
+ progress({ progress }) {
33
+ const currentProgress = progress / 100;
34
+ if (currentProgress < lastProgress)
35
+ stages++;
36
+ lastProgress = currentProgress;
37
+ progressUpdater.setProgress(currentProgress, stages > 1
38
+ ? `(Stage ${stages})`
39
+ : undefined);
40
+ }
41
+ });
42
+ const res = await callback(gitWithCloneProgress);
43
+ progressUpdater.setProgress(1);
44
+ return res;
45
+ });
46
+ }
47
+ await withLockfile({
48
+ resourcePath: llamaCppDirectory
49
+ }, async () => {
50
+ await fs.remove(llamaCppDirectory);
51
+ await fs.remove(llamaCppDirectoryInfoFilePath);
52
+ if (gitBundleForTag != null) {
53
+ try {
54
+ await withGitCloneProgress("local bundle", async (gitWithCloneProgress) => {
55
+ await gitWithCloneProgress.clone(gitBundleForTag, llamaCppDirectory, {
56
+ "--quiet": null
57
+ });
58
+ await simpleGit(llamaCppDirectory).removeRemote("origin");
59
+ });
60
+ await updateClonedLlamaCppRepoTagFile(githubOwner, githubRepo, tag);
61
+ return;
62
+ }
63
+ catch (err) {
64
+ await fs.remove(llamaCppDirectory);
65
+ await fs.remove(llamaCppDirectoryInfoFilePath);
66
+ if (progressLogs)
67
+ console.error(getConsoleLogPrefix() + "Failed to clone git bundle, cloning from GitHub instead", err);
68
+ await printCloneErrorHelp(String(err));
69
+ }
70
+ }
71
+ try {
72
+ await withGitCloneProgress("GitHub", async (gitWithCloneProgress) => {
73
+ await gitWithCloneProgress.clone(remoteGitUrl, llamaCppDirectory, {
74
+ "--depth": 1,
75
+ "--branch": tag,
76
+ ...(recursive ? { "--recursive": null } : {}),
77
+ "--quiet": null
78
+ });
79
+ });
80
+ await updateClonedLlamaCppRepoTagFile(githubOwner, githubRepo, tag);
81
+ }
82
+ catch (err) {
83
+ await printCloneErrorHelp(String(err));
84
+ throw err;
85
+ }
86
+ });
87
+ }
88
+ async function printCloneErrorHelp(error) {
89
+ // This error happens with some docker images where the current user is different
90
+ // from the owner of the files due to mounting a volume.
91
+ // In such cases, print a helpful message to help the user resolve the issue.
92
+ if (error.toLowerCase().includes("detected dubious ownership in repository"))
93
+ console.info("\n" +
94
+ getConsoleLogPrefix(true) + chalk.yellow("To fix this issue, try running this command to fix it for the current module directory:") + "\n" +
95
+ 'git config --global --add safe.directory "' + llamaCppDirectory + '"\n\n' +
96
+ chalk.yellow("Or run this command to fix it everywhere:") + "\n" +
97
+ 'git config --global --add safe.directory "*"');
98
+ else if (await which("git", { nothrow: true }) == null) {
99
+ console.info("\n" +
100
+ getConsoleLogPrefix(true) + chalk.yellow("Git is not installed, please install it first to build llama.cpp"));
101
+ await logDistroInstallInstruction("To install git, ", {
102
+ linuxPackages: { apt: ["git"], apk: ["git"] },
103
+ macOsPackages: { brew: ["git", "git-lfs"] }
104
+ });
105
+ }
106
+ }
107
+ export async function getClonedLlamaCppRepoReleaseInfo() {
108
+ if (!(await isLlamaCppRepoCloned(false)))
109
+ return null;
110
+ if (!(await fs.pathExists(llamaCppDirectoryInfoFilePath)))
111
+ return null;
112
+ try {
113
+ const clonedLlamaCppRepoTagJson = await fs.readJson(llamaCppDirectoryInfoFilePath);
114
+ return clonedLlamaCppRepoTagJson;
115
+ }
116
+ catch (err) {
117
+ console.error(getConsoleLogPrefix() + "Failed to read llama.cpp tag file", err);
118
+ return null;
119
+ }
120
+ }
121
+ export async function isLlamaCppRepoCloned(waitForLock = true) {
122
+ if (waitForLock)
123
+ await waitForLockfileRelease({ resourcePath: llamaCppDirectory });
124
+ else if (await isLockfileActive({ resourcePath: llamaCppDirectory }))
125
+ return false;
126
+ const [repoGitExists, releaseInfoFileExists] = await Promise.all([
127
+ fs.pathExists(path.join(llamaCppDirectory, ".git")),
128
+ fs.pathExists(llamaCppDirectoryInfoFilePath)
129
+ ]);
130
+ return repoGitExists && releaseInfoFileExists;
131
+ }
132
+ export async function ensureLlamaCppRepoIsCloned({ progressLogs = true } = {}) {
133
+ if (await isLlamaCppRepoCloned(true))
134
+ return;
135
+ const [githubOwner, githubRepo] = defaultLlamaCppGitHubRepo.split("/");
136
+ if (progressLogs)
137
+ console.log(getConsoleLogPrefix() + chalk.blue("Cloning llama.cpp"));
138
+ let releaseTag = defaultLlamaCppRelease;
139
+ if (isGithubReleaseNeedsResolving(releaseTag)) {
140
+ await withStatusLogs({
141
+ loading: chalk.blue("Fetching llama.cpp info"),
142
+ success: chalk.blue("Fetched llama.cpp info"),
143
+ fail: chalk.blue("Failed to fetch llama.cpp info"),
144
+ disableLogs: !progressLogs
145
+ }, async () => {
146
+ releaseTag = await resolveGithubRelease(githubOwner, githubRepo, releaseTag);
147
+ });
148
+ }
149
+ await cloneLlamaCppRepo(githubOwner, githubRepo, releaseTag, true, progressLogs);
150
+ }
151
+ async function updateClonedLlamaCppRepoTagFile(githubOwner, githubRepo, tag) {
152
+ try {
153
+ const clonedLlamaCppRepoTagJson = {
154
+ tag,
155
+ llamaCppGithubRepo: githubOwner + "/" + githubRepo
156
+ };
157
+ await fs.writeJson(llamaCppDirectoryInfoFilePath, clonedLlamaCppRepoTagJson, {
158
+ spaces: 4
159
+ });
160
+ }
161
+ catch (err) {
162
+ console.error(getConsoleLogPrefix() + "Failed to write llama.cpp tag file", err);
163
+ throw err;
164
+ }
165
+ }
166
+ //# sourceMappingURL=cloneLlamaCppRepo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneLlamaCppRepo.js","sourceRoot":"","sources":["../../../src/bindings/utils/cloneLlamaCppRepo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ import process from "process";
3
+ import { BuildMetadataFile, BuildOptions } from "../types.js";
4
+ export declare function compileLlamaCpp(buildOptions: BuildOptions, compileOptions: {
5
+ nodeTarget?: string;
6
+ updateLastBuildInfo?: boolean;
7
+ includeBuildOptionsInBinaryFolderName?: boolean;
8
+ ensureLlamaCppRepoIsCloned?: boolean;
9
+ downloadCmakeIfNeeded?: boolean;
10
+ ignoreWorkarounds?: ("cudaArchitecture")[];
11
+ envVars?: typeof process.env;
12
+ ciMode?: boolean;
13
+ }): Promise<void>;
14
+ export declare function getLocalBuildBinaryPath(folderName: string): Promise<string | null>;
15
+ export declare function getLocalBuildBinaryBuildMetadata(folderName: string): Promise<BuildMetadataFile>;
16
+ export declare function getPrebuiltBinaryPath(buildOptions: BuildOptions, folderName: string): Promise<{
17
+ binaryPath: string;
18
+ folderName: string;
19
+ folderPath: string;
20
+ } | null>;
21
+ export declare function getPrebuiltBinaryBuildMetadata(folderPath: string, folderName: string): Promise<BuildMetadataFile>;
@@ -0,0 +1,288 @@
1
+ import path from "path";
2
+ import { fileURLToPath } from "url";
3
+ import process from "process";
4
+ import fs from "fs-extra";
5
+ import chalk from "chalk";
6
+ import which from "which";
7
+ import { buildMetadataFileName, documentationPageUrls, llamaCppDirectory, llamaDirectory, llamaLocalBuildBinsDirectory, llamaPrebuiltBinsDirectory, llamaToolchainsDirectory } from "../../config.js";
8
+ import { convertBuildOptionsToBuildOptionsJSON } from "../types.js";
9
+ import { spawnCommand, SpawnError } from "../../utils/spawnCommand.js";
10
+ import { downloadCmakeIfNeeded, fixXpackPermissions, getCmakePath, hasBuiltinCmake } from "../../utils/cmake.js";
11
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
12
+ import { withLockfile } from "../../utils/withLockfile.js";
13
+ import { getModuleVersion } from "../../utils/getModuleVersion.js";
14
+ import { ensureLlamaCppRepoIsCloned, isLlamaCppRepoCloned } from "./cloneLlamaCppRepo.js";
15
+ import { getBuildFolderNameForBuildOptions } from "./getBuildFolderNameForBuildOptions.js";
16
+ import { setLastBuildInfo } from "./lastBuildInfo.js";
17
+ import { getPlatform } from "./getPlatform.js";
18
+ import { logDistroInstallInstruction } from "./logDistroInstallInstruction.js";
19
+ import { testCmakeBinary } from "./testCmakeBinary.js";
20
+ import { getCudaNvccPaths } from "./detectAvailableComputeLayers.js";
21
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
22
+ export async function compileLlamaCpp(buildOptions, compileOptions) {
23
+ const { nodeTarget = process.version, updateLastBuildInfo: updateLastBuildInfoArg = true, includeBuildOptionsInBinaryFolderName = true, ensureLlamaCppRepoIsCloned: ensureLlamaCppRepoIsClonedArg = false, downloadCmakeIfNeeded: downloadCmakeIfNeededArg = false, ignoreWorkarounds = [], envVars = process.env, ciMode = false } = compileOptions;
24
+ const buildFolderName = await getBuildFolderNameForBuildOptions(buildOptions);
25
+ const finalBuildFolderName = includeBuildOptionsInBinaryFolderName
26
+ ? buildFolderName.withCustomCmakeOptions
27
+ : buildFolderName.withoutCustomCmakeOptions;
28
+ const outDirectory = path.join(llamaLocalBuildBinsDirectory, finalBuildFolderName);
29
+ await fs.mkdirp(llamaLocalBuildBinsDirectory);
30
+ try {
31
+ await withLockfile({
32
+ resourcePath: outDirectory
33
+ }, async () => {
34
+ try {
35
+ if (ensureLlamaCppRepoIsClonedArg)
36
+ await ensureLlamaCppRepoIsCloned({ progressLogs: buildOptions.progressLogs });
37
+ else if (!(await isLlamaCppRepoCloned()))
38
+ throw new Error(`"${llamaCppDirectory}" directory does not exist`);
39
+ if (downloadCmakeIfNeededArg)
40
+ await downloadCmakeIfNeeded(buildOptions.progressLogs);
41
+ const cmakePathArgs = await getCmakePathArgs();
42
+ const toolchainFile = await getToolchainFileForArch(buildOptions.arch);
43
+ const runtimeVersion = nodeTarget.startsWith("v") ? nodeTarget.slice("v".length) : nodeTarget;
44
+ const cmakeCustomOptions = new Map(buildOptions.customCmakeOptions);
45
+ if (buildOptions.gpu === "metal" && process.platform === "darwin" && !cmakeCustomOptions.has("GGML_METAL"))
46
+ cmakeCustomOptions.set("GGML_METAL", "1");
47
+ else if (!cmakeCustomOptions.has("GGML_METAL"))
48
+ cmakeCustomOptions.set("GGML_METAL", "OFF");
49
+ // if (cmakeCustomOptions.get("GGML_METAL") === "1" && !cmakeCustomOptions.has("GGML_METAL_EMBED_LIBRARY"))
50
+ // cmakeCustomOptions.set("GGML_METAL_EMBED_LIBRARY", "1");
51
+ if (buildOptions.gpu === "cuda" && !cmakeCustomOptions.has("GGML_CUDA"))
52
+ cmakeCustomOptions.set("GGML_CUDA", "1");
53
+ if (buildOptions.gpu === "vulkan" && !cmakeCustomOptions.has("GGML_VULKAN"))
54
+ cmakeCustomOptions.set("GGML_VULKAN", "1");
55
+ if (!cmakeCustomOptions.has("GGML_CCACHE"))
56
+ cmakeCustomOptions.set("GGML_CCACHE", "OFF");
57
+ if (toolchainFile != null && !cmakeCustomOptions.has("CMAKE_TOOLCHAIN_FILE"))
58
+ cmakeCustomOptions.set("CMAKE_TOOLCHAIN_FILE", toolchainFile);
59
+ if (ciMode) {
60
+ if (!cmakeCustomOptions.has("GGML_OPENMP"))
61
+ cmakeCustomOptions.set("GGML_OPENMP", "OFF");
62
+ }
63
+ await fs.remove(outDirectory);
64
+ await spawnCommand("npm", [
65
+ "run", "-s", "cmake-js-llama", "--", "clean",
66
+ "--log-level", "warn",
67
+ "--out", path.relative(llamaDirectory, outDirectory),
68
+ ...cmakePathArgs
69
+ ], __dirname, envVars, buildOptions.progressLogs);
70
+ await spawnCommand("npm", [
71
+ "run", "-s", "cmake-js-llama", "--", "compile",
72
+ "--log-level", "warn",
73
+ "--config", "Release",
74
+ "--arch=" + buildOptions.arch,
75
+ "--out", path.relative(llamaDirectory, outDirectory),
76
+ "--runtime-version=" + runtimeVersion,
77
+ ...cmakePathArgs,
78
+ ...([...cmakeCustomOptions].map(([key, value]) => "--CD" + key + "=" + value))
79
+ ], __dirname, envVars, buildOptions.progressLogs);
80
+ const binFilesDirPaths = [
81
+ path.join(outDirectory, "bin"),
82
+ path.join(outDirectory, "llama.cpp", "bin")
83
+ ];
84
+ const compiledResultDirPath = path.join(outDirectory, "Release");
85
+ if (!await fs.pathExists(compiledResultDirPath))
86
+ throw new Error("Could not find Release directory");
87
+ for (const binFilesDirPath of binFilesDirPaths) {
88
+ if (await fs.pathExists(binFilesDirPath)) {
89
+ const itemNames = await fs.readdir(binFilesDirPath);
90
+ await Promise.all(itemNames.map((itemName) => (fs.copy(path.join(binFilesDirPath, itemName), path.join(compiledResultDirPath, itemName), {
91
+ overwrite: false
92
+ }))));
93
+ }
94
+ }
95
+ await applyResultDirFixes(compiledResultDirPath, path.join(outDirectory, "_temp"));
96
+ await fs.writeFile(path.join(compiledResultDirPath, buildMetadataFileName), JSON.stringify({
97
+ buildOptions: convertBuildOptionsToBuildOptionsJSON(buildOptions)
98
+ }), "utf8");
99
+ await fs.writeFile(path.join(outDirectory, "buildDone.status"), "", "utf8");
100
+ if (updateLastBuildInfoArg) {
101
+ await setLastBuildInfo({
102
+ folderName: finalBuildFolderName
103
+ });
104
+ }
105
+ }
106
+ finally {
107
+ await fixXpackPermissions();
108
+ }
109
+ });
110
+ }
111
+ catch (err) {
112
+ const platform = getPlatform();
113
+ if (platform === "linux" && await which("make", { nothrow: true }) == null) {
114
+ console.info("\n" +
115
+ getConsoleLogPrefix(true) +
116
+ chalk.yellow('It seems that "make" is not installed in your system. Install it to resolve build issues'));
117
+ await logDistroInstallInstruction('To install "make", ', {
118
+ linuxPackages: { apt: ["make"], apk: ["make"] },
119
+ macOsPackages: { brew: ["make"] }
120
+ });
121
+ }
122
+ else if (platform === "linux" && !(await testCmakeBinary(await getCmakePath()))) {
123
+ console.info("\n" +
124
+ getConsoleLogPrefix(true) +
125
+ chalk.yellow('It seems that the used "cmake" doesn\'t work properly. Install it on your system to resolve build issues'));
126
+ await logDistroInstallInstruction('To install "cmake", ', {
127
+ linuxPackages: { apt: ["cmake"], apk: ["cmake"] },
128
+ macOsPackages: { brew: ["cmake"] }
129
+ });
130
+ }
131
+ else if (platform === "mac" && await which("clang", { nothrow: true }) == null)
132
+ console.info("\n" +
133
+ getConsoleLogPrefix(true) +
134
+ chalk.yellow("It seems that Xcode command line tools are not installed in your system. Install it to resolve build issues\n") +
135
+ getConsoleLogPrefix(true) +
136
+ chalk.yellow('To install Xcode command line tools, run "xcode-select --install"'));
137
+ else if (buildOptions.gpu === "cuda") {
138
+ if (!ignoreWorkarounds.includes("cudaArchitecture") && (platform === "win" || platform === "linux") &&
139
+ err instanceof SpawnError && (err.combinedStd.toLowerCase().includes("Failed to detect a default CUDA architecture".toLowerCase()) || (err.combinedStd.toLowerCase().includes("Tell CMake where to find the compiler by setting either the environment".toLowerCase()) &&
140
+ err.combinedStd.toLowerCase().includes('variable "CUDACXX" or the CMake cache entry CMAKE_CUDA_COMPILER to the full'.toLowerCase())))) {
141
+ for (const nvccPath of await getCudaNvccPaths()) {
142
+ if (buildOptions.progressLogs)
143
+ console.info(getConsoleLogPrefix(true) + `Trying to compile again with "CUDACXX=${nvccPath}" environment variable`);
144
+ try {
145
+ return await compileLlamaCpp(buildOptions, {
146
+ ...compileOptions,
147
+ envVars: {
148
+ ...envVars,
149
+ CUDACXX: nvccPath
150
+ },
151
+ ignoreWorkarounds: [...ignoreWorkarounds, "cudaArchitecture"]
152
+ });
153
+ }
154
+ catch (err) {
155
+ if (buildOptions.progressLogs)
156
+ console.error(getConsoleLogPrefix(true, false), err);
157
+ }
158
+ }
159
+ }
160
+ console.info("\n" +
161
+ getConsoleLogPrefix(true) +
162
+ chalk.yellow("To resolve errors related to CUDA compilation, see the CUDA guide: ") +
163
+ documentationPageUrls.CUDA);
164
+ }
165
+ else if (buildOptions.gpu === "vulkan")
166
+ console.info("\n" +
167
+ getConsoleLogPrefix(true) +
168
+ chalk.yellow("To resolve errors related to Vulkan compilation, see the Vulkan guide: ") +
169
+ documentationPageUrls.Vulkan);
170
+ throw err;
171
+ }
172
+ }
173
+ export async function getLocalBuildBinaryPath(folderName) {
174
+ const binaryPath = path.join(llamaLocalBuildBinsDirectory, folderName, "Release", "llama-addon.node");
175
+ const buildMetadataFilePath = path.join(llamaLocalBuildBinsDirectory, folderName, "Release", buildMetadataFileName);
176
+ const buildDoneStatusPath = path.join(llamaLocalBuildBinsDirectory, folderName, "buildDone.status");
177
+ const [binaryExists, buildMetadataExists, buildDoneStatusExists] = await Promise.all([
178
+ fs.pathExists(binaryPath),
179
+ fs.pathExists(buildMetadataFilePath),
180
+ fs.pathExists(buildDoneStatusPath)
181
+ ]);
182
+ if (binaryExists && buildMetadataExists && buildDoneStatusExists)
183
+ return binaryPath;
184
+ return null;
185
+ }
186
+ export async function getLocalBuildBinaryBuildMetadata(folderName) {
187
+ const buildMetadataFilePath = path.join(llamaLocalBuildBinsDirectory, folderName, "Release", buildMetadataFileName);
188
+ if (!(await fs.pathExists(buildMetadataFilePath)))
189
+ throw new Error(`Could not find build metadata file for local build "${folderName}"`);
190
+ const buildMetadata = await fs.readJson(buildMetadataFilePath);
191
+ return buildMetadata;
192
+ }
193
+ export async function getPrebuiltBinaryPath(buildOptions, folderName) {
194
+ const localPrebuiltBinaryDirectoryPath = path.join(llamaPrebuiltBinsDirectory, folderName);
195
+ const binaryPath = await resolvePrebuiltBinaryPath(localPrebuiltBinaryDirectoryPath);
196
+ if (binaryPath != null)
197
+ return {
198
+ binaryPath,
199
+ folderName,
200
+ folderPath: localPrebuiltBinaryDirectoryPath
201
+ };
202
+ const packagePrebuiltBinariesDirectoryPath = await getPrebuiltBinariesPackageDirectoryForBuildOptions(buildOptions);
203
+ if (packagePrebuiltBinariesDirectoryPath == null)
204
+ return null;
205
+ const packagePrebuiltBinaryDirectoryPath = path.join(packagePrebuiltBinariesDirectoryPath, folderName);
206
+ const binaryPathFromPackage = await resolvePrebuiltBinaryPath(packagePrebuiltBinaryDirectoryPath);
207
+ if (binaryPathFromPackage != null)
208
+ return {
209
+ binaryPath: binaryPathFromPackage,
210
+ folderName,
211
+ folderPath: packagePrebuiltBinaryDirectoryPath
212
+ };
213
+ return null;
214
+ }
215
+ export async function getPrebuiltBinaryBuildMetadata(folderPath, folderName) {
216
+ const buildMetadataFilePath = path.join(folderPath, buildMetadataFileName);
217
+ if (!(await fs.pathExists(buildMetadataFilePath)))
218
+ throw new Error(`Could not find build metadata file for prebuilt build "${folderName}"`);
219
+ const buildMetadata = await fs.readJson(buildMetadataFilePath);
220
+ return buildMetadata;
221
+ }
222
+ async function applyResultDirFixes(resultDirPath, tempDirPath) {
223
+ const releaseDirPath = path.join(resultDirPath, "Release");
224
+ if (await fs.pathExists(releaseDirPath)) {
225
+ await fs.remove(tempDirPath);
226
+ await fs.move(releaseDirPath, tempDirPath);
227
+ const itemNames = await fs.readdir(tempDirPath);
228
+ await Promise.all(itemNames.map((itemName) => (fs.move(path.join(tempDirPath, itemName), path.join(resultDirPath, itemName), {
229
+ overwrite: true
230
+ }))));
231
+ await fs.remove(tempDirPath);
232
+ }
233
+ }
234
+ async function resolvePrebuiltBinaryPath(prebuiltBinaryDirectoryPath) {
235
+ const binaryPath = path.join(prebuiltBinaryDirectoryPath, "llama-addon.node");
236
+ const buildMetadataFilePath = path.join(prebuiltBinaryDirectoryPath, buildMetadataFileName);
237
+ const [binaryExists, buildMetadataExists] = await Promise.all([
238
+ fs.pathExists(binaryPath),
239
+ fs.pathExists(buildMetadataFilePath)
240
+ ]);
241
+ if (binaryExists && buildMetadataExists)
242
+ return binaryPath;
243
+ return null;
244
+ }
245
+ function getPrebuiltBinariesPackageDirectoryForBuildOptions(buildOptions) {
246
+ async function getBinariesPathFromModules(moduleImport) {
247
+ try {
248
+ const [binariesModule, currentModuleVersion] = await Promise.all([
249
+ moduleImport(),
250
+ getModuleVersion()
251
+ ]);
252
+ const { binsDir, packageVersion } = binariesModule?.getBinsDir?.() ?? {};
253
+ if (binsDir == null || packageVersion !== currentModuleVersion)
254
+ return null;
255
+ return binsDir;
256
+ }
257
+ catch (err) {
258
+ return null;
259
+ }
260
+ }
261
+ if (buildOptions.platform === "win" && buildOptions.arch === "x64" && buildOptions.gpu === "cuda")
262
+ // @ts-ignore
263
+ return getBinariesPathFromModules(() => import("@node-llama-cpp/win-x64-cuda"));
264
+ else if (buildOptions.platform === "linux" && buildOptions.arch === "x64" && buildOptions.gpu === "cuda")
265
+ // @ts-ignore
266
+ return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-x64-cuda"));
267
+ return null;
268
+ }
269
+ async function getCmakePathArgs() {
270
+ if (await hasBuiltinCmake())
271
+ return [];
272
+ const cmakePath = await getCmakePath();
273
+ if (cmakePath == null)
274
+ return [];
275
+ return ["--cmake-path", cmakePath];
276
+ }
277
+ async function getToolchainFileForArch(targetArch) {
278
+ if (process.arch === targetArch)
279
+ return null;
280
+ const platform = process.platform;
281
+ const hostArch = process.arch;
282
+ const toolchainFilename = `${platform}.host-${hostArch}.target-${targetArch}.cmake`;
283
+ const filePath = path.join(llamaToolchainsDirectory, toolchainFilename);
284
+ if (await fs.pathExists(filePath))
285
+ return filePath;
286
+ return null;
287
+ }
288
+ //# sourceMappingURL=compileLLamaCpp.js.map