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

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 (152) hide show
  1. package/README.md +2 -0
  2. package/dist/ChatWrapper.d.ts +49 -0
  3. package/dist/ChatWrapper.js +120 -0
  4. package/dist/ChatWrapper.js.map +1 -0
  5. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +12 -0
  6. package/dist/chatWrappers/AlpacaChatWrapper.js +21 -0
  7. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -0
  8. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +13 -0
  9. package/dist/chatWrappers/ChatMLChatWrapper.js +83 -0
  10. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -0
  11. package/dist/chatWrappers/EmptyChatWrapper.d.ts +4 -0
  12. package/dist/chatWrappers/EmptyChatWrapper.js +5 -0
  13. package/dist/chatWrappers/EmptyChatWrapper.js.map +1 -0
  14. package/dist/chatWrappers/FalconChatWrapper.d.ts +21 -0
  15. package/dist/chatWrappers/FalconChatWrapper.js +104 -0
  16. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -0
  17. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +41 -0
  18. package/dist/chatWrappers/FunctionaryChatWrapper.js +200 -0
  19. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -0
  20. package/dist/chatWrappers/GeneralChatWrapper.d.ts +21 -0
  21. package/dist/chatWrappers/GeneralChatWrapper.js +112 -0
  22. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -0
  23. package/dist/chatWrappers/LlamaChatWrapper.d.ts +13 -0
  24. package/dist/chatWrappers/LlamaChatWrapper.js +78 -0
  25. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -0
  26. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +4 -4
  27. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +24 -16
  28. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
  29. package/dist/cli/commands/ChatCommand.d.ts +2 -1
  30. package/dist/cli/commands/ChatCommand.js +71 -33
  31. package/dist/cli/commands/ChatCommand.js.map +1 -1
  32. package/dist/config.js +1 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/index.d.ts +17 -10
  35. package/dist/index.js +16 -8
  36. package/dist/index.js.map +1 -1
  37. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -1
  38. package/dist/llamaEvaluator/LlamaChat/LlamaChat.d.ts +175 -0
  39. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js +704 -0
  40. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js.map +1 -0
  41. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +21 -0
  42. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js +120 -0
  43. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
  44. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
  45. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +117 -0
  46. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  47. package/dist/llamaEvaluator/{LlamaChatSession.d.ts → LlamaChatSession/LlamaChatSession.d.ts} +48 -25
  48. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js +211 -0
  49. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  50. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
  51. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
  52. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  53. package/dist/llamaEvaluator/LlamaContext/LlamaContext.d.ts +18 -23
  54. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js +60 -103
  55. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +1 -1
  56. package/dist/llamaEvaluator/LlamaContext/types.d.ts +6 -14
  57. package/dist/llamaEvaluator/LlamaEmbeddingContext.d.ts +35 -0
  58. package/dist/llamaEvaluator/LlamaEmbeddingContext.js +73 -0
  59. package/dist/llamaEvaluator/LlamaEmbeddingContext.js.map +1 -0
  60. package/dist/llamaEvaluator/LlamaGrammar.d.ts +8 -12
  61. package/dist/llamaEvaluator/LlamaGrammar.js +7 -12
  62. package/dist/llamaEvaluator/LlamaGrammar.js.map +1 -1
  63. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js +2 -1
  64. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  65. package/dist/llamaEvaluator/LlamaModel.d.ts +10 -2
  66. package/dist/llamaEvaluator/LlamaModel.js +14 -3
  67. package/dist/llamaEvaluator/LlamaModel.js.map +1 -1
  68. package/dist/types.d.ts +41 -3
  69. package/dist/types.js +5 -1
  70. package/dist/types.js.map +1 -1
  71. package/dist/utils/LlamaText.d.ts +42 -0
  72. package/dist/utils/LlamaText.js +207 -0
  73. package/dist/utils/LlamaText.js.map +1 -0
  74. package/dist/utils/StopGenerationDetector.d.ts +28 -0
  75. package/dist/utils/StopGenerationDetector.js +205 -0
  76. package/dist/utils/StopGenerationDetector.js.map +1 -0
  77. package/dist/utils/TokenStreamRegulator.d.ts +30 -0
  78. package/dist/utils/TokenStreamRegulator.js +96 -0
  79. package/dist/utils/TokenStreamRegulator.js.map +1 -0
  80. package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
  81. package/dist/utils/appendUserMessageToChatHistory.js +18 -0
  82. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
  83. package/dist/utils/compareTokens.d.ts +2 -0
  84. package/dist/utils/compareTokens.js +4 -0
  85. package/dist/utils/compareTokens.js.map +1 -0
  86. package/dist/utils/compileLLamaCpp.js +11 -6
  87. package/dist/utils/compileLLamaCpp.js.map +1 -1
  88. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
  89. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
  90. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
  91. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
  92. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
  93. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  94. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
  95. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  96. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
  97. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
  98. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
  99. package/dist/utils/gbnfJson/types.d.ts +1 -1
  100. package/dist/utils/gbnfJson/types.js.map +1 -1
  101. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
  102. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  103. package/dist/utils/getBin.d.ts +3 -2
  104. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
  105. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  106. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
  107. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
  108. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
  109. package/dist/utils/resolveChatWrapper.d.ts +4 -0
  110. package/dist/utils/resolveChatWrapper.js +16 -0
  111. package/dist/utils/resolveChatWrapper.js.map +1 -0
  112. package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
  113. package/dist/utils/truncateTextAndRoundToWords.js +27 -0
  114. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
  115. package/llama/addon.cpp +45 -17
  116. package/llama/binariesGithubRelease.json +1 -1
  117. package/llama/gitRelease.bundle +0 -0
  118. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  119. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  120. package/llamaBins/linux-x64/llama-addon.node +0 -0
  121. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  122. package/llamaBins/mac-x64/llama-addon.node +0 -0
  123. package/llamaBins/win-x64/llama-addon.node +0 -0
  124. package/package.json +21 -9
  125. package/dist/ChatPromptWrapper.d.ts +0 -11
  126. package/dist/ChatPromptWrapper.js +0 -20
  127. package/dist/ChatPromptWrapper.js.map +0 -1
  128. package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
  129. package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
  130. package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
  131. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
  132. package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
  133. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
  134. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
  135. package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
  136. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
  137. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
  138. package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
  139. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
  140. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
  141. package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
  142. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
  143. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -15
  144. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -39
  145. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
  146. package/dist/llamaEvaluator/LlamaChatSession.js +0 -290
  147. package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
  148. package/dist/utils/getTextCompletion.d.ts +0 -3
  149. package/dist/utils/getTextCompletion.js +0 -12
  150. package/dist/utils/getTextCompletion.js.map +0 -1
  151. package/llamaBins/mac-arm64/ggml-metal.metal +0 -2929
  152. package/llamaBins/mac-x64/ggml-metal.metal +0 -2929
@@ -0,0 +1,205 @@
1
+ import { isLlamaText, SpecialToken } from "./LlamaText.js";
2
+ export class StopGenerationDetector {
3
+ /** @internal */ _stopTriggers = new Map();
4
+ /** @internal */ _activeChecks = new Set();
5
+ /** @internal */ _triggeredStops = new Map();
6
+ recordGeneration({ text, tokens, queuedTokenRelease, startNewChecks = true }) {
7
+ const currentActiveChecks = this._activeChecks;
8
+ this._activeChecks = new Set();
9
+ for (const check of currentActiveChecks) {
10
+ let lockUsed = false;
11
+ if (text.length > 0)
12
+ lockUsed ||= this._checkTriggerPart(check, text);
13
+ else {
14
+ this._activeChecks.add(check);
15
+ lockUsed = true;
16
+ }
17
+ if (tokens.length > 0)
18
+ lockUsed ||= this._checkTriggerPart(check, tokens);
19
+ else {
20
+ this._activeChecks.add(check);
21
+ lockUsed = true;
22
+ }
23
+ if (!lockUsed)
24
+ check.queuedTokenReleaseLock?.dispose();
25
+ }
26
+ if (!startNewChecks)
27
+ return;
28
+ for (let i = 0; i < text.length; i++) {
29
+ const char = text[i];
30
+ const currentPart = this._stopTriggers.get(char);
31
+ if (currentPart == null)
32
+ continue;
33
+ const textCheck = {
34
+ queuedTokenReleaseLock: queuedTokenRelease?.createTextIndexLock(i),
35
+ currentPart
36
+ };
37
+ const lockUsed = this._checkTriggerPart(textCheck, text.slice(i + 1));
38
+ if (!lockUsed)
39
+ textCheck.queuedTokenReleaseLock?.dispose();
40
+ }
41
+ for (let i = 0; i < tokens.length; i++) {
42
+ const token = tokens[i];
43
+ const currentPart = this._stopTriggers.get(token);
44
+ if (currentPart == null)
45
+ continue;
46
+ const tokenCheck = {
47
+ queuedTokenReleaseLock: queuedTokenRelease?.createTokenIndexLock(i),
48
+ currentPart
49
+ };
50
+ const lockUsed = this._checkTriggerPart(tokenCheck, tokens.slice(i + 1));
51
+ if (!lockUsed)
52
+ tokenCheck.queuedTokenReleaseLock?.dispose();
53
+ }
54
+ }
55
+ addStopTrigger(stopTrigger, completeEvent) {
56
+ const simplifiedTrigger = simplifyStopTrigger(stopTrigger);
57
+ const triggerValues = simplifiedTrigger
58
+ .map((item) => {
59
+ if (typeof item === "string")
60
+ return item.split("");
61
+ else
62
+ return [item];
63
+ })
64
+ .flat(1);
65
+ let currentMap = this._stopTriggers;
66
+ for (let i = 0; i < triggerValues.length; i++) {
67
+ const value = triggerValues[i];
68
+ const isLast = i === triggerValues.length - 1;
69
+ if (!currentMap.has(value)) {
70
+ currentMap.set(value, {
71
+ next: new Map()
72
+ });
73
+ }
74
+ const part = currentMap.get(value);
75
+ if (isLast) {
76
+ part.next = undefined;
77
+ part.completesTrigger = simplifiedTrigger;
78
+ part.completeEvents = part.completeEvents ?? new Set();
79
+ if (completeEvent != null)
80
+ part.completeEvents.add(completeEvent);
81
+ }
82
+ else if (part.next == null)
83
+ break;
84
+ else
85
+ currentMap = part.next;
86
+ }
87
+ return this;
88
+ }
89
+ /** Whether there are some stops that have been found and triggered. */
90
+ get hasTriggeredStops() {
91
+ return this._triggeredStops.size > 0;
92
+ }
93
+ /** Whether there are some stops that have been found, but not triggered yet. */
94
+ get hasInProgressStops() {
95
+ return this._activeChecks.size > 0;
96
+ }
97
+ /** Gets the stops that have been found and triggered. */
98
+ getTriggeredStops() {
99
+ const res = [];
100
+ for (const [triggerPart, triggeredStop] of this._triggeredStops.entries()) {
101
+ res.push({
102
+ stopTrigger: triggerPart.completesTrigger,
103
+ events: Array.from(triggerPart.completeEvents ?? new Set()),
104
+ remainingGenerations: Array.from(triggeredStop.remainingGenerations),
105
+ queuedTokenReleaseLocks: Array.from(triggeredStop.queuedTokenReleaseLocks)
106
+ });
107
+ }
108
+ return res;
109
+ }
110
+ clearTriggeredStops() {
111
+ for (const triggeredStop of this._triggeredStops.values()) {
112
+ for (const queuedTokenReleaseLock of triggeredStop.queuedTokenReleaseLocks)
113
+ queuedTokenReleaseLock.dispose();
114
+ }
115
+ this._triggeredStops.clear();
116
+ }
117
+ clearInProgressStops() {
118
+ for (const check of this._activeChecks)
119
+ check.queuedTokenReleaseLock?.dispose();
120
+ this._activeChecks.clear();
121
+ }
122
+ /** @internal */
123
+ _addFoundStop(part, remainingGeneration, queuedTokenReleaseLock) {
124
+ if (!this._triggeredStops.has(part))
125
+ this._triggeredStops.set(part, {
126
+ remainingGenerations: new Set(),
127
+ queuedTokenReleaseLocks: new Set()
128
+ });
129
+ const triggeredStop = this._triggeredStops.get(part);
130
+ if (remainingGeneration != null)
131
+ triggeredStop.remainingGenerations.add(remainingGeneration);
132
+ if (queuedTokenReleaseLock != null)
133
+ triggeredStop.queuedTokenReleaseLocks.add(queuedTokenReleaseLock);
134
+ }
135
+ /** @internal */
136
+ _checkTriggerPart(check, value) {
137
+ if (check == null)
138
+ return false;
139
+ let part = check.currentPart;
140
+ for (let i = 0; i < value.length && part != null; i++) {
141
+ const item = value[i];
142
+ if (part.next == null) {
143
+ this._addFoundStop(part, value.slice(i), check.queuedTokenReleaseLock);
144
+ return true;
145
+ }
146
+ if (part.next.has(item)) {
147
+ part = part.next.get(item);
148
+ continue;
149
+ }
150
+ return false;
151
+ }
152
+ if (part == null)
153
+ return false;
154
+ if (part.next == null) {
155
+ this._addFoundStop(part, undefined, check.queuedTokenReleaseLock);
156
+ return true;
157
+ }
158
+ else {
159
+ this._activeChecks.add({
160
+ ...check,
161
+ currentPart: part
162
+ });
163
+ return true;
164
+ }
165
+ }
166
+ static resolveStopTriggers(stopTriggers, tokenizer) {
167
+ return stopTriggers.map((stopTrigger) => {
168
+ if (isLlamaText(stopTrigger))
169
+ return StopGenerationDetector.resolveLlamaTextTrigger(stopTrigger, tokenizer);
170
+ else
171
+ return simplifyStopTrigger(stopTrigger);
172
+ });
173
+ }
174
+ static resolveLlamaTextTrigger(llamaText, tokenizer) {
175
+ return simplifyStopTrigger(llamaText.values
176
+ .filter(value => value !== "")
177
+ .map((value) => {
178
+ if (typeof value === "string")
179
+ return [value];
180
+ else if (value instanceof SpecialToken)
181
+ return value.tokenize(tokenizer);
182
+ return value;
183
+ })
184
+ .flat(1));
185
+ }
186
+ }
187
+ function simplifyStopTrigger(stopTrigger) {
188
+ let text = "";
189
+ const res = [];
190
+ for (const item of stopTrigger) {
191
+ if (typeof item === "string") {
192
+ text += item;
193
+ continue;
194
+ }
195
+ if (text !== "") {
196
+ res.push(text);
197
+ text = "";
198
+ }
199
+ res.push(item);
200
+ }
201
+ if (text !== "")
202
+ res.push(text);
203
+ return res;
204
+ }
205
+ //# sourceMappingURL=StopGenerationDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StopGenerationDetector.js","sourceRoot":"","sources":["../../src/utils/StopGenerationDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Token } from "../types.js";
2
+ export declare class TokenStreamRegulator {
3
+ addChunk({ tokens, text }: {
4
+ tokens: Token[];
5
+ text: string;
6
+ }): QueuedTokenRelease;
7
+ popFreeChunkTokens(): Token[];
8
+ getPartiallyFreeChunk(): {
9
+ tokens: Token[];
10
+ text: string;
11
+ };
12
+ getAllQueuedChunkTokens(): Token[];
13
+ }
14
+ export declare class QueuedTokenRelease {
15
+ readonly tokens: readonly Token[];
16
+ readonly text: string;
17
+ private constructor();
18
+ get isFree(): boolean;
19
+ get isPartiallyFree(): boolean;
20
+ getFreeTextIndex(): number;
21
+ getFreeTokenIndex(): number;
22
+ createTextIndexLock(startIndex: number): QueuedTokenReleaseLock;
23
+ createTokenIndexLock(startIndex: number): QueuedTokenReleaseLock;
24
+ }
25
+ export declare class QueuedTokenReleaseLock {
26
+ private constructor();
27
+ get index(): number;
28
+ dispose(): void;
29
+ [Symbol.dispose](): void;
30
+ }
@@ -0,0 +1,96 @@
1
+ export class TokenStreamRegulator {
2
+ /** @internal */ _queue = [];
3
+ addChunk({ tokens, text }) {
4
+ const queuedRelease = QueuedTokenRelease._create(tokens, text);
5
+ this._queue.push(queuedRelease);
6
+ return queuedRelease;
7
+ }
8
+ popFreeChunkTokens() {
9
+ const res = [];
10
+ while (this._queue.length > 0 && this._queue[0].isFree)
11
+ res.push(...this._queue.shift().tokens);
12
+ return res;
13
+ }
14
+ getPartiallyFreeChunk() {
15
+ if (this._queue.length > 0 && this._queue[0].isPartiallyFree) {
16
+ const queuedRelease = this._queue[0];
17
+ return {
18
+ tokens: queuedRelease.tokens.slice(0, queuedRelease.getFreeTokenIndex()),
19
+ text: queuedRelease.text.slice(0, queuedRelease.getFreeTextIndex())
20
+ };
21
+ }
22
+ return {
23
+ tokens: [],
24
+ text: ""
25
+ };
26
+ }
27
+ getAllQueuedChunkTokens() {
28
+ return this._queue.flatMap((queuedRelease) => queuedRelease.tokens);
29
+ }
30
+ }
31
+ export class QueuedTokenRelease {
32
+ /** @internal */ _textLocks = new Set();
33
+ /** @internal */ _tokenLocks = new Set();
34
+ tokens;
35
+ text;
36
+ constructor(tokens, text) {
37
+ this.tokens = tokens;
38
+ this.text = text;
39
+ }
40
+ get isFree() {
41
+ return this._textLocks.size === 0 && this._tokenLocks.size === 0;
42
+ }
43
+ get isPartiallyFree() {
44
+ return this._textLocks.size !== 0 && this._tokenLocks.size !== 0;
45
+ }
46
+ getFreeTextIndex() {
47
+ if (this._textLocks.size === 0)
48
+ return this.text.length;
49
+ return [...this._textLocks]
50
+ .reduce((res, lock) => Math.min(res, lock.index), this.text.length);
51
+ }
52
+ getFreeTokenIndex() {
53
+ if (this._tokenLocks.size === 0)
54
+ return this.tokens.length;
55
+ return [...this._tokenLocks]
56
+ .reduce((res, lock) => Math.min(res, lock.index), this.tokens.length);
57
+ }
58
+ createTextIndexLock(startIndex) {
59
+ const lock = QueuedTokenReleaseLock._create(startIndex, this._textLocks);
60
+ if (startIndex >= 0 && startIndex < this.text.length)
61
+ this._textLocks.add(lock);
62
+ return lock;
63
+ }
64
+ createTokenIndexLock(startIndex) {
65
+ const lock = QueuedTokenReleaseLock._create(startIndex, this._tokenLocks);
66
+ if (startIndex >= 0 && startIndex < this.tokens.length)
67
+ this._tokenLocks.add(lock);
68
+ return lock;
69
+ }
70
+ /** @internal */
71
+ static _create(tokens, text) {
72
+ return new QueuedTokenRelease(tokens, text);
73
+ }
74
+ }
75
+ export class QueuedTokenReleaseLock {
76
+ /** @internal */ _index;
77
+ /** @internal */ _locks;
78
+ constructor(index, locks) {
79
+ this._index = index;
80
+ this._locks = locks;
81
+ }
82
+ get index() {
83
+ return this._index;
84
+ }
85
+ dispose() {
86
+ this._locks.delete(this);
87
+ }
88
+ [Symbol.dispose]() {
89
+ this.dispose();
90
+ }
91
+ /** @internal */
92
+ static _create(length, locks) {
93
+ return new QueuedTokenReleaseLock(length, locks);
94
+ }
95
+ }
96
+ //# sourceMappingURL=TokenStreamRegulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenStreamRegulator.js","sourceRoot":"","sources":["../../src/utils/TokenStreamRegulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ChatHistoryItem } from "../types.js";
2
+ export declare function appendUserMessageToChatHistory(chatHistory: readonly ChatHistoryItem[], message: string): ChatHistoryItem[];
@@ -0,0 +1,18 @@
1
+ export function appendUserMessageToChatHistory(chatHistory, message) {
2
+ const newChatHistory = chatHistory.slice();
3
+ if (newChatHistory.length > 0 && newChatHistory[newChatHistory.length - 1].type === "user") {
4
+ const lastUserMessage = newChatHistory[newChatHistory.length - 1];
5
+ newChatHistory[newChatHistory.length - 1] = {
6
+ ...lastUserMessage,
7
+ text: [lastUserMessage.text, message].join("\n\n")
8
+ };
9
+ }
10
+ else {
11
+ newChatHistory.push({
12
+ type: "user",
13
+ text: message
14
+ });
15
+ }
16
+ return newChatHistory;
17
+ }
18
+ //# sourceMappingURL=appendUserMessageToChatHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendUserMessageToChatHistory.js","sourceRoot":"","sources":["../../src/utils/appendUserMessageToChatHistory.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,8BAA8B,CAAC,WAAuC,EAAE,OAAe;IACnG,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IAE3C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;QACxF,MAAM,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAC;QAErF,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;YACxC,GAAG,eAAe;YAClB,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;SACrD,CAAC;KACL;SAAM;QACH,cAAc,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;KACN;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Token } from "../types.js";
2
+ export declare function compareTokens(token1: Token, token2: Token): boolean;
@@ -0,0 +1,4 @@
1
+ export function compareTokens(token1, token2) {
2
+ return token1 === token2;
3
+ }
4
+ //# sourceMappingURL=compareTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareTokens.js","sourceRoot":"","sources":["../../src/utils/compareTokens.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,MAAa,EAAE,MAAa;IACtD,OAAO,MAAM,KAAK,MAAM,CAAC;AAC7B,CAAC"}
@@ -59,13 +59,18 @@ export async function compileLlamaCpp({ arch = process.arch, nodeTarget = proces
59
59
  await spawnCommand("npm", ["run", "-s", "cmake-js-llama", "--", "clean", "--log-level", "warn", ...cmakePathArgs], __dirname);
60
60
  await spawnCommand("npm", ["run", "-s", "cmake-js-llama", "--", "compile", "--log-level", "warn", "--arch=" + arch, "--runtime-version=" + runtimeVersion, ...cmakePathArgs]
61
61
  .concat([...cmakeCustomOptions].map(([key, value]) => "--CD" + key + "=" + value)), __dirname);
62
- const binFilesDirPath = path.join(llamaDirectory, "build", "llama.cpp", "bin");
62
+ const binFilesDirPaths = [
63
+ path.join(llamaDirectory, "build", "bin"),
64
+ path.join(llamaDirectory, "build", "llama.cpp", "bin")
65
+ ];
63
66
  const compiledResultDirPath = await getCompiledResultDir(true);
64
- if (await fs.pathExists(binFilesDirPath)) {
65
- const files = await fs.readdir(binFilesDirPath);
66
- await Promise.all(files.map((fileName) => (fs.copy(path.join(binFilesDirPath, fileName), path.join(compiledResultDirPath, fileName), {
67
- overwrite: false
68
- }))));
67
+ for (const binFilesDirPath of binFilesDirPaths) {
68
+ if (await fs.pathExists(binFilesDirPath)) {
69
+ const files = await fs.readdir(binFilesDirPath);
70
+ await Promise.all(files.map((fileName) => (fs.copy(path.join(binFilesDirPath, fileName), path.join(compiledResultDirPath, fileName), {
71
+ overwrite: false
72
+ }))));
73
+ }
69
74
  }
70
75
  if (setUsedBinFlagArg) {
71
76
  await setUsedBinFlag("localBuildFromSource");
@@ -1 +1 @@
1
- {"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../src/utils/compileLLamaCpp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../src/utils/compileLLamaCpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { ChatHistoryItem, Tokenizer } from "../types.js";
2
+ import { ChatWrapper } from "../ChatWrapper.js";
3
+ export declare function findCharacterRemovalCountToFitChatHistoryInContext({ compressChatHistory, chatHistory, tokensCountToFit, tokenizer, chatWrapper, initialCharactersRemovalCount, estimatedCharactersPerToken, maxDecompressionAttempts }: {
4
+ compressChatHistory(options: {
5
+ chatHistory: readonly ChatHistoryItem[];
6
+ charactersToRemove: number;
7
+ }): ChatHistoryItem[] | Promise<ChatHistoryItem[]>;
8
+ chatHistory: ChatHistoryItem[];
9
+ tokensCountToFit: number;
10
+ tokenizer: Tokenizer;
11
+ chatWrapper: ChatWrapper;
12
+ initialCharactersRemovalCount?: number;
13
+ estimatedCharactersPerToken?: number;
14
+ maxDecompressionAttempts?: number;
15
+ }): Promise<{
16
+ removedCharactersCount: number;
17
+ compressedChatHistory: ChatHistoryItem[];
18
+ }>;
@@ -0,0 +1,61 @@
1
+ export async function findCharacterRemovalCountToFitChatHistoryInContext({ compressChatHistory, chatHistory, tokensCountToFit, tokenizer, chatWrapper, initialCharactersRemovalCount = 0, estimatedCharactersPerToken = 5, maxDecompressionAttempts = 2 }) {
2
+ function getTokensCountForChatHistory(chatHistory) {
3
+ const { contextText } = chatWrapper.generateContextText(chatHistory);
4
+ return contextText.tokenize(tokenizer).length;
5
+ }
6
+ async function getResultForCharacterRemovalCount(characterRemovalCount) {
7
+ if (characterRemovalCount === 0)
8
+ return {
9
+ compressedHistory: chatHistory,
10
+ tokensCount: getTokensCountForChatHistory(chatHistory),
11
+ characterRemovalCount
12
+ };
13
+ const compressedHistory = await compressChatHistory({
14
+ chatHistory,
15
+ charactersToRemove: characterRemovalCount
16
+ });
17
+ return {
18
+ compressedHistory,
19
+ tokensCount: getTokensCountForChatHistory(compressedHistory),
20
+ characterRemovalCount
21
+ };
22
+ }
23
+ let latestCompressionAttempt = await getResultForCharacterRemovalCount(initialCharactersRemovalCount);
24
+ const firstCompressionAttempt = latestCompressionAttempt;
25
+ let currentEstimatedCharactersPerToken = estimatedCharactersPerToken;
26
+ if (latestCompressionAttempt.tokensCount === tokensCountToFit ||
27
+ (latestCompressionAttempt.tokensCount < tokensCountToFit && latestCompressionAttempt.characterRemovalCount === 0))
28
+ return {
29
+ removedCharactersCount: initialCharactersRemovalCount,
30
+ compressedChatHistory: latestCompressionAttempt.compressedHistory
31
+ };
32
+ for (let compressionAttempts = 0, decompressionAttempts = 0; latestCompressionAttempt.tokensCount !== tokensCountToFit;) {
33
+ if (compressionAttempts > 0) {
34
+ currentEstimatedCharactersPerToken =
35
+ Math.abs(latestCompressionAttempt.characterRemovalCount - firstCompressionAttempt.characterRemovalCount) /
36
+ Math.abs(latestCompressionAttempt.tokensCount - firstCompressionAttempt.tokensCount);
37
+ if (!Number.isFinite(currentEstimatedCharactersPerToken))
38
+ currentEstimatedCharactersPerToken = estimatedCharactersPerToken;
39
+ }
40
+ const tokensLeftToRemove = tokensCountToFit - latestCompressionAttempt.tokensCount;
41
+ let additionalCharactersToRemove = Math.round(tokensLeftToRemove * currentEstimatedCharactersPerToken);
42
+ if (additionalCharactersToRemove === 0) {
43
+ if (tokensLeftToRemove > 0)
44
+ additionalCharactersToRemove = 1;
45
+ else if (tokensLeftToRemove < 0)
46
+ additionalCharactersToRemove = -1;
47
+ }
48
+ if (tokensLeftToRemove > 0)
49
+ compressionAttempts++;
50
+ else if (tokensLeftToRemove < 0)
51
+ decompressionAttempts++;
52
+ if (decompressionAttempts >= maxDecompressionAttempts)
53
+ break;
54
+ latestCompressionAttempt = await getResultForCharacterRemovalCount(latestCompressionAttempt.characterRemovalCount + additionalCharactersToRemove);
55
+ }
56
+ return {
57
+ removedCharactersCount: latestCompressionAttempt.characterRemovalCount,
58
+ compressedChatHistory: latestCompressionAttempt.compressedHistory
59
+ };
60
+ }
61
+ //# sourceMappingURL=findCharacterRemovalCountToFitChatHistoryInContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findCharacterRemovalCountToFitChatHistoryInContext.js","sourceRoot":"","sources":["../../src/utils/findCharacterRemovalCountToFitChatHistoryInContext.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,kDAAkD,CAAC,EACrE,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,6BAA6B,GAAG,CAAC,EACjC,2BAA2B,GAAG,CAAC,EAC/B,wBAAwB,GAAG,CAAC,EAY/B;IAIG,SAAS,4BAA4B,CAAC,WAAuC;QACzE,MAAM,EAAC,WAAW,EAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAClD,CAAC;IAED,KAAK,UAAU,iCAAiC,CAAC,qBAA6B;QAC1E,IAAI,qBAAqB,KAAK,CAAC;YAC3B,OAAO;gBACH,iBAAiB,EAAE,WAAW;gBAC9B,WAAW,EAAE,4BAA4B,CAAC,WAAW,CAAC;gBACtD,qBAAqB;aACxB,CAAC;QAEN,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC;YAChD,WAAW;YACX,kBAAkB,EAAE,qBAAqB;SAC5C,CAAC,CAAC;QAEH,OAAO;YACH,iBAAiB;YACjB,WAAW,EAAE,4BAA4B,CAAC,iBAAiB,CAAC;YAC5D,qBAAqB;SACxB,CAAC;IACN,CAAC;IAED,IAAI,wBAAwB,GAAG,MAAM,iCAAiC,CAAC,6BAA6B,CAAC,CAAC;IACtG,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;IACzD,IAAI,kCAAkC,GAAG,2BAA2B,CAAC;IAErE,IAAI,wBAAwB,CAAC,WAAW,KAAK,gBAAgB;QACzD,CAAC,wBAAwB,CAAC,WAAW,GAAG,gBAAgB,IAAI,wBAAwB,CAAC,qBAAqB,KAAK,CAAC,CAAC;QAEjH,OAAO;YACH,sBAAsB,EAAE,6BAA6B;YACrD,qBAAqB,EAAE,wBAAwB,CAAC,iBAAiB;SACpE,CAAC;IAEN,KACI,IAAI,mBAAmB,GAAG,CAAC,EAAE,qBAAqB,GAAG,CAAC,EACtD,wBAAwB,CAAC,WAAW,KAAK,gBAAgB,GAC3D;QACE,IAAI,mBAAmB,GAAG,CAAC,EAAE;YACzB,kCAAkC;gBAC9B,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,qBAAqB,GAAG,uBAAuB,CAAC,qBAAqB,CAAC;oBACxG,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAEzF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kCAAkC,CAAC;gBACpD,kCAAkC,GAAG,2BAA2B,CAAC;SACxE;QAED,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,wBAAwB,CAAC,WAAW,CAAC;QACnF,IAAI,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,kCAAkC,CAAC,CAAC;QAEvG,IAAI,4BAA4B,KAAK,CAAC,EAAE;YACpC,IAAI,kBAAkB,GAAG,CAAC;gBACtB,4BAA4B,GAAG,CAAC,CAAC;iBAChC,IAAI,kBAAkB,GAAG,CAAC;gBAC3B,4BAA4B,GAAG,CAAC,CAAC,CAAC;SACzC;QAED,IAAI,kBAAkB,GAAG,CAAC;YACtB,mBAAmB,EAAE,CAAC;aACrB,IAAI,kBAAkB,GAAG,CAAC;YAC3B,qBAAqB,EAAE,CAAC;QAE5B,IAAI,qBAAqB,IAAI,wBAAwB;YACjD,MAAM;QAEV,wBAAwB,GAAG,MAAM,iCAAiC,CAC9D,wBAAwB,CAAC,qBAAqB,GAAG,4BAA4B,CAChF,CAAC;KACL;IAED,OAAO;QACH,sBAAsB,EAAE,wBAAwB,CAAC,qBAAqB;QACtE,qBAAqB,EAAE,wBAAwB,CAAC,iBAAiB;KACpE,CAAC;AACN,CAAC"}
@@ -2,4 +2,5 @@ export declare class GbnfGrammarGenerator {
2
2
  rules: Map<string, string | null>;
3
3
  private ruleId;
4
4
  generateRuleName(): string;
5
+ generateGbnfFile(rootGrammar: string): string;
5
6
  }
@@ -6,5 +6,22 @@ export class GbnfGrammarGenerator {
6
6
  this.ruleId++;
7
7
  return `rule${ruleId}`;
8
8
  }
9
+ generateGbnfFile(rootGrammar) {
10
+ const rules = [{
11
+ name: "root",
12
+ grammar: rootGrammar
13
+ }];
14
+ for (const [ruleName, grammar] of this.rules.entries()) {
15
+ if (grammar == null)
16
+ continue;
17
+ rules.push({
18
+ name: ruleName,
19
+ grammar
20
+ });
21
+ }
22
+ const ruleStrings = rules.map((rule) => rule.name + " ::= " + rule.grammar);
23
+ const gbnf = ruleStrings.join("\n");
24
+ return gbnf;
25
+ }
9
26
  }
10
27
  //# sourceMappingURL=GbnfGrammarGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfGrammarGenerator.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfGrammarGenerator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IACtB,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IACxC,MAAM,GAAW,CAAC,CAAC;IAEpB,gBAAgB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,OAAO,OAAO,MAAM,EAAE,CAAC;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfGrammarGenerator.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfGrammarGenerator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IACtB,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IACxC,MAAM,GAAW,CAAC,CAAC;IAEpB,gBAAgB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,OAAO,OAAO,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,gBAAgB,CAAC,WAAmB;QACvC,MAAM,KAAK,GAAsC,CAAC;gBAC9C,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACvB,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YACpD,IAAI,OAAO,IAAI,IAAI;gBACf,SAAS;YAEb,KAAK,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,QAAQ;gBACd,OAAO;aACV,CAAC,CAAC;SACN;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1,7 +1,7 @@
1
1
  import { GbnfGrammarGenerator } from "./GbnfGrammarGenerator.js";
2
2
  export declare abstract class GbnfTerminal {
3
3
  private _ruleName;
4
- getRuleName(grammarGenerator: GbnfGrammarGenerator): string;
4
+ protected getRuleName(grammarGenerator: GbnfGrammarGenerator): string;
5
5
  abstract getGrammar(grammarGenerator: GbnfGrammarGenerator): string;
6
6
  resolve(grammarGenerator: GbnfGrammarGenerator): string;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfTerminal.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfTerminal.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IACtB,SAAS,GAAkB,IAAI,CAAC;IAEjC,WAAW,CAAC,gBAAsC;QACrD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAIM,OAAO,CAAC,gBAAsC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEpD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE5E,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfTerminal.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfTerminal.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IACtB,SAAS,GAAkB,IAAI,CAAC;IAE9B,WAAW,CAAC,gBAAsC;QACxD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAIM,OAAO,CAAC,gBAAsC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEpD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE5E,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ"}
@@ -0,0 +1,6 @@
1
+ import { GbnfTerminal } from "../GbnfTerminal.js";
2
+ export declare class GbnfVerbatimText extends GbnfTerminal {
3
+ readonly value: string;
4
+ constructor(value: string);
5
+ getGrammar(): string;
6
+ }
@@ -0,0 +1,21 @@
1
+ import { GbnfTerminal } from "../GbnfTerminal.js";
2
+ export class GbnfVerbatimText extends GbnfTerminal {
3
+ value;
4
+ constructor(value) {
5
+ super();
6
+ this.value = value;
7
+ }
8
+ getGrammar() {
9
+ return [
10
+ '"',
11
+ this.value
12
+ .replaceAll("\\", "\\\\")
13
+ .replaceAll('"', '\\"')
14
+ .replaceAll("\t", "\\t")
15
+ .replaceAll("\r", "\\r")
16
+ .replaceAll("\n", "\\n"),
17
+ '"'
18
+ ].join("");
19
+ }
20
+ }
21
+ //# sourceMappingURL=GbnfVerbatimText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GbnfVerbatimText.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfVerbatimText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGhD,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAC9B,KAAK,CAAS;IAE9B,YAAmB,KAAa;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEQ,UAAU;QACf,OAAO;YACH,GAAG;YACH,IAAI,CAAC,KAAK;iBACL,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;iBACxB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;iBACtB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;iBACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;iBACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;YAC5B,GAAG;SACN,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;CACJ"}
@@ -24,7 +24,7 @@ export type GbnfJsonArraySchema = {
24
24
  items: GbnfJsonSchema;
25
25
  };
26
26
  export type GbnfJsonSchemaToType<T> = GbnfJsonSchemaToTSType<T>;
27
- export type GbnfJsonSchemaToTSType<T> = T extends GbnfJsonBasicSchema ? GbnfJsonBasicSchemaToType<T["type"]> : T extends GbnfJsonConstSchema ? T["const"] : T extends GbnfJsonEnumSchema ? T["enum"][number] : T extends GbnfJsonOneOfSchema ? GbnfJsonSchemaToType<T["oneOf"][number]> : T extends GbnfJsonObjectSchema ? GbnfJsonObjectSchemaToType<T["properties"]> : T extends GbnfJsonArraySchema ? GbnfJsonSchemaToType<T["items"]>[] : never;
27
+ export type GbnfJsonSchemaToTSType<T> = GbnfJsonBasicSchema extends T ? undefined : undefined extends T ? undefined : T extends GbnfJsonBasicSchema ? GbnfJsonBasicSchemaToType<T["type"]> : T extends GbnfJsonConstSchema ? T["const"] : T extends GbnfJsonEnumSchema ? T["enum"][number] : T extends GbnfJsonOneOfSchema ? GbnfJsonSchemaToType<T["oneOf"][number]> : T extends GbnfJsonObjectSchema ? GbnfJsonObjectSchemaToType<T["properties"]> : T extends GbnfJsonArraySchema ? GbnfJsonSchemaToType<T["items"]>[] : undefined;
28
28
  type GbnfJsonBasicSchemaToType<T> = T extends GbnfJsonSchemaImmutableType ? ImmutableTypeToType<T> : T extends GbnfJsonSchemaImmutableType[] ? ImmutableTypeToType<T[number]> : never;
29
29
  type ImmutableTypeToType<T> = T extends "string" ? string : T extends "number" ? number : T extends "integer" ? number : T extends "boolean" ? boolean : T extends "null" ? null : never;
30
30
  type GbnfJsonObjectSchemaToType<Props> = {