@realtimex/node-llama-cpp 0.1.0 → 0.2.4

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 (33) hide show
  1. package/README.md +12 -12
  2. package/bins/_linux-arm64.moved.txt +1 -0
  3. package/bins/_linux-armv7l.moved.txt +1 -0
  4. package/bins/_linux-x64-cuda.moved.txt +1 -0
  5. package/bins/_linux-x64-vulkan.moved.txt +1 -0
  6. package/bins/_linux-x64.moved.txt +1 -0
  7. package/bins/_mac-arm64-metal.moved.txt +1 -0
  8. package/bins/_mac-x64.moved.txt +1 -0
  9. package/bins/_win-arm64.moved.txt +1 -0
  10. package/bins/_win-x64-cuda.moved.txt +1 -0
  11. package/bins/_win-x64-vulkan.moved.txt +1 -0
  12. package/bins/_win-x64.moved.txt +1 -0
  13. package/dist/bindings/utils/compileLLamaCpp.js +22 -21
  14. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  15. package/dist/bindings/utils/prebuiltBinariesGithubReleaseAssets.d.ts +25 -0
  16. package/dist/bindings/utils/prebuiltBinariesGithubReleaseAssets.js +75 -0
  17. package/dist/bindings/utils/prebuiltBinariesGithubReleaseAssets.js.map +1 -0
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/llama/binariesGithubRelease.json +1 -1
  20. package/llama/gitRelease.bundle +0 -0
  21. package/llama/grammars/README.md +409 -0
  22. package/llama/grammars/arithmetic.gbnf +6 -0
  23. package/llama/grammars/c.gbnf +42 -0
  24. package/llama/grammars/chess.gbnf +13 -0
  25. package/llama/grammars/english.gbnf +6 -0
  26. package/llama/grammars/japanese.gbnf +7 -0
  27. package/llama/grammars/json.gbnf +25 -0
  28. package/llama/grammars/json_arr.gbnf +34 -0
  29. package/llama/grammars/list.gbnf +4 -0
  30. package/llama/llama.cpp.info.json +4 -0
  31. package/llama/toolchains/llvm.win32.host-x64.target-x64.cmake +0 -5
  32. package/package.json +18 -17
  33. package/templates/package.json +0 -10
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <div align="center">
2
- <a href="https://node-llama-cpp.withcat.ai" target="_blank"><img alt="node-llama-cpp Logo" src="https://raw.githubusercontent.com/withcatai/node-llama-cpp/master/assets/logo.v3.roundEdges.avif" width="360px" /></a>
2
+ <a href="https://node-llama-cpp.withcat.ai" target="_blank"><img alt="node-llama-cpp Logo" src="https://raw.githubusercontent.com/therealtimex/node-llama-cpp/master/assets/logo.v3.roundEdges.avif" width="360px" /></a>
3
3
  <h1>node-llama-cpp</h1>
4
4
  <p>Run AI models locally on your machine</p>
5
5
  <sub>Pre-built bindings are provided with a fallback to building from source with cmake</sub>
@@ -8,10 +8,10 @@
8
8
 
9
9
  <div align="center" class="main-badges">
10
10
 
11
- [![Build](https://github.com/withcatai/node-llama-cpp/actions/workflows/build.yml/badge.svg)](https://github.com/withcatai/node-llama-cpp/actions/workflows/build.yml)
12
- [![License](https://badgen.net/badge/color/MIT/green?label=license)](https://www.npmjs.com/package/node-llama-cpp)
13
- [![Types](https://badgen.net/badge/color/TypeScript/blue?label=types)](https://www.npmjs.com/package/node-llama-cpp)
14
- [![Version](https://badgen.net/npm/v/node-llama-cpp)](https://www.npmjs.com/package/node-llama-cpp)
11
+ [![Build](https://github.com/therealtimex/node-llama-cpp/actions/workflows/build.yml/badge.svg)](https://github.com/therealtimex/node-llama-cpp/actions/workflows/build.yml)
12
+ [![License](https://badgen.net/badge/color/MIT/green?label=license)](https://www.npmjs.com/package/@realtimex/node-llama-cpp)
13
+ [![Types](https://badgen.net/badge/color/TypeScript/blue?label=types)](https://www.npmjs.com/package/@realtimex/node-llama-cpp)
14
+ [![Version](https://badgen.net/npm/v/@realtimex/node-llama-cpp)](https://www.npmjs.com/package/@realtimex/node-llama-cpp)
15
15
 
16
16
  </div>
17
17
 
@@ -37,30 +37,30 @@
37
37
  * [API reference](https://node-llama-cpp.withcat.ai/api/functions/getLlama)
38
38
  * [CLI help](https://node-llama-cpp.withcat.ai/cli/)
39
39
  * [Blog](https://node-llama-cpp.withcat.ai/blog/)
40
- * [Changelog](https://github.com/withcatai/node-llama-cpp/releases)
41
- * [Roadmap](https://github.com/orgs/withcatai/projects/1)
40
+ * [Changelog](https://github.com/therealtimex/node-llama-cpp/releases)
42
41
 
43
42
  ## Try It Without Installing
44
43
  Chat with a model in your terminal using [a single command](https://node-llama-cpp.withcat.ai/cli/chat):
45
44
  ```bash
46
- npx -y node-llama-cpp chat
45
+ npx -y @realtimex/node-llama-cpp chat
47
46
  ```
48
47
 
49
48
  ## Installation
50
49
  ```bash
51
- npm install node-llama-cpp
50
+ npm install @realtimex/node-llama-cpp
52
51
  ```
53
52
 
54
53
  [This package comes with pre-built binaries](https://node-llama-cpp.withcat.ai/guide/building-from-source) for macOS, Linux and Windows.
55
54
 
56
- If binaries are not available for your platform, it'll fallback to download a release of `llama.cpp` and build it from source with `cmake`.
55
+ On `linux-x64` and `win-x64` with CUDA, the large fallback CUDA backend may be downloaded from the matching GitHub release the first time it is needed.
56
+ If pre-built binaries are not available for your platform, or the downloaded CUDA fallback backend still does not work with your machine, it'll fallback to download a release of `llama.cpp` and build it from source with `cmake`.
57
57
  To disable this behavior, set the environment variable `NODE_LLAMA_CPP_SKIP_DOWNLOAD` to `true`.
58
58
 
59
59
  ## Usage
60
60
  ```typescript
61
61
  import {fileURLToPath} from "url";
62
62
  import path from "path";
63
- import {getLlama, LlamaChatSession} from "node-llama-cpp";
63
+ import {getLlama, LlamaChatSession} from "@realtimex/node-llama-cpp";
64
64
 
65
65
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
66
66
 
@@ -100,7 +100,7 @@ To contribute to `node-llama-cpp` read the [contribution guide](https://node-lla
100
100
  <br />
101
101
 
102
102
  <div align="center" width="360">
103
- <img alt="Star please" src="https://raw.githubusercontent.com/withcatai/node-llama-cpp/master/assets/star.please.roundEdges.png" width="360" margin="auto" />
103
+ <img alt="Star please" src="https://raw.githubusercontent.com/therealtimex/node-llama-cpp/master/assets/star.please.roundEdges.png" width="360" margin="auto" />
104
104
  <br/>
105
105
  <p align="right">
106
106
  <i>If you like this repo, star it ✨</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-linux-arm64"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-linux-armv7l"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-linux-x64-cuda"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-linux-x64-vulkan"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-linux-x64"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-mac-arm64-metal"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-mac-x64"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-win-arm64"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-win-x64-cuda"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-win-x64-vulkan"
@@ -0,0 +1 @@
1
+ Moved to package "@realtimex/node-llama-cpp-win-x64"
@@ -21,6 +21,7 @@ import { testCmakeBinary } from "./testCmakeBinary.js";
21
21
  import { getCudaNvccPaths } from "./detectAvailableComputeLayers.js";
22
22
  import { detectWindowsBuildTools } from "./detectBuildTools.js";
23
23
  import { asyncSome } from "./asyncSome.js";
24
+ import { ensurePrebuiltBinariesGithubReleaseAssetForBuildOptions } from "./prebuiltBinariesGithubReleaseAssets.js";
24
25
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
25
26
  const buildConfigType = "Release";
26
27
  const requiresMsvcOnWindowsFlags = ["blas", "cann", "cuda", "hip", "kompute", "musa", "sycl", "opencl"]
@@ -404,14 +405,14 @@ function getPrebuiltBinariesPackageDirectoryForBuildOptions(buildOptions) {
404
405
  return null;
405
406
  }
406
407
  }
407
- async function getBinariesPathFromModulesWithExtModule(moduleImport, extModuleImport) {
408
- const [moduleBinsDir, extModuleBinsDir] = await Promise.all([
409
- getBinariesPathFromModules(moduleImport),
410
- getBinariesPathFromModules(extModuleImport)
411
- ]);
408
+ async function getBinariesPathFromModulesWithExtModule(currentBuildOptions, moduleImport, extModuleImport) {
409
+ const moduleBinsDir = await getBinariesPathFromModules(moduleImport);
412
410
  if (moduleBinsDir == null)
413
411
  return null;
414
- else if (extModuleBinsDir == null)
412
+ let extModuleBinsDir = await getBinariesPathFromModules(extModuleImport);
413
+ if (extModuleBinsDir == null)
414
+ extModuleBinsDir = await ensurePrebuiltBinariesGithubReleaseAssetForBuildOptions(currentBuildOptions);
415
+ if (extModuleBinsDir == null)
415
416
  return moduleBinsDir;
416
417
  return {
417
418
  binsDir: moduleBinsDir,
@@ -422,51 +423,51 @@ function getPrebuiltBinariesPackageDirectoryForBuildOptions(buildOptions) {
422
423
  if (buildOptions.platform === "mac") {
423
424
  if (buildOptions.arch === "arm64" && buildOptions.gpu === "metal")
424
425
  // @ts-ignore
425
- return getBinariesPathFromModules(() => import("@node-llama-cpp/mac-arm64-metal"));
426
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-mac-arm64-metal"));
426
427
  else if (buildOptions.arch === "x64" && buildOptions.gpu === false)
427
428
  // @ts-ignore
428
- return getBinariesPathFromModules(() => import("@node-llama-cpp/mac-x64"));
429
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-mac-x64"));
429
430
  }
430
431
  else if (buildOptions.platform === "linux") {
431
432
  if (buildOptions.arch === "x64") {
432
433
  if (buildOptions.gpu === "cuda")
433
- return getBinariesPathFromModulesWithExtModule(
434
+ return getBinariesPathFromModulesWithExtModule(buildOptions,
434
435
  // @ts-ignore
435
- () => import("@node-llama-cpp/linux-x64-cuda"),
436
+ () => import("@realtimex/node-llama-cpp-linux-x64-cuda"),
436
437
  // @ts-ignore
437
- () => import("@node-llama-cpp/linux-x64-cuda-ext"));
438
+ () => import("@realtimex/node-llama-cpp-linux-x64-cuda-ext"));
438
439
  else if (buildOptions.gpu === "vulkan")
439
440
  // @ts-ignore
440
- return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-x64-vulkan"));
441
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-linux-x64-vulkan"));
441
442
  else if (buildOptions.gpu === false)
442
443
  // @ts-ignore
443
- return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-x64"));
444
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-linux-x64"));
444
445
  }
445
446
  else if (buildOptions.arch === "arm64")
446
447
  // @ts-ignore
447
- return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-arm64"));
448
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-linux-arm64"));
448
449
  else if (buildOptions.arch === "arm")
449
450
  // @ts-ignore
450
- return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-armv7l"));
451
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-linux-armv7l"));
451
452
  }
452
453
  else if (buildOptions.platform === "win") {
453
454
  if (buildOptions.arch === "x64") {
454
455
  if (buildOptions.gpu === "cuda")
455
- return getBinariesPathFromModulesWithExtModule(
456
+ return getBinariesPathFromModulesWithExtModule(buildOptions,
456
457
  // @ts-ignore
457
- () => import("@node-llama-cpp/win-x64-cuda"),
458
+ () => import("@realtimex/node-llama-cpp-win-x64-cuda"),
458
459
  // @ts-ignore
459
- () => import("@node-llama-cpp/win-x64-cuda-ext"));
460
+ () => import("@realtimex/node-llama-cpp-win-x64-cuda-ext"));
460
461
  else if (buildOptions.gpu === "vulkan")
461
462
  // @ts-ignore
462
- return getBinariesPathFromModules(() => import("@node-llama-cpp/win-x64-vulkan"));
463
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-win-x64-vulkan"));
463
464
  else if (buildOptions.gpu === false)
464
465
  // @ts-ignore
465
- return getBinariesPathFromModules(() => import("@node-llama-cpp/win-x64"));
466
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-win-x64"));
466
467
  }
467
468
  else if (buildOptions.arch === "arm64")
468
469
  // @ts-ignore
469
- return getBinariesPathFromModules(() => import("@node-llama-cpp/win-arm64"));
470
+ return getBinariesPathFromModules(() => import("@realtimex/node-llama-cpp-win-arm64"));
470
471
  }
471
472
  /* eslint-enable import/no-unresolved */
472
473
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../../src/bindings/utils/compileLLamaCpp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../../src/bindings/utils/compileLLamaCpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { BuildGpu } from "../types.js";
2
+ import { BinaryPlatform } from "./getPlatform.js";
3
+ type PrebuiltBinariesGithubReleaseAsset = {
4
+ platform: BinaryPlatform;
5
+ arch: typeof process.arch;
6
+ gpu: BuildGpu;
7
+ folderName: string;
8
+ fallbackBinaryName: string;
9
+ assetFileName: string;
10
+ };
11
+ export declare function getPrebuiltBinariesGithubReleaseAssets(): PrebuiltBinariesGithubReleaseAsset[];
12
+ export declare function getPrebuiltBinariesGithubReleaseAssetForBuildOptions(buildOptions: {
13
+ platform: BinaryPlatform;
14
+ arch: typeof process.arch;
15
+ gpu: BuildGpu;
16
+ }): PrebuiltBinariesGithubReleaseAsset | null;
17
+ export declare function getPrebuiltBinariesGithubReleaseTag(packageVersion: string): string;
18
+ export declare function getPrebuiltBinariesGithubReleaseAssetDownloadUrl(packageVersion: string, assetFileName: string): string;
19
+ export declare function ensurePrebuiltBinariesGithubReleaseAssetForBuildOptions(buildOptions: {
20
+ platform: BinaryPlatform;
21
+ arch: typeof process.arch;
22
+ gpu: BuildGpu;
23
+ progressLogs?: boolean;
24
+ }): Promise<string | null>;
25
+ export {};
@@ -0,0 +1,75 @@
1
+ import path from "path";
2
+ import fs from "fs-extra";
3
+ import { cliHomedirDirectory } from "../../config.js";
4
+ import { getConsoleLogPrefix } from "../../utils/getConsoleLogPrefix.js";
5
+ import { getModuleVersion } from "../../utils/getModuleVersion.js";
6
+ const builtinPrebuiltBinariesGitHubRepo = "therealtimex/node-llama-cpp";
7
+ const prebuiltBinariesGithubReleaseAssetsCacheDirectory = path.join(cliHomedirDirectory, "githubReleaseAssets");
8
+ const prebuiltBinariesGithubReleaseAssets = Object.freeze([
9
+ {
10
+ platform: "linux",
11
+ arch: "x64",
12
+ gpu: "cuda",
13
+ folderName: "linux-x64-cuda",
14
+ fallbackBinaryName: "libggml-cuda.so",
15
+ assetFileName: "linux-x64-cuda-ext-libggml-cuda.so"
16
+ },
17
+ {
18
+ platform: "win",
19
+ arch: "x64",
20
+ gpu: "cuda",
21
+ folderName: "win-x64-cuda",
22
+ fallbackBinaryName: "ggml-cuda.dll",
23
+ assetFileName: "win-x64-cuda-ext-ggml-cuda.dll"
24
+ }
25
+ ]);
26
+ export function getPrebuiltBinariesGithubReleaseAssets() {
27
+ return [...prebuiltBinariesGithubReleaseAssets];
28
+ }
29
+ export function getPrebuiltBinariesGithubReleaseAssetForBuildOptions(buildOptions) {
30
+ return prebuiltBinariesGithubReleaseAssets.find((asset) => (asset.platform === buildOptions.platform &&
31
+ asset.arch === buildOptions.arch &&
32
+ asset.gpu === buildOptions.gpu)) ?? null;
33
+ }
34
+ export function getPrebuiltBinariesGithubReleaseTag(packageVersion) {
35
+ return `realtimex-v${packageVersion}`;
36
+ }
37
+ export function getPrebuiltBinariesGithubReleaseAssetDownloadUrl(packageVersion, assetFileName) {
38
+ const releaseTag = getPrebuiltBinariesGithubReleaseTag(packageVersion);
39
+ return (`https://github.com/${builtinPrebuiltBinariesGitHubRepo}/releases/download/` +
40
+ `${encodeURIComponent(releaseTag)}/${encodeURIComponent(assetFileName)}`);
41
+ }
42
+ export async function ensurePrebuiltBinariesGithubReleaseAssetForBuildOptions(buildOptions) {
43
+ const asset = getPrebuiltBinariesGithubReleaseAssetForBuildOptions(buildOptions);
44
+ if (asset == null)
45
+ return null;
46
+ const packageVersion = await getModuleVersion();
47
+ const extBinsDir = path.join(prebuiltBinariesGithubReleaseAssetsCacheDirectory, packageVersion);
48
+ const fallbackBinaryPath = path.join(extBinsDir, asset.folderName, "fallback", asset.fallbackBinaryName);
49
+ if (await fs.pathExists(fallbackBinaryPath))
50
+ return extBinsDir;
51
+ const downloadUrl = getPrebuiltBinariesGithubReleaseAssetDownloadUrl(packageVersion, asset.assetFileName);
52
+ const tempFallbackBinaryPath = fallbackBinaryPath + `.${process.pid}.download`;
53
+ if (buildOptions.progressLogs === true)
54
+ console.info(getConsoleLogPrefix() + `Downloading CUDA fallback backend from "${downloadUrl}"`);
55
+ try {
56
+ await fs.ensureDir(path.dirname(fallbackBinaryPath));
57
+ await fs.remove(tempFallbackBinaryPath);
58
+ const res = await fetch(downloadUrl);
59
+ if (!res.ok)
60
+ return null;
61
+ const assetContents = Buffer.from(await res.arrayBuffer());
62
+ await fs.writeFile(tempFallbackBinaryPath, assetContents);
63
+ await fs.move(tempFallbackBinaryPath, fallbackBinaryPath, { overwrite: true });
64
+ return extBinsDir;
65
+ }
66
+ catch (err) {
67
+ if (buildOptions.progressLogs === true)
68
+ console.warn(getConsoleLogPrefix() + `Failed to download CUDA fallback backend "${asset.assetFileName}"`, err);
69
+ return null;
70
+ }
71
+ finally {
72
+ await fs.remove(tempFallbackBinaryPath);
73
+ }
74
+ }
75
+ //# sourceMappingURL=prebuiltBinariesGithubReleaseAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prebuiltBinariesGithubReleaseAssets.js","sourceRoot":"","sources":["../../../src/bindings/utils/prebuiltBinariesGithubReleaseAssets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../src/index.ts","../src/chatwrapper.ts","../src/apidocsindex.ts","../src/commands.ts","../src/config.ts","../src/consts.ts","../src/state.ts","../src/types.ts","../src/bindings/addontypes.ts","../src/bindings/llama.ts","../src/bindings/consts.ts","../src/bindings/getllama.ts","../src/bindings/types.ts","../src/bindings/utils/memoryorchestrator.ts","../src/bindings/utils/nobinaryfounderror.ts","../src/bindings/utils/asyncevery.ts","../src/bindings/utils/asyncsome.ts","../src/bindings/utils/binariesgithubrelease.ts","../src/bindings/utils/clearalllocalbuilds.ts","../src/bindings/utils/clonellamacpprepo.ts","../src/bindings/utils/compilellamacpp.ts","../src/bindings/utils/detectavailablecomputelayers.ts","../src/bindings/utils/detectbuildtools.ts","../src/bindings/utils/detectglibc.ts","../src/bindings/utils/disposebeforeexit.ts","../src/bindings/utils/getbestcomputelayersavailable.ts","../src/bindings/utils/getbuildfoldernameforbuildoptions.ts","../src/bindings/utils/getcanuseprebuiltbinaries.ts","../src/bindings/utils/getexampleusagecodeofgetllama.ts","../src/bindings/utils/getgputypestouseforoption.ts","../src/bindings/utils/getlinuxdistroinfo.ts","../src/bindings/utils/getllamagputypes.ts","../src/bindings/utils/getllamawithoutbackend.ts","../src/bindings/utils/getplatform.ts","../src/bindings/utils/getplatforminfo.ts","../src/bindings/utils/hasbuildingfromsourcedependenciesinstalled.ts","../src/bindings/utils/hasfileinpath.ts","../src/bindings/utils/lastbuildinfo.ts","../src/bindings/utils/logbinaryusageexampletoconsole.ts","../src/bindings/utils/logdistroinstallinstruction.ts","../src/bindings/utils/resolveactualbindingbinarypath.ts","../src/bindings/utils/resolvecustomcmakeoptions.ts","../src/bindings/utils/testbindingbinary.ts","../src/bindings/utils/testcmakebinary.ts","../src/chatwrappers/alpacachatwrapper.ts","../src/chatwrappers/chatmlchatwrapper.ts","../src/chatwrappers/deepseekchatwrapper.ts","../src/chatwrappers/emptychatwrapper.ts","../src/chatwrappers/falconchatwrapper.ts","../src/chatwrappers/functionarychatwrapper.ts","../src/chatwrappers/gemmachatwrapper.ts","../src/chatwrappers/generalchatwrapper.ts","../src/chatwrappers/harmonychatwrapper.ts","../src/chatwrappers/llama2chatwrapper.ts","../src/chatwrappers/llama3chatwrapper.ts","../src/chatwrappers/llama3_1chatwrapper.ts","../src/chatwrappers/llama3_2lightweightchatwrapper.ts","../src/chatwrappers/mistralchatwrapper.ts","../src/chatwrappers/qwenchatwrapper.ts","../src/chatwrappers/seedchatwrapper.ts","../src/chatwrappers/generic/jinjatemplatechatwrapper.ts","../src/chatwrappers/generic/templatechatwrapper.ts","../src/chatwrappers/generic/utils/uniqueidgenerator.ts","../src/chatwrappers/generic/utils/chathistoryfunctioncallmessagetemplate.ts","../src/chatwrappers/generic/utils/extractfunctioncallsettingsfromjinjatemplate.ts","../src/chatwrappers/generic/utils/extractsegmentsettingsfromtokenizerandchattemplate.ts","../src/chatwrappers/generic/utils/getfirstvalidresult.ts","../src/chatwrappers/generic/utils/squashchathistoryitems.ts","../src/chatwrappers/generic/utils/templatesegmentoptionstochatwrappersettings.ts","../src/chatwrappers/utils/chatmodelfunctionsdocumentationgenerator.ts","../src/chatwrappers/utils/chunkchatitems.ts","../src/chatwrappers/utils/getmodellinagenames.ts","../src/chatwrappers/utils/isjinjatemplateequivalenttospecializedchatwrapper.ts","../src/chatwrappers/utils/isllama3_2lightweightmodel.ts","../src/chatwrappers/utils/jsondumps.ts","../src/chatwrappers/utils/resolvechatwrapper.ts","../src/cli/cli.ts","../src/cli/projecttemplates.ts","../src/cli/recommendedmodels.ts","../src/cli/startcreatecli.ts","../src/cli/commands/chatcommand.ts","../src/cli/commands/completecommand.ts","../src/cli/commands/debugcommand.ts","../src/cli/commands/infillcommand.ts","../src/cli/commands/initcommand.ts","../src/cli/commands/onpostinstallcommand.ts","../src/cli/commands/pullcommand.ts","../src/cli/commands/inspect/inspectcommand.ts","../src/cli/commands/inspect/commands/inspectestimatecommand.ts","../src/cli/commands/inspect/commands/inspectggufcommand.ts","../src/cli/commands/inspect/commands/inspectgpucommand.ts","../src/cli/commands/inspect/commands/inspectmeasurecommand.ts","../src/cli/commands/source/sourcecommand.ts","../src/cli/commands/source/commands/buildcommand.ts","../src/cli/commands/source/commands/clearcommand.ts","../src/cli/commands/source/commands/downloadcommand.ts","../src/cli/utils/consoleinteraction.ts","../src/cli/utils/consoletable.ts","../src/cli/utils/basicchoosefromlistconsoleinteraction.ts","../src/cli/utils/consolepromptquestion.ts","../src/cli/utils/getreadablepath.ts","../src/cli/utils/interactivelyaskformodel.ts","../src/cli/utils/isrunningunderrosetta.ts","../src/cli/utils/logusedgputypeoption.ts","../src/cli/utils/packagejsonconfig.ts","../src/cli/utils/packagemanager.ts","../src/cli/utils/parsextcarg.ts","../src/cli/utils/printcommoninfolines.ts","../src/cli/utils/printinfoline.ts","../src/cli/utils/printmodeldestination.ts","../src/cli/utils/projecttemplates.ts","../src/cli/utils/rendermodelcompatibilitypercentagewithcolors.ts","../src/cli/utils/resolvecommandggufpath.ts","../src/cli/utils/resolveheaderflag.ts","../src/cli/utils/resolvemodelrecommendationfileoptions.ts","../src/cli/utils/resolvenpmrcconfig.ts","../src/cli/utils/splitansitolines.ts","../src/cli/utils/tobytes.ts","../src/cli/utils/withclicommanddescriptiondocsurl.ts","../src/evaluator/llamacompletion.ts","../src/evaluator/llamaembedding.ts","../src/evaluator/llamaembeddingcontext.ts","../src/evaluator/llamagrammar.ts","../src/evaluator/llamagrammarevaluationstate.ts","../src/evaluator/llamajsonschemagrammar.ts","../src/evaluator/llamarankingcontext.ts","../src/evaluator/tokenbias.ts","../src/evaluator/tokenmeter.ts","../src/evaluator/llamachat/llamachat.ts","../src/evaluator/llamachat/utils/functioncallnamegrammar.ts","../src/evaluator/llamachat/utils/functioncallparamsgrammar.ts","../src/evaluator/llamachat/utils/llamafunctioncallvalidationerror.ts","../src/evaluator/llamachat/utils/contextshiftstrategies/erasefirstresponseandkeepfirstsystemchatcontextshiftstrategy.ts","../src/evaluator/llamachatsession/llamachatsession.ts","../src/evaluator/llamachatsession/utils/llamachatsessionpromptcompletionengine.ts","../src/evaluator/llamachatsession/utils/definechatsessionfunction.ts","../src/evaluator/llamacontext/llamacontext.ts","../src/evaluator/llamacontext/llamacontextsequencecheckpoints.ts","../src/evaluator/llamacontext/llamasampler.ts","../src/evaluator/llamacontext/tokenpredictor.ts","../src/evaluator/llamacontext/types.ts","../src/evaluator/llamacontext/tokenpredictors/draftsequencetokenpredictor.ts","../src/evaluator/llamacontext/tokenpredictors/inputlookuptokenpredictor.ts","../src/evaluator/llamacontext/utils/padsafecontextsize.ts","../src/evaluator/llamacontext/utils/resolvebatchitemsprioritizationstrategy.ts","../src/evaluator/llamacontext/utils/batchitemsprioritizationstrategies/firstinfirstoutstrategy.ts","../src/evaluator/llamacontext/utils/batchitemsprioritizationstrategies/maximumparallelismstrategy.ts","../src/evaluator/llamamodel/llamamodel.ts","../src/evaluator/llamamodel/utils/tokenattributes.ts","../src/evaluator/utils/chunkdocument.ts","../src/gguf/consts.ts","../src/gguf/readgguffileinfo.ts","../src/gguf/errors/invalidggufmagicerror.ts","../src/gguf/errors/unsupportedggufvaluetypeerror.ts","../src/gguf/filereaders/gguffilereader.ts","../src/gguf/filereaders/gguffsfilereader.ts","../src/gguf/filereaders/ggufnetworkfetchfilereader.ts","../src/gguf/insights/ggufinsights.ts","../src/gguf/insights/ggufinsightsconfigurationresolver.ts","../src/gguf/insights/ggufinsightstokens.ts","../src/gguf/insights/utils/getramusagefromunifiedvram.ts","../src/gguf/insights/utils/resolvecontextcontextsizeoption.ts","../src/gguf/insights/utils/resolvemodelgpulayersoption.ts","../src/gguf/insights/utils/scorelevels.ts","../src/gguf/parser/ggufv2parser.ts","../src/gguf/parser/ggufv3parser.ts","../src/gguf/parser/parsegguf.ts","../src/gguf/types/gguffileinfotypes.ts","../src/gguf/types/ggufmetadatatypes.ts","../src/gguf/types/gguftensorinfotypes.ts","../src/gguf/utils/ggufreadoffset.ts","../src/gguf/utils/convertmetadatakeyvaluerecordtonestedobject.ts","../src/gguf/utils/getgguffiletypename.ts","../src/gguf/utils/getggufmetadataarchitecturedata.ts","../src/gguf/utils/getggufmetadatakeyvalue.ts","../src/gguf/utils/ggufquantnames.ts","../src/gguf/utils/normalizeggufdownloadurl.ts","../src/gguf/utils/resolvebinarysplitggufparturls.ts","../src/gguf/utils/resolvesplitggufparts.ts","../src/utils/disposeguard.ts","../src/utils/insufficientmemoryerror.ts","../src/utils/llamatext.ts","../src/utils/lrucache.ts","../src/utils/openaiformat.ts","../src/utils/overridesobject.ts","../src/utils/replhistory.ts","../src/utils/stopgenerationdetector.ts","../src/utils/threadssplitter.ts","../src/utils/tokenstreamregulator.ts","../src/utils/unsupportederror.ts","../src/utils/appendusermessagetochathistory.ts","../src/utils/cleartempfolder.ts","../src/utils/cmake.ts","../src/utils/comparetokens.ts","../src/utils/createmodeldownloader.ts","../src/utils/findbestoption.ts","../src/utils/findcharacterremovalcounttofitchathistoryincontext.ts","../src/utils/getbuilddefaults.ts","../src/utils/getchatwrappersegmentdefinition.ts","../src/utils/getconsolelogprefix.ts","../src/utils/getfirstwritabledir.ts","../src/utils/getgrammarsfolder.ts","../src/utils/getllamaclasses.ts","../src/utils/getmoduleversion.ts","../src/utils/getqueuedtokensbeforestoptrigger.ts","../src/utils/getreadablecontextsize.ts","../src/utils/gettempdir.ts","../src/utils/gettypescripttypestringforgbnfjsonschema.ts","../src/utils/gitreleasebundles.ts","../src/utils/hashstring.ts","../src/utils/includestext.ts","../src/utils/islockfileactive.ts","../src/utils/istoken.ts","../src/utils/isurl.ts","../src/utils/mergeuniontypes.ts","../src/utils/modeldownloadendpoints.ts","../src/utils/modelfileaccesstokens.ts","../src/utils/optionsmatrix.ts","../src/utils/parsemodelfilename.ts","../src/utils/parsemodeluri.ts","../src/utils/parsetexttemplate.ts","../src/utils/prettyprintobject.ts","../src/utils/pushall.ts","../src/utils/removenullfields.ts","../src/utils/resolvegithubrelease.ts","../src/utils/resolvelasttokens.ts","../src/utils/resolvemodeldestination.ts","../src/utils/resolvemodelfile.ts","../src/utils/runtime.ts","../src/utils/safeeventcallback.ts","../src/utils/signalsleep.ts","../src/utils/spawncommand.ts","../src/utils/tokenizeinput.ts","../src/utils/tokenizerutils.ts","../src/utils/transformpromisable.ts","../src/utils/truncatetextandroundtowords.ts","../src/utils/utiltypes.ts","../src/utils/waitforlockfilerelease.ts","../src/utils/withlockfile.ts","../src/utils/withora.ts","../src/utils/withprogresslog.ts","../src/utils/withstatuslogs.ts","../src/utils/wrapabortsignal.ts","../src/utils/gbnfjson/gbnfgrammargenerator.ts","../src/utils/gbnfjson/gbnfterminal.ts","../src/utils/gbnfjson/getgbnfgrammarforgbnfjsonschema.ts","../src/utils/gbnfjson/types.ts","../src/utils/gbnfjson/terminals/gbnfanyjson.ts","../src/utils/gbnfjson/terminals/gbnfarray.ts","../src/utils/gbnfjson/terminals/gbnfboolean.ts","../src/utils/gbnfjson/terminals/gbnfbooleanvalue.ts","../src/utils/gbnfjson/terminals/gbnfcommawhitespace.ts","../src/utils/gbnfjson/terminals/gbnfformatstring.ts","../src/utils/gbnfjson/terminals/gbnfgrammar.ts","../src/utils/gbnfjson/terminals/gbnfinsidestringchar.ts","../src/utils/gbnfjson/terminals/gbnfnull.ts","../src/utils/gbnfjson/terminals/gbnfnumber.ts","../src/utils/gbnfjson/terminals/gbnfnumbervalue.ts","../src/utils/gbnfjson/terminals/gbnfobjectmap.ts","../src/utils/gbnfjson/terminals/gbnfor.ts","../src/utils/gbnfjson/terminals/gbnfref.ts","../src/utils/gbnfjson/terminals/gbnfrepetition.ts","../src/utils/gbnfjson/terminals/gbnfstring.ts","../src/utils/gbnfjson/terminals/gbnfstringvalue.ts","../src/utils/gbnfjson/terminals/gbnfverbatimtext.ts","../src/utils/gbnfjson/terminals/gbnfwhitespace.ts","../src/utils/gbnfjson/terminals/gbnfconsts.ts","../src/utils/gbnfjson/utils/gbnfjsonscopestate.ts","../src/utils/gbnfjson/utils/defsscope.ts","../src/utils/gbnfjson/utils/getgbnfjsonterminalforgbnfjsonschema.ts","../src/utils/gbnfjson/utils/getgbnfjsonterminalforliteral.ts","../src/utils/gbnfjson/utils/validateobjectagainstgbnfschema.ts"],"version":"5.9.3"}
1
+ {"root":["../src/index.ts","../src/ChatWrapper.ts","../src/apiDocsIndex.ts","../src/commands.ts","../src/config.ts","../src/consts.ts","../src/state.ts","../src/types.ts","../src/bindings/AddonTypes.ts","../src/bindings/Llama.ts","../src/bindings/consts.ts","../src/bindings/getLlama.ts","../src/bindings/types.ts","../src/bindings/utils/MemoryOrchestrator.ts","../src/bindings/utils/NoBinaryFoundError.ts","../src/bindings/utils/asyncEvery.ts","../src/bindings/utils/asyncSome.ts","../src/bindings/utils/binariesGithubRelease.ts","../src/bindings/utils/clearAllLocalBuilds.ts","../src/bindings/utils/cloneLlamaCppRepo.ts","../src/bindings/utils/compileLLamaCpp.ts","../src/bindings/utils/detectAvailableComputeLayers.ts","../src/bindings/utils/detectBuildTools.ts","../src/bindings/utils/detectGlibc.ts","../src/bindings/utils/disposeBeforeExit.ts","../src/bindings/utils/getBestComputeLayersAvailable.ts","../src/bindings/utils/getBuildFolderNameForBuildOptions.ts","../src/bindings/utils/getCanUsePrebuiltBinaries.ts","../src/bindings/utils/getExampleUsageCodeOfGetLlama.ts","../src/bindings/utils/getGpuTypesToUseForOption.ts","../src/bindings/utils/getLinuxDistroInfo.ts","../src/bindings/utils/getLlamaGpuTypes.ts","../src/bindings/utils/getLlamaWithoutBackend.ts","../src/bindings/utils/getPlatform.ts","../src/bindings/utils/getPlatformInfo.ts","../src/bindings/utils/hasBuildingFromSourceDependenciesInstalled.ts","../src/bindings/utils/hasFileInPath.ts","../src/bindings/utils/lastBuildInfo.ts","../src/bindings/utils/logBinaryUsageExampleToConsole.ts","../src/bindings/utils/logDistroInstallInstruction.ts","../src/bindings/utils/prebuiltBinariesGithubReleaseAssets.ts","../src/bindings/utils/resolveActualBindingBinaryPath.ts","../src/bindings/utils/resolveCustomCmakeOptions.ts","../src/bindings/utils/testBindingBinary.ts","../src/bindings/utils/testCmakeBinary.ts","../src/chatWrappers/AlpacaChatWrapper.ts","../src/chatWrappers/ChatMLChatWrapper.ts","../src/chatWrappers/DeepSeekChatWrapper.ts","../src/chatWrappers/EmptyChatWrapper.ts","../src/chatWrappers/FalconChatWrapper.ts","../src/chatWrappers/FunctionaryChatWrapper.ts","../src/chatWrappers/GemmaChatWrapper.ts","../src/chatWrappers/GeneralChatWrapper.ts","../src/chatWrappers/HarmonyChatWrapper.ts","../src/chatWrappers/Llama2ChatWrapper.ts","../src/chatWrappers/Llama3ChatWrapper.ts","../src/chatWrappers/Llama3_1ChatWrapper.ts","../src/chatWrappers/Llama3_2LightweightChatWrapper.ts","../src/chatWrappers/MistralChatWrapper.ts","../src/chatWrappers/QwenChatWrapper.ts","../src/chatWrappers/SeedChatWrapper.ts","../src/chatWrappers/generic/JinjaTemplateChatWrapper.ts","../src/chatWrappers/generic/TemplateChatWrapper.ts","../src/chatWrappers/generic/utils/UniqueIdGenerator.ts","../src/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.ts","../src/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.ts","../src/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.ts","../src/chatWrappers/generic/utils/getFirstValidResult.ts","../src/chatWrappers/generic/utils/squashChatHistoryItems.ts","../src/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.ts","../src/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.ts","../src/chatWrappers/utils/chunkChatItems.ts","../src/chatWrappers/utils/getModelLinageNames.ts","../src/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.ts","../src/chatWrappers/utils/isLlama3_2LightweightModel.ts","../src/chatWrappers/utils/jsonDumps.ts","../src/chatWrappers/utils/resolveChatWrapper.ts","../src/cli/cli.ts","../src/cli/projectTemplates.ts","../src/cli/recommendedModels.ts","../src/cli/startCreateCli.ts","../src/cli/commands/ChatCommand.ts","../src/cli/commands/CompleteCommand.ts","../src/cli/commands/DebugCommand.ts","../src/cli/commands/InfillCommand.ts","../src/cli/commands/InitCommand.ts","../src/cli/commands/OnPostInstallCommand.ts","../src/cli/commands/PullCommand.ts","../src/cli/commands/inspect/InspectCommand.ts","../src/cli/commands/inspect/commands/InspectEstimateCommand.ts","../src/cli/commands/inspect/commands/InspectGgufCommand.ts","../src/cli/commands/inspect/commands/InspectGpuCommand.ts","../src/cli/commands/inspect/commands/InspectMeasureCommand.ts","../src/cli/commands/source/SourceCommand.ts","../src/cli/commands/source/commands/BuildCommand.ts","../src/cli/commands/source/commands/ClearCommand.ts","../src/cli/commands/source/commands/DownloadCommand.ts","../src/cli/utils/ConsoleInteraction.ts","../src/cli/utils/ConsoleTable.ts","../src/cli/utils/basicChooseFromListConsoleInteraction.ts","../src/cli/utils/consolePromptQuestion.ts","../src/cli/utils/getReadablePath.ts","../src/cli/utils/interactivelyAskForModel.ts","../src/cli/utils/isRunningUnderRosetta.ts","../src/cli/utils/logUsedGpuTypeOption.ts","../src/cli/utils/packageJsonConfig.ts","../src/cli/utils/packageManager.ts","../src/cli/utils/parseXtcArg.ts","../src/cli/utils/printCommonInfoLines.ts","../src/cli/utils/printInfoLine.ts","../src/cli/utils/printModelDestination.ts","../src/cli/utils/projectTemplates.ts","../src/cli/utils/renderModelCompatibilityPercentageWithColors.ts","../src/cli/utils/resolveCommandGgufPath.ts","../src/cli/utils/resolveHeaderFlag.ts","../src/cli/utils/resolveModelRecommendationFileOptions.ts","../src/cli/utils/resolveNpmrcConfig.ts","../src/cli/utils/splitAnsiToLines.ts","../src/cli/utils/toBytes.ts","../src/cli/utils/withCliCommandDescriptionDocsUrl.ts","../src/evaluator/LlamaCompletion.ts","../src/evaluator/LlamaEmbedding.ts","../src/evaluator/LlamaEmbeddingContext.ts","../src/evaluator/LlamaGrammar.ts","../src/evaluator/LlamaGrammarEvaluationState.ts","../src/evaluator/LlamaJsonSchemaGrammar.ts","../src/evaluator/LlamaRankingContext.ts","../src/evaluator/TokenBias.ts","../src/evaluator/TokenMeter.ts","../src/evaluator/LlamaChat/LlamaChat.ts","../src/evaluator/LlamaChat/utils/FunctionCallNameGrammar.ts","../src/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.ts","../src/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.ts","../src/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.ts","../src/evaluator/LlamaChatSession/LlamaChatSession.ts","../src/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.ts","../src/evaluator/LlamaChatSession/utils/defineChatSessionFunction.ts","../src/evaluator/LlamaContext/LlamaContext.ts","../src/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.ts","../src/evaluator/LlamaContext/LlamaSampler.ts","../src/evaluator/LlamaContext/TokenPredictor.ts","../src/evaluator/LlamaContext/types.ts","../src/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.ts","../src/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.ts","../src/evaluator/LlamaContext/utils/padSafeContextSize.ts","../src/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.ts","../src/evaluator/LlamaModel/LlamaModel.ts","../src/evaluator/LlamaModel/utils/TokenAttributes.ts","../src/evaluator/utils/chunkDocument.ts","../src/gguf/consts.ts","../src/gguf/readGgufFileInfo.ts","../src/gguf/errors/InvalidGgufMagicError.ts","../src/gguf/errors/UnsupportedGgufValueTypeError.ts","../src/gguf/fileReaders/GgufFileReader.ts","../src/gguf/fileReaders/GgufFsFileReader.ts","../src/gguf/fileReaders/GgufNetworkFetchFileReader.ts","../src/gguf/insights/GgufInsights.ts","../src/gguf/insights/GgufInsightsConfigurationResolver.ts","../src/gguf/insights/GgufInsightsTokens.ts","../src/gguf/insights/utils/getRamUsageFromUnifiedVram.ts","../src/gguf/insights/utils/resolveContextContextSizeOption.ts","../src/gguf/insights/utils/resolveModelGpuLayersOption.ts","../src/gguf/insights/utils/scoreLevels.ts","../src/gguf/parser/GgufV2Parser.ts","../src/gguf/parser/GgufV3Parser.ts","../src/gguf/parser/parseGguf.ts","../src/gguf/types/GgufFileInfoTypes.ts","../src/gguf/types/GgufMetadataTypes.ts","../src/gguf/types/GgufTensorInfoTypes.ts","../src/gguf/utils/GgufReadOffset.ts","../src/gguf/utils/convertMetadataKeyValueRecordToNestedObject.ts","../src/gguf/utils/getGgufFileTypeName.ts","../src/gguf/utils/getGgufMetadataArchitectureData.ts","../src/gguf/utils/getGgufMetadataKeyValue.ts","../src/gguf/utils/ggufQuantNames.ts","../src/gguf/utils/normalizeGgufDownloadUrl.ts","../src/gguf/utils/resolveBinarySplitGgufPartUrls.ts","../src/gguf/utils/resolveSplitGgufParts.ts","../src/utils/DisposeGuard.ts","../src/utils/InsufficientMemoryError.ts","../src/utils/LlamaText.ts","../src/utils/LruCache.ts","../src/utils/OpenAIFormat.ts","../src/utils/OverridesObject.ts","../src/utils/ReplHistory.ts","../src/utils/StopGenerationDetector.ts","../src/utils/ThreadsSplitter.ts","../src/utils/TokenStreamRegulator.ts","../src/utils/UnsupportedError.ts","../src/utils/appendUserMessageToChatHistory.ts","../src/utils/clearTempFolder.ts","../src/utils/cmake.ts","../src/utils/compareTokens.ts","../src/utils/createModelDownloader.ts","../src/utils/findBestOption.ts","../src/utils/findCharacterRemovalCountToFitChatHistoryInContext.ts","../src/utils/getBuildDefaults.ts","../src/utils/getChatWrapperSegmentDefinition.ts","../src/utils/getConsoleLogPrefix.ts","../src/utils/getFirstWritableDir.ts","../src/utils/getGrammarsFolder.ts","../src/utils/getLlamaClasses.ts","../src/utils/getModuleVersion.ts","../src/utils/getQueuedTokensBeforeStopTrigger.ts","../src/utils/getReadableContextSize.ts","../src/utils/getTempDir.ts","../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts","../src/utils/gitReleaseBundles.ts","../src/utils/hashString.ts","../src/utils/includesText.ts","../src/utils/isLockfileActive.ts","../src/utils/isToken.ts","../src/utils/isUrl.ts","../src/utils/mergeUnionTypes.ts","../src/utils/modelDownloadEndpoints.ts","../src/utils/modelFileAccessTokens.ts","../src/utils/optionsMatrix.ts","../src/utils/parseModelFileName.ts","../src/utils/parseModelUri.ts","../src/utils/parseTextTemplate.ts","../src/utils/prettyPrintObject.ts","../src/utils/pushAll.ts","../src/utils/removeNullFields.ts","../src/utils/resolveGithubRelease.ts","../src/utils/resolveLastTokens.ts","../src/utils/resolveModelDestination.ts","../src/utils/resolveModelFile.ts","../src/utils/runtime.ts","../src/utils/safeEventCallback.ts","../src/utils/signalSleep.ts","../src/utils/spawnCommand.ts","../src/utils/tokenizeInput.ts","../src/utils/tokenizerUtils.ts","../src/utils/transformPromisable.ts","../src/utils/truncateTextAndRoundToWords.ts","../src/utils/utilTypes.ts","../src/utils/waitForLockfileRelease.ts","../src/utils/withLockfile.ts","../src/utils/withOra.ts","../src/utils/withProgressLog.ts","../src/utils/withStatusLogs.ts","../src/utils/wrapAbortSignal.ts","../src/utils/gbnfJson/GbnfGrammarGenerator.ts","../src/utils/gbnfJson/GbnfTerminal.ts","../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts","../src/utils/gbnfJson/types.ts","../src/utils/gbnfJson/terminals/GbnfAnyJson.ts","../src/utils/gbnfJson/terminals/GbnfArray.ts","../src/utils/gbnfJson/terminals/GbnfBoolean.ts","../src/utils/gbnfJson/terminals/GbnfBooleanValue.ts","../src/utils/gbnfJson/terminals/GbnfCommaWhitespace.ts","../src/utils/gbnfJson/terminals/GbnfFormatString.ts","../src/utils/gbnfJson/terminals/GbnfGrammar.ts","../src/utils/gbnfJson/terminals/GbnfInsideStringChar.ts","../src/utils/gbnfJson/terminals/GbnfNull.ts","../src/utils/gbnfJson/terminals/GbnfNumber.ts","../src/utils/gbnfJson/terminals/GbnfNumberValue.ts","../src/utils/gbnfJson/terminals/GbnfObjectMap.ts","../src/utils/gbnfJson/terminals/GbnfOr.ts","../src/utils/gbnfJson/terminals/GbnfRef.ts","../src/utils/gbnfJson/terminals/GbnfRepetition.ts","../src/utils/gbnfJson/terminals/GbnfString.ts","../src/utils/gbnfJson/terminals/GbnfStringValue.ts","../src/utils/gbnfJson/terminals/GbnfVerbatimText.ts","../src/utils/gbnfJson/terminals/GbnfWhitespace.ts","../src/utils/gbnfJson/terminals/gbnfConsts.ts","../src/utils/gbnfJson/utils/GbnfJsonScopeState.ts","../src/utils/gbnfJson/utils/defsScope.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForLiteral.ts","../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"version":"5.9.3"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "latest"
2
+ "release": "b8671"
3
3
  }
Binary file
@@ -0,0 +1,409 @@
1
+ # GBNF Guide
2
+
3
+ GBNF (GGML BNF) is a format for defining [formal grammars](https://en.wikipedia.org/wiki/Formal_grammar) to constrain model outputs in `llama.cpp`. For example, you can use it to force the model to generate valid JSON, or speak only in emojis. GBNF grammars are supported in various ways in `tools/cli`, `tools/completion` and `tools/server`.
4
+
5
+ ## Background
6
+
7
+ [Backus-Naur Form (BNF)](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form) is a notation for describing the syntax of formal languages like programming languages, file formats, and protocols. GBNF is an extension of BNF that primarily adds a few modern regex-like features.
8
+
9
+ ## Basics
10
+
11
+ In GBNF, we define *production rules* that specify how a *non-terminal* (rule name) can be replaced with sequences of *terminals* (characters, specifically Unicode [code points](https://en.wikipedia.org/wiki/Code_point)) and other non-terminals. The basic format of a production rule is `nonterminal ::= sequence...`.
12
+
13
+ ## Example
14
+
15
+ Before going deeper, let's look at some of the features demonstrated in `grammars/chess.gbnf`, a small chess notation grammar:
16
+ ```
17
+ # `root` specifies the pattern for the overall output
18
+ root ::= (
19
+ # it must start with the characters "1. " followed by a sequence
20
+ # of characters that match the `move` rule, followed by a space, followed
21
+ # by another move, and then a newline
22
+ "1. " move " " move "\n"
23
+
24
+ # it's followed by one or more subsequent moves, numbered with one or two digits
25
+ ([1-9] [0-9]? ". " move " " move "\n")+
26
+ )
27
+
28
+ # `move` is an abstract representation, which can be a pawn, nonpawn, or castle.
29
+ # The `[+#]?` denotes the possibility of checking or mate signs after moves
30
+ move ::= (pawn | nonpawn | castle) [+#]?
31
+
32
+ pawn ::= ...
33
+ nonpawn ::= ...
34
+ castle ::= ...
35
+ ```
36
+
37
+ ## Non-Terminals and Terminals
38
+
39
+ Non-terminal symbols (rule names) stand for a pattern of terminals and other non-terminals. They are required to be a dashed lowercase word, like `move`, `castle`, or `check-mate`.
40
+
41
+ Terminals are actual characters ([code points](https://en.wikipedia.org/wiki/Code_point)). They can be specified as a sequence like `"1"` or `"O-O"` or as ranges like `[1-9]` or `[NBKQR]`.
42
+
43
+ ## Characters and character ranges
44
+
45
+ Terminals support the full range of Unicode. Unicode characters can be specified directly in the grammar, for example `hiragana ::= [ぁ-ゟ]`, or with escapes: 8-bit (`\xXX`), 16-bit (`\uXXXX`) or 32-bit (`\UXXXXXXXX`).
46
+
47
+ Character ranges can be negated with `^`:
48
+ ```
49
+ single-line ::= [^\n]+ "\n"
50
+ ```
51
+
52
+ ## Sequences and Alternatives
53
+
54
+ The order of symbols in a sequence matters. For example, in `"1. " move " " move "\n"`, the `"1. "` must come before the first `move`, etc.
55
+
56
+ Alternatives, denoted by `|`, give different sequences that are acceptable. For example, in `move ::= pawn | nonpawn | castle`, `move` can be a `pawn` move, a `nonpawn` move, or a `castle`.
57
+
58
+ Parentheses `()` can be used to group sequences, which allows for embedding alternatives in a larger rule or applying repetition and optional symbols (below) to a sequence.
59
+
60
+ ## Repetition and Optional Symbols
61
+
62
+ - `*` after a symbol or sequence means that it can be repeated zero or more times (equivalent to `{0,}`).
63
+ - `+` denotes that the symbol or sequence should appear one or more times (equivalent to `{1,}`).
64
+ - `?` makes the preceding symbol or sequence optional (equivalent to `{0,1}`).
65
+ - `{m}` repeats the precedent symbol or sequence exactly `m` times
66
+ - `{m,}` repeats the precedent symbol or sequence at least `m` times
67
+ - `{m,n}` repeats the precedent symbol or sequence at between `m` and `n` times (included)
68
+ - `{0,n}` repeats the precedent symbol or sequence at most `n` times (included)
69
+
70
+ ## Tokens
71
+
72
+ Tokens allow grammars to match specific tokenizer tokens rather than character sequences. This is useful for constraining outputs based on special tokens (like `<think>` or `</think>`).
73
+
74
+ Tokens can be specified in two ways:
75
+
76
+ 1. **Token ID**: Use angle brackets with the token ID in square brackets: `<[token-id]>`. For example, `<[1000]>` matches the token with ID 1000.
77
+
78
+ 2. **Token string**: Use angle brackets with the token text directly: `<token>`. For example, `<think>` will match the token whose text is exactly `<think>`. This only works if the string tokenizes to exactly one token in the vocabulary, otherwise the grammar will fail to parse.
79
+
80
+ You can negate token matches using the `!` prefix: `!<[1000]>` or `!<think>` matches any token *except* the specified one.
81
+
82
+ ```
83
+ # Match a thinking block: <think>...</think>
84
+ # Using token strings (requires these to be single tokens in the vocab)
85
+ root ::= <think> thinking </think> .*
86
+ thinking ::= !</think>*
87
+
88
+ # Equivalent grammar using explicit token IDs
89
+ # Assumes token 1000 = <think>, token 1001 = </think>
90
+ root ::= <[1000]> thinking <[1001]> .*
91
+ thinking ::= !<[1001]>*
92
+ ```
93
+
94
+ ## Comments and newlines
95
+
96
+ Comments can be specified with `#`:
97
+ ```
98
+ # defines optional whitespace
99
+ ws ::= [ \t\n]+
100
+ ```
101
+
102
+ Newlines are allowed between rules and between symbols or sequences nested inside parentheses. Additionally, a newline after an alternate marker `|` will continue the current rule, even outside of parentheses.
103
+
104
+ ## The root rule
105
+
106
+ In a full grammar, the `root` rule always defines the starting point of the grammar. In other words, it specifies what the entire output must match.
107
+
108
+ ```
109
+ # a grammar for lists
110
+ root ::= ("- " item)+
111
+ item ::= [^\n]+ "\n"
112
+ ```
113
+
114
+ ## Next steps
115
+
116
+ This guide provides a brief overview. Check out the GBNF files in this directory (`grammars/`) for examples of full grammars. You can try them out with:
117
+ ```
118
+ ./llama-cli -m <model> --grammar-file grammars/some-grammar.gbnf -p 'Some prompt'
119
+ ```
120
+
121
+ `llama.cpp` can also convert JSON schemas to grammars either ahead of time or at each request, see below.
122
+
123
+ ## Troubleshooting
124
+
125
+ Grammars currently have performance gotchas (see https://github.com/ggml-org/llama.cpp/issues/4218).
126
+
127
+ ### Efficient optional repetitions
128
+
129
+ A common pattern is to allow repetitions of a pattern `x` up to N times.
130
+
131
+ While semantically correct, the syntax `x? x? x?.... x?` (with N repetitions) may result in extremely slow sampling. Instead, you can write `x{0,N}` (or `(x (x (x ... (x)?...)?)?)?` w/ N-deep nesting in earlier llama.cpp versions).
132
+
133
+ ## Using GBNF grammars
134
+
135
+ You can use GBNF grammars:
136
+
137
+ - In [llama-server](../tools/server)'s completion endpoints, passed as the `grammar` body field
138
+ - In [llama-cli](../tools/cli) and [llama-completion](../tools/completion), passed as the `--grammar` & `--grammar-file` flags
139
+ - With [test-gbnf-validator](../tests/test-gbnf-validator.cpp), to test them against strings.
140
+
141
+ ## JSON Schemas → GBNF
142
+
143
+ `llama.cpp` supports converting a subset of https://json-schema.org/ to GBNF grammars:
144
+
145
+ - In [llama-server](../tools/server):
146
+ - For any completion endpoints, passed as the `json_schema` body field
147
+ - For the `/chat/completions` endpoint, passed inside the `response_format` body field (e.g. `{"type", "json_object", "schema": {"items": {}}}` or `{ type: "json_schema", json_schema: {"schema": ...} }`)
148
+ - In [llama-cli](../tools/cli) and [llama-completion](../tools/completion), passed as the `--json` / `-j` flag
149
+ - To convert to a grammar ahead of time:
150
+ - in CLI, with [examples/json_schema_to_grammar.py](../examples/json_schema_to_grammar.py)
151
+ - in JavaScript with [json-schema-to-grammar.mjs](../tools/server/public_legacy/json-schema-to-grammar.mjs) (this is used by the [server](../tools/server)'s Web UI)
152
+
153
+ > [!NOTE]
154
+ > The JSON schema is only used to constrain the model output and is not injected into the prompt. The model has no visibility into the schema, so if you want it to understand the expected structure, describe it explicitly in your prompt. This does not apply to tool calling, where schemas are injected into the prompt.
155
+
156
+ Take a look at [tests](../tests/test-json-schema-to-grammar.cpp) to see which features are likely supported (you'll also find usage examples in https://github.com/ggml-org/llama.cpp/pull/5978, https://github.com/ggml-org/llama.cpp/pull/6659 & https://github.com/ggml-org/llama.cpp/pull/6555).
157
+
158
+ ```bash
159
+ llama-cli \
160
+ -hfr bartowski/Phi-3-medium-128k-instruct-GGUF \
161
+ -hff Phi-3-medium-128k-instruct-Q8_0.gguf \
162
+ -j '{
163
+ "type": "array",
164
+ "items": {
165
+ "type": "object",
166
+ "properties": {
167
+ "name": {
168
+ "type": "string",
169
+ "minLength": 1,
170
+ "maxLength": 100
171
+ },
172
+ "age": {
173
+ "type": "integer",
174
+ "minimum": 0,
175
+ "maximum": 150
176
+ }
177
+ },
178
+ "required": ["name", "age"],
179
+ "additionalProperties": false
180
+ },
181
+ "minItems": 10,
182
+ "maxItems": 100
183
+ }' \
184
+ -p 'Generate a {name, age}[] JSON array with famous actors of all ages.'
185
+ ```
186
+
187
+ <details>
188
+
189
+ <summary>Show grammar</summary>
190
+
191
+ You can convert any schema in command-line with:
192
+
193
+ ```bash
194
+ examples/json_schema_to_grammar.py name-age-schema.json
195
+ ```
196
+
197
+ ```
198
+ char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
199
+ item ::= "{" space item-name-kv "," space item-age-kv "}" space
200
+ item-age ::= ([0-9] | ([1-8] [0-9] | [9] [0-9]) | "1" ([0-4] [0-9] | [5] "0")) space
201
+ item-age-kv ::= "\"age\"" space ":" space item-age
202
+ item-name ::= "\"" char{1,100} "\"" space
203
+ item-name-kv ::= "\"name\"" space ":" space item-name
204
+ root ::= "[" space item ("," space item){9,99} "]" space
205
+ space ::= | " " | "\n" [ \t]{0,20}
206
+ ```
207
+
208
+ </details>
209
+
210
+ Here is also a list of known limitations (contributions welcome):
211
+
212
+ - `additionalProperties` defaults to `false` (produces faster grammars + reduces hallucinations).
213
+ - `"additionalProperties": true` may produce keys that contain unescaped newlines.
214
+ - Unsupported features are skipped silently. It is currently advised to use the command-line Python converter (see above) to see any warnings, and to inspect the resulting grammar / test it w/ [llama-gbnf-validator](../examples/gbnf-validator/gbnf-validator.cpp).
215
+ - Can't mix `properties` w/ `anyOf` / `oneOf` in the same type (https://github.com/ggml-org/llama.cpp/issues/7703)
216
+ - [prefixItems](https://json-schema.org/draft/2020-12/json-schema-core#name-prefixitems) is broken (but [items](https://json-schema.org/draft/2020-12/json-schema-core#name-items) works)
217
+ - `minimum`, `exclusiveMinimum`, `maximum`, `exclusiveMaximum`: only supported for `"type": "integer"` for now, not `number`
218
+ - Nested `$ref`s are broken (https://github.com/ggml-org/llama.cpp/issues/8073)
219
+ - [pattern](https://json-schema.org/draft/2020-12/json-schema-validation#name-pattern)s must start with `^` and end with `$`
220
+ - Remote `$ref`s not supported in the C++ version (Python & JavaScript versions fetch https refs)
221
+ - `string` [formats](https://json-schema.org/draft/2020-12/json-schema-validation#name-defined-formats) lack `uri`, `email`
222
+ - No [`patternProperties`](https://json-schema.org/draft/2020-12/json-schema-core#name-patternproperties)
223
+
224
+ And a non-exhaustive list of other unsupported features that are unlikely to be implemented (hard and/or too slow to support w/ stateless grammars):
225
+
226
+ - [`uniqueItems`](https://json-schema.org/draft/2020-12/json-schema-validation#name-uniqueitems)
227
+ - [`contains`](https://json-schema.org/draft/2020-12/json-schema-core#name-contains) / `minContains`
228
+ - `$anchor` (cf. [dereferencing](https://json-schema.org/draft/2020-12/json-schema-core#name-dereferencing))
229
+ - [`not`](https://json-schema.org/draft/2020-12/json-schema-core#name-not)
230
+ - [Conditionals](https://json-schema.org/draft/2020-12/json-schema-core#name-keywords-for-applying-subsche) `if` / `then` / `else` / `dependentSchemas`
231
+
232
+ ### A word about additionalProperties
233
+
234
+ > [!WARNING]
235
+ > The JSON schemas spec states `object`s accept [additional properties](https://json-schema.org/understanding-json-schema/reference/object#additionalproperties) by default.
236
+ > Since this is slow and seems prone to hallucinations, we default to no additional properties.
237
+ > You can set `"additionalProperties": true` in the the schema of any object to explicitly allow additional properties.
238
+
239
+ If you're using [Pydantic](https://pydantic.dev/) to generate schemas, you can enable additional properties with the `extra` config on each model class:
240
+
241
+ ```python
242
+ # pip install pydantic
243
+ import json
244
+ from typing import Annotated, List
245
+ from pydantic import BaseModel, Extra, Field
246
+ class QAPair(BaseModel):
247
+ class Config:
248
+ extra = 'allow' # triggers additionalProperties: true in the JSON schema
249
+ question: str
250
+ concise_answer: str
251
+ justification: str
252
+
253
+ class Summary(BaseModel):
254
+ class Config:
255
+ extra = 'allow'
256
+ key_facts: List[Annotated[str, Field(pattern='- .{5,}')]]
257
+ question_answers: List[Annotated[List[QAPair], Field(min_items=5)]]
258
+
259
+ print(json.dumps(Summary.model_json_schema(), indent=2))
260
+ ```
261
+
262
+ <details>
263
+ <summary>Show JSON schema & grammar</summary>
264
+
265
+ ```json
266
+ {
267
+ "$defs": {
268
+ "QAPair": {
269
+ "additionalProperties": true,
270
+ "properties": {
271
+ "question": {
272
+ "title": "Question",
273
+ "type": "string"
274
+ },
275
+ "concise_answer": {
276
+ "title": "Concise Answer",
277
+ "type": "string"
278
+ },
279
+ "justification": {
280
+ "title": "Justification",
281
+ "type": "string"
282
+ }
283
+ },
284
+ "required": [
285
+ "question",
286
+ "concise_answer",
287
+ "justification"
288
+ ],
289
+ "title": "QAPair",
290
+ "type": "object"
291
+ }
292
+ },
293
+ "additionalProperties": true,
294
+ "properties": {
295
+ "key_facts": {
296
+ "items": {
297
+ "pattern": "^- .{5,}$",
298
+ "type": "string"
299
+ },
300
+ "title": "Key Facts",
301
+ "type": "array"
302
+ },
303
+ "question_answers": {
304
+ "items": {
305
+ "items": {
306
+ "$ref": "#/$defs/QAPair"
307
+ },
308
+ "minItems": 5,
309
+ "type": "array"
310
+ },
311
+ "title": "Question Answers",
312
+ "type": "array"
313
+ }
314
+ },
315
+ "required": [
316
+ "key_facts",
317
+ "question_answers"
318
+ ],
319
+ "title": "Summary",
320
+ "type": "object"
321
+ }
322
+ ```
323
+
324
+ ```
325
+ QAPair ::= "{" space QAPair-question-kv "," space QAPair-concise-answer-kv "," space QAPair-justification-kv ( "," space ( QAPair-additional-kv ( "," space QAPair-additional-kv )* ) )? "}" space
326
+ QAPair-additional-k ::= ["] ( [c] ([o] ([n] ([c] ([i] ([s] ([e] ([_] ([a] ([n] ([s] ([w] ([e] ([r] char+ | [^"r] char*) | [^"e] char*) | [^"w] char*) | [^"s] char*) | [^"n] char*) | [^"a] char*) | [^"_] char*) | [^"e] char*) | [^"s] char*) | [^"i] char*) | [^"c] char*) | [^"n] char*) | [^"o] char*) | [j] ([u] ([s] ([t] ([i] ([f] ([i] ([c] ([a] ([t] ([i] ([o] ([n] char+ | [^"n] char*) | [^"o] char*) | [^"i] char*) | [^"t] char*) | [^"a] char*) | [^"c] char*) | [^"i] char*) | [^"f] char*) | [^"i] char*) | [^"t] char*) | [^"s] char*) | [^"u] char*) | [q] ([u] ([e] ([s] ([t] ([i] ([o] ([n] char+ | [^"n] char*) | [^"o] char*) | [^"i] char*) | [^"t] char*) | [^"s] char*) | [^"e] char*) | [^"u] char*) | [^"cjq] char* )? ["] space
327
+ QAPair-additional-kv ::= QAPair-additional-k ":" space value
328
+ QAPair-concise-answer-kv ::= "\"concise_answer\"" space ":" space string
329
+ QAPair-justification-kv ::= "\"justification\"" space ":" space string
330
+ QAPair-question-kv ::= "\"question\"" space ":" space string
331
+ additional-k ::= ["] ( [k] ([e] ([y] ([_] ([f] ([a] ([c] ([t] ([s] char+ | [^"s] char*) | [^"t] char*) | [^"c] char*) | [^"a] char*) | [^"f] char*) | [^"_] char*) | [^"y] char*) | [^"e] char*) | [q] ([u] ([e] ([s] ([t] ([i] ([o] ([n] ([_] ([a] ([n] ([s] ([w] ([e] ([r] ([s] char+ | [^"s] char*) | [^"r] char*) | [^"e] char*) | [^"w] char*) | [^"s] char*) | [^"n] char*) | [^"a] char*) | [^"_] char*) | [^"n] char*) | [^"o] char*) | [^"i] char*) | [^"t] char*) | [^"s] char*) | [^"e] char*) | [^"u] char*) | [^"kq] char* )? ["] space
332
+ additional-kv ::= additional-k ":" space value
333
+ array ::= "[" space ( value ("," space value)* )? "]" space
334
+ boolean ::= ("true" | "false") space
335
+ char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
336
+ decimal-part ::= [0-9]{1,16}
337
+ dot ::= [^\x0A\x0D]
338
+ integral-part ::= [0] | [1-9] [0-9]{0,15}
339
+ key-facts ::= "[" space (key-facts-item ("," space key-facts-item)*)? "]" space
340
+ key-facts-item ::= "\"" "- " key-facts-item-1{5,} "\"" space
341
+ key-facts-item-1 ::= dot
342
+ key-facts-kv ::= "\"key_facts\"" space ":" space key-facts
343
+ null ::= "null" space
344
+ number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
345
+ object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
346
+ question-answers ::= "[" space (question-answers-item ("," space question-answers-item)*)? "]" space
347
+ question-answers-item ::= "[" space question-answers-item-item ("," space question-answers-item-item){4,} "]" space
348
+ question-answers-item-item ::= QAPair
349
+ question-answers-kv ::= "\"question_answers\"" space ":" space question-answers
350
+ root ::= "{" space key-facts-kv "," space question-answers-kv ( "," space ( additional-kv ( "," space additional-kv )* ) )? "}" space
351
+ space ::= | " " | "\n" [ \t]{0,20}
352
+ string ::= "\"" char* "\"" space
353
+ value ::= object | array | string | number | boolean | null
354
+ ```
355
+
356
+ </details>
357
+
358
+ If you're using [Zod](https://zod.dev/), you can make your objects to explicitly allow extra properties w/ `nonstrict()` / `passthrough()` (or explicitly no extra props w/ `z.object(...).strict()` or `z.strictObject(...)`) but note that [zod-to-json-schema](https://github.com/StefanTerdell/zod-to-json-schema) currently always sets `"additionalProperties": false` anyway.
359
+
360
+ ```js
361
+ import { z } from 'zod';
362
+ import { zodToJsonSchema } from 'zod-to-json-schema';
363
+
364
+ const Foo = z.object({
365
+ age: z.number().positive(),
366
+ email: z.string().email(),
367
+ }).strict();
368
+
369
+ console.log(zodToJsonSchema(Foo));
370
+ ```
371
+
372
+ <details>
373
+ <summary>Show JSON schema & grammar</summary>
374
+
375
+ ```json
376
+ {
377
+ "type": "object",
378
+ "properties": {
379
+ "age": {
380
+ "type": "number",
381
+ "exclusiveMinimum": 0
382
+ },
383
+ "email": {
384
+ "type": "string",
385
+ "format": "email"
386
+ }
387
+ },
388
+ "required": [
389
+ "age",
390
+ "email"
391
+ ],
392
+ "additionalProperties": false,
393
+ "$schema": "http://json-schema.org/draft-07/schema#"
394
+ }
395
+ ```
396
+
397
+ ```
398
+ age-kv ::= "\"age\"" space ":" space number
399
+ char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
400
+ decimal-part ::= [0-9]{1,16}
401
+ email-kv ::= "\"email\"" space ":" space string
402
+ integral-part ::= [0] | [1-9] [0-9]{0,15}
403
+ number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
404
+ root ::= "{" space age-kv "," space email-kv "}" space
405
+ space ::= | " " | "\n" [ \t]{0,20}
406
+ string ::= "\"" char* "\"" space
407
+ ```
408
+
409
+ </details>
@@ -0,0 +1,6 @@
1
+ root ::= (expr "=" ws term "\n")+
2
+ expr ::= term ([-+*/] term)*
3
+ term ::= ident | num | "(" ws expr ")" ws
4
+ ident ::= [a-z] [a-z0-9_]* ws
5
+ num ::= [0-9]+ ws
6
+ ws ::= [ \t\n]*
@@ -0,0 +1,42 @@
1
+ root ::= (declaration)*
2
+
3
+ declaration ::= dataType identifier "(" parameter? ")" "{" statement* "}"
4
+
5
+ dataType ::= "int" ws | "float" ws | "char" ws
6
+ identifier ::= [a-zA-Z_] [a-zA-Z_0-9]*
7
+
8
+ parameter ::= dataType identifier
9
+
10
+ statement ::=
11
+ ( dataType identifier ws "=" ws expression ";" ) |
12
+ ( identifier ws "=" ws expression ";" ) |
13
+ ( identifier ws "(" argList? ")" ";" ) |
14
+ ( "return" ws expression ";" ) |
15
+ ( "while" "(" condition ")" "{" statement* "}" ) |
16
+ ( "for" "(" forInit ";" ws condition ";" ws forUpdate ")" "{" statement* "}" ) |
17
+ ( "if" "(" condition ")" "{" statement* "}" ("else" "{" statement* "}")? ) |
18
+ ( singleLineComment ) |
19
+ ( multiLineComment )
20
+
21
+ forInit ::= dataType identifier ws "=" ws expression | identifier ws "=" ws expression
22
+ forUpdate ::= identifier ws "=" ws expression
23
+
24
+ condition ::= expression relationOperator expression
25
+ relationOperator ::= ("<=" | "<" | "==" | "!=" | ">=" | ">")
26
+
27
+ expression ::= term (("+" | "-") term)*
28
+ term ::= factor(("*" | "/") factor)*
29
+
30
+ factor ::= identifier | number | unaryTerm | funcCall | parenExpression
31
+ unaryTerm ::= "-" factor
32
+ funcCall ::= identifier "(" argList? ")"
33
+ parenExpression ::= "(" ws expression ws ")"
34
+
35
+ argList ::= expression ("," ws expression)*
36
+
37
+ number ::= [0-9]+
38
+
39
+ singleLineComment ::= "//" [^\n]* "\n"
40
+ multiLineComment ::= "/*" ( [^*] | ("*" [^/]) )* "*/"
41
+
42
+ ws ::= ([ \t\n]+)
@@ -0,0 +1,13 @@
1
+ # Specifies chess moves as a list in algebraic notation, using PGN conventions
2
+
3
+ # Force first move to "1. ", then any 1-2 digit number after, relying on model to follow the pattern
4
+ root ::= "1. " move " " move "\n" ([1-9] [0-9]? ". " move " " move "\n")+
5
+ move ::= (pawn | nonpawn | castle) [+#]?
6
+
7
+ # piece type, optional file/rank, optional capture, dest file & rank
8
+ nonpawn ::= [NBKQR] [a-h]? [1-8]? "x"? [a-h] [1-8]
9
+
10
+ # optional file & capture, dest file & rank, optional promotion
11
+ pawn ::= ([a-h] "x")? [a-h] [1-8] ("=" [NBKQR])?
12
+
13
+ castle ::= "O-O" "-O"?
@@ -0,0 +1,6 @@
1
+ # note: this might be incomplete, mostly an example
2
+ root ::= en-char+ ([ \t\n] en-char+)*
3
+ en-char ::= letter | digit | punctuation
4
+ letter ::= [a-zA-Z]
5
+ digit ::= [0-9]
6
+ punctuation ::= [!"#$%&'()*+,-./:;<=>?@[\\\]^_`{|}~]
@@ -0,0 +1,7 @@
1
+ # A probably incorrect grammar for Japanese
2
+ root ::= jp-char+ ([ \t\n] jp-char+)*
3
+ jp-char ::= hiragana | katakana | punctuation | cjk
4
+ hiragana ::= [ぁ-ゟ]
5
+ katakana ::= [ァ-ヿ]
6
+ punctuation ::= [、-〾]
7
+ cjk ::= [一-鿿]
@@ -0,0 +1,25 @@
1
+ root ::= object
2
+ value ::= object | array | string | number | ("true" | "false" | "null") ws
3
+
4
+ object ::=
5
+ "{" ws (
6
+ string ":" ws value
7
+ ("," ws string ":" ws value)*
8
+ )? "}" ws
9
+
10
+ array ::=
11
+ "[" ws (
12
+ value
13
+ ("," ws value)*
14
+ )? "]" ws
15
+
16
+ string ::=
17
+ "\"" (
18
+ [^"\\\x7F\x00-\x1F] |
19
+ "\\" (["\\bfnrt] | "u" [0-9a-fA-F]{4}) # escapes
20
+ )* "\"" ws
21
+
22
+ number ::= ("-"? ([0-9] | [1-9] [0-9]{0,15})) ("." [0-9]+)? ([eE] [-+]? [0-9] [1-9]{0,15})? ws
23
+
24
+ # Optional space: by convention, applied in this grammar after literal chars when allowed
25
+ ws ::= | " " | "\n" [ \t]{0,20}
@@ -0,0 +1,34 @@
1
+ # This is the same as json.gbnf but we restrict whitespaces at the end of the root array
2
+ # Useful for generating JSON arrays
3
+
4
+ root ::= arr
5
+ value ::= object | array | string | number | ("true" | "false" | "null") ws
6
+
7
+ arr ::=
8
+ "[\n" ws (
9
+ value
10
+ (",\n" ws value)*
11
+ )? "]"
12
+
13
+ object ::=
14
+ "{" ws (
15
+ string ":" ws value
16
+ ("," ws string ":" ws value)*
17
+ )? "}" ws
18
+
19
+ array ::=
20
+ "[" ws (
21
+ value
22
+ ("," ws value)*
23
+ )? "]" ws
24
+
25
+ string ::=
26
+ "\"" (
27
+ [^"\\\x7F\x00-\x1F] |
28
+ "\\" (["\\bfnrt] | "u" [0-9a-fA-F]{4}) # escapes
29
+ )* "\"" ws
30
+
31
+ number ::= ("-"? ([0-9] | [1-9] [0-9]{0,15})) ("." [0-9]+)? ([eE] [-+]? [1-9] [0-9]{0,15})? ws
32
+
33
+ # Optional space: by convention, applied in this grammar after literal chars when allowed
34
+ ws ::= | " " | "\n" [ \t]{0,20}
@@ -0,0 +1,4 @@
1
+ root ::= item+
2
+
3
+ # Excludes various line break characters
4
+ item ::= "- " [^\r\n\x0b\x0c\x85\u2028\u2029]+ "\n"
@@ -0,0 +1,4 @@
1
+ {
2
+ "tag": "b8671",
3
+ "llamaCppGithubRepo": "ggml-org/llama.cpp"
4
+ }
@@ -13,8 +13,3 @@ llvmUseGnuModeCompilers("x64")
13
13
 
14
14
  include("${CMAKE_CURRENT_LIST_DIR}/../cmake/win32.ensureNinjaPath.cmake")
15
15
  ensureNinjaPath()
16
-
17
- set(arch_c_flags "-march=native")
18
-
19
- set(CMAKE_C_FLAGS_INIT "${arch_c_flags}")
20
- set(CMAKE_CXX_FLAGS_INIT "${arch_c_flags}")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realtimex/node-llama-cpp",
3
- "version": "0.1.0",
3
+ "version": "0.2.4",
4
4
  "description": "Run AI models locally on your machine with node.js bindings for llama.cpp. Enforce a JSON schema on the model output on the generation level",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "scripts": {
45
45
  "prepare": "node --experimental-require-module -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"",
46
- "postinstall": "cd templates && npm install",
46
+ "postinstall": "node ./dist/cli/cli.js postinstall",
47
47
  "postversion": "vite-node scripts/postVersion.ts",
48
48
  "prebuild": "rimraf ./dist ./tsconfig.tsbuildinfo",
49
49
  "build": "tsc --build tsconfig.json --force && npm run build:packTemplates",
@@ -73,7 +73,7 @@
73
73
  },
74
74
  "repository": {
75
75
  "type": "git",
76
- "url": "git+https://github.com/withcatai/node-llama-cpp.git"
76
+ "url": "git+https://github.com/therealtimex/node-llama-cpp.git"
77
77
  },
78
78
  "keywords": [
79
79
  "llama",
@@ -128,7 +128,7 @@
128
128
  "license": "MIT",
129
129
  "preferUnplugged": true,
130
130
  "bugs": {
131
- "url": "https://github.com/withcatai/node-llama-cpp/issues"
131
+ "url": "https://github.com/therealtimex/node-llama-cpp/issues"
132
132
  },
133
133
  "funding": {
134
134
  "type": "github",
@@ -224,18 +224,19 @@
224
224
  }
225
225
  },
226
226
  "optionalDependencies": {
227
- "@node-llama-cpp/linux-arm64": "0.1.0",
228
- "@node-llama-cpp/linux-armv7l": "0.1.0",
229
- "@node-llama-cpp/linux-x64": "0.1.0",
230
- "@node-llama-cpp/linux-x64-cuda": "0.1.0",
231
- "@node-llama-cpp/linux-x64-cuda-ext": "0.1.0",
232
- "@node-llama-cpp/linux-x64-vulkan": "0.1.0",
233
- "@node-llama-cpp/mac-arm64-metal": "0.1.0",
234
- "@node-llama-cpp/mac-x64": "0.1.0",
235
- "@node-llama-cpp/win-arm64": "0.1.0",
236
- "@node-llama-cpp/win-x64": "0.1.0",
237
- "@node-llama-cpp/win-x64-cuda": "0.1.0",
238
- "@node-llama-cpp/win-x64-cuda-ext": "0.1.0",
239
- "@node-llama-cpp/win-x64-vulkan": "0.1.0"
227
+ "@realtimex/node-llama-cpp-linux-arm64": "0.2.4",
228
+ "@realtimex/node-llama-cpp-linux-armv7l": "0.2.4",
229
+ "@realtimex/node-llama-cpp-linux-x64": "0.2.4",
230
+ "@realtimex/node-llama-cpp-linux-x64-cuda": "0.2.4",
231
+ "@realtimex/node-llama-cpp-linux-x64-vulkan": "0.2.4",
232
+ "@realtimex/node-llama-cpp-mac-arm64-metal": "0.2.4",
233
+ "@realtimex/node-llama-cpp-mac-x64": "0.2.4",
234
+ "@realtimex/node-llama-cpp-win-arm64": "0.2.4",
235
+ "@realtimex/node-llama-cpp-win-x64": "0.2.4",
236
+ "@realtimex/node-llama-cpp-win-x64-cuda": "0.2.4",
237
+ "@realtimex/node-llama-cpp-win-x64-vulkan": "0.2.4"
238
+ },
239
+ "publishConfig": {
240
+ "access": "public"
240
241
  }
241
242
  }
@@ -1,10 +0,0 @@
1
- {
2
- "name": "eslint-dependencies-for-ci",
3
- "private": true,
4
- "version": "0.0.0",
5
- "type": "module",
6
- "devDependencies": {
7
- "eslint-plugin-react-hooks": "^4.6.0",
8
- "eslint-plugin-react-refresh": "^0.4.5"
9
- }
10
- }