node-llama-cpp 2.7.5 → 3.0.0-beta.1

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 (101) hide show
  1. package/README.md +1 -1
  2. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -8
  3. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -8
  4. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +1 -1
  5. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +13 -0
  6. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +49 -0
  7. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -0
  8. package/dist/cli/cli.js +1 -1
  9. package/dist/cli/cli.js.map +1 -1
  10. package/dist/cli/commands/BuildCommand.d.ts +2 -2
  11. package/dist/cli/commands/BuildCommand.js +1 -1
  12. package/dist/cli/commands/BuildCommand.js.map +1 -1
  13. package/dist/cli/commands/ChatCommand.js +20 -10
  14. package/dist/cli/commands/ChatCommand.js.map +1 -1
  15. package/dist/cli/commands/ClearCommand.js +2 -1
  16. package/dist/cli/commands/ClearCommand.js.map +1 -1
  17. package/dist/cli/commands/DownloadCommand.d.ts +4 -5
  18. package/dist/cli/commands/DownloadCommand.js +3 -2
  19. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  20. package/dist/commands.d.ts +2 -1
  21. package/dist/commands.js +2 -1
  22. package/dist/commands.js.map +1 -1
  23. package/dist/config.d.ts +1 -0
  24. package/dist/config.js +1 -0
  25. package/dist/config.js.map +1 -1
  26. package/dist/index.d.ts +7 -4
  27. package/dist/index.js +6 -4
  28. package/dist/index.js.map +1 -1
  29. package/dist/llamaEvaluator/LlamaBins.d.ts +19 -4
  30. package/dist/llamaEvaluator/LlamaBins.js +3 -3
  31. package/dist/llamaEvaluator/LlamaChatSession.d.ts +24 -23
  32. package/dist/llamaEvaluator/LlamaChatSession.js +90 -36
  33. package/dist/llamaEvaluator/LlamaChatSession.js.map +1 -1
  34. package/dist/llamaEvaluator/LlamaContext/LlamaContext.d.ts +112 -0
  35. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js +640 -0
  36. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +1 -0
  37. package/dist/llamaEvaluator/LlamaContext/types.d.ts +90 -0
  38. package/dist/llamaEvaluator/LlamaContext/types.js +2 -0
  39. package/dist/llamaEvaluator/LlamaContext/types.js.map +1 -0
  40. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.d.ts +5 -0
  41. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js +16 -0
  42. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +1 -0
  43. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.d.ts +5 -0
  44. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js +42 -0
  45. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +1 -0
  46. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +2 -0
  47. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js +13 -0
  48. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +1 -0
  49. package/dist/llamaEvaluator/LlamaGrammar.d.ts +5 -5
  50. package/dist/llamaEvaluator/LlamaGrammar.js +7 -7
  51. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.d.ts +6 -5
  52. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js +8 -7
  53. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +1 -1
  54. package/dist/llamaEvaluator/LlamaModel.d.ts +93 -112
  55. package/dist/llamaEvaluator/LlamaModel.js +294 -59
  56. package/dist/llamaEvaluator/LlamaModel.js.map +1 -1
  57. package/dist/types.d.ts +3 -1
  58. package/dist/utils/ReplHistory.js +1 -1
  59. package/dist/utils/ReplHistory.js.map +1 -1
  60. package/dist/utils/cloneLlamaCppRepo.d.ts +1 -0
  61. package/dist/utils/cloneLlamaCppRepo.js +26 -1
  62. package/dist/utils/cloneLlamaCppRepo.js.map +1 -1
  63. package/dist/utils/getBin.d.ts +71 -39
  64. package/dist/utils/getBin.js.map +1 -1
  65. package/dist/utils/getBuildDefaults.d.ts +6 -0
  66. package/dist/utils/getBuildDefaults.js +10 -0
  67. package/dist/utils/getBuildDefaults.js.map +1 -0
  68. package/dist/utils/getReleaseInfo.d.ts +7 -0
  69. package/dist/utils/getReleaseInfo.js +30 -0
  70. package/dist/utils/getReleaseInfo.js.map +1 -0
  71. package/dist/utils/parseModelFileName.d.ts +9 -0
  72. package/dist/utils/parseModelFileName.js +68 -0
  73. package/dist/utils/parseModelFileName.js.map +1 -0
  74. package/dist/utils/parseModelTypeDescription.d.ts +6 -0
  75. package/dist/utils/parseModelTypeDescription.js +9 -0
  76. package/dist/utils/parseModelTypeDescription.js.map +1 -0
  77. package/llama/.clang-format +10 -9
  78. package/llama/addon.cpp +689 -356
  79. package/llama/binariesGithubRelease.json +1 -1
  80. package/llama/gitRelease.bundle +0 -0
  81. package/llama/grammars/README.md +2 -2
  82. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  83. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  84. package/llamaBins/linux-x64/llama-addon.node +0 -0
  85. package/llamaBins/mac-arm64/ggml-metal.metal +107 -1
  86. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  87. package/llamaBins/mac-x64/ggml-metal.metal +107 -1
  88. package/llamaBins/mac-x64/llama-addon.node +0 -0
  89. package/llamaBins/win-x64/llama-addon.exp +0 -0
  90. package/llamaBins/win-x64/llama-addon.lib +0 -0
  91. package/llamaBins/win-x64/llama-addon.node +0 -0
  92. package/package.json +13 -7
  93. package/dist/chatWrappers/createChatWrapperByBos.d.ts +0 -2
  94. package/dist/chatWrappers/createChatWrapperByBos.js +0 -14
  95. package/dist/chatWrappers/createChatWrapperByBos.js.map +0 -1
  96. package/dist/llamaEvaluator/LlamaContext.d.ts +0 -100
  97. package/dist/llamaEvaluator/LlamaContext.js +0 -141
  98. package/dist/llamaEvaluator/LlamaContext.js.map +0 -1
  99. package/dist/utils/withLock.d.ts +0 -1
  100. package/dist/utils/withLock.js +0 -19
  101. package/dist/utils/withLock.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBuildDefaults.js","sourceRoot":"","sources":["../../src/utils/getBuildDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,sBAAsB,EAC7G,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAClC,OAAO;QACH,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,sBAAsB;QAC/B,YAAY,EAAE,2BAA2B;QACzC,WAAW,EAAE,0BAA0B;KAC1C,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function getReleaseInfo(): Promise<{
2
+ moduleVersion: string;
3
+ llamaCpp: {
4
+ binarySource: string;
5
+ release: string;
6
+ };
7
+ }>;
@@ -0,0 +1,30 @@
1
+ import path from "path";
2
+ import { fileURLToPath } from "url";
3
+ import fs from "fs-extra";
4
+ import { getUsedBinFlag } from "./usedBinFlag.js";
5
+ import { getClonedLlamaCppRepoReleaseTag } from "./cloneLlamaCppRepo.js";
6
+ import { getBinariesGithubRelease } from "./binariesGithubRelease.js";
7
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
+ export async function getReleaseInfo() {
9
+ const [usedBinFlag, moduleVersion] = await Promise.all([
10
+ getUsedBinFlag(),
11
+ getModuleVersion()
12
+ ]);
13
+ const release = usedBinFlag === "prebuiltBinaries"
14
+ ? await getBinariesGithubRelease()
15
+ : (await getClonedLlamaCppRepoReleaseTag() ?? await getBinariesGithubRelease());
16
+ return {
17
+ llamaCpp: {
18
+ binarySource: usedBinFlag === "prebuiltBinaries"
19
+ ? "included"
20
+ : "builtLocally",
21
+ release
22
+ },
23
+ moduleVersion
24
+ };
25
+ }
26
+ async function getModuleVersion() {
27
+ const packageJson = await fs.readJson(path.join(__dirname, "..", "..", "package.json"));
28
+ return packageJson.version;
29
+ }
30
+ //# sourceMappingURL=getReleaseInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getReleaseInfo.js","sourceRoot":"","sources":["../../src/utils/getReleaseInfo.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAEpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,cAAc;IAOhC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,cAAc,EAAE;QAChB,gBAAgB,EAAE;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,WAAW,KAAK,kBAAkB;QAC9C,CAAC,CAAC,MAAM,wBAAwB,EAAE;QAClC,CAAC,CAAC,CAAC,MAAM,+BAA+B,EAAE,IAAI,MAAM,wBAAwB,EAAE,CAAC,CAAC;IAEpF,OAAO;QACH,QAAQ,EAAE;YACN,YAAY,EAAE,WAAW,KAAK,kBAAkB;gBAC5C,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,cAAc;YACpB,OAAO;SACV;QACD,aAAa;KAChB,CAAC;AACN,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC3B,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAExF,OAAO,WAAW,CAAC,OAAO,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function parseModelFileName(filename: string): {
2
+ name: string | undefined;
3
+ subType: string;
4
+ quantization: string | undefined;
5
+ fileType: string | undefined;
6
+ version: string | undefined;
7
+ contextSize: string | undefined;
8
+ parameters: `${number}B` | undefined;
9
+ };
@@ -0,0 +1,68 @@
1
+ export function parseModelFileName(filename) {
2
+ const parts = filename.split("-");
3
+ let quantization;
4
+ let fileType;
5
+ let version;
6
+ let contextSize;
7
+ if (parts.length > 0) {
8
+ const lastPart = parts[parts.length - 1];
9
+ const lastParts = lastPart.split(".");
10
+ fileType = lastParts.pop();
11
+ quantization = lastParts.pop();
12
+ if (lastParts.length > 0)
13
+ parts[parts.length - 1] = lastParts.join(".");
14
+ else
15
+ parts.pop();
16
+ }
17
+ const { previousParts, parameters, nextParts } = splitByModelParameters(parts);
18
+ const name = previousParts.shift();
19
+ for (let i = 0; i < nextParts.length; i++) {
20
+ const part = nextParts[i];
21
+ if (isContextSizeText(part)) {
22
+ contextSize = part.toUpperCase();
23
+ nextParts.splice(i, 1);
24
+ i--;
25
+ }
26
+ else if (isVersionText(part)) {
27
+ version = part.toLowerCase();
28
+ nextParts.splice(i, 1);
29
+ i--;
30
+ }
31
+ }
32
+ return {
33
+ name,
34
+ subType: previousParts.join("-"),
35
+ quantization,
36
+ fileType,
37
+ version,
38
+ contextSize,
39
+ parameters
40
+ };
41
+ }
42
+ function isParametersText(text) {
43
+ return /^[0-9]+[Bb]$/.test(text);
44
+ }
45
+ function isVersionText(text) {
46
+ return /^[vV]?[0-9]/.test(text);
47
+ }
48
+ function isContextSizeText(text) {
49
+ return /^[0-9]+[kKmM]$/.test(text);
50
+ }
51
+ function splitByModelParameters(parts) {
52
+ for (let i = 0; i < parts.length; i++) {
53
+ const part = parts[i];
54
+ if (isParametersText(part)) {
55
+ return {
56
+ parameters: part.toUpperCase(),
57
+ previousParts: parts.slice(0, i),
58
+ nextParts: parts.slice(i + 1)
59
+ };
60
+ }
61
+ }
62
+ return {
63
+ parameters: undefined,
64
+ previousParts: parts,
65
+ nextParts: []
66
+ };
67
+ }
68
+ //# sourceMappingURL=parseModelFileName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseModelFileName.js","sourceRoot":"","sources":["../../src/utils/parseModelFileName.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AddonModelArchName, AddonModelFileTypeName, AddonModelTypeName, ModelTypeDescription } from "./getBin.js";
2
+ export declare function parseModelTypeDescription(modelTypeDescription: ModelTypeDescription): {
3
+ arch: AddonModelArchName;
4
+ type: AddonModelTypeName;
5
+ fileType: AddonModelFileTypeName;
6
+ };
@@ -0,0 +1,9 @@
1
+ export function parseModelTypeDescription(modelTypeDescription) {
2
+ const [arch, type, ...fileTypeParts] = modelTypeDescription.split(" ");
3
+ return {
4
+ arch: arch,
5
+ type: type,
6
+ fileType: fileTypeParts.join(" ")
7
+ };
8
+ }
9
+ //# sourceMappingURL=parseModelTypeDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseModelTypeDescription.js","sourceRoot":"","sources":["../../src/utils/parseModelTypeDescription.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CAAC,oBAA0C;IAChF,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvE,OAAO;QACH,IAAI,EAAE,IAA0B;QAChC,IAAI,EAAE,IAA0B;QAChC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAA2B;KAC9D,CAAC;AACN,CAAC"}
@@ -1,20 +1,20 @@
1
1
  BasedOnStyle: Google
2
- IndentWidth: 2
2
+ IndentWidth: 4
3
3
  UseTab: Never
4
- TabWidth: 2
5
- ColumnLimit: 500
4
+ TabWidth: 4
5
+ ColumnLimit: 140
6
6
  AllowShortCaseLabelsOnASingleLine: true
7
- AllowShortFunctionsOnASingleLine: true
8
- AllowShortIfStatementsOnASingleLine: true
9
- AllowShortLoopsOnASingleLine: true
7
+ AllowShortFunctionsOnASingleLine: false
8
+ AllowShortIfStatementsOnASingleLine: false
9
+ AllowShortLoopsOnASingleLine: false
10
10
  AlignTrailingComments: false
11
11
  SpaceAfterTemplateKeyword: false
12
- AllowShortBlocksOnASingleLine: true
12
+ AllowShortBlocksOnASingleLine: false
13
13
  MaxEmptyLinesToKeep: 3
14
14
  NamespaceIndentation: None
15
15
  CommentPragmas: '^[^ ]'
16
16
  FixNamespaceComments: false
17
- AccessModifierOffset: -4
17
+ IndentAccessModifiers: true
18
18
  SpaceAfterCStyleCast: false
19
19
  PointerAlignment: Left
20
20
  IndentCaseLabels: false
@@ -31,6 +31,7 @@ UseCRLF: false
31
31
  AllowAllArgumentsOnNextLine: true
32
32
  AlignAfterOpenBracket: DontAlign
33
33
  PackConstructorInitializers: CurrentLine
34
+ AlignAfterOpenBracket: BlockIndent
34
35
  BraceWrapping:
35
36
  AfterStruct: false
36
37
  AfterClass: false
@@ -43,4 +44,4 @@ BraceWrapping:
43
44
  BeforeElse: false
44
45
  SplitEmptyFunction: false
45
46
  SplitEmptyRecord: false
46
- SplitEmptyNamespace: false
47
+ SplitEmptyNamespace: false