node-llama-cpp 1.3.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +100 -28
  2. package/dist/ChatPromptWrapper.d.ts +3 -0
  3. package/dist/ChatPromptWrapper.js.map +1 -1
  4. package/dist/chatWrappers/ChatMLPromptWrapper.d.ts +11 -0
  5. package/dist/chatWrappers/ChatMLPromptWrapper.js +19 -0
  6. package/dist/chatWrappers/ChatMLPromptWrapper.js.map +1 -0
  7. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +1 -0
  8. package/dist/chatWrappers/EmptyChatPromptWrapper.js +1 -0
  9. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +1 -1
  10. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +11 -1
  11. package/dist/chatWrappers/GeneralChatPromptWrapper.js +28 -4
  12. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +1 -1
  13. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +4 -1
  14. package/dist/chatWrappers/LlamaChatPromptWrapper.js +9 -5
  15. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +1 -1
  16. package/dist/chatWrappers/createChatWrapperByBos.d.ts +2 -0
  17. package/dist/chatWrappers/createChatWrapperByBos.js +14 -0
  18. package/dist/chatWrappers/createChatWrapperByBos.js.map +1 -0
  19. package/dist/cli/commands/BuildCommand.d.ts +3 -1
  20. package/dist/cli/commands/BuildCommand.js +24 -2
  21. package/dist/cli/commands/BuildCommand.js.map +1 -1
  22. package/dist/cli/commands/ChatCommand.d.ts +7 -1
  23. package/dist/cli/commands/ChatCommand.js +87 -12
  24. package/dist/cli/commands/ChatCommand.js.map +1 -1
  25. package/dist/cli/commands/ClearCommand.js +1 -1
  26. package/dist/cli/commands/ClearCommand.js.map +1 -1
  27. package/dist/cli/commands/DownloadCommand.d.ts +4 -1
  28. package/dist/cli/commands/DownloadCommand.js +71 -70
  29. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  30. package/dist/cli/commands/OnPostInstallCommand.js +4 -2
  31. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  32. package/dist/config.d.ts +5 -0
  33. package/dist/config.js +11 -1
  34. package/dist/config.js.map +1 -1
  35. package/dist/index.d.ts +5 -1
  36. package/dist/index.js +4 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/llamaEvaluator/LlamaBins.d.ts +3 -3
  39. package/dist/llamaEvaluator/LlamaBins.js +2 -2
  40. package/dist/llamaEvaluator/LlamaBins.js.map +1 -1
  41. package/dist/llamaEvaluator/LlamaChatSession.d.ts +7 -2
  42. package/dist/llamaEvaluator/LlamaChatSession.js +51 -11
  43. package/dist/llamaEvaluator/LlamaChatSession.js.map +1 -1
  44. package/dist/llamaEvaluator/LlamaContext.d.ts +31 -2
  45. package/dist/llamaEvaluator/LlamaContext.js +74 -7
  46. package/dist/llamaEvaluator/LlamaContext.js.map +1 -1
  47. package/dist/llamaEvaluator/LlamaGrammar.d.ts +14 -0
  48. package/dist/llamaEvaluator/LlamaGrammar.js +30 -0
  49. package/dist/llamaEvaluator/LlamaGrammar.js.map +1 -0
  50. package/dist/llamaEvaluator/LlamaModel.d.ts +49 -1
  51. package/dist/llamaEvaluator/LlamaModel.js +25 -9
  52. package/dist/llamaEvaluator/LlamaModel.js.map +1 -1
  53. package/dist/types.d.ts +1 -0
  54. package/dist/types.js +2 -0
  55. package/dist/types.js.map +1 -0
  56. package/dist/utils/binariesGithubRelease.d.ts +6 -0
  57. package/dist/utils/binariesGithubRelease.js +15 -0
  58. package/dist/utils/binariesGithubRelease.js.map +1 -0
  59. package/dist/utils/compileLLamaCpp.d.ts +3 -1
  60. package/dist/utils/compileLLamaCpp.js +34 -4
  61. package/dist/utils/compileLLamaCpp.js.map +1 -1
  62. package/dist/utils/getBin.d.ts +18 -4
  63. package/dist/utils/getBin.js +4 -2
  64. package/dist/utils/getBin.js.map +1 -1
  65. package/dist/utils/getGrammarsFolder.d.ts +1 -0
  66. package/dist/utils/getGrammarsFolder.js +18 -0
  67. package/dist/utils/getGrammarsFolder.js.map +1 -0
  68. package/dist/utils/getTextCompletion.d.ts +3 -0
  69. package/dist/utils/getTextCompletion.js +12 -0
  70. package/dist/utils/getTextCompletion.js.map +1 -0
  71. package/dist/utils/removeNullFields.d.ts +1 -0
  72. package/dist/utils/removeNullFields.js +9 -0
  73. package/dist/utils/removeNullFields.js.map +1 -0
  74. package/dist/utils/spawnCommand.d.ts +2 -1
  75. package/dist/utils/spawnCommand.js +2 -2
  76. package/dist/utils/spawnCommand.js.map +1 -1
  77. package/llama/addon.cpp +180 -42
  78. package/llama/binariesGithubRelease.json +3 -0
  79. package/llama/binding.gyp +6 -3
  80. package/llama/grammars/README.md +91 -0
  81. package/llama/grammars/arithmetic.gbnf +6 -0
  82. package/llama/grammars/chess.gbnf +13 -0
  83. package/llama/grammars/japanese.gbnf +7 -0
  84. package/llama/grammars/json.gbnf +25 -0
  85. package/llama/grammars/list.gbnf +4 -0
  86. package/llamaBins/linux-arm64-16.node +0 -0
  87. package/llamaBins/linux-arm64-17.node +0 -0
  88. package/llamaBins/linux-arm64-18.node +0 -0
  89. package/llamaBins/linux-arm64-19.node +0 -0
  90. package/llamaBins/linux-arm64-20.node +0 -0
  91. package/llamaBins/linux-armv7l-16.node +0 -0
  92. package/llamaBins/linux-armv7l-17.node +0 -0
  93. package/llamaBins/linux-armv7l-18.node +0 -0
  94. package/llamaBins/linux-armv7l-19.node +0 -0
  95. package/llamaBins/linux-armv7l-20.node +0 -0
  96. package/llamaBins/linux-ppc64le-16.node +0 -0
  97. package/llamaBins/linux-ppc64le-17.node +0 -0
  98. package/llamaBins/linux-ppc64le-18.node +0 -0
  99. package/llamaBins/linux-ppc64le-19.node +0 -0
  100. package/llamaBins/linux-ppc64le-20.node +0 -0
  101. package/llamaBins/linux-x64-16.node +0 -0
  102. package/llamaBins/linux-x64-17.node +0 -0
  103. package/llamaBins/linux-x64-18.node +0 -0
  104. package/llamaBins/linux-x64-19.node +0 -0
  105. package/llamaBins/linux-x64-20.node +0 -0
  106. package/llamaBins/mac-arm64-16.node +0 -0
  107. package/llamaBins/mac-arm64-17.node +0 -0
  108. package/llamaBins/mac-arm64-18.node +0 -0
  109. package/llamaBins/mac-arm64-19.node +0 -0
  110. package/llamaBins/mac-arm64-20.node +0 -0
  111. package/llamaBins/mac-x64-16.node +0 -0
  112. package/llamaBins/mac-x64-17.node +0 -0
  113. package/llamaBins/mac-x64-18.node +0 -0
  114. package/llamaBins/mac-x64-19.node +0 -0
  115. package/llamaBins/mac-x64-20.node +0 -0
  116. package/llamaBins/win-x64-16.node +0 -0
  117. package/llamaBins/win-x64-17.node +0 -0
  118. package/llamaBins/win-x64-18.node +0 -0
  119. package/llamaBins/win-x64-19.node +0 -0
  120. package/llamaBins/win-x64-20.node +0 -0
  121. package/package.json +12 -6
@@ -5,24 +5,29 @@ import withOra from "../../utils/withOra.js";
5
5
  import { defaultChatSystemPrompt } from "../../config.js";
6
6
  import { LlamaChatPromptWrapper } from "../../chatWrappers/LlamaChatPromptWrapper.js";
7
7
  import { GeneralChatPromptWrapper } from "../../chatWrappers/GeneralChatPromptWrapper.js";
8
+ import { ChatMLPromptWrapper } from "../../chatWrappers/ChatMLPromptWrapper.js";
9
+ import { getChatWrapperByBos } from "../../chatWrappers/createChatWrapperByBos.js";
8
10
  export const ChatCommand = {
9
11
  command: "chat",
10
12
  describe: "Chat with a LLama model",
11
13
  builder(yargs) {
12
14
  return yargs
13
15
  .option("model", {
16
+ alias: "m",
14
17
  type: "string",
15
18
  demandOption: true,
16
19
  description: "LLama model file to use for the chat",
17
20
  group: "Required:"
18
21
  })
19
22
  .option("systemInfo", {
23
+ alias: "i",
20
24
  type: "boolean",
21
25
  default: false,
22
26
  description: "Print llama.cpp system info",
23
27
  group: "Optional:"
24
28
  })
25
29
  .option("systemPrompt", {
30
+ alias: "s",
26
31
  type: "string",
27
32
  default: defaultChatSystemPrompt,
28
33
  defaultDescription: "",
@@ -31,22 +36,60 @@ export const ChatCommand = {
31
36
  group: "Optional:"
32
37
  })
33
38
  .option("wrapper", {
39
+ alias: "w",
34
40
  type: "string",
35
41
  default: "general",
36
- choices: ["general", "llama"],
37
- description: "Chat wrapper to use",
42
+ choices: ["auto", "general", "llamaChat", "chatML"],
43
+ description: "Chat wrapper to use. Use `auto` to automatically select a wrapper based on the model's BOS token",
38
44
  group: "Optional:"
39
45
  })
40
46
  .option("contextSize", {
47
+ alias: "c",
41
48
  type: "number",
42
49
  default: 1024 * 4,
43
50
  description: "Context size to use for the model",
44
51
  group: "Optional:"
52
+ })
53
+ .option("grammar", {
54
+ alias: "g",
55
+ type: "string",
56
+ default: "text",
57
+ choices: ["text", "json", "list", "arithmetic", "japanese", "chess"],
58
+ description: "Restrict the model response to a specific grammar, like JSON for example",
59
+ group: "Optional:"
60
+ })
61
+ .option("temperature", {
62
+ alias: "t",
63
+ type: "number",
64
+ default: 0,
65
+ description: "Temperature is a hyperparameter that controls the randomness of the generated text. It affects the probability distribution of the model's output tokens. A higher temperature (e.g., 1.5) makes the output more random and creative, while a lower temperature (e.g., 0.5) makes the output more focused, deterministic, and conservative. The suggested temperature is 0.8, which provides a balance between randomness and determinism. At the extreme, a temperature of 0 will always pick the most likely next token, leading to identical outputs in each run. Set to `0` to disable.",
66
+ group: "Optional:"
67
+ })
68
+ .option("topK", {
69
+ alias: "k",
70
+ type: "number",
71
+ default: 40,
72
+ description: "Limits the model to consider only the K most likely next tokens for sampling at each step of sequence generation. An integer number between `1` and the size of the vocabulary. Set to `0` to disable (which uses the full vocabulary). Only relevant when `temperature` is set to a value greater than 0.",
73
+ group: "Optional:"
74
+ })
75
+ .option("topP", {
76
+ alias: "p",
77
+ type: "number",
78
+ default: 0.95,
79
+ description: "Dynamically selects the smallest set of tokens whose cumulative probability exceeds the threshold P, and samples the next token only from this set. A float number between `0` and `1`. Set to `1` to disable. Only relevant when `temperature` is set to a value greater than `0`.",
80
+ group: "Optional:"
81
+ })
82
+ .option("maxTokens", {
83
+ alias: "mt",
84
+ type: "number",
85
+ default: 0,
86
+ description: "Maximum number of tokens to generate in responses. Set to `0` to disable. Set to `-1` to set to the context size",
87
+ group: "Optional:"
45
88
  });
46
89
  },
47
- async handler({ model, systemInfo, systemPrompt, wrapper, contextSize }) {
90
+ async handler({ model, systemInfo, systemPrompt, wrapper, contextSize, grammar, temperature, topK, topP, maxTokens }) {
48
91
  try {
49
- await RunChat({ model, systemInfo, systemPrompt, wrapper, contextSize });
92
+ await RunChat({ model, systemInfo, systemPrompt, wrapper, contextSize, grammar, temperature, topK, topP, maxTokens });
50
93
  }
51
94
  catch (err) {
52
95
  console.error(err);
@@ -54,21 +97,36 @@ export const ChatCommand = {
54
97
  }
55
98
  }
56
99
  };
57
- async function RunChat({ model: modelArg, systemInfo, systemPrompt, wrapper, contextSize }) {
100
+ async function RunChat({ model: modelArg, systemInfo, systemPrompt, wrapper, contextSize, grammar: grammarArg, temperature, topK, topP, maxTokens }) {
58
101
  const { LlamaChatSession } = await import("../../llamaEvaluator/LlamaChatSession.js");
59
102
  const { LlamaModel } = await import("../../llamaEvaluator/LlamaModel.js");
60
103
  const { LlamaContext } = await import("../../llamaEvaluator/LlamaContext.js");
104
+ const { LlamaGrammar } = await import("../../llamaEvaluator/LlamaGrammar.js");
61
105
  const model = new LlamaModel({
62
106
  modelPath: modelArg,
63
- contextSize
107
+ contextSize,
108
+ temperature,
109
+ topK,
110
+ topP
64
111
  });
65
- const context = new LlamaContext({ model });
112
+ const context = new LlamaContext({
113
+ model,
114
+ grammar: grammarArg !== "text"
115
+ ? await LlamaGrammar.getFor(grammarArg)
116
+ : undefined
117
+ });
118
+ const bos = context.getBosString(); // bos = beginning of sequence
119
+ const eos = context.getEosString(); // eos = end of sequence
120
+ const promptWrapper = getChatWrapper(wrapper, bos);
66
121
  const session = new LlamaChatSession({
67
122
  context,
68
123
  printLLamaSystemInfo: systemInfo,
69
124
  systemPrompt,
70
- promptWrapper: createChatWrapper(wrapper)
125
+ promptWrapper
71
126
  });
127
+ console.info(`${chalk.yellow("BOS:")} ${bos}`);
128
+ console.info(`${chalk.yellow("EOS:")} ${eos}`);
129
+ console.info(`${chalk.yellow("Chat wrapper:")} ${promptWrapper.wrapperName}`);
72
130
  await withOra({
73
131
  loading: chalk.blue("Loading model"),
74
132
  success: chalk.blue("Model loaded"),
@@ -90,20 +148,37 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, wrapper, con
90
148
  process.stdout.write(chalk.yellow("AI: "));
91
149
  const [startColor, endColor] = chalk.blue("MIDDLE").split("MIDDLE");
92
150
  process.stdout.write(startColor);
93
- await session.prompt(input, (chunk) => {
94
- process.stdout.write(session.context.decode(Uint32Array.from(chunk)));
151
+ await session.prompt(input, {
152
+ maxTokens: maxTokens === -1
153
+ ? context.getContextSize()
154
+ : maxTokens <= 0
155
+ ? undefined
156
+ : maxTokens,
157
+ onToken(chunk) {
158
+ process.stdout.write(session.context.decode(Uint32Array.from(chunk)));
159
+ }
95
160
  });
96
161
  process.stdout.write(endColor);
97
162
  console.log();
98
163
  }
99
164
  }
100
- function createChatWrapper(wrapper) {
165
+ function getChatWrapper(wrapper, bos) {
101
166
  switch (wrapper) {
102
167
  case "general":
103
168
  return new GeneralChatPromptWrapper();
104
- case "llama":
169
+ case "llamaChat":
105
170
  return new LlamaChatPromptWrapper();
171
+ case "chatML":
172
+ return new ChatMLPromptWrapper();
173
+ default:
174
+ }
175
+ if (wrapper === "auto") {
176
+ const chatWrapper = getChatWrapperByBos(bos);
177
+ if (chatWrapper != null)
178
+ return new chatWrapper();
179
+ return new GeneralChatPromptWrapper();
106
180
  }
181
+ void (wrapper);
107
182
  throw new Error("Unknown wrapper: " + wrapper);
108
183
  }
109
184
  //# sourceMappingURL=ChatCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ChatCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ChatCommand.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { clearLlamaBuild } from "../../utils/clearLlamaBuild.js";
6
6
  import { setUsedBinFlag } from "../../utils/usedBinFlag.js";
7
7
  export const ClearCommand = {
8
8
  command: "clear [type]",
9
- describe: "Clear files created by llama-cli",
9
+ describe: "Clear files created by node-llama-cpp",
10
10
  builder(yargs) {
11
11
  return yargs
12
12
  .option("type", {
@@ -1 +1 @@
1
- {"version":3,"file":"ClearCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ClearCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAM1D,MAAM,CAAC,MAAM,YAAY,GAAwC;IAC7D,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,kCAAkC;IAC5C,OAAO,CAAC,KAAK;QACT,OAAO,KAAK;aACP,MAAM,CAAC,MAAM,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAA2B;YAC7D,OAAO,EAAE,KAA6B;YACtC,WAAW,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACX,CAAC;IACD,OAAO,EAAE,yBAAyB;CACrC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAAC,IAAI,EAAe;IAChE,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;QACrC,MAAM,OAAO,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACtC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACrC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC;SAC7C,EAAE,KAAK,IAAI,EAAE;YACV,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACN;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE;QACpC,MAAM,OAAO,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACrC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;SAC5C,EAAE,KAAK,IAAI,EAAE;YACV,MAAM,eAAe,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;KACN;IAED,MAAM,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"ClearCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ClearCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAM1D,MAAM,CAAC,MAAM,YAAY,GAAwC;IAC7D,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,uCAAuC;IACjD,OAAO,CAAC,KAAK;QACT,OAAO,KAAK;aACP,MAAM,CAAC,MAAM,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAkC;YACpE,OAAO,EAAE,KAA6B;YACtC,WAAW,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACX,CAAC;IACD,OAAO,EAAE,yBAAyB;CACrC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAAC,IAAI,EAAe;IAChE,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;QACrC,MAAM,OAAO,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACtC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACrC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC;SAC7C,EAAE,KAAK,IAAI,EAAE;YACV,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACN;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE;QACpC,MAAM,OAAO,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACrC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;SAC5C,EAAE,KAAK,IAAI,EAAE;YACV,MAAM,eAAe,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;KACN;IAED,MAAM,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAC7C,CAAC"}
@@ -4,8 +4,11 @@ type DownloadCommandArgs = {
4
4
  release: "latest" | string;
5
5
  arch?: string;
6
6
  nodeTarget?: string;
7
+ metal: boolean;
8
+ cuda: boolean;
7
9
  skipBuild?: boolean;
10
+ updateBinariesReleaseMetadata?: boolean;
8
11
  };
9
12
  export declare const DownloadCommand: CommandModule<object, DownloadCommandArgs>;
10
- export declare function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget, skipBuild }: DownloadCommandArgs): Promise<void>;
13
+ export declare function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget, metal, cuda, skipBuild, updateBinariesReleaseMetadata }: DownloadCommandArgs): Promise<void>;
11
14
  export {};
@@ -1,15 +1,15 @@
1
- import * as path from "path";
1
+ import process from "process";
2
+ import path from "path";
2
3
  import { Octokit } from "octokit";
3
- import * as fs from "fs-extra";
4
+ import fs from "fs-extra";
4
5
  import chalk from "chalk";
5
- import { DownloaderHelper } from "node-downloader-helper";
6
6
  import cliProgress from "cli-progress";
7
- import bytes from "bytes";
8
- import StreamZip from "node-stream-zip";
9
- import { defaultLlamaCppGitHubRepo, defaultLlamaCppRelease, llamaCppDirectory, tempDownloadDirectory } from "../../config.js";
7
+ import simpleGit from "simple-git";
8
+ import { defaultLlamaCppCudaSupport, defaultLlamaCppGitHubRepo, defaultLlamaCppMetalSupport, defaultLlamaCppRelease, llamaCppDirectory } from "../../config.js";
10
9
  import { compileLlamaCpp } from "../../utils/compileLLamaCpp.js";
11
10
  import withOra from "../../utils/withOra.js";
12
11
  import { clearTempFolder } from "../../utils/clearTempFolder.js";
12
+ import { setBinariesGithubRelease } from "../../utils/binariesGithubRelease.js";
13
13
  export const DownloadCommand = {
14
14
  command: "download",
15
15
  describe: "Download a release of llama.cpp and compile it",
@@ -23,32 +23,59 @@ export const DownloadCommand = {
23
23
  .option("release", {
24
24
  type: "string",
25
25
  default: defaultLlamaCppRelease,
26
- description: "The tag of the llama.cpp release to download. Can also be set via the NODE_LLAMA_CPP_REPO_RELEASE environment variable"
26
+ description: "The tag of the llama.cpp release to download. Set to \"latest\" to download the latest release. Can also be set via the NODE_LLAMA_CPP_REPO_RELEASE environment variable"
27
27
  })
28
28
  .option("arch", {
29
+ alias: "a",
29
30
  type: "string",
30
31
  description: "The architecture to compile llama.cpp for"
31
32
  })
32
33
  .option("nodeTarget", {
34
+ alias: "t",
33
35
  type: "string",
34
36
  description: "The Node.js version to compile llama.cpp for. Example: v18.0.0"
37
+ })
38
+ .option("metal", {
39
+ type: "boolean",
40
+ default: defaultLlamaCppMetalSupport,
41
+ hidden: process.platform !== "darwin",
42
+ description: "Compile llama.cpp with Metal support. Can also be set via the NODE_LLAMA_CPP_METAL environment variable"
43
+ })
44
+ .option("cuda", {
45
+ type: "boolean",
46
+ default: defaultLlamaCppCudaSupport,
47
+ description: "Compile llama.cpp with CUDA support. Can also be set via the NODE_LLAMA_CPP_CUDA environment variable"
35
48
  })
36
49
  .option("skipBuild", {
50
+ alias: "sb",
37
51
  type: "boolean",
38
52
  default: false,
39
53
  description: "Skip building llama.cpp after downloading it"
54
+ })
55
+ .option("updateBinariesReleaseMetadata", {
56
+ type: "boolean",
57
+ hidden: true,
58
+ default: false,
59
+ description: "Update the binariesGithubRelease.json file with the release of llama.cpp that was downloaded"
40
60
  });
41
61
  },
42
62
  handler: DownloadLlamaCppCommand
43
63
  };
44
- export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget, skipBuild }) {
64
+ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget, metal, cuda, skipBuild, updateBinariesReleaseMetadata }) {
45
65
  const octokit = new Octokit();
46
66
  const [githubOwner, githubRepo] = repo.split("/");
47
67
  console.log(`${chalk.yellow("Repo:")} ${repo}`);
48
68
  console.log(`${chalk.yellow("Release:")} ${release}`);
69
+ if (!skipBuild) {
70
+ if (metal && process.platform === "darwin") {
71
+ console.log(`${chalk.yellow("Metal:")} enabled`);
72
+ }
73
+ if (cuda) {
74
+ console.log(`${chalk.yellow("CUDA:")} enabled`);
75
+ }
76
+ }
49
77
  console.log();
50
78
  let githubRelease = null;
51
- let zipUrl;
52
79
  await withOra({
53
80
  loading: chalk.blue("Fetching llama.cpp info"),
54
81
  success: chalk.blue("Fetched llama.cpp info"),
@@ -75,22 +102,11 @@ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget,
75
102
  if (githubRelease == null) {
76
103
  throw new Error(`Failed to find release "${release}" of "${repo}"`);
77
104
  }
78
- if (githubRelease.data?.zipball_url == null) {
79
- throw new Error(`Failed to find a zip archive for release "${release}" of "${repo}"`);
105
+ if (githubRelease.data.tag_name == null) {
106
+ throw new Error(`Failed to find tag of release "${release}" of "${repo}"`);
80
107
  }
81
- const zipUrlResponse = await octokit.rest.repos.downloadZipballArchive({
82
- owner: githubOwner,
83
- repo: githubRepo,
84
- ref: githubRelease.data.target_commitish
85
- });
86
- if (zipUrlResponse.url == null)
87
- throw new Error(`Failed to get zip archive url for release "${release}" of "${repo}"`);
88
- zipUrl = zipUrlResponse.url;
89
108
  });
90
109
  await clearTempFolder();
91
- console.log(chalk.blue("Downloading zip file"));
92
- await fs.ensureDir(tempDownloadDirectory);
93
- await downloadFile(zipUrl, "llama.cpp.zip", tempDownloadDirectory);
94
110
  await withOra({
95
111
  loading: chalk.blue("Removing existing llama.cpp directory"),
96
112
  success: chalk.blue("Removed existing llama.cpp directory"),
@@ -98,28 +114,34 @@ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget,
98
114
  }, async () => {
99
115
  await fs.remove(llamaCppDirectory);
100
116
  });
117
+ console.log(chalk.blue("Cloning llama.cpp"));
118
+ await cloneTag(githubOwner, githubRepo, githubRelease.data.tag_name, llamaCppDirectory);
101
119
  await withOra({
102
- loading: chalk.blue("Extracting llama.cpp.zip file"),
103
- success: chalk.blue("Extracted llama.cpp.zip file"),
104
- fail: chalk.blue("Failed to extract llama.cpp.zip file")
120
+ loading: chalk.blue("Generating required files"),
121
+ success: chalk.blue("Generated required files"),
122
+ fail: chalk.blue("Failed to generate required files")
105
123
  }, async () => {
106
- await unzipLlamaReleaseZipFile(path.join(tempDownloadDirectory, "llama.cpp.zip"), llamaCppDirectory);
107
- });
108
- await withOra({
109
- loading: chalk.blue("Removing temporary files"),
110
- success: chalk.blue("Removed temporary files"),
111
- fail: chalk.blue("Failed to remove temporary files")
112
- }, async () => {
113
- await clearTempFolder();
124
+ const buildInfoTemplateFilePath = path.join(llamaCppDirectory, "scripts", "build-info.h.in");
125
+ const buildInfoResultFilePath = path.join(llamaCppDirectory, "build-info.h");
126
+ const buildInfoTemplateFile = await fs.readFile(buildInfoTemplateFilePath, "utf8");
127
+ const finalFile = buildInfoTemplateFile
128
+ .replaceAll("@BUILD_NUMBER@", "1")
129
+ .replaceAll("@BUILD_COMMIT@", githubRelease.data.tag_name);
130
+ await fs.writeFile(buildInfoResultFilePath, finalFile, "utf8");
114
131
  });
115
132
  if (!skipBuild) {
116
133
  console.log(chalk.blue("Compiling llama.cpp"));
117
134
  await compileLlamaCpp({
118
135
  arch: arch ? arch : undefined,
119
136
  nodeTarget: nodeTarget ? nodeTarget : undefined,
120
- setUsedBingFlag: true
137
+ setUsedBingFlag: true,
138
+ metal,
139
+ cuda
121
140
  });
122
141
  }
142
+ if (updateBinariesReleaseMetadata) {
143
+ await setBinariesGithubRelease(githubRelease.data.tag_name);
144
+ }
123
145
  console.log();
124
146
  console.log();
125
147
  console.log(`${chalk.yellow("Repo:")} ${repo}`);
@@ -127,53 +149,32 @@ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget,
127
149
  console.log();
128
150
  console.log(chalk.green("Done"));
129
151
  }
130
- async function downloadFile(url, fileName, directory) {
131
- const download = new DownloaderHelper(url, directory, {
132
- fileName: fileName,
133
- retry: {
134
- maxRetries: 10,
135
- delay: 1000 * 6
136
- }
137
- });
152
+ async function cloneTag(githubOwner, githubRepo, tag, directory) {
138
153
  const progressBar = new cliProgress.Bar({
139
154
  clearOnComplete: false,
140
155
  hideCursor: true,
141
156
  autopadding: true,
142
- format: `${chalk.bold("{filename}")} ${chalk.yellow("{percentage}%")} ${chalk.cyan("{bar}")} {speed}${chalk.grey("{eta_formatted}")}`
157
+ format: `${chalk.bold("Clone {repo}")} ${chalk.yellow("{percentage}%")} ${chalk.cyan("{bar}")} ${chalk.grey("{eta_formatted}")}`
143
158
  }, cliProgress.Presets.shades_classic);
144
159
  progressBar.start(100, 0, {
145
160
  speed: "",
146
- filename: fileName
161
+ repo: `${githubOwner}/${githubRepo}`
147
162
  });
148
- download.on("progress", (stats) => {
149
- progressBar.update(Math.floor((stats.downloaded / stats.total) * 10000) / 100, {
150
- speed: Number.isFinite(stats.speed) ? chalk.blue((bytes(stats.speed) + "/s").padEnd(10)) + chalk.grey(" | ") : ""
163
+ try {
164
+ await simpleGit({
165
+ progress({ progress, total, processed }) {
166
+ const totalProgress = (processed / 100) + (progress / total);
167
+ progressBar.update(Math.floor(totalProgress * 10000) / 100);
168
+ }
169
+ }).clone(`https://github.com/${githubOwner}/${githubRepo}.git`, directory, {
170
+ "--depth": 1,
171
+ "--branch": tag,
172
+ "--quiet": null
151
173
  });
152
- });
153
- download.on("end", () => {
174
+ }
175
+ finally {
154
176
  progressBar.update(100);
155
177
  progressBar.stop();
156
- });
157
- // errors are handled by the .start() method
158
- // this listener is here to not get an unhandled error exception
159
- download.on("error", () => { });
160
- await download.start();
161
- }
162
- async function unzipLlamaReleaseZipFile(zipFilePath, directory) {
163
- const zip = new StreamZip.async({ file: zipFilePath });
164
- const entires = await zip.entries();
165
- const rootFolderEntries = new Map();
166
- for (const entry of Object.values(entires)) {
167
- const entryPath = entry.name.split("/");
168
- const rootFolderName = entryPath[0];
169
- const rootFolderEntryCount = rootFolderEntries.get(rootFolderName) ?? 0;
170
- rootFolderEntries.set(rootFolderName, rootFolderEntryCount + 1);
171
178
  }
172
- const mostUsedRootFolderName = [...rootFolderEntries.keys()]
173
- .sort((a, b) => rootFolderEntries.get(b) - rootFolderEntries.get(a))
174
- .shift();
175
- if (mostUsedRootFolderName == null)
176
- throw new Error("Failed to find the root folder of the llama.cpp release zip file");
177
- await zip.extract(mostUsedRootFolderName, directory);
178
179
  }
179
180
  //# sourceMappingURL=DownloadCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/DownloadCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DownloadCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/DownloadCommand.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defaultLlamaCppGitHubRepo, defaultLlamaCppRelease, defaultSkipDownload } from "../../config.js";
1
+ import { defaultLlamaCppCudaSupport, defaultLlamaCppGitHubRepo, defaultLlamaCppMetalSupport, defaultLlamaCppRelease, defaultSkipDownload } from "../../config.js";
2
2
  import { getPrebuildBinPath } from "../../utils/getBin.js";
3
3
  import { DownloadLlamaCppCommand } from "./DownloadCommand.js";
4
4
  export const OnPostInstallCommand = {
@@ -12,7 +12,9 @@ export const OnPostInstallCommand = {
12
12
  try {
13
13
  await DownloadLlamaCppCommand({
14
14
  repo: defaultLlamaCppGitHubRepo,
15
- release: defaultLlamaCppRelease
15
+ release: defaultLlamaCppRelease,
16
+ metal: defaultLlamaCppMetalSupport,
17
+ cuda: defaultLlamaCppCudaSupport
16
18
  });
17
19
  }
18
20
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"OnPostInstallCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/OnPostInstallCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,yBAAyB,EAAE,sBAAsB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AAI7D,MAAM,CAAC,MAAM,oBAAoB,GAAgD;IAC7E,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,KAAK;IACf,KAAK,CAAC,OAAO;QACT,IAAI,mBAAmB;YACnB,OAAO;QAEX,IAAI,MAAM,kBAAkB,EAAE,IAAI,IAAI;YAClC,OAAO;QAEX,IAAI;YACA,MAAM,uBAAuB,CAAC;gBAC1B,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,sBAAsB;aAClC,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;IACL,CAAC;CACJ,CAAC"}
1
+ {"version":3,"file":"OnPostInstallCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/OnPostInstallCommand.ts"],"names":[],"mappings":"AACA,OAAO,EACH,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,mBAAmB,EAClI,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AAI7D,MAAM,CAAC,MAAM,oBAAoB,GAAgD;IAC7E,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,KAAK;IACf,KAAK,CAAC,OAAO;QACT,IAAI,mBAAmB;YACnB,OAAO;QAEX,IAAI,MAAM,kBAAkB,EAAE,IAAI,IAAI;YAClC,OAAO;QAEX,IAAI;YACA,MAAM,uBAAuB,CAAC;gBAC1B,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,sBAAsB;gBAC/B,KAAK,EAAE,2BAA2B;gBAClC,IAAI,EAAE,0BAA0B;aACnC,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;IACL,CAAC;CACJ,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  export declare const llamaDirectory: string;
2
2
  export declare const llamaBinsDirectory: string;
3
+ export declare const llamaBinsGrammarsDirectory: string;
3
4
  export declare const llamaCppDirectory: string;
5
+ export declare const llamaCppGrammarsDirectory: string;
4
6
  export declare const tempDownloadDirectory: string;
5
7
  export declare const usedBinFlagJsonPath: string;
8
+ export declare const binariesGithubReleasePath: string;
6
9
  export declare const defaultLlamaCppGitHubRepo: string;
7
10
  export declare const defaultLlamaCppRelease: string;
11
+ export declare const defaultLlamaCppMetalSupport: boolean;
12
+ export declare const defaultLlamaCppCudaSupport: boolean;
8
13
  export declare const defaultSkipDownload: boolean;
9
14
  export declare const defaultChatSystemPrompt: string;
package/dist/config.js CHANGED
@@ -3,19 +3,29 @@ import * as path from "path";
3
3
  import * as os from "os";
4
4
  import envVar from "env-var";
5
5
  import * as uuid from "uuid";
6
+ import { getBinariesGithubRelease } from "./utils/binariesGithubRelease.js";
6
7
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
8
  const env = envVar.from(process.env);
8
9
  export const llamaDirectory = path.join(__dirname, "..", "llama");
9
10
  export const llamaBinsDirectory = path.join(__dirname, "..", "llamaBins");
11
+ export const llamaBinsGrammarsDirectory = path.join(__dirname, "..", "llama", "grammars");
10
12
  export const llamaCppDirectory = path.join(llamaDirectory, "llama.cpp");
13
+ export const llamaCppGrammarsDirectory = path.join(llamaDirectory, "llama.cpp", "grammars");
11
14
  export const tempDownloadDirectory = path.join(os.tmpdir(), "node-llama-cpp", uuid.v4());
12
15
  export const usedBinFlagJsonPath = path.join(llamaDirectory, "usedBin.json");
16
+ export const binariesGithubReleasePath = path.join(llamaDirectory, "binariesGithubRelease.json");
13
17
  export const defaultLlamaCppGitHubRepo = env.get("NODE_LLAMA_CPP_REPO")
14
18
  .default("ggerganov/llama.cpp")
15
19
  .asString();
16
20
  export const defaultLlamaCppRelease = env.get("NODE_LLAMA_CPP_REPO_RELEASE")
17
- .default("latest")
21
+ .default(await getBinariesGithubRelease())
18
22
  .asString();
23
+ export const defaultLlamaCppMetalSupport = env.get("NODE_LLAMA_CPP_METAL")
24
+ .default("false")
25
+ .asBool();
26
+ export const defaultLlamaCppCudaSupport = env.get("NODE_LLAMA_CPP_CUDA")
27
+ .default("false")
28
+ .asBool();
19
29
  export const defaultSkipDownload = env.get("NODE_LLAMA_CPP_SKIP_DOWNLOAD")
20
30
  .default("false")
21
31
  .asBool();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAGrC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC;KAClE,OAAO,CAAC,qBAAqB,CAAC;KAC9B,QAAQ,EAAE,CAAC;AAChB,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC;KACvE,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,EAAE,CAAC;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,EAAE,CAAC;AACd,MAAM,CAAC,MAAM,uBAAuB,GAAG,+FAA+F;IAClI,+HAA+H;IAC/H,mFAAmF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAE1E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAGrC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC;KAClE,OAAO,CAAC,qBAAqB,CAAC;KAC9B,QAAQ,EAAE,CAAC;AAChB,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC;KACvE,OAAO,CAAC,MAAM,wBAAwB,EAAE,CAAC;KACzC,QAAQ,EAAE,CAAC;AAChB,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,EAAE,CAAC;AACd,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,EAAE,CAAC;AACd,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,EAAE,CAAC;AACd,MAAM,CAAC,MAAM,uBAAuB,GAAG,+FAA+F;IAClI,+HAA+H;IAC/H,mFAAmF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { LlamaGrammar } from "llamaEvaluator/LlamaGrammar.js";
1
2
  import { LlamaChatSession } from "./llamaEvaluator/LlamaChatSession.js";
2
3
  import { LlamaModel } from "./llamaEvaluator/LlamaModel.js";
3
4
  import { AbortError } from "./AbortError.js";
@@ -6,4 +7,7 @@ import { EmptyChatPromptWrapper } from "./chatWrappers/EmptyChatPromptWrapper.js
6
7
  import { LlamaChatPromptWrapper } from "./chatWrappers/LlamaChatPromptWrapper.js";
7
8
  import { GeneralChatPromptWrapper } from "./chatWrappers/GeneralChatPromptWrapper.js";
8
9
  import { LlamaContext } from "./llamaEvaluator/LlamaContext.js";
9
- export { LlamaModel, LlamaContext, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper, GeneralChatPromptWrapper };
10
+ import { ChatMLPromptWrapper } from "./chatWrappers/ChatMLPromptWrapper.js";
11
+ import { getChatWrapperByBos } from "./chatWrappers/createChatWrapperByBos.js";
12
+ import { type Token } from "./types.js";
13
+ export { LlamaModel, LlamaGrammar, LlamaContext, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper, GeneralChatPromptWrapper, ChatMLPromptWrapper, getChatWrapperByBos, type Token };
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { LlamaGrammar } from "llamaEvaluator/LlamaGrammar.js";
1
2
  import { LlamaChatSession } from "./llamaEvaluator/LlamaChatSession.js";
2
3
  import { LlamaModel } from "./llamaEvaluator/LlamaModel.js";
3
4
  import { AbortError } from "./AbortError.js";
@@ -6,5 +7,7 @@ import { EmptyChatPromptWrapper } from "./chatWrappers/EmptyChatPromptWrapper.js
6
7
  import { LlamaChatPromptWrapper } from "./chatWrappers/LlamaChatPromptWrapper.js";
7
8
  import { GeneralChatPromptWrapper } from "./chatWrappers/GeneralChatPromptWrapper.js";
8
9
  import { LlamaContext } from "./llamaEvaluator/LlamaContext.js";
9
- export { LlamaModel, LlamaContext, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper, GeneralChatPromptWrapper };
10
+ import { ChatMLPromptWrapper } from "./chatWrappers/ChatMLPromptWrapper.js";
11
+ import { getChatWrapperByBos } from "./chatWrappers/createChatWrapperByBos.js";
12
+ export { LlamaModel, LlamaGrammar, LlamaContext, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper, GeneralChatPromptWrapper, ChatMLPromptWrapper, getChatWrapperByBos };
10
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAC,UAAU,EAAC,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAC,wBAAwB,EAAC,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAG9D,OAAO,EACH,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EAC3B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAC,gBAAgB,EAAC,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAC,UAAU,EAAC,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAC,wBAAwB,EAAC,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAC,mBAAmB,EAAC,MAAM,0CAA0C,CAAC;AAK7E,OAAO,EACH,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EAEtB,CAAC"}