node-llama-cpp 3.0.0-beta.5 → 3.0.0-beta.7

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 (229) hide show
  1. package/dist/{utils/getBin.d.ts → bindings/AddonTypes.d.ts} +2 -2
  2. package/dist/bindings/AddonTypes.js +2 -0
  3. package/dist/bindings/AddonTypes.js.map +1 -0
  4. package/dist/bindings/Llama.d.ts +21 -0
  5. package/dist/bindings/Llama.js +213 -0
  6. package/dist/bindings/Llama.js.map +1 -0
  7. package/dist/bindings/getLlama.d.ts +83 -0
  8. package/dist/bindings/getLlama.js +216 -0
  9. package/dist/bindings/getLlama.js.map +1 -0
  10. package/dist/bindings/types.d.ts +33 -0
  11. package/dist/bindings/types.js +30 -0
  12. package/dist/bindings/types.js.map +1 -0
  13. package/dist/bindings/utils/NoBinaryFoundError.d.ts +2 -0
  14. package/dist/bindings/utils/NoBinaryFoundError.js +7 -0
  15. package/dist/bindings/utils/NoBinaryFoundError.js.map +1 -0
  16. package/dist/{utils → bindings/utils}/binariesGithubRelease.js +1 -1
  17. package/dist/bindings/utils/binariesGithubRelease.js.map +1 -0
  18. package/dist/bindings/utils/clearAllLocalBuilds.d.ts +1 -0
  19. package/dist/bindings/utils/clearAllLocalBuilds.js +47 -0
  20. package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -0
  21. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +11 -0
  22. package/dist/bindings/utils/cloneLlamaCppRepo.js +151 -0
  23. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -0
  24. package/dist/bindings/utils/compileLLamaCpp.d.ts +12 -0
  25. package/dist/bindings/utils/compileLLamaCpp.js +157 -0
  26. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -0
  27. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.d.ts +5 -0
  28. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js +85 -0
  29. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -0
  30. package/dist/bindings/utils/getCanUsePrebuiltBinaries.d.ts +1 -0
  31. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js +8 -0
  32. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js.map +1 -0
  33. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.d.ts +2 -0
  34. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js +21 -0
  35. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -0
  36. package/dist/bindings/utils/getPlatform.d.ts +2 -0
  37. package/dist/bindings/utils/getPlatform.js +15 -0
  38. package/dist/bindings/utils/getPlatform.js.map +1 -0
  39. package/dist/bindings/utils/lastBuildInfo.d.ts +6 -0
  40. package/dist/bindings/utils/lastBuildInfo.js +17 -0
  41. package/dist/bindings/utils/lastBuildInfo.js.map +1 -0
  42. package/dist/bindings/utils/logBinaryUsageExampleToConsole.d.ts +2 -0
  43. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js +28 -0
  44. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -0
  45. package/dist/bindings/utils/resolveCustomCmakeOptions.d.ts +1 -0
  46. package/dist/bindings/utils/resolveCustomCmakeOptions.js +43 -0
  47. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -0
  48. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +5 -0
  49. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -1
  50. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +1 -1
  51. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
  52. package/dist/cli/cli.js +2 -0
  53. package/dist/cli/cli.js.map +1 -1
  54. package/dist/cli/commands/BuildCommand.d.ts +2 -1
  55. package/dist/cli/commands/BuildCommand.js +43 -10
  56. package/dist/cli/commands/BuildCommand.js.map +1 -1
  57. package/dist/cli/commands/ChatCommand.d.ts +3 -2
  58. package/dist/cli/commands/ChatCommand.js +29 -12
  59. package/dist/cli/commands/ChatCommand.js.map +1 -1
  60. package/dist/cli/commands/ClearCommand.js +4 -6
  61. package/dist/cli/commands/ClearCommand.js.map +1 -1
  62. package/dist/cli/commands/DownloadCommand.d.ts +2 -1
  63. package/dist/cli/commands/DownloadCommand.js +47 -40
  64. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  65. package/dist/cli/commands/OnPostInstallCommand.js +5 -10
  66. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  67. package/dist/config.d.ts +9 -3
  68. package/dist/config.js +14 -6
  69. package/dist/config.js.map +1 -1
  70. package/dist/{llamaEvaluator → evaluator}/LlamaChat/LlamaChat.js +5 -4
  71. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -0
  72. package/dist/{llamaEvaluator → evaluator}/LlamaChat/utils/FunctionCallGrammar.d.ts +2 -1
  73. package/dist/{llamaEvaluator → evaluator}/LlamaChat/utils/FunctionCallGrammar.js +2 -1
  74. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
  75. package/dist/{llamaEvaluator → evaluator}/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +18 -0
  76. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  77. package/dist/{llamaEvaluator → evaluator}/LlamaChatSession/LlamaChatSession.js +2 -0
  78. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  79. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  80. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.js +5 -2
  81. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -0
  82. package/dist/evaluator/LlamaContext/types.js.map +1 -0
  83. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +1 -0
  84. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +1 -0
  85. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +1 -0
  86. package/dist/{llamaEvaluator → evaluator}/LlamaEmbeddingContext.d.ts +2 -0
  87. package/dist/{llamaEvaluator → evaluator}/LlamaEmbeddingContext.js +13 -8
  88. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -0
  89. package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.d.ts +4 -2
  90. package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.js +8 -7
  91. package/dist/evaluator/LlamaGrammar.js.map +1 -0
  92. package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.js +4 -4
  93. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -0
  94. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.d.ts +2 -1
  95. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.js +2 -1
  96. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -0
  97. package/dist/{llamaEvaluator → evaluator}/LlamaModel.d.ts +4 -3
  98. package/dist/{llamaEvaluator → evaluator}/LlamaModel.js +4 -6
  99. package/dist/evaluator/LlamaModel.js.map +1 -0
  100. package/dist/index.d.ts +16 -12
  101. package/dist/index.js +15 -11
  102. package/dist/index.js.map +1 -1
  103. package/dist/state.d.ts +2 -0
  104. package/dist/state.js +7 -0
  105. package/dist/state.js.map +1 -1
  106. package/dist/utils/cmake.js +16 -11
  107. package/dist/utils/cmake.js.map +1 -1
  108. package/dist/utils/getConsoleLogPrefix.d.ts +1 -0
  109. package/dist/utils/getConsoleLogPrefix.js +9 -0
  110. package/dist/utils/getConsoleLogPrefix.js.map +1 -0
  111. package/dist/utils/getGrammarsFolder.d.ts +2 -1
  112. package/dist/utils/getGrammarsFolder.js +8 -7
  113. package/dist/utils/getGrammarsFolder.js.map +1 -1
  114. package/dist/utils/getModuleVersion.d.ts +1 -0
  115. package/dist/utils/getModuleVersion.js +13 -0
  116. package/dist/utils/getModuleVersion.js.map +1 -0
  117. package/dist/utils/gitReleaseBundles.js +6 -5
  118. package/dist/utils/gitReleaseBundles.js.map +1 -1
  119. package/dist/utils/hashString.d.ts +1 -0
  120. package/dist/utils/hashString.js +8 -0
  121. package/dist/utils/hashString.js.map +1 -0
  122. package/dist/utils/isLockfileActive.d.ts +4 -0
  123. package/dist/utils/isLockfileActive.js +12 -0
  124. package/dist/utils/isLockfileActive.js.map +1 -0
  125. package/dist/utils/parseModelTypeDescription.d.ts +1 -1
  126. package/dist/utils/prettyPrintObject.d.ts +1 -0
  127. package/dist/utils/prettyPrintObject.js +38 -0
  128. package/dist/utils/prettyPrintObject.js.map +1 -0
  129. package/dist/utils/removeNullFields.d.ts +1 -0
  130. package/dist/utils/removeNullFields.js +8 -0
  131. package/dist/utils/removeNullFields.js.map +1 -1
  132. package/dist/utils/resolveChatWrapper.d.ts +1 -1
  133. package/dist/utils/resolveGithubRelease.d.ts +2 -0
  134. package/dist/utils/resolveGithubRelease.js +36 -0
  135. package/dist/utils/resolveGithubRelease.js.map +1 -0
  136. package/dist/utils/spawnCommand.d.ts +1 -1
  137. package/dist/utils/spawnCommand.js +4 -2
  138. package/dist/utils/spawnCommand.js.map +1 -1
  139. package/dist/utils/tokenizeInput.d.ts +3 -0
  140. package/dist/utils/tokenizeInput.js +9 -0
  141. package/dist/utils/tokenizeInput.js.map +1 -0
  142. package/dist/utils/waitForLockfileRelease.d.ts +5 -0
  143. package/dist/utils/waitForLockfileRelease.js +20 -0
  144. package/dist/utils/waitForLockfileRelease.js.map +1 -0
  145. package/dist/utils/withLockfile.d.ts +7 -0
  146. package/dist/utils/withLockfile.js +44 -0
  147. package/dist/utils/withLockfile.js.map +1 -0
  148. package/dist/utils/withStatusLogs.d.ts +2 -1
  149. package/dist/utils/withStatusLogs.js +11 -8
  150. package/dist/utils/withStatusLogs.js.map +1 -1
  151. package/llama/addon.cpp +102 -0
  152. package/llama/binariesGithubRelease.json +1 -1
  153. package/llama/gitRelease.bundle +0 -0
  154. package/llama/llama.cpp.info.json +4 -0
  155. package/llamaBins/linux-arm64/.buildMetadata.json +1 -0
  156. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  157. package/llamaBins/linux-armv7l/.buildMetadata.json +1 -0
  158. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  159. package/llamaBins/linux-x64/.buildMetadata.json +1 -0
  160. package/llamaBins/linux-x64/llama-addon.node +0 -0
  161. package/llamaBins/linux-x64-cuda/.buildMetadata.json +1 -0
  162. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  163. package/llamaBins/mac-arm64-metal/.buildMetadata.json +1 -0
  164. package/llamaBins/{mac-arm64 → mac-arm64-metal}/ggml-metal.metal +303 -4
  165. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  166. package/llamaBins/mac-x64/.buildMetadata.json +1 -0
  167. package/llamaBins/mac-x64/llama-addon.node +0 -0
  168. package/llamaBins/win-x64/.buildMetadata.json +1 -0
  169. package/llamaBins/win-x64/llama-addon.exp +0 -0
  170. package/llamaBins/win-x64/llama-addon.node +0 -0
  171. package/llamaBins/win-x64-cuda/.buildMetadata.json +1 -0
  172. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  173. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  174. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  175. package/package.json +7 -4
  176. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -18
  177. package/dist/llamaEvaluator/LlamaBins.js +0 -5
  178. package/dist/llamaEvaluator/LlamaBins.js.map +0 -1
  179. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js.map +0 -1
  180. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js.map +0 -1
  181. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +0 -1
  182. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js.map +0 -1
  183. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +0 -1
  184. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +0 -1
  185. package/dist/llamaEvaluator/LlamaContext/types.js.map +0 -1
  186. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  187. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  188. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  189. package/dist/llamaEvaluator/LlamaEmbeddingContext.js.map +0 -1
  190. package/dist/llamaEvaluator/LlamaGrammar.js.map +0 -1
  191. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +0 -1
  192. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +0 -1
  193. package/dist/llamaEvaluator/LlamaModel.js.map +0 -1
  194. package/dist/utils/binariesGithubRelease.js.map +0 -1
  195. package/dist/utils/clearLlamaBuild.d.ts +0 -1
  196. package/dist/utils/clearLlamaBuild.js +0 -12
  197. package/dist/utils/clearLlamaBuild.js.map +0 -1
  198. package/dist/utils/cloneLlamaCppRepo.d.ts +0 -2
  199. package/dist/utils/cloneLlamaCppRepo.js +0 -102
  200. package/dist/utils/cloneLlamaCppRepo.js.map +0 -1
  201. package/dist/utils/compileLLamaCpp.d.ts +0 -8
  202. package/dist/utils/compileLLamaCpp.js +0 -132
  203. package/dist/utils/compileLLamaCpp.js.map +0 -1
  204. package/dist/utils/getBin.js +0 -78
  205. package/dist/utils/getBin.js.map +0 -1
  206. package/dist/utils/getReleaseInfo.d.ts +0 -7
  207. package/dist/utils/getReleaseInfo.js +0 -30
  208. package/dist/utils/getReleaseInfo.js.map +0 -1
  209. package/dist/utils/usedBinFlag.d.ts +0 -6
  210. package/dist/utils/usedBinFlag.js +0 -15
  211. package/dist/utils/usedBinFlag.js.map +0 -1
  212. package/llama/usedBin.json +0 -3
  213. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  214. /package/dist/{utils → bindings/utils}/binariesGithubRelease.d.ts +0 -0
  215. /package/dist/{llamaEvaluator → evaluator}/LlamaChat/LlamaChat.d.ts +0 -0
  216. /package/dist/{llamaEvaluator → evaluator}/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +0 -0
  217. /package/dist/{llamaEvaluator → evaluator}/LlamaChatSession/LlamaChatSession.d.ts +0 -0
  218. /package/dist/{llamaEvaluator → evaluator}/LlamaChatSession/utils/defineChatSessionFunction.d.ts +0 -0
  219. /package/dist/{llamaEvaluator → evaluator}/LlamaChatSession/utils/defineChatSessionFunction.js +0 -0
  220. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.d.ts +0 -0
  221. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.d.ts +0 -0
  222. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.js +0 -0
  223. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.d.ts +0 -0
  224. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js +0 -0
  225. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.d.ts +0 -0
  226. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js +0 -0
  227. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -0
  228. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js +0 -0
  229. /package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ export class NoBinaryFoundError extends Error {
2
+ /** @internal */
3
+ constructor(message = "NoBinaryFoundError") {
4
+ super(message);
5
+ }
6
+ }
7
+ //# sourceMappingURL=NoBinaryFoundError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoBinaryFoundError.js","sourceRoot":"","sources":["../../../src/bindings/utils/NoBinaryFoundError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACzC,gBAAgB;IAChB,YAAmB,UAAkB,oBAAoB;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ"}
@@ -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;QACnD,MAAM,EAAC,QAAQ,EAAE,aAAa,EAAC,GAAG,MAAM,YAAY,EAAE,CAAC;QAEvD,IAAI,QAAQ,EAAE;YACV,IAAI,YAAY;gBACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,uFAAuF,CAAC,CAAC;;gBAE7H,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,gEAAgE,CAAC,CAAC;SAC7G;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KACpC;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): 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,151 @@
1
+ import path from "path";
2
+ import simpleGit from "simple-git";
3
+ import cliProgress from "cli-progress";
4
+ import chalk from "chalk";
5
+ import fs from "fs-extra";
6
+ import { defaultLlamaCppGitHubRepo, defaultLlamaCppRelease, 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
+ export async function cloneLlamaCppRepo(githubOwner, githubRepo, tag, useBundles = true, progressLogs = true) {
15
+ const gitBundleForTag = !useBundles ? null : await getGitBundlePathForRelease(githubOwner, githubRepo, tag);
16
+ const remoteGitUrl = `https://github.com/${githubOwner}/${githubRepo}.git`;
17
+ async function withGitCloneProgress(cloneName, callback) {
18
+ if (!progressLogs)
19
+ return await callback(simpleGit({}));
20
+ const progressBar = new cliProgress.Bar({
21
+ clearOnComplete: false,
22
+ hideCursor: true,
23
+ autopadding: true,
24
+ format: getConsoleLogPrefix() + `${chalk.bold("Clone {repo}")} ${chalk.yellow("{percentage}%")} ${chalk.cyan("{bar}")} ${chalk.grey("{eta_formatted}")}`
25
+ }, cliProgress.Presets.shades_classic);
26
+ progressBar.start(100, 0, {
27
+ speed: "",
28
+ repo: `${githubOwner}/${githubRepo} (${cloneName})`
29
+ });
30
+ const gitWithCloneProgress = simpleGit({
31
+ progress({ progress, total, processed }) {
32
+ const totalProgress = (processed / 100) + (progress / total);
33
+ progressBar.update(Math.floor(totalProgress * 10000) / 100);
34
+ }
35
+ });
36
+ try {
37
+ const res = await callback(gitWithCloneProgress);
38
+ progressBar.update(100);
39
+ return res;
40
+ }
41
+ finally {
42
+ progressBar.stop();
43
+ }
44
+ }
45
+ await withLockfile({
46
+ resourcePath: llamaCppDirectory
47
+ }, async () => {
48
+ await fs.remove(llamaCppDirectory);
49
+ await fs.remove(llamaCppDirectoryInfoFilePath);
50
+ if (gitBundleForTag != null) {
51
+ try {
52
+ await withGitCloneProgress("local bundle", async (gitWithCloneProgress) => {
53
+ await gitWithCloneProgress.clone(gitBundleForTag, llamaCppDirectory, {
54
+ "--quiet": null
55
+ });
56
+ await simpleGit(llamaCppDirectory).removeRemote("origin");
57
+ });
58
+ return;
59
+ }
60
+ catch (err) {
61
+ await fs.remove(llamaCppDirectory);
62
+ await fs.remove(llamaCppDirectoryInfoFilePath);
63
+ if (progressLogs)
64
+ console.error(getConsoleLogPrefix() + "Failed to clone git bundle, cloning from GitHub instead", err);
65
+ printCloneErrorHelp(String(err));
66
+ }
67
+ }
68
+ try {
69
+ await withGitCloneProgress("GitHub", async (gitWithCloneProgress) => {
70
+ await gitWithCloneProgress.clone(remoteGitUrl, llamaCppDirectory, {
71
+ "--depth": 1,
72
+ "--branch": tag,
73
+ "--quiet": null
74
+ });
75
+ });
76
+ }
77
+ catch (err) {
78
+ printCloneErrorHelp(String(err));
79
+ throw err;
80
+ }
81
+ try {
82
+ const clonedLlamaCppRepoTagJson = {
83
+ tag,
84
+ llamaCppGithubRepo: githubOwner + "/" + githubRepo
85
+ };
86
+ await fs.writeJson(llamaCppDirectoryInfoFilePath, clonedLlamaCppRepoTagJson, {
87
+ spaces: 4
88
+ });
89
+ }
90
+ catch (err) {
91
+ console.error(getConsoleLogPrefix() + "Failed to write llama.cpp tag file", err);
92
+ throw err;
93
+ }
94
+ });
95
+ }
96
+ function printCloneErrorHelp(error) {
97
+ // This error happens with some docker images where the current user is different
98
+ // from the owner of the files due to mounting a volume.
99
+ // In such cases, print a helpful message to help the user resolve the issue.
100
+ if (error.toLowerCase().includes("detected dubious ownership in repository"))
101
+ console.info("\n" +
102
+ getConsoleLogPrefix(true) + chalk.yellow("To fix this issue, try running this command to fix it for the current module directory:") + "\n" +
103
+ 'git config --global --add safe.directory "' + llamaCppDirectory + '"\n\n' +
104
+ chalk.yellow("Or run this command to fix it everywhere:") + "\n" +
105
+ 'git config --global --add safe.directory "*"');
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
+ //# 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,12 @@
1
+ import { BuildMetadataFile, BuildOptions } from "../types.js";
2
+ export declare function compileLlamaCpp(buildOptions: BuildOptions, { nodeTarget, updateLastBuildInfo: updateLastBuildInfoArg, includeBuildOptionsInBinaryFolderName, ensureLlamaCppRepoIsCloned: ensureLlamaCppRepoIsClonedArg, downloadCmakeIfNeeded: downloadCmakeIfNeededArg }: {
3
+ nodeTarget?: string;
4
+ updateLastBuildInfo?: boolean;
5
+ includeBuildOptionsInBinaryFolderName?: boolean;
6
+ ensureLlamaCppRepoIsCloned?: boolean;
7
+ downloadCmakeIfNeeded?: boolean;
8
+ }): Promise<void>;
9
+ export declare function getLocalBuildBinaryPath(folderName: string): Promise<string | null>;
10
+ export declare function getLocalBuildBinaryBuildMetadata(folderName: string): Promise<BuildMetadataFile>;
11
+ export declare function getPrebuiltBinaryPath(folderName: string): Promise<string | null>;
12
+ export declare function getPrebuiltBinaryBuildMetadata(folderName: string): Promise<BuildMetadataFile>;
@@ -0,0 +1,157 @@
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 { buildMetadataFileName, documentationPageUrls, llamaCppDirectory, llamaDirectory, llamaLocalBuildBinsDirectory, llamaPrebuiltBinsDirectory, llamaToolchainsDirectory } from "../../config.js";
7
+ import { convertBuildOptionsToBuildOptionsJSON } from "../types.js";
8
+ import { spawnCommand } from "../../utils/spawnCommand.js";
9
+ import { downloadCmakeIfNeeded, fixXpackPermissions, getCmakePath, hasBuiltinCmake } from "../../utils/cmake.js";
10
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
11
+ import { withLockfile } from "../../utils/withLockfile.js";
12
+ import { ensureLlamaCppRepoIsCloned, isLlamaCppRepoCloned } from "./cloneLlamaCppRepo.js";
13
+ import { getBuildFolderNameForBuildOptions } from "./getBuildFolderNameForBuildOptions.js";
14
+ import { setLastBuildInfo } from "./lastBuildInfo.js";
15
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
+ export async function compileLlamaCpp(buildOptions, { nodeTarget = process.version, updateLastBuildInfo: updateLastBuildInfoArg = true, includeBuildOptionsInBinaryFolderName = true, ensureLlamaCppRepoIsCloned: ensureLlamaCppRepoIsClonedArg = false, downloadCmakeIfNeeded: downloadCmakeIfNeededArg = false }) {
17
+ const buildFolderName = await getBuildFolderNameForBuildOptions(buildOptions);
18
+ const finalBuildFolderName = includeBuildOptionsInBinaryFolderName
19
+ ? buildFolderName.withCustomCmakeOptions
20
+ : buildFolderName.withoutCustomCmakeOptions;
21
+ const outDirectory = path.join(llamaLocalBuildBinsDirectory, finalBuildFolderName);
22
+ await fs.mkdirp(llamaLocalBuildBinsDirectory);
23
+ await withLockfile({
24
+ resourcePath: outDirectory
25
+ }, async () => {
26
+ try {
27
+ if (ensureLlamaCppRepoIsClonedArg)
28
+ await ensureLlamaCppRepoIsCloned({ progressLogs: buildOptions.progressLogs });
29
+ else if (!(await isLlamaCppRepoCloned()))
30
+ throw new Error(`"${llamaCppDirectory}" directory does not exist`);
31
+ if (downloadCmakeIfNeededArg)
32
+ await downloadCmakeIfNeeded(buildOptions.progressLogs);
33
+ const cmakePathArgs = await getCmakePathArgs();
34
+ const toolchainFile = await getToolchainFileForArch(buildOptions.arch);
35
+ const runtimeVersion = nodeTarget.startsWith("v") ? nodeTarget.slice("v".length) : nodeTarget;
36
+ const cmakeCustomOptions = new Map(buildOptions.customCmakeOptions);
37
+ if (buildOptions.computeLayers.metal && process.platform === "darwin" && !cmakeCustomOptions.has("LLAMA_METAL"))
38
+ cmakeCustomOptions.set("LLAMA_METAL", "1");
39
+ else if (!cmakeCustomOptions.has("LLAMA_METAL"))
40
+ cmakeCustomOptions.set("LLAMA_METAL", "OFF");
41
+ if (buildOptions.computeLayers.cuda && !cmakeCustomOptions.has("LLAMA_CUBLAS"))
42
+ cmakeCustomOptions.set("LLAMA_CUBLAS", "1");
43
+ if (toolchainFile != null && !cmakeCustomOptions.has("CMAKE_TOOLCHAIN_FILE"))
44
+ cmakeCustomOptions.set("CMAKE_TOOLCHAIN_FILE", toolchainFile);
45
+ await fs.remove(outDirectory);
46
+ await spawnCommand("npm", [
47
+ "run", "-s", "cmake-js-llama", "--", "clean",
48
+ "--log-level", "warn",
49
+ "--out", path.relative(llamaDirectory, outDirectory),
50
+ ...cmakePathArgs
51
+ ], __dirname, process.env, buildOptions.progressLogs);
52
+ await spawnCommand("npm", [
53
+ "run", "-s", "cmake-js-llama", "--", "compile",
54
+ "--log-level", "warn",
55
+ "--config", "Release",
56
+ "--arch=" + buildOptions.arch,
57
+ "--out", path.relative(llamaDirectory, outDirectory),
58
+ "--runtime-version=" + runtimeVersion,
59
+ ...cmakePathArgs,
60
+ ...([...cmakeCustomOptions].map(([key, value]) => "--CD" + key + "=" + value))
61
+ ], __dirname, process.env, buildOptions.progressLogs);
62
+ const binFilesDirPaths = [
63
+ path.join(outDirectory, "bin"),
64
+ path.join(outDirectory, "llama.cpp", "bin")
65
+ ];
66
+ const compiledResultDirPath = path.join(outDirectory, "Release");
67
+ if (!await fs.pathExists(compiledResultDirPath))
68
+ throw new Error("Could not find Release directory");
69
+ for (const binFilesDirPath of binFilesDirPaths) {
70
+ if (await fs.pathExists(binFilesDirPath)) {
71
+ const files = await fs.readdir(binFilesDirPath);
72
+ await Promise.all(files.map((fileName) => (fs.copy(path.join(binFilesDirPath, fileName), path.join(compiledResultDirPath, fileName), {
73
+ overwrite: false
74
+ }))));
75
+ }
76
+ }
77
+ await fs.writeFile(path.join(compiledResultDirPath, buildMetadataFileName), JSON.stringify({
78
+ buildOptions: convertBuildOptionsToBuildOptionsJSON(buildOptions)
79
+ }), "utf8");
80
+ await fs.writeFile(path.join(outDirectory, "buildDone.status"), "", "utf8");
81
+ if (updateLastBuildInfoArg) {
82
+ await setLastBuildInfo({
83
+ folderName: finalBuildFolderName
84
+ });
85
+ }
86
+ }
87
+ catch (err) {
88
+ if (buildOptions.computeLayers.cuda)
89
+ console.info("\n" +
90
+ getConsoleLogPrefix(true) +
91
+ chalk.yellow("To resolve errors related to CUDA compilation, see the CUDA guide: ") +
92
+ documentationPageUrls.CUDA);
93
+ throw err;
94
+ }
95
+ finally {
96
+ await fixXpackPermissions();
97
+ }
98
+ });
99
+ }
100
+ export async function getLocalBuildBinaryPath(folderName) {
101
+ const binaryPath = path.join(llamaLocalBuildBinsDirectory, folderName, "Release", "llama-addon.node");
102
+ const buildMetadataFilePath = path.join(llamaLocalBuildBinsDirectory, folderName, "Release", buildMetadataFileName);
103
+ const buildDoneStatusPath = path.join(llamaLocalBuildBinsDirectory, folderName, "buildDone.status");
104
+ const [binaryExists, buildMetadataExists, buildDoneStatusExists] = await Promise.all([
105
+ fs.pathExists(binaryPath),
106
+ fs.pathExists(buildMetadataFilePath),
107
+ fs.pathExists(buildDoneStatusPath)
108
+ ]);
109
+ if (binaryExists && buildMetadataExists && buildDoneStatusExists)
110
+ return binaryPath;
111
+ return null;
112
+ }
113
+ export async function getLocalBuildBinaryBuildMetadata(folderName) {
114
+ const buildMetadataFilePath = path.join(llamaLocalBuildBinsDirectory, folderName, "Release", buildMetadataFileName);
115
+ if (!(await fs.pathExists(buildMetadataFilePath)))
116
+ throw new Error(`Could not find build metadata file for local build "${folderName}"`);
117
+ const buildMetadata = await fs.readJson(buildMetadataFilePath);
118
+ return buildMetadata;
119
+ }
120
+ export async function getPrebuiltBinaryPath(folderName) {
121
+ const binaryPath = path.join(llamaPrebuiltBinsDirectory, folderName, "llama-addon.node");
122
+ const buildMetadataFilePath = path.join(llamaPrebuiltBinsDirectory, folderName, buildMetadataFileName);
123
+ const [binaryExists, buildMetadataExists] = await Promise.all([
124
+ fs.pathExists(binaryPath),
125
+ fs.pathExists(buildMetadataFilePath)
126
+ ]);
127
+ if (binaryExists && buildMetadataExists)
128
+ return binaryPath;
129
+ return null;
130
+ }
131
+ export async function getPrebuiltBinaryBuildMetadata(folderName) {
132
+ const buildMetadataFilePath = path.join(llamaPrebuiltBinsDirectory, folderName, buildMetadataFileName);
133
+ if (!(await fs.pathExists(buildMetadataFilePath)))
134
+ throw new Error(`Could not find build metadata file for prebuilt build "${folderName}"`);
135
+ const buildMetadata = await fs.readJson(buildMetadataFilePath);
136
+ return buildMetadata;
137
+ }
138
+ async function getCmakePathArgs() {
139
+ if (await hasBuiltinCmake())
140
+ return [];
141
+ const cmakePath = await getCmakePath();
142
+ if (cmakePath == null)
143
+ return [];
144
+ return ["--cmake-path", cmakePath];
145
+ }
146
+ async function getToolchainFileForArch(targetArch) {
147
+ if (process.arch === targetArch)
148
+ return null;
149
+ const platform = process.platform;
150
+ const hostArch = process.arch;
151
+ const toolchainFilename = `${platform}.host-${hostArch}.target-${targetArch}.cmake`;
152
+ const filePath = path.join(llamaToolchainsDirectory, toolchainFilename);
153
+ if (await fs.pathExists(filePath))
154
+ return filePath;
155
+ return null;
156
+ }
157
+ //# sourceMappingURL=compileLLamaCpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../../src/bindings/utils/compileLLamaCpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { BuildOptions } from "../types.js";
2
+ export declare function getBuildFolderNameForBuildOptions(buildOptions: BuildOptions): Promise<{
3
+ withoutCustomCmakeOptions: string;
4
+ withCustomCmakeOptions: string;
5
+ }>;
@@ -0,0 +1,85 @@
1
+ import { hashString } from "../../utils/hashString.js";
2
+ import { builtinLlamaCppGitHubRepo, builtinLlamaCppRelease } from "../../config.js";
3
+ export async function getBuildFolderNameForBuildOptions(buildOptions) {
4
+ const nameParts = [buildOptions.platform, buildOptions.arch];
5
+ if (buildOptions.platform === "mac" && buildOptions.computeLayers.metal)
6
+ nameParts.push("metal");
7
+ else if (buildOptions.computeLayers.cuda)
8
+ nameParts.push("cuda");
9
+ if (buildOptions.llamaCpp.repo !== builtinLlamaCppGitHubRepo || buildOptions.llamaCpp.release !== builtinLlamaCppRelease)
10
+ nameParts.push("release-" + await getFolderNamePartForRelease(buildOptions.llamaCpp.repo, buildOptions.llamaCpp.release));
11
+ if (buildOptions.customCmakeOptions.size === 0) {
12
+ const name = nameParts.join("-");
13
+ return {
14
+ withoutCustomCmakeOptions: name,
15
+ withCustomCmakeOptions: name
16
+ };
17
+ }
18
+ const cmakeOptionKeys = [...buildOptions.customCmakeOptions.keys()];
19
+ cmakeOptionKeys.sort();
20
+ const cmakeOptionStringsArray = [];
21
+ for (const key of cmakeOptionKeys) {
22
+ if (key === "")
23
+ continue;
24
+ cmakeOptionStringsArray.push(`${encodeURIComponent(key)}=${encodeURIComponent(buildOptions.customCmakeOptions.get(key))}`);
25
+ }
26
+ const nameWithoutCustomCmakeOptions = nameParts.join("-");
27
+ if (cmakeOptionStringsArray.length === 0) {
28
+ return {
29
+ withoutCustomCmakeOptions: nameWithoutCustomCmakeOptions,
30
+ withCustomCmakeOptions: nameWithoutCustomCmakeOptions
31
+ };
32
+ }
33
+ const cmakeOptionsHash = await hashString(cmakeOptionStringsArray.join(";"));
34
+ nameParts.push(cmakeOptionsHash);
35
+ const nameWithCustomCmakeOptions = nameParts.join("-");
36
+ return {
37
+ withoutCustomCmakeOptions: nameWithoutCustomCmakeOptions,
38
+ withCustomCmakeOptions: nameWithCustomCmakeOptions
39
+ };
40
+ }
41
+ async function getFolderNamePartForRelease(repo, release) {
42
+ const resParts = [];
43
+ let shouldHash = false;
44
+ if (repo !== builtinLlamaCppGitHubRepo) {
45
+ const [owner, name] = repo.split("/");
46
+ if (containsUnsafeCharacters(owner) || containsUnsafeCharacters(name)) {
47
+ shouldHash = true;
48
+ resParts.push(encodeURIComponent(owner) + " " + encodeURIComponent(name));
49
+ }
50
+ else
51
+ resParts.push(owner + " " + name);
52
+ }
53
+ if (containsUnsafeCharacters(release)) {
54
+ shouldHash = true;
55
+ resParts.push(encodeURIComponent(release));
56
+ }
57
+ else
58
+ resParts.push(release);
59
+ const res = resParts.join(" ");
60
+ if (shouldHash)
61
+ return await hashString(res);
62
+ return res;
63
+ }
64
+ function containsUnsafeCharacters(str) {
65
+ for (const char of str) {
66
+ if (!isCharacterSafe(char))
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ function isCharacterSafe(char) {
72
+ const unicodeNumber = char.codePointAt(0);
73
+ if (unicodeNumber == null)
74
+ return false;
75
+ if (unicodeNumber >= "a".codePointAt(0) && unicodeNumber <= "z".codePointAt(0))
76
+ return true;
77
+ else if (unicodeNumber >= "A".codePointAt(0) && unicodeNumber <= "Z".codePointAt(0))
78
+ return true;
79
+ else if (unicodeNumber >= "0".codePointAt(0) && unicodeNumber <= "9".codePointAt(0))
80
+ return true;
81
+ else if (char === "-" || char === "_" || char === ".")
82
+ return true;
83
+ return false;
84
+ }
85
+ //# sourceMappingURL=getBuildFolderNameForBuildOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBuildFolderNameForBuildOptions.js","sourceRoot":"","sources":["../../../src/bindings/utils/getBuildFolderNameForBuildOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAC,yBAAyB,EAAE,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,YAA0B;IAC9E,MAAM,SAAS,GAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAEvE,IAAI,YAAY,CAAC,QAAQ,KAAK,KAAK,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK;QACnE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACvB,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI;QACpC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE3B,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,KAAK,yBAAyB,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,KAAK,sBAAsB;QACpH,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,2BAA2B,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9H,IAAI,YAAY,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,EAAE;QAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO;YACH,yBAAyB,EAAE,IAAI;YAC/B,sBAAsB,EAAE,IAAI;SAC/B,CAAC;KACL;IAED,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,eAAe,CAAC,IAAI,EAAE,CAAC;IAEvB,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE;QAC/B,IAAI,GAAG,KAAK,EAAE;YACV,SAAS;QAEb,uBAAuB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC;KAC/H;IAED,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,OAAO;YACH,yBAAyB,EAAE,6BAA6B;YACxD,sBAAsB,EAAE,6BAA6B;SACxD,CAAC;KACL;IAED,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7E,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,0BAA0B,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvD,OAAO;QACH,yBAAyB,EAAE,6BAA6B;QACxD,sBAAsB,EAAE,0BAA0B;KACrD,CAAC;AACN,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,IAAY,EAAE,OAAe;IACpE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,IAAI,KAAK,yBAAyB,EAAE;QACpC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,wBAAwB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE;YACnE,UAAU,GAAG,IAAI,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7E;;YACG,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;KACzC;IAED,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACnC,UAAU,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9C;;QACG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,UAAU;QACV,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IACzC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;QACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACtB,OAAO,IAAI,CAAC;KACnB;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,eAAe,CAAC,IAAY;IACjC,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE1C,IAAI,aAAa,IAAI,IAAI;QACrB,OAAO,KAAK,CAAC;IAEjB,IAAI,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE;QAC5E,OAAO,IAAI,CAAC;SACX,IAAI,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE;QACjF,OAAO,IAAI,CAAC;SACX,IAAI,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE;QACjF,OAAO,IAAI,CAAC;SACX,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;QACjD,OAAO,IAAI,CAAC;IAEhB,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getCanUsePrebuiltBinaries(): Promise<boolean>;
@@ -0,0 +1,8 @@
1
+ import { builtinLlamaCppGitHubRepo, builtinLlamaCppRelease } from "../../config.js";
2
+ import { getClonedLlamaCppRepoReleaseInfo } from "./cloneLlamaCppRepo.js";
3
+ export async function getCanUsePrebuiltBinaries() {
4
+ const clonedLlamaCppRepoReleaseInfo = await getClonedLlamaCppRepoReleaseInfo();
5
+ return clonedLlamaCppRepoReleaseInfo == null || (clonedLlamaCppRepoReleaseInfo.tag === builtinLlamaCppRelease &&
6
+ clonedLlamaCppRepoReleaseInfo.llamaCppGithubRepo === builtinLlamaCppGitHubRepo);
7
+ }
8
+ //# sourceMappingURL=getCanUsePrebuiltBinaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCanUsePrebuiltBinaries.js","sourceRoot":"","sources":["../../../src/bindings/utils/getCanUsePrebuiltBinaries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAC,gCAAgC,EAAC,MAAM,wBAAwB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC3C,MAAM,6BAA6B,GAAG,MAAM,gCAAgC,EAAE,CAAC;IAE/E,OAAO,6BAA6B,IAAI,IAAI,IAAI,CAC5C,6BAA6B,CAAC,GAAG,KAAK,sBAAsB;QAC5D,6BAA6B,CAAC,kBAAkB,KAAK,yBAAyB,CACjF,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { LlamaOptions } from "../getLlama.js";
2
+ export declare function getExampleUsageCodeOfGetLlama(getLlamaOptions: LlamaOptions | "lastBuild" | undefined, prefix?: string, wrapWithSeparators?: boolean): string;
@@ -0,0 +1,21 @@
1
+ import chalk from "chalk";
2
+ import stripAnsi from "strip-ansi";
3
+ import { prettyPrintObject } from "../../utils/prettyPrintObject.js";
4
+ import { getLlamaFunctionName } from "../getLlama.js";
5
+ export function getExampleUsageCodeOfGetLlama(getLlamaOptions, prefix = "", wrapWithSeparators = true) {
6
+ let res = prefix + [
7
+ chalk.magenta.italic("import "), chalk.whiteBright("{"), chalk.yellow(getLlamaFunctionName), chalk.whiteBright("} "),
8
+ chalk.magenta.italic("from "), chalk.green("\"node-llama-cpp\""), chalk.whiteBright(";"),
9
+ "\n\n",
10
+ chalk.magenta.italic("const "), chalk.whiteBright("llama "), chalk.whiteBright("= "), chalk.magenta.italic("await "), chalk.yellow(getLlamaFunctionName), chalk.whiteBright("("),
11
+ getLlamaOptions === undefined ? "" : prettyPrintObject(getLlamaOptions),
12
+ chalk.whiteBright(")"), chalk.whiteBright(";")
13
+ ].join(prefix);
14
+ if (wrapWithSeparators) {
15
+ const longestLineLength = res.split("\n")
16
+ .reduce((max, line) => Math.max(max, stripAnsi(line).length), 0);
17
+ res = chalk.blue("-".repeat(longestLineLength)) + "\n" + res + "\n" + chalk.blue("-".repeat(longestLineLength));
18
+ }
19
+ return res;
20
+ }
21
+ //# sourceMappingURL=getExampleUsageCodeOfGetLlama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExampleUsageCodeOfGetLlama.js","sourceRoot":"","sources":["../../../src/bindings/utils/getExampleUsageCodeOfGetLlama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAe,MAAM,gBAAgB,CAAC;AAElE,MAAM,UAAU,6BAA6B,CAAC,eAAuD,EAAE,SAAiB,EAAE,EAAE,qBAA8B,IAAI;IAC1J,IAAI,GAAG,GAAG,MAAM,GAAG;QACf,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACpH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;QACxF,MAAM;QACN,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;QAChL,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACvE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;KACjD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,IAAI,kBAAkB,EAAE;QACpB,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;aACpC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACnH;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getPlatform(): "aix" | "freebsd" | "haiku" | "linux" | "openbsd" | "sunos" | "netbsd" | "win" | "mac";
2
+ export type BinaryPlatform = ReturnType<typeof getPlatform>;
@@ -0,0 +1,15 @@
1
+ import process from "process";
2
+ export function getPlatform() {
3
+ switch (process.platform) {
4
+ case "win32":
5
+ case "cygwin":
6
+ return "win";
7
+ case "linux":
8
+ case "android":
9
+ return "linux";
10
+ case "darwin":
11
+ return "mac";
12
+ }
13
+ return process.platform;
14
+ }
15
+ //# sourceMappingURL=getPlatform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPlatform.js","sourceRoot":"","sources":["../../../src/bindings/utils/getPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,WAAW;IACvB,QAAQ,OAAO,CAAC,QAAQ,EAAE;QACtB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC;QAEjB,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACV,OAAO,OAAO,CAAC;QAEnB,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC;KACpB;IAED,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,6 @@
1
+ type LastBuildInfo = {
2
+ folderName: string;
3
+ };
4
+ export declare function getLastBuildInfo(): Promise<LastBuildInfo | null>;
5
+ export declare function setLastBuildInfo(buildInfo: LastBuildInfo): Promise<void>;
6
+ export {};