node-llama-cpp 3.2.0 → 3.3.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 (144) hide show
  1. package/dist/bindings/AddonTypes.d.ts +4 -3
  2. package/dist/bindings/Llama.d.ts +1 -1
  3. package/dist/bindings/Llama.js +17 -2
  4. package/dist/bindings/Llama.js.map +1 -1
  5. package/dist/bindings/getLlama.d.ts +4 -1
  6. package/dist/bindings/getLlama.js +42 -2
  7. package/dist/bindings/getLlama.js.map +1 -1
  8. package/dist/bindings/utils/compileLLamaCpp.d.ts +1 -1
  9. package/dist/bindings/utils/compileLLamaCpp.js +41 -2
  10. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  11. package/dist/bindings/utils/testBindingBinary.d.ts +2 -1
  12. package/dist/bindings/utils/testBindingBinary.js +122 -37
  13. package/dist/bindings/utils/testBindingBinary.js.map +1 -1
  14. package/dist/chatWrappers/Llama3_1ChatWrapper.js +3 -2
  15. package/dist/chatWrappers/Llama3_1ChatWrapper.js.map +1 -1
  16. package/dist/chatWrappers/Llama3_2LightweightChatWrapper.d.ts +35 -0
  17. package/dist/chatWrappers/Llama3_2LightweightChatWrapper.js +253 -0
  18. package/dist/chatWrappers/Llama3_2LightweightChatWrapper.js.map +1 -0
  19. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.d.ts +13 -0
  20. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js +30 -0
  21. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js.map +1 -1
  22. package/dist/chatWrappers/utils/getModelLinageNames.d.ts +2 -0
  23. package/dist/chatWrappers/utils/getModelLinageNames.js +18 -0
  24. package/dist/chatWrappers/utils/getModelLinageNames.js.map +1 -0
  25. package/dist/chatWrappers/utils/isLlama3_2LightweightModel.d.ts +2 -0
  26. package/dist/chatWrappers/utils/isLlama3_2LightweightModel.js +9 -0
  27. package/dist/chatWrappers/utils/isLlama3_2LightweightModel.js.map +1 -0
  28. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +4 -2
  29. package/dist/chatWrappers/utils/resolveChatWrapper.js +9 -31
  30. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  31. package/dist/cli/commands/ChatCommand.js +1 -1
  32. package/dist/cli/commands/ChatCommand.js.map +1 -1
  33. package/dist/cli/commands/InitCommand.d.ts +2 -1
  34. package/dist/cli/commands/InitCommand.js +32 -13
  35. package/dist/cli/commands/InitCommand.js.map +1 -1
  36. package/dist/cli/recommendedModels.js +11 -0
  37. package/dist/cli/recommendedModels.js.map +1 -1
  38. package/dist/evaluator/LlamaChat/LlamaChat.js +25 -12
  39. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  40. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +140 -132
  41. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  42. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +1 -1
  43. package/dist/evaluator/LlamaGrammar.js +7 -0
  44. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  45. package/dist/evaluator/LlamaJsonSchemaGrammar.d.ts +3 -2
  46. package/dist/evaluator/LlamaJsonSchemaGrammar.js +3 -0
  47. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  48. package/dist/gguf/fileReaders/GgufFileReader.d.ts +1 -1
  49. package/dist/gguf/fileReaders/GgufFsFileReader.d.ts +1 -1
  50. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.d.ts +1 -1
  51. package/dist/index.d.ts +3 -2
  52. package/dist/index.js +2 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/tsconfig.tsbuildinfo +1 -1
  55. package/dist/types.d.ts +2 -2
  56. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +5 -0
  57. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +15 -0
  58. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  59. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +3 -0
  60. package/dist/utils/gbnfJson/GbnfTerminal.js +25 -3
  61. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  62. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.d.ts +1 -1
  63. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  64. package/dist/utils/gbnfJson/terminals/GbnfAnyJson.d.ts +9 -0
  65. package/dist/utils/gbnfJson/terminals/GbnfAnyJson.js +53 -0
  66. package/dist/utils/gbnfJson/terminals/GbnfAnyJson.js.map +1 -0
  67. package/dist/utils/gbnfJson/terminals/GbnfArray.d.ts +11 -2
  68. package/dist/utils/gbnfJson/terminals/GbnfArray.js +64 -15
  69. package/dist/utils/gbnfJson/terminals/GbnfArray.js.map +1 -1
  70. package/dist/utils/gbnfJson/terminals/GbnfBoolean.d.ts +3 -2
  71. package/dist/utils/gbnfJson/terminals/GbnfBoolean.js +13 -7
  72. package/dist/utils/gbnfJson/terminals/GbnfBoolean.js.map +1 -1
  73. package/dist/utils/gbnfJson/terminals/GbnfCommaWhitespace.d.ts +11 -0
  74. package/dist/utils/gbnfJson/terminals/GbnfCommaWhitespace.js +28 -0
  75. package/dist/utils/gbnfJson/terminals/GbnfCommaWhitespace.js.map +1 -0
  76. package/dist/utils/gbnfJson/terminals/GbnfFormatString.d.ts +11 -0
  77. package/dist/utils/gbnfJson/terminals/GbnfFormatString.js +90 -0
  78. package/dist/utils/gbnfJson/terminals/GbnfFormatString.js.map +1 -0
  79. package/dist/utils/gbnfJson/terminals/GbnfGrammar.d.ts +4 -1
  80. package/dist/utils/gbnfJson/terminals/GbnfGrammar.js +8 -1
  81. package/dist/utils/gbnfJson/terminals/GbnfGrammar.js.map +1 -1
  82. package/dist/utils/gbnfJson/terminals/GbnfInsideStringChar.d.ts +5 -0
  83. package/dist/utils/gbnfJson/terminals/GbnfInsideStringChar.js +24 -0
  84. package/dist/utils/gbnfJson/terminals/GbnfInsideStringChar.js.map +1 -0
  85. package/dist/utils/gbnfJson/terminals/GbnfNumber.js +4 -3
  86. package/dist/utils/gbnfJson/terminals/GbnfNumber.js.map +1 -1
  87. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.d.ts +3 -1
  88. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.js +8 -2
  89. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.js.map +1 -1
  90. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.d.ts +14 -5
  91. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.js +67 -9
  92. package/dist/utils/gbnfJson/terminals/GbnfObjectMap.js.map +1 -1
  93. package/dist/utils/gbnfJson/terminals/GbnfOr.d.ts +2 -1
  94. package/dist/utils/gbnfJson/terminals/GbnfOr.js +6 -2
  95. package/dist/utils/gbnfJson/terminals/GbnfOr.js.map +1 -1
  96. package/dist/utils/gbnfJson/terminals/GbnfRepetition.d.ts +7 -1
  97. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js +69 -20
  98. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js.map +1 -1
  99. package/dist/utils/gbnfJson/terminals/GbnfString.d.ts +8 -1
  100. package/dist/utils/gbnfJson/terminals/GbnfString.js +31 -21
  101. package/dist/utils/gbnfJson/terminals/GbnfString.js.map +1 -1
  102. package/dist/utils/gbnfJson/terminals/GbnfStringValue.d.ts +2 -0
  103. package/dist/utils/gbnfJson/terminals/GbnfStringValue.js +7 -4
  104. package/dist/utils/gbnfJson/terminals/GbnfStringValue.js.map +1 -1
  105. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.d.ts +2 -1
  106. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js +24 -5
  107. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js.map +1 -1
  108. package/dist/utils/gbnfJson/terminals/gbnfConsts.d.ts +16 -1
  109. package/dist/utils/gbnfJson/terminals/gbnfConsts.js +47 -1
  110. package/dist/utils/gbnfJson/terminals/gbnfConsts.js.map +1 -1
  111. package/dist/utils/gbnfJson/types.d.ts +164 -17
  112. package/dist/utils/gbnfJson/types.js +6 -0
  113. package/dist/utils/gbnfJson/types.js.map +1 -1
  114. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js +61 -9
  115. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js.map +1 -1
  116. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js +99 -8
  117. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  118. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +125 -16
  119. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -1
  120. package/dist/utils/includesText.d.ts +1 -0
  121. package/dist/utils/includesText.js +12 -0
  122. package/dist/utils/includesText.js.map +1 -0
  123. package/dist/utils/wrapAbortSignal.d.ts +1 -1
  124. package/dist/utils/wrapAbortSignal.js +9 -4
  125. package/dist/utils/wrapAbortSignal.js.map +1 -1
  126. package/llama/CMakeLists.txt +10 -90
  127. package/llama/addon/AddonGrammar.cpp +49 -1
  128. package/llama/addon/AddonGrammar.h +3 -0
  129. package/llama/addon/addon.cpp +17 -0
  130. package/llama/addon/globals/getGpuInfo.cpp +54 -52
  131. package/llama/binariesGithubRelease.json +1 -1
  132. package/llama/gitRelease.bundle +0 -0
  133. package/llama/gpuInfo/vulkan-gpu-info.cpp +0 -8
  134. package/llama/gpuInfo/vulkan-gpu-info.h +0 -1
  135. package/llama/grammars/README.md +1 -1
  136. package/llama/llama.cpp.info.json +1 -1
  137. package/package.json +49 -45
  138. package/templates/README.md +6 -0
  139. package/templates/packed/electron-typescript-react.json +1 -1
  140. package/templates/packed/node-typescript.json +1 -1
  141. package/llama/gpuInfo/cuda-gpu-info.cu +0 -120
  142. package/llama/gpuInfo/cuda-gpu-info.h +0 -10
  143. package/llama/gpuInfo/metal-gpu-info.h +0 -8
  144. package/llama/gpuInfo/metal-gpu-info.mm +0 -37
@@ -1,4 +1,4 @@
1
- import { isGbnfJsonArraySchema, isGbnfJsonConstSchema, isGbnfJsonEnumSchema, isGbnfJsonObjectSchema, isGbnfJsonOneOfSchema } from "../types.js";
1
+ import { isGbnfJsonArraySchema, isGbnfJsonConstSchema, isGbnfJsonEnumSchema, isGbnfJsonObjectSchema, isGbnfJsonOneOfSchema, isGbnfJsonBasicStringSchema, isGbnfJsonFormatStringSchema } from "../types.js";
2
2
  export function validateObjectAgainstGbnfSchema(object, schema) {
3
3
  try {
4
4
  return validateObjectWithGbnfSchema(object, schema);
@@ -30,6 +30,10 @@ function validateObjectWithGbnfSchema(object, schema) {
30
30
  return validateObject(object, schema);
31
31
  else if (isGbnfJsonOneOfSchema(schema))
32
32
  return validateOneOf(object, schema);
33
+ else if (isGbnfJsonBasicStringSchema(schema))
34
+ return validateBasicString(object, schema);
35
+ else if (isGbnfJsonFormatStringSchema(schema))
36
+ return validateFormatString(object, schema);
33
37
  else if (isGbnfJsonEnumSchema(schema))
34
38
  return validateEnum(object, schema);
35
39
  else if (isGbnfJsonConstSchema(schema))
@@ -43,32 +47,77 @@ function validateObjectWithGbnfSchema(object, schema) {
43
47
  }
44
48
  if (validateImmutableType(object, schema.type))
45
49
  return true;
46
- throw new TechnicalValidationError(`Expected "${schema.type}" but got "${object === null ? "null" : typeof object}"`);
50
+ throw new TechnicalValidationError(`Expected type "${schema.type}" but got "${object === null ? "null" : typeof object}"`);
47
51
  }
48
52
  function validateArray(object, schema) {
49
53
  if (!(object instanceof Array))
50
54
  throw new TechnicalValidationError(`Expected an array but got "${typeof object}"`);
55
+ const minItems = Math.max(schema.minItems ?? 0, schema.prefixItems?.length ?? 0);
56
+ const maxItems = schema.maxItems == null
57
+ ? undefined
58
+ : Math.max(schema.maxItems, minItems);
59
+ if (object.length < minItems) {
60
+ if (maxItems != null && minItems === maxItems)
61
+ throw new TechnicalValidationError(`Expected exactly ${minItems} items but got ${object.length}`);
62
+ throw new TechnicalValidationError(`Expected at least ${minItems} items but got ${object.length}`);
63
+ }
64
+ else if (maxItems != null && object.length > maxItems) {
65
+ if (minItems === maxItems)
66
+ throw new TechnicalValidationError(`Expected exactly ${minItems} items but got ${object.length}`);
67
+ throw new TechnicalValidationError(`Expected at most ${maxItems} items but got ${object.length}`);
68
+ }
51
69
  let res = true;
52
- for (const item of object)
53
- res &&= validateObjectWithGbnfSchema(item, schema.items);
70
+ let index = 0;
71
+ if (schema.prefixItems != null) {
72
+ for (const item of schema.prefixItems) {
73
+ res &&= validateObjectWithGbnfSchema(object[index], item);
74
+ index++;
75
+ }
76
+ }
77
+ if (schema.items != null) {
78
+ for (; index < object.length; index++)
79
+ res &&= validateObjectWithGbnfSchema(object[index], schema.items);
80
+ }
54
81
  return res;
55
82
  }
56
83
  function validateObject(object, schema) {
57
84
  if (typeof object !== "object" || object === null)
58
85
  throw new TechnicalValidationError(`Expected an object but got "${typeof object}"`);
86
+ let res = true;
59
87
  const objectKeys = Object.keys(object);
60
88
  const objectKeysSet = new Set(objectKeys);
61
- const schemaKeys = Object.keys(schema.properties);
89
+ const schemaKeys = Object.keys(schema.properties ?? {});
62
90
  const schemaKeysSet = new Set(schemaKeys);
91
+ const minProperties = Math.max(schema.minProperties ?? 0, schemaKeys.length);
92
+ const maxProperties = schema.maxProperties == null
93
+ ? undefined
94
+ : Math.max(schema.maxProperties, minProperties);
63
95
  const extraKeys = objectKeys.filter((key) => !schemaKeysSet.has(key));
64
- if (extraKeys.length > 0)
65
- throw new TechnicalValidationError(`Unexpected keys: ${extraKeys.map((key) => JSON.stringify(key)).join(", ")}`);
96
+ if (extraKeys.length > 0) {
97
+ if (schema.additionalProperties == null || schema.additionalProperties === false)
98
+ throw new TechnicalValidationError(`Unexpected keys: ${extraKeys.map((key) => JSON.stringify(key)).join(", ")}`);
99
+ else if (schema.additionalProperties !== true) {
100
+ for (const key of extraKeys)
101
+ res &&= validateObjectWithGbnfSchema(object[key], schema.additionalProperties);
102
+ }
103
+ }
66
104
  const missingKeys = schemaKeys.filter((key) => !objectKeysSet.has(key));
67
105
  if (missingKeys.length > 0)
68
106
  throw new TechnicalValidationError(`Missing keys: ${missingKeys.map((key) => JSON.stringify(key)).join(", ")}`);
69
- let res = true;
70
107
  for (const key of schemaKeys)
71
108
  res &&= validateObjectWithGbnfSchema(object[key], schema.properties[key]);
109
+ if (schema.additionalProperties != null && schema.additionalProperties !== false) {
110
+ if (objectKeys.length < minProperties) {
111
+ if (maxProperties != null && minProperties === maxProperties)
112
+ throw new TechnicalValidationError(`Expected exactly ${minProperties} properties but got ${objectKeys.length}`);
113
+ throw new TechnicalValidationError(`Expected at least ${minProperties} properties but got ${objectKeys.length}`);
114
+ }
115
+ else if (maxProperties != null && objectKeys.length > maxProperties) {
116
+ if (minProperties === maxProperties)
117
+ throw new TechnicalValidationError(`Expected exactly ${minProperties} properties but got ${objectKeys.length}`);
118
+ throw new TechnicalValidationError(`Expected at most ${maxProperties} properties but got ${objectKeys.length}`);
119
+ }
120
+ }
72
121
  return res;
73
122
  }
74
123
  function validateOneOf(object, schema) {
@@ -84,6 +133,48 @@ function validateOneOf(object, schema) {
84
133
  }
85
134
  throw new TechnicalValidationError(`Expected one of ${schema.oneOf.length} schemas but got ${JSON.stringify(object)}`);
86
135
  }
136
+ function validateBasicString(object, schema) {
137
+ if (typeof object !== "string")
138
+ throw new TechnicalValidationError(`Expected type "${schema.type}" but got "${object === null ? "null" : typeof object}"`);
139
+ const minLength = Math.max(0, schema.minLength ?? 0);
140
+ const maxLength = schema.maxLength == null
141
+ ? undefined
142
+ : Math.max(schema.maxLength, minLength);
143
+ if (object.length < minLength) {
144
+ if (minLength === maxLength)
145
+ throw new TechnicalValidationError(`Expected exactly ${minLength} characters but got ${object.length}`);
146
+ throw new TechnicalValidationError(`Expected at least ${minLength} characters but got ${object.length}`);
147
+ }
148
+ else if (maxLength != null && object.length > maxLength) {
149
+ if (minLength === maxLength)
150
+ throw new TechnicalValidationError(`Expected exactly ${minLength} characters but got ${object.length}`);
151
+ throw new TechnicalValidationError(`Expected at most ${maxLength} characters but got ${object.length}`);
152
+ }
153
+ return true;
154
+ }
155
+ const dateRegex = /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])$/;
156
+ const timeRegex = /^([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d{3})?(Z|[+-]([01][0-9]|2[0-3])?:[0-5][0-9])$/;
157
+ const datetimeRegex = /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d{3})?(Z|[+-]([01][0-9]|2[0-3])?:[0-5][0-9])$/;
158
+ function validateFormatString(object, schema) {
159
+ if (typeof object !== "string")
160
+ throw new TechnicalValidationError(`Expected type "${schema.type}" but got "${object === null ? "null" : typeof object}"`);
161
+ if (schema.format === "date") {
162
+ if (object.match(dateRegex) != null)
163
+ return true;
164
+ throw new TechnicalValidationError(`Expected a valid date string but got ${JSON.stringify(object)}`);
165
+ }
166
+ else if (schema.format === "time") {
167
+ if (object.match(timeRegex) != null)
168
+ return true;
169
+ throw new TechnicalValidationError(`Expected a valid time string but got ${JSON.stringify(object)}`);
170
+ }
171
+ else if (schema.format === "date-time") {
172
+ if (object.match(datetimeRegex) != null)
173
+ return true;
174
+ throw new TechnicalValidationError(`Expected a valid date-time string but got ${JSON.stringify(object)}`);
175
+ }
176
+ throw new TechnicalValidationError(`Unknown format "${schema.format}"`);
177
+ }
87
178
  function validateEnum(object, schema) {
88
179
  for (const value of schema.enum) {
89
180
  if (object === value)
@@ -1 +1 @@
1
- {"version":3,"file":"validateObjectAgainstGbnfSchema.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateObjectAgainstGbnfSchema.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { isGbnfJsonArraySchema, isGbnfJsonBasicSchemaIncludesType, isGbnfJsonConstSchema, isGbnfJsonEnumSchema, isGbnfJsonObjectSchema, isGbnfJsonOneOfSchema } from "./gbnfJson/types.js";
1
+ import { isGbnfJsonArraySchema, isGbnfJsonBasicSchemaIncludesType, isGbnfJsonBasicStringSchema, isGbnfJsonConstSchema, isGbnfJsonEnumSchema, isGbnfJsonFormatStringSchema, isGbnfJsonObjectSchema, isGbnfJsonOneOfSchema } from "./gbnfJson/types.js";
2
+ const maxTypeRepetition = 10;
2
3
  export function getTypeScriptTypeStringForGbnfJsonSchema(schema) {
3
4
  if (isGbnfJsonOneOfSchema(schema)) {
4
5
  const values = schema.oneOf
@@ -15,27 +16,130 @@ export function getTypeScriptTypeStringForGbnfJsonSchema(schema) {
15
16
  .join(" | ");
16
17
  }
17
18
  else if (isGbnfJsonObjectSchema(schema)) {
18
- return [
19
+ let addNewline = false;
20
+ const valueTypes = Object.entries(schema.properties ?? {})
21
+ .map(([propName, propSchema]) => {
22
+ const escapedValue = JSON.stringify(propName) ?? "";
23
+ const keyText = escapedValue.slice(1, -1) === propName ? propName : escapedValue;
24
+ const valueType = getTypeScriptTypeStringForGbnfJsonSchema(propSchema);
25
+ if (keyText === "" || valueType === "")
26
+ return "";
27
+ const mapping = keyText + ": " + valueType;
28
+ const description = (propSchema.description != null && propSchema.description !== "")
29
+ ? [propSchema.description]
30
+ : [];
31
+ const propInfo = [];
32
+ if (isGbnfJsonBasicStringSchema(propSchema)) {
33
+ if (propSchema.minLength != null && propSchema.minLength > 0)
34
+ propInfo.push("minimum length: " + String(Math.floor(propSchema.minLength)));
35
+ if (propSchema.maxLength != null)
36
+ propInfo.push("maximum length: " + String(Math.floor(Math.max(propSchema.maxLength, propSchema.minLength ?? 0, 0))));
37
+ }
38
+ else if (isGbnfJsonFormatStringSchema(propSchema)) {
39
+ if (propSchema.format === "date-time")
40
+ propInfo.push("format: ISO 8601 date-time");
41
+ else
42
+ propInfo.push("format: " + String(propSchema.format));
43
+ }
44
+ else if (isGbnfJsonArraySchema(propSchema)) {
45
+ if (propSchema.minItems != null && propSchema.minItems > maxTypeRepetition)
46
+ propInfo.push("minimum items: " + String(Math.floor(propSchema.minItems)));
47
+ if (propSchema.maxItems != null)
48
+ propInfo.push("maximum items: " + String(Math.floor(Math.max(propSchema.maxItems, propSchema.minItems ?? 0, 0))));
49
+ }
50
+ else if (isGbnfJsonObjectSchema(propSchema)) {
51
+ if (propSchema.minProperties != null && propSchema.minProperties > 0)
52
+ propInfo.push("minimum number of properties: " + String(Math.floor(propSchema.minProperties)));
53
+ if (propSchema.maxProperties != null)
54
+ propInfo.push("maximum number of properties: " +
55
+ String(Math.floor(Math.max(propSchema.maxProperties, propSchema.minProperties ?? 0, 0))));
56
+ }
57
+ if (propInfo.length > 0)
58
+ description.push(propInfo.join(", "));
59
+ if (description.length > 0) {
60
+ addNewline = true;
61
+ return [
62
+ "\n",
63
+ "// ", description
64
+ .join("\n")
65
+ .split("\n")
66
+ .join("\n// "),
67
+ "\n",
68
+ mapping
69
+ ].join("");
70
+ }
71
+ return mapping;
72
+ })
73
+ .filter((item) => item !== "");
74
+ const knownPropertiesMapSyntax = [
19
75
  "{",
20
- Object.entries(schema.properties)
21
- .map(([propName, propSchema]) => {
22
- const escapedValue = JSON.stringify(propName) ?? "";
23
- const keyText = escapedValue.slice(1, -1) === propName ? propName : escapedValue;
24
- const valueType = getTypeScriptTypeStringForGbnfJsonSchema(propSchema);
25
- if (keyText === "" || valueType === "")
26
- return "";
27
- return keyText + ": " + valueType;
28
- })
29
- .filter((item) => item !== "")
30
- .join(", "),
76
+ (addNewline && valueTypes.length > 0)
77
+ ? [
78
+ "\n ",
79
+ valueTypes
80
+ .map((value) => value.split("\n").join("\n "))
81
+ .join(",\n ")
82
+ .trimStart(),
83
+ "\n"
84
+ ].join("")
85
+ : valueTypes.join(", "),
31
86
  "}"
32
87
  ].join("");
88
+ const additionalPropertiesMapSyntax = (schema.additionalProperties == null || schema.additionalProperties == false)
89
+ ? undefined
90
+ : schema.additionalProperties === true
91
+ ? "{[key: string]: any}"
92
+ : schema.additionalProperties != null
93
+ ? ["{[key: string]: ", getTypeScriptTypeStringForGbnfJsonSchema(schema.additionalProperties), "}"].join("")
94
+ : undefined;
95
+ if (valueTypes.length === 0 && additionalPropertiesMapSyntax != null)
96
+ return additionalPropertiesMapSyntax;
97
+ else if (additionalPropertiesMapSyntax != null)
98
+ return [knownPropertiesMapSyntax, " & ", additionalPropertiesMapSyntax].join("");
99
+ return knownPropertiesMapSyntax;
33
100
  }
34
101
  else if (isGbnfJsonArraySchema(schema)) {
35
- const valuesType = getTypeScriptTypeStringForGbnfJsonSchema(schema.items);
36
- if (valuesType === "")
102
+ if (schema.maxItems === 0)
37
103
  return "[]";
38
- return "(" + valuesType + ")[]";
104
+ if (schema.prefixItems != null && schema.prefixItems.length > 0) {
105
+ const valueTypes = schema.prefixItems.map((item) => getTypeScriptTypeStringForGbnfJsonSchema(item));
106
+ const restType = schema.items != null
107
+ ? getTypeScriptTypeStringForGbnfJsonSchema(schema.items)
108
+ : "any";
109
+ if (schema.minItems != null) {
110
+ for (let i = schema.prefixItems.length; i < Math.min(schema.prefixItems.length + maxTypeRepetition, schema.minItems); i++)
111
+ valueTypes.push(restType);
112
+ }
113
+ if (schema.maxItems == null || schema.maxItems > valueTypes.length)
114
+ valueTypes.push("..." + wrapWithParensIfNeeded(restType) + "[]");
115
+ return "[" + valueTypes.join(", ") + "]";
116
+ }
117
+ else if (schema.items != null) {
118
+ const valuesType = getTypeScriptTypeStringForGbnfJsonSchema(schema.items);
119
+ if (valuesType === "")
120
+ return "[]";
121
+ if (schema.minItems != null) {
122
+ if (schema.minItems === schema.maxItems) {
123
+ if (schema.minItems < maxTypeRepetition)
124
+ return "[" + (valuesType + ", ").repeat(schema.minItems).slice(0, -", ".length) + "]";
125
+ else
126
+ return [
127
+ "[",
128
+ (valuesType + ", ").repeat(maxTypeRepetition),
129
+ "...", wrapWithParensIfNeeded(valuesType), "[]",
130
+ "]"
131
+ ].join("");
132
+ }
133
+ else if (schema.minItems <= 0)
134
+ return wrapWithParensIfNeeded(valuesType) + "[]";
135
+ else if (schema.minItems < maxTypeRepetition)
136
+ return "[" + (valuesType + ", ").repeat(schema.minItems) + "..." + wrapWithParensIfNeeded(valuesType) + "[]]";
137
+ else
138
+ return wrapWithParensIfNeeded(valuesType) + "[]";
139
+ }
140
+ return wrapWithParensIfNeeded(valuesType) + "[]";
141
+ }
142
+ return "any[]";
39
143
  }
40
144
  const types = [];
41
145
  if (isGbnfJsonBasicSchemaIncludesType(schema, "string"))
@@ -50,4 +154,9 @@ export function getTypeScriptTypeStringForGbnfJsonSchema(schema) {
50
154
  types.push("null");
51
155
  return types.join(" | ");
52
156
  }
157
+ function wrapWithParensIfNeeded(text) {
158
+ if (text.includes(" ") || text.includes("|") || text.includes("&") || text.includes("\n") || text.includes("\t"))
159
+ return "(" + text + ")";
160
+ return text;
161
+ }
53
162
  //# sourceMappingURL=getTypeScriptTypeStringForGbnfJsonSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTypeScriptTypeStringForGbnfJsonSchema.js","sourceRoot":"","sources":["../../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getTypeScriptTypeStringForGbnfJsonSchema.js","sourceRoot":"","sources":["../../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function includesText(value: string | string[] | null | undefined, textToCheckFor: string | string[], strictCase?: boolean): boolean;
@@ -0,0 +1,12 @@
1
+ export function includesText(value, textToCheckFor, strictCase = false) {
2
+ if (value instanceof Array)
3
+ return value.some((v) => includesText(v, textToCheckFor, strictCase));
4
+ else if (typeof value !== "string")
5
+ return false;
6
+ if (textToCheckFor instanceof Array)
7
+ return textToCheckFor.some((t) => includesText(value, t, strictCase));
8
+ if (strictCase)
9
+ return value.includes(textToCheckFor);
10
+ return value.toLowerCase().includes(textToCheckFor.toLowerCase());
11
+ }
12
+ //# sourceMappingURL=includesText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"includesText.js","sourceRoot":"","sources":["../../src/utils/includesText.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CACxB,KAA2C,EAC3C,cAAiC,EACjC,aAAsB,KAAK;IAE3B,IAAI,KAAK,YAAY,KAAK;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;SACrE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC;IAEjB,IAAI,cAAc,YAAY,KAAK;QAC/B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1E,IAAI,UAAU;QACV,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAE1C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC"}
@@ -1 +1 @@
1
- export declare function wrapAbortSignal(abortSignal?: AbortSignal): AbortController;
1
+ export declare function wrapAbortSignal(abortSignal?: AbortSignal): [controller: AbortController, dispose: (() => void)];
@@ -1,9 +1,14 @@
1
1
  export function wrapAbortSignal(abortSignal) {
2
2
  const controller = new AbortController();
3
+ function onAbort() {
4
+ controller.abort(abortSignal.reason);
5
+ }
6
+ function dispose() {
7
+ if (abortSignal != null)
8
+ abortSignal.removeEventListener("abort", onAbort);
9
+ }
3
10
  if (abortSignal != null)
4
- abortSignal.addEventListener("abort", () => {
5
- controller.abort(abortSignal.reason);
6
- });
7
- return controller;
11
+ abortSignal.addEventListener("abort", onAbort);
12
+ return [controller, dispose];
8
13
  }
9
14
  //# sourceMappingURL=wrapAbortSignal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapAbortSignal.js","sourceRoot":"","sources":["../../src/utils/wrapAbortSignal.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,WAAyB;IACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,IAAI,WAAW,IAAI,IAAI;QACnB,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACvC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IAEP,OAAO,UAAU,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"wrapAbortSignal.js","sourceRoot":"","sources":["../../src/utils/wrapAbortSignal.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,WAAyB;IACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,SAAS,OAAO;QACZ,UAAU,CAAC,KAAK,CAAC,WAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,OAAO;QACZ,IAAI,WAAW,IAAI,IAAI;YACnB,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,WAAW,IAAI,IAAI;QACnB,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -28,6 +28,16 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Ap
28
28
  add_compile_options(-Wno-c++17-extensions)
29
29
  endif()
30
30
 
31
+ if(APPLE)
32
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
33
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
34
+ set(CMAKE_BUILD_RPATH "@loader_path")
35
+ set(CMAKE_INSTALL_RPATH "@loader_path")
36
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
37
+ else()
38
+ set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
39
+ endif()
40
+
31
41
  include_directories(${NODE_ADDON_API_DIR} ${CMAKE_JS_INC})
32
42
 
33
43
  add_subdirectory("llama.cpp")
@@ -39,41 +49,6 @@ unset(GPU_INFO_HEADERS)
39
49
  unset(GPU_INFO_SOURCES)
40
50
  unset(GPU_INFO_EXTRA_LIBS)
41
51
 
42
- if (GGML_CUDA)
43
- cmake_minimum_required(VERSION 3.17)
44
-
45
- find_package(CUDAToolkit)
46
- if (CUDAToolkit_FOUND)
47
- message(STATUS "Using CUDA for GPU info")
48
-
49
- enable_language(CUDA)
50
-
51
- list(APPEND GPU_INFO_HEADERS gpuInfo/cuda-gpu-info.h)
52
- list(APPEND GPU_INFO_SOURCES gpuInfo/cuda-gpu-info.cu)
53
-
54
- add_compile_definitions(GPU_INFO_USE_CUDA)
55
-
56
- if (GGML_STATIC)
57
- list(APPEND GPU_INFO_EXTRA_LIBS CUDA::cudart_static)
58
- else()
59
- list(APPEND GPU_INFO_EXTRA_LIBS CUDA::cudart)
60
- endif()
61
-
62
- list(APPEND GPU_INFO_EXTRA_LIBS CUDA::cuda_driver)
63
-
64
- if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
65
- # copied from llama.cpp/CMakLists.txt under "if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES)"
66
- if (GGML_CUDA_F16 OR GGML_CUDA_DMMV_F16)
67
- set(CMAKE_CUDA_ARCHITECTURES "60;61;70;75")
68
- else()
69
- set(CMAKE_CUDA_ARCHITECTURES "52;61;70;75")
70
- endif()
71
- endif()
72
- else()
73
- message(FATAL_ERROR "CUDA was not found")
74
- endif()
75
- endif()
76
-
77
52
  if (GGML_VULKAN OR GGML_KOMPUTE)
78
53
  find_package(Vulkan)
79
54
  if (Vulkan_FOUND)
@@ -94,67 +69,12 @@ if (GGML_VULKAN OR GGML_KOMPUTE)
94
69
  endif()
95
70
  endif()
96
71
 
97
- if (GGML_HIPBLAS)
98
- list(APPEND CMAKE_PREFIX_PATH /opt/rocm)
99
-
100
- if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang")
101
- message(WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang")
102
- endif()
103
- if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
104
- message(WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++")
105
- endif()
106
-
107
- find_package(hip)
108
- find_package(hipblas)
109
- find_package(rocblas)
110
-
111
- if (${hipblas_FOUND} AND ${hip_FOUND})
112
- message(STATUS "Using HIP and hipBLAS for GPU info")
113
- add_compile_definitions(GPU_INFO_USE_HIPBLAS GPU_INFO_USE_CUDA)
114
- add_library(gpu-info-rocm OBJECT gpuInfo/cuda-gpu-info.cu gpuInfo/cuda-gpu-info.h)
115
- set_source_files_properties(gpuInfo/cuda-gpu-info.cu PROPERTIES LANGUAGE CXX)
116
- target_link_libraries(gpu-info-rocm PRIVATE hip::device PUBLIC hip::host roc::rocblas roc::hipblas)
117
-
118
- list(APPEND GPU_INFO_EXTRA_LIBS gpu-info-rocm)
119
- else()
120
- message(FATAL_ERROR "hipBLAS or HIP was not found. Try setting CMAKE_PREFIX_PATH=/opt/rocm")
121
- endif()
122
- endif()
123
-
124
- if (GGML_METAL)
125
- find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
126
- find_library(METAL_FRAMEWORK Metal REQUIRED)
127
- find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
128
-
129
- message(STATUS "Using Metal for GPU info")
130
- list(APPEND GPU_INFO_HEADERS gpuInfo/metal-gpu-info.h)
131
- list(APPEND GPU_INFO_SOURCES gpuInfo/metal-gpu-info.mm)
132
-
133
- add_compile_definitions(GPU_INFO_USE_METAL)
134
-
135
- list(APPEND GPU_INFO_EXTRA_LIBS
136
- ${FOUNDATION_LIBRARY}
137
- ${METAL_FRAMEWORK}
138
- ${METALKIT_FRAMEWORK}
139
- )
140
- endif()
141
-
142
72
  list(REMOVE_DUPLICATES GPU_INFO_HEADERS)
143
73
  list(REMOVE_DUPLICATES GPU_INFO_SOURCES)
144
74
  list(REMOVE_DUPLICATES GPU_INFO_EXTRA_LIBS)
145
75
 
146
76
  file(GLOB SOURCE_FILES "addon/*.cpp" "addon/**/*.cpp" ${GPU_INFO_SOURCES})
147
77
 
148
- if(APPLE)
149
- set(CMAKE_SKIP_BUILD_RPATH FALSE)
150
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
151
- set(CMAKE_BUILD_RPATH "@loader_path")
152
- set(CMAKE_INSTALL_RPATH "@loader_path")
153
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
154
- else()
155
- set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
156
- endif()
157
-
158
78
  add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC} ${GPU_INFO_HEADERS})
159
79
  set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
160
80
  target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})
@@ -34,6 +34,54 @@ AddonGrammar::~AddonGrammar() {
34
34
  }
35
35
  }
36
36
 
37
+ Napi::Value AddonGrammar::isTextCompatible(const Napi::CallbackInfo& info) {
38
+ const std::string testText = info[0].As<Napi::String>().Utf8Value();
39
+
40
+ auto parsed_grammar = llama_grammar_init_impl(nullptr, grammarCode.c_str(), rootRuleName.c_str());
41
+
42
+ // will be empty if there are parse errors
43
+ if (parsed_grammar == nullptr) {
44
+ Napi::Error::New(info.Env(), "Failed to parse grammar").ThrowAsJavaScriptException();
45
+ return Napi::Boolean::New(info.Env(), false);
46
+ }
47
+
48
+ const auto cpts = unicode_cpts_from_utf8(testText);
49
+ const llama_grammar_rules & rules = llama_grammar_get_rules(parsed_grammar);
50
+ llama_grammar_stacks & stacks_cur = llama_grammar_get_stacks(parsed_grammar);
51
+
52
+ for (const auto & cpt : cpts) {
53
+ const llama_grammar_stacks stacks_prev = llama_grammar_get_stacks(parsed_grammar);
54
+
55
+ llama_grammar_accept(rules, stacks_prev, cpt, stacks_cur);
56
+
57
+ if (stacks_cur.empty()) {
58
+ // no stacks means that the grammar failed to match at this point
59
+ llama_grammar_free_impl(parsed_grammar);
60
+ return Napi::Boolean::New(info.Env(), false);
61
+ }
62
+ }
63
+
64
+ for (const auto & stack : stacks_cur) {
65
+ if (stack.empty()) {
66
+ // an empty stack means that the grammar has been completed
67
+ llama_grammar_free_impl(parsed_grammar);
68
+ return Napi::Boolean::New(info.Env(), true);
69
+ }
70
+ }
71
+
72
+ llama_grammar_free_impl(parsed_grammar);
73
+ return Napi::Boolean::New(info.Env(), false);
74
+ }
75
+
37
76
  void AddonGrammar::init(Napi::Object exports) {
38
- exports.Set("AddonGrammar", DefineClass(exports.Env(), "AddonGrammar", {}));
77
+ exports.Set(
78
+ "AddonGrammar",
79
+ DefineClass(
80
+ exports.Env(),
81
+ "AddonGrammar",
82
+ {
83
+ InstanceMethod("isTextCompatible", &AddonGrammar::isTextCompatible),
84
+ }
85
+ )
86
+ );
39
87
  }
@@ -2,6 +2,7 @@
2
2
  #include "llama.h"
3
3
  #include "common/common.h"
4
4
  #include "llama-grammar.h"
5
+ #include "unicode.h"
5
6
  #include "napi.h"
6
7
  #include "addonGlobals.h"
7
8
 
@@ -15,5 +16,7 @@ class AddonGrammar : public Napi::ObjectWrap<AddonGrammar> {
15
16
  AddonGrammar(const Napi::CallbackInfo& info);
16
17
  ~AddonGrammar();
17
18
 
19
+ Napi::Value isTextCompatible(const Napi::CallbackInfo& info);
20
+
18
21
  static void init(Napi::Object exports);
19
22
  };