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
@@ -1,18 +1,19 @@
1
1
  import fs from "fs-extra";
2
2
  import { llamaBinsGrammarsDirectory, llamaCppGrammarsDirectory } from "../config.js";
3
- import { getUsedBinFlag } from "./usedBinFlag.js";
4
- export async function getGrammarsFolder() {
5
- const usedBinFlag = await getUsedBinFlag();
6
- if (usedBinFlag === "localBuildFromSource") {
7
- if (await fs.pathExists(llamaCppGrammarsDirectory))
3
+ import { isLlamaCppRepoCloned } from "../bindings/utils/cloneLlamaCppRepo.js";
4
+ export async function getGrammarsFolder(buildType) {
5
+ if (buildType === "localBuild") {
6
+ if (await isLlamaCppRepoCloned(true) && await fs.pathExists(llamaCppGrammarsDirectory))
8
7
  return llamaCppGrammarsDirectory;
9
8
  }
10
- else if (usedBinFlag === "prebuiltBinaries") {
9
+ else if (buildType === "prebuilt") {
11
10
  if (await fs.pathExists(llamaBinsGrammarsDirectory))
12
11
  return llamaBinsGrammarsDirectory;
13
- else if (await fs.pathExists(llamaCppGrammarsDirectory))
12
+ else if (await isLlamaCppRepoCloned(false) && await fs.pathExists(llamaCppGrammarsDirectory))
14
13
  return llamaCppGrammarsDirectory;
15
14
  }
15
+ else
16
+ void (buildType);
16
17
  throw new Error("Grammars folder not found");
17
18
  }
18
19
  //# sourceMappingURL=getGrammarsFolder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getGrammarsFolder.js","sourceRoot":"","sources":["../../src/utils/getGrammarsFolder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,cAAc,CAAC;AACnF,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAE3C,IAAI,WAAW,KAAK,sBAAsB,EAAE;QACxC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC9C,OAAO,yBAAyB,CAAC;KACxC;SAAM,IAAI,WAAW,KAAK,kBAAkB,EAAE;QAC3C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC/C,OAAO,0BAA0B,CAAC;aACjC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC;YACnD,OAAO,yBAAyB,CAAC;KACxC;IAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"getGrammarsFolder.js","sourceRoot":"","sources":["../../src/utils/getGrammarsFolder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAA6B;IACjE,IAAI,SAAS,KAAK,YAAY,EAAE;QAC5B,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAClF,OAAO,yBAAyB,CAAC;KACxC;SAAM,IAAI,SAAS,KAAK,UAAU,EAAE;QACjC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC/C,OAAO,0BAA0B,CAAC;aACjC,IAAI,MAAM,oBAAoB,CAAC,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC;YACxF,OAAO,yBAAyB,CAAC;KACxC;;QACG,KAAK,CAAC,SAAyB,CAAC,CAAC;IAErC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getModuleVersion(): Promise<string>;
@@ -0,0 +1,13 @@
1
+ import path from "path";
2
+ import { fileURLToPath } from "url";
3
+ import fs from "fs-extra";
4
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
+ let moduleVersion = null;
6
+ export async function getModuleVersion() {
7
+ if (moduleVersion != null)
8
+ return moduleVersion;
9
+ const packageJson = await fs.readJson(path.join(__dirname, "..", "..", "package.json"));
10
+ moduleVersion = packageJson.version;
11
+ return moduleVersion;
12
+ }
13
+ //# sourceMappingURL=getModuleVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getModuleVersion.js","sourceRoot":"","sources":["../../src/utils/getModuleVersion.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,IAAI,aAAa,GAAkB,IAAI,CAAC;AACxC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAClC,IAAI,aAAa,IAAI,IAAI;QACrB,OAAO,aAAa,CAAC;IAEzB,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAExF,aAAa,GAAG,WAAW,CAAC,OAAiB,CAAC;IAE9C,OAAO,aAAa,CAAC;AACzB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import fs from "fs-extra";
2
2
  import simpleGit from "simple-git";
3
- import { currentReleaseGitBundlePath, defaultLlamaCppGitHubRepo, llamaCppDirectory } from "../config.js";
4
- import { getBinariesGithubRelease } from "./binariesGithubRelease.js";
3
+ import { currentReleaseGitBundlePath, builtinLlamaCppGitHubRepo, llamaCppDirectory } from "../config.js";
4
+ import { getBinariesGithubRelease } from "../bindings/utils/binariesGithubRelease.js";
5
+ import { isGithubReleaseNeedsResolving } from "./resolveGithubRelease.js";
5
6
  export async function unshallowAndSquashCurrentRepoAndSaveItAsReleaseBundle() {
6
7
  if (!(await fs.pathExists(llamaCppDirectory)))
7
8
  throw new Error("llama.cpp directory does not exist");
@@ -39,11 +40,11 @@ export async function unshallowAndSquashCurrentRepoAndSaveItAsReleaseBundle() {
39
40
  await simpleGit(llamaCppDirectory).raw(["bundle", "create", currentReleaseGitBundlePath, "HEAD"]);
40
41
  }
41
42
  export async function getGitBundlePathForRelease(githubOwner, githubRepo, release) {
42
- const [defaultGithubOwner, defaultGithubRepo] = defaultLlamaCppGitHubRepo.split("/");
43
- if (githubOwner !== defaultGithubOwner || githubRepo !== defaultGithubRepo)
43
+ const [builtinGithubOwner, builtinGithubRepo] = builtinLlamaCppGitHubRepo.split("/");
44
+ if (githubOwner !== builtinGithubOwner || githubRepo !== builtinGithubRepo)
44
45
  return null;
45
46
  const currentBundleRelease = await getBinariesGithubRelease();
46
- if (currentBundleRelease === "latest")
47
+ if (isGithubReleaseNeedsResolving(currentBundleRelease))
47
48
  return null;
48
49
  if (currentBundleRelease !== release)
49
50
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"gitReleaseBundles.js","sourceRoot":"","sources":["../../src/utils/gitReleaseBundles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAC,2BAA2B,EAAE,yBAAyB,EAAE,iBAAiB,EAAC,MAAM,cAAc,CAAC;AACvG,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,qDAAqD;IACvE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAE1D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC;QAChD,MAAM,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEjD,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC/E,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,uDAAuD,CAAC,CAAC;IAEpH,MAAM,aAAa,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEpD,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAkB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IACvE,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACpH,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1E,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;QACxB,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7D,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE;QAC/B,IAAI;YACA,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,GAAG,EAAE;YACV,wCAAwC;YACxC,sHAAsH;YACtH,sDAAsD;YACtD,oHAAoH;YACpH,mCAAmC;SACtC;KACJ;IAED,IAAI,aAAa,IAAI,IAAI;QACrB,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAE5D,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9E,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAAmB,EAAE,UAAkB,EAAE,OAAe;IACrG,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,IAAI,WAAW,KAAK,kBAAkB,IAAI,UAAU,KAAK,iBAAiB;QACtE,OAAO,IAAI,CAAC;IAEhB,MAAM,oBAAoB,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAE9D,IAAI,oBAAoB,KAAK,QAAQ;QACjC,OAAO,IAAI,CAAC;IAEhB,IAAI,oBAAoB,KAAK,OAAO;QAChC,OAAO,IAAI,CAAC;IAEhB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IAEhB,OAAO,2BAA2B,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,qBAAqB;IAChC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAErF,IAAI,MAAM,KAAK,MAAM;QACjB,OAAO,MAAM,CAAC;IAElB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvB,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"gitReleaseBundles.js","sourceRoot":"","sources":["../../src/utils/gitReleaseBundles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function hashString(text: string): Promise<string>;
@@ -0,0 +1,8 @@
1
+ import * as crypto from "node:crypto";
2
+ export async function hashString(text) {
3
+ const hashBuffer = await crypto.subtle.digest("SHA-1", Buffer.from(text));
4
+ return Array.from(new Uint8Array(hashBuffer))
5
+ .map(b => b.toString(36))
6
+ .join("");
7
+ }
8
+ //# sourceMappingURL=hashString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashString.js","sourceRoot":"","sources":["../../src/utils/hashString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACxB,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function isLockfileActive({ resourcePath, staleDuration }: {
2
+ resourcePath: string;
3
+ staleDuration?: number;
4
+ }): Promise<boolean>;
@@ -0,0 +1,12 @@
1
+ import lockfile from "proper-lockfile";
2
+ import { isLockActive } from "lifecycle-utils";
3
+ import { lockfileLockScope } from "./withLockfile.js";
4
+ export async function isLockfileActive({ resourcePath, staleDuration = 1000 * 10 }) {
5
+ if (isLockActive(lockfileLockScope, resourcePath))
6
+ return true;
7
+ const lockfileActive = await lockfile.check(resourcePath, { stale: staleDuration, realpath: false });
8
+ if (lockfileActive)
9
+ return true;
10
+ return isLockActive(lockfileLockScope, resourcePath);
11
+ }
12
+ //# sourceMappingURL=isLockfileActive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isLockfileActive.js","sourceRoot":"","sources":["../../src/utils/isLockfileActive.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACnC,YAAY,EAAE,aAAa,GAAG,IAAI,GAAG,EAAE,EAG1C;IACG,IAAI,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC;QAC7C,OAAO,IAAI,CAAC;IAEhB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;IACnG,IAAI,cAAc;QACd,OAAO,IAAI,CAAC;IAEhB,OAAO,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AACzD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AddonModelArchName, AddonModelFileTypeName, AddonModelTypeName, ModelTypeDescription } from "./getBin.js";
1
+ import type { AddonModelArchName, AddonModelFileTypeName, AddonModelTypeName, ModelTypeDescription } from "../bindings/AddonTypes.js";
2
2
  export declare function parseModelTypeDescription(modelTypeDescription: ModelTypeDescription): {
3
3
  arch: AddonModelArchName;
4
4
  type: AddonModelTypeName;
@@ -0,0 +1 @@
1
+ export declare function prettyPrintObject(obj: any, indent?: number): string;
@@ -0,0 +1,38 @@
1
+ import chalk from "chalk";
2
+ export function prettyPrintObject(obj, indent = 4) {
3
+ if (typeof obj === "string")
4
+ return chalk.green(JSON.stringify(obj, null, 4));
5
+ else if (typeof obj === "number")
6
+ return chalk.yellow(obj);
7
+ else if (typeof obj === "boolean")
8
+ return chalk.magenta.italic(obj);
9
+ else if (obj === null)
10
+ return chalk.magenta.italic("null");
11
+ else if (obj === undefined)
12
+ return chalk.magenta.italic("undefined");
13
+ else if (obj instanceof Array)
14
+ return [
15
+ chalk.whiteBright("["),
16
+ obj.map(prettyPrintObject)
17
+ .join(chalk.whiteBright(", ")),
18
+ chalk.whiteBright("]")
19
+ ].join("");
20
+ const rows = [];
21
+ for (const key of Object.keys(obj)) {
22
+ const value = obj[key];
23
+ rows.push([
24
+ " ".repeat(indent),
25
+ (JSON.stringify(key)
26
+ .slice(1, -1) === key)
27
+ ? chalk.red(key)
28
+ : chalk.green(JSON.stringify(key)),
29
+ chalk.whiteBright(": "),
30
+ prettyPrintObject(value, indent)
31
+ .replaceAll("\n", "\n" + " ".repeat(indent))
32
+ ].join(""));
33
+ }
34
+ if (rows.length === 0)
35
+ return chalk.whiteBright("{}");
36
+ return chalk.whiteBright("{\n") + rows.join(chalk.whiteBright(",\n")) + chalk.whiteBright("\n") + chalk.whiteBright("}");
37
+ }
38
+ //# sourceMappingURL=prettyPrintObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettyPrintObject.js","sourceRoot":"","sources":["../../src/utils/prettyPrintObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,iBAAiB,CAAC,GAAQ,EAAE,SAAiB,CAAC;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB,IAAI,OAAO,GAAG,KAAK,SAAS;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAChC,IAAI,GAAG,KAAK,IAAI;QACjB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACnC,IAAI,GAAG,KAAK,SAAS;QACtB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACxC,IAAI,GAAG,YAAY,KAAK;QACzB,OAAO;YACH,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;iBACrB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;SACzB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAuB,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAClB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;iBACf,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBACtB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAChB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACtC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;iBAC3B,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACnD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KACf;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC7H,CAAC"}
@@ -1 +1,2 @@
1
1
  export declare function removeNullFields<T extends object>(obj: T): T;
2
+ export declare function removeUndefinedFields<T extends object>(obj: T): T;
@@ -6,4 +6,12 @@ export function removeNullFields(obj) {
6
6
  }
7
7
  return newObj;
8
8
  }
9
+ export function removeUndefinedFields(obj) {
10
+ const newObj = Object.assign({}, obj);
11
+ for (const key in obj) {
12
+ if (newObj[key] === undefined)
13
+ delete newObj[key];
14
+ }
15
+ return newObj;
16
+ }
9
17
  //# sourceMappingURL=removeNullFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeNullFields.js","sourceRoot":"","sources":["../../src/utils/removeNullFields.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAmB,GAAM;IACrD,MAAM,MAAM,GAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACnB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"removeNullFields.js","sourceRoot":"","sources":["../../src/utils/removeNullFields.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAmB,GAAM;IACrD,MAAM,MAAM,GAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACnB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAmB,GAAM;IAC1D,MAAM,MAAM,GAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACnB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;YACzB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { ChatWrapper } from "../ChatWrapper.js";
2
2
  import { GeneralChatWrapper } from "../chatWrappers/GeneralChatWrapper.js";
3
- import { LlamaModel } from "../llamaEvaluator/LlamaModel.js";
3
+ import { LlamaModel } from "../evaluator/LlamaModel.js";
4
4
  export declare function resolveChatWrapper(chatWrapper: "auto" | ChatWrapper, model: LlamaModel): ChatWrapper | import("../index.js").LlamaChatWrapper | GeneralChatWrapper | import("../index.js").FalconChatWrapper;
@@ -0,0 +1,2 @@
1
+ export declare function resolveGithubRelease(githubOwner: string, githubRepo: string, release: string): Promise<string>;
2
+ export declare function isGithubReleaseNeedsResolving(release: string): boolean;
@@ -0,0 +1,36 @@
1
+ import { Octokit } from "octokit";
2
+ import { getConsoleLogPrefix } from "./getConsoleLogPrefix.js";
3
+ export async function resolveGithubRelease(githubOwner, githubRepo, release) {
4
+ const octokit = new Octokit();
5
+ const repo = githubOwner + "/" + githubRepo;
6
+ let githubRelease = null;
7
+ try {
8
+ if (release === "latest") {
9
+ githubRelease = await octokit.rest.repos.getLatestRelease({
10
+ owner: githubOwner,
11
+ repo: githubRepo
12
+ });
13
+ }
14
+ else {
15
+ githubRelease = await octokit.rest.repos.getReleaseByTag({
16
+ owner: githubOwner,
17
+ repo: githubRepo,
18
+ tag: release
19
+ });
20
+ }
21
+ }
22
+ catch (err) {
23
+ console.error(getConsoleLogPrefix() + "Failed to fetch llama.cpp release info", err);
24
+ }
25
+ if (githubRelease == null) {
26
+ throw new Error(`Failed to find release "${release}" of "${repo}"`);
27
+ }
28
+ if (githubRelease.data.tag_name == null) {
29
+ throw new Error(`Failed to find tag of release "${release}" of "${repo}"`);
30
+ }
31
+ return githubRelease.data.tag_name;
32
+ }
33
+ export function isGithubReleaseNeedsResolving(release) {
34
+ return release === "latest";
35
+ }
36
+ //# sourceMappingURL=resolveGithubRelease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGithubRelease.js","sourceRoot":"","sources":["../../src/utils/resolveGithubRelease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAChC,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,UAAkB,EAAE,OAAe;IAC/F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,UAAU,CAAC;IAK5C,IAAI,aAAa,GAA6B,IAAI,CAAC;IAEnD,IAAI;QACA,IAAI,OAAO,KAAK,QAAQ,EAAE;YACtB,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACtD,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,UAAU;aACnB,CAAC,CAAC;SACN;aAAM;YACH,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACrD,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,OAAO;aACf,CAAC,CAAC;SACN;KACJ;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,wCAAwC,EAAE,GAAG,CAAC,CAAC;KACxF;IAED,IAAI,aAAa,IAAI,IAAI,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,SAAS,IAAI,GAAG,CAAC,CAAC;KACvE;IAED,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,SAAS,IAAI,GAAG,CAAC,CAAC;KAC9E;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAe;IACzD,OAAO,OAAO,KAAK,QAAQ,CAAC;AAChC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  /// <reference types="node" />
2
- export declare function spawnCommand(command: string, args: string[], cwd: string, env?: NodeJS.ProcessEnv): Promise<void>;
2
+ export declare function spawnCommand(command: string, args: string[], cwd: string, env?: NodeJS.ProcessEnv, progressLogs?: boolean): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import spawn from "cross-spawn";
2
- export function spawnCommand(command, args, cwd, env = process.env) {
2
+ export function spawnCommand(command, args, cwd, env = process.env, progressLogs = true) {
3
3
  function getCommandString() {
4
4
  let res = command;
5
5
  for (const arg of args) {
@@ -14,7 +14,9 @@ export function spawnCommand(command, args, cwd, env = process.env) {
14
14
  }
15
15
  return new Promise((resolve, reject) => {
16
16
  const child = spawn(command, args, {
17
- stdio: "inherit",
17
+ stdio: progressLogs
18
+ ? "inherit"
19
+ : ["ignore", "ignore", process.stderr],
18
20
  cwd,
19
21
  env,
20
22
  detached: false,
@@ -1 +1 @@
1
- {"version":3,"file":"spawnCommand.js","sourceRoot":"","sources":["../../src/utils/spawnCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IACxF,SAAS,gBAAgB;QACrB,IAAI,GAAG,GAAG,OAAO,CAAC;QAElB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACnB,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aAC7C;iBAAM;gBACH,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;aACpB;SACJ;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YAC/B,KAAK,EAAE,SAAS;YAChB,GAAG;YACH,GAAG;YACH,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,IAAI,IAAI,CAAC;gBACT,OAAO,EAAE,CAAC;;gBAEV,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,gBAAgB,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACrB,IAAI,IAAI,IAAI,CAAC;gBACT,OAAO,EAAE,CAAC;;gBAEV,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,gBAAgB,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"spawnCommand.js","sourceRoot":"","sources":["../../src/utils/spawnCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,eAAwB,IAAI;IACtH,SAAS,gBAAgB;QACrB,IAAI,GAAG,GAAG,OAAO,CAAC;QAElB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACnB,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aAC7C;iBAAM;gBACH,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;aACpB;SACJ;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YAC/B,KAAK,EAAE,YAAY;gBACf,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;YAC1C,GAAG;YACH,GAAG;YACH,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,IAAI,IAAI,CAAC;gBACT,OAAO,EAAE,CAAC;;gBAEV,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,gBAAgB,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACrB,IAAI,IAAI,IAAI,CAAC;gBACT,OAAO,EAAE,CAAC;;gBAEV,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,gBAAgB,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Token, Tokenizer } from "../types.js";
2
+ import { LlamaText } from "./LlamaText.js";
3
+ export declare function tokenizeInput(input: Token[] | string | LlamaText, tokenizer: Tokenizer): Token[];
@@ -0,0 +1,9 @@
1
+ import { isLlamaText } from "./LlamaText.js";
2
+ export function tokenizeInput(input, tokenizer) {
3
+ if (typeof input === "string")
4
+ return tokenizer(input, false);
5
+ else if (isLlamaText(input))
6
+ return input.tokenize(tokenizer);
7
+ return input;
8
+ }
9
+ //# sourceMappingURL=tokenizeInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizeInput.js","sourceRoot":"","sources":["../../src/utils/tokenizeInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAY,MAAM,gBAAgB,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,KAAmC,EAAE,SAAoB;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9B,IAAI,WAAW,CAAC,KAAK,CAAC;QACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAErC,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function waitForLockfileRelease({ resourcePath, checkInterval, staleDuration }: {
2
+ resourcePath: string;
3
+ checkInterval?: number;
4
+ staleDuration?: number;
5
+ }): Promise<void>;
@@ -0,0 +1,20 @@
1
+ import lockfile from "proper-lockfile";
2
+ import { isLockActive, waitForLockRelease } from "lifecycle-utils";
3
+ import { lockfileLockScope } from "./withLockfile.js";
4
+ export async function waitForLockfileRelease({ resourcePath, checkInterval = 1000 * 5.5, staleDuration = 1000 * 10 }) {
5
+ // eslint-disable-next-line no-constant-condition
6
+ while (true) {
7
+ if (isLockActive(lockfileLockScope, resourcePath)) {
8
+ await waitForLockRelease(lockfileLockScope, resourcePath);
9
+ continue;
10
+ }
11
+ const lockfileActive = await lockfile.check(resourcePath, { stale: staleDuration, realpath: false });
12
+ const lockIsActive = isLockActive(lockfileLockScope, resourcePath);
13
+ if (lockIsActive)
14
+ continue;
15
+ if (!lockfileActive)
16
+ return;
17
+ await new Promise((resolve) => setTimeout(resolve, checkInterval));
18
+ }
19
+ }
20
+ //# sourceMappingURL=waitForLockfileRelease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waitForLockfileRelease.js","sourceRoot":"","sources":["../../src/utils/waitForLockfileRelease.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EACzC,YAAY,EAAE,aAAa,GAAG,IAAI,GAAG,GAAG,EAAE,aAAa,GAAG,IAAI,GAAG,EAAE,EAGtE;IACG,iDAAiD;IACjD,OAAO,IAAI,EAAE;QACT,IAAI,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAAE;YAC/C,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAC1D,SAAS;SACZ;QAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QACnG,MAAM,YAAY,GAAG,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAEnE,IAAI,YAAY;YACZ,SAAS;QAEb,IAAI,CAAC,cAAc;YACf,OAAO;QAEX,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;KACtE;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const lockfileLockScope: {};
2
+ export declare function withLockfile<const T>({ resourcePath, staleDuration, updateInterval, retries }: {
3
+ resourcePath: string;
4
+ staleDuration?: number;
5
+ updateInterval?: number;
6
+ retries?: number;
7
+ }, callback: () => T | Promise<T>): Promise<T>;
@@ -0,0 +1,44 @@
1
+ import lockfile from "proper-lockfile";
2
+ import { withLock } from "lifecycle-utils";
3
+ import { getConsoleLogPrefix } from "./getConsoleLogPrefix.js";
4
+ export const lockfileLockScope = {};
5
+ export async function withLockfile({ resourcePath, staleDuration = 1000 * 10, updateInterval = staleDuration / 2, retries = 2 }, callback) {
6
+ return await withLock(lockfileLockScope, resourcePath, async () => {
7
+ let releaseLock;
8
+ let res;
9
+ const lockPromise = lockfile.lock(resourcePath, {
10
+ stale: staleDuration,
11
+ update: updateInterval,
12
+ retries,
13
+ realpath: false
14
+ });
15
+ try {
16
+ releaseLock = await lockPromise;
17
+ }
18
+ catch (err) {
19
+ console.error(getConsoleLogPrefix() + `Failed to acquire lockfile for "${resourcePath}"`, err);
20
+ throw err;
21
+ }
22
+ try {
23
+ res = await callback();
24
+ }
25
+ catch (err) {
26
+ try {
27
+ await releaseLock();
28
+ }
29
+ catch (err) {
30
+ console.error(getConsoleLogPrefix() + `Failed to release lockfile for "${resourcePath}"`, err);
31
+ }
32
+ throw err;
33
+ }
34
+ try {
35
+ await releaseLock();
36
+ }
37
+ catch (err) {
38
+ console.error(getConsoleLogPrefix() + `Failed to release lockfile for "${resourcePath}"`, err);
39
+ throw err;
40
+ }
41
+ return res;
42
+ });
43
+ }
44
+ //# sourceMappingURL=withLockfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withLockfile.js","sourceRoot":"","sources":["../../src/utils/withLockfile.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,EACI,YAAY,EAAE,aAAa,GAAG,IAAI,GAAG,EAAE,EAAE,cAAc,GAAG,aAAa,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAG3F,EACD,QAA8B;IAE9B,OAAO,MAAM,QAAQ,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;QAC9D,IAAI,WAAgC,CAAC;QACrC,IAAI,GAAM,CAAC;QAEX,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE;YAC5C,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc;YACtB,OAAO;YACP,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI;YACA,WAAW,GAAG,MAAM,WAAW,CAAC;SACnC;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,mCAAmC,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/F,MAAM,GAAG,CAAC;SACb;QAED,IAAI;YACA,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;SAC1B;QAAC,OAAO,GAAG,EAAE;YACV,IAAI;gBACA,MAAM,WAAW,EAAE,CAAC;aACvB;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,mCAAmC,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;aAClG;YAED,MAAM,GAAG,CAAC;SACb;QAED,IAAI;YACA,MAAM,WAAW,EAAE,CAAC;SACvB;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,mCAAmC,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/F,MAAM,GAAG,CAAC;SACb;QAED,OAAO,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,5 +1,6 @@
1
- export default function withStatusLogs<T>(message: string | {
1
+ export default function withStatusLogs<T>(messageAndOptions: string | {
2
2
  loading: string;
3
3
  success?: string;
4
4
  fail?: string;
5
+ disableLogs?: boolean;
5
6
  }, callback: () => Promise<T>): Promise<T>;
@@ -1,21 +1,24 @@
1
1
  import chalk from "chalk";
2
2
  import logSymbols from "log-symbols";
3
+ import { getConsoleLogPrefix } from "./getConsoleLogPrefix.js";
3
4
  const clockChar = "\u25f7";
4
- export default async function withStatusLogs(message, callback) {
5
- console.log(`${chalk.cyan(clockChar)} ${typeof message === "string" ? message : message.loading}`);
5
+ export default async function withStatusLogs(messageAndOptions, callback) {
6
+ if (typeof messageAndOptions !== "string" && messageAndOptions.disableLogs)
7
+ return await callback();
8
+ console.log(getConsoleLogPrefix() + `${chalk.cyan(clockChar)} ${typeof messageAndOptions === "string" ? messageAndOptions : messageAndOptions.loading}`);
6
9
  try {
7
10
  const res = await callback();
8
- if (typeof message !== "string")
9
- console.log(`${logSymbols.success} ${message.success}`);
11
+ if (typeof messageAndOptions !== "string")
12
+ console.log(getConsoleLogPrefix() + `${logSymbols.success} ${messageAndOptions.success}`);
10
13
  else
11
- console.log(`${logSymbols.success} ${message}`);
14
+ console.log(getConsoleLogPrefix() + `${logSymbols.success} ${messageAndOptions}`);
12
15
  return res;
13
16
  }
14
17
  catch (er) {
15
- if (typeof message !== "string")
16
- console.log(`${logSymbols.error} ${message.fail}`);
18
+ if (typeof messageAndOptions !== "string")
19
+ console.log(getConsoleLogPrefix() + `${logSymbols.error} ${messageAndOptions.fail}`);
17
20
  else
18
- console.log(`${logSymbols.error} ${message}`);
21
+ console.log(getConsoleLogPrefix() + `${logSymbols.error} ${messageAndOptions}`);
19
22
  throw er;
20
23
  }
21
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withStatusLogs.js","sourceRoot":"","sources":["../../src/utils/withStatusLogs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CACxC,OAIC,EACD,QAA0B;IAE1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnG,IAAI;QACA,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAE7B,IAAI,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;;YAExD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;QAEpD,OAAO,GAAG,CAAC;KACd;IAAC,OAAO,EAAE,EAAE;QACT,IAAI,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;;YAEnD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;QAElD,MAAM,EAAE,CAAC;KACZ;AACL,CAAC"}
1
+ {"version":3,"file":"withStatusLogs.js","sourceRoot":"","sources":["../../src/utils/withStatusLogs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CACxC,iBAKC,EACD,QAA0B;IAE1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,WAAW;QACtE,OAAO,MAAM,QAAQ,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzJ,IAAI;QACA,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAE7B,IAAI,OAAO,iBAAiB,KAAK,QAAQ;YACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;;YAE1F,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEtF,OAAO,GAAG,CAAC;KACd;IAAC,OAAO,EAAE,EAAE;QACT,IAAI,OAAO,iBAAiB,KAAK,QAAQ;YACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;;YAErF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEpF,MAAM,EAAE,CAAC;KACZ;AACL,CAAC"}
package/llama/addon.cpp CHANGED
@@ -9,6 +9,16 @@
9
9
  #include "llama.h"
10
10
  #include "napi.h"
11
11
 
12
+ Napi::FunctionReference loggerCallbackFunctionReference;
13
+ Napi::ThreadSafeFunction threadSafeLoggerCallback;
14
+ bool loggerCallbackSet = false;
15
+ int addonLoggerLogLevel = 5;
16
+
17
+ struct addon_logger_log {
18
+ const int logLevelNumber;
19
+ const std::stringstream* stringStream;
20
+ };
21
+
12
22
  std::string addon_model_token_to_piece(const struct llama_model * model, llama_token token) {
13
23
  std::vector<char> result(8, 0);
14
24
  const int n_tokens = llama_token_to_piece(model, token, result.data(), result.size());
@@ -799,15 +809,107 @@ Napi::Value systemInfo(const Napi::CallbackInfo& info) {
799
809
  return Napi::String::From(info.Env(), llama_print_system_info());
800
810
  }
801
811
 
812
+ int addonGetGgmlLogLevelNumber(ggml_log_level level) {
813
+ switch (level) {
814
+ case GGML_LOG_LEVEL_ERROR: return 2;
815
+ case GGML_LOG_LEVEL_WARN: return 3;
816
+ case GGML_LOG_LEVEL_INFO: return 4;
817
+ case GGML_LOG_LEVEL_DEBUG: return 5;
818
+ }
819
+
820
+ return 1;
821
+ }
822
+
823
+ static void addonWrapperJSLogCallback(Napi::Env env, Napi::Function jsCallback, addon_logger_log* data) {
824
+ auto status = jsCallback.Call({
825
+ Napi::Number::New(env, data->logLevelNumber),
826
+ Napi::String::New(env, data->stringStream->str())
827
+ });
828
+
829
+ delete data->stringStream;
830
+ delete data;
831
+ }
832
+
833
+ static void addonLlamaCppLogCallback(ggml_log_level level, const char * text, void * user_data) {
834
+ int logLevelNumber = addonGetGgmlLogLevelNumber(level);
835
+
836
+ if (logLevelNumber > addonLoggerLogLevel) {
837
+ return;
838
+ }
839
+
840
+ if (loggerCallbackSet) {
841
+ std::stringstream* stringStream = new std::stringstream();
842
+ if (text != nullptr) {
843
+ *stringStream << text;
844
+ }
845
+
846
+ addon_logger_log* data = new addon_logger_log {
847
+ logLevelNumber,
848
+ stringStream
849
+ };
850
+
851
+ auto status = threadSafeLoggerCallback.NonBlockingCall(data, addonWrapperJSLogCallback);
852
+
853
+ if (status == napi_ok) {
854
+ return;
855
+ }
856
+ }
857
+
858
+ if (level == GGML_LOG_LEVEL_ERROR) {
859
+ fputs(text, stderr);
860
+ fflush(stderr);
861
+ } else {
862
+ fputs(text, stdout);
863
+ fflush(stdout);
864
+ }
865
+ }
866
+
867
+ Napi::Value setLogger(const Napi::CallbackInfo& info) {
868
+ if (info.Length() < 1 || !info[0].IsFunction()) {
869
+ if (loggerCallbackSet) {
870
+ threadSafeLoggerCallback.Release();
871
+ threadSafeLoggerCallback = nullptr;
872
+ loggerCallbackFunctionReference.Unref();
873
+ loggerCallbackSet = false;
874
+ }
875
+
876
+ return info.Env().Undefined();
877
+ }
878
+
879
+ loggerCallbackFunctionReference = Napi::Persistent(info[0].As<Napi::Function>());
880
+ loggerCallbackFunctionReference.Ref();
881
+ threadSafeLoggerCallback = Napi::ThreadSafeFunction::New(info.Env(), loggerCallbackFunctionReference.Value(), "loggerCallback", 0, 1);
882
+ loggerCallbackSet = true;
883
+
884
+ return info.Env().Undefined();
885
+ }
886
+
887
+ Napi::Value setLoggerLogLevel(const Napi::CallbackInfo& info) {
888
+ if (info.Length() < 1 || !info[0].IsNumber()) {
889
+ addonLoggerLogLevel = 5;
890
+
891
+ return info.Env().Undefined();
892
+ }
893
+
894
+ addonLoggerLogLevel = info[0].As<Napi::Number>().Int32Value();
895
+
896
+ return info.Env().Undefined();
897
+ }
898
+
802
899
  Napi::Object registerCallback(Napi::Env env, Napi::Object exports) {
803
900
  llama_backend_init(false);
804
901
  exports.DefineProperties({
805
902
  Napi::PropertyDescriptor::Function("systemInfo", systemInfo),
903
+ Napi::PropertyDescriptor::Function("setLogger", setLogger),
904
+ Napi::PropertyDescriptor::Function("setLoggerLogLevel", setLoggerLogLevel)
806
905
  });
807
906
  AddonModel::init(exports);
808
907
  AddonGrammar::init(exports);
809
908
  AddonGrammarEvaluationState::init(exports);
810
909
  AddonContext::init(exports);
910
+
911
+ llama_log_set(addonLlamaCppLogCallback, nullptr);
912
+
811
913
  return exports;
812
914
  }
813
915
 
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b1961"
2
+ "release": "b2060"
3
3
  }
Binary file
@@ -0,0 +1,4 @@
1
+ {
2
+ "tag": "b2060",
3
+ "llamaCppGithubRepo": "ggerganov/llama.cpp"
4
+ }
@@ -0,0 +1 @@
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","arch":"arm64","computeLayers":{"metal":false,"cuda":false},"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2060"}}}
@@ -0,0 +1 @@
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","arch":"armv7l","computeLayers":{"metal":false,"cuda":false},"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2060"}}}