node-llama-cpp 3.0.0-beta.46 → 3.0.0-beta.47

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.
package/README.md CHANGED
@@ -25,7 +25,7 @@
25
25
  * A Complete suite of everything you need to use LLMs in your projects
26
26
  * [Use the CLI to chat with a model without writing any code](#try-it-without-installing)
27
27
  * Up-to-date with the latest `llama.cpp`. Download and compile the latest release with a [single CLI command](https://node-llama-cpp.withcat.ai//guide/building-from-source#downloading-a-release)
28
- * Force a model to generate output in a parseable format, [like JSON](https://node-llama-cpp.withcat.ai/guide/chat-session#json-response), or even force it to [follow a specific JSON schema](https://node-llama-cpp.withcat.ai/guide/chat-session#response-json-schema)
28
+ * Enforce a model to generate output in a parseable format, [like JSON](https://node-llama-cpp.withcat.ai/guide/chat-session#json-response), or even force it to [follow a specific JSON schema](https://node-llama-cpp.withcat.ai/guide/chat-session#response-json-schema)
29
29
  * [Provide a model with functions it can call on demand](https://node-llama-cpp.withcat.ai/guide/chat-session#function-calling) to retrieve information of perform actions
30
30
  * [Embedding support](https://node-llama-cpp.withcat.ai/guide/embedding)
31
31
  * Great developer experience with full TypeScript support, and [complete documentation](https://node-llama-cpp.withcat.ai/guide/)
@@ -149,8 +149,8 @@ export const recommendedModels = [{
149
149
  name: "Mixtral 8x7B MoE",
150
150
  abilities: ["chat", "complete"],
151
151
  description: "Mixtral models were created by Mistal AI and are general purpose models that utilize a Mixture of Experts architecture.\n" +
152
- "Mixtures of Experts (MoE) is a technique where different models, each skilled in solving a particular kind of problem, work together to the improve the overall performance on complex tasks.\n"
153
- + "This model includes 8 expert models, each with 7 billion parameters.",
152
+ "Mixtures of Experts (MoE) is a technique where different models, each skilled in solving a particular kind of problem, work together to the improve the overall performance on complex tasks.\n" +
153
+ "This model includes 8 expert models, each with 7 billion parameters.",
154
154
  fileOptions: [{
155
155
  huggingFace: {
156
156
  model: "TheBloke/Mixtral-8x7B-v0.1-GGUF",
@@ -168,7 +168,7 @@ export const recommendedModels = [{
168
168
  name: "Mistral 7B Instruct v0.2",
169
169
  abilities: ["chat", "complete"],
170
170
  description: "Mistral models were created by Mistal AI and are general purpose models.\n" +
171
- +"This is the 7 billion parameters version of the model.",
171
+ "This is the 7 billion parameters version of the model.",
172
172
  fileOptions: [{
173
173
  huggingFace: {
174
174
  model: "TheBloke/Mistral-7B-Instruct-v0.2-GGUF",
@@ -248,6 +248,44 @@ export const recommendedModels = [{
248
248
  }]
249
249
  }, */
250
250
  {
251
+ name: "OLMoE 1b 7B MoE",
252
+ abilities: ["chat"],
253
+ description: "OLMoE models were created by AllenAI, and are fully open source models that utilize a Mixture of Experts architecture" +
254
+ "Mixtures of Experts (MoE) is a technique where different models, each skilled in solving a particular kind of problem, work together to the improve the overall performance on complex tasks.\n" +
255
+ "This model includes 64 expert models, with a total of 7 billion parameters.\n" +
256
+ "This model generates output extremely fast.",
257
+ fileOptions: [{
258
+ huggingFace: {
259
+ model: "allenai/OLMoE-1B-7B-0924-Instruct-GGUF",
260
+ branch: "main",
261
+ file: "olmoe-1b-7b-0924-instruct-q8_0.gguf"
262
+ }
263
+ }, {
264
+ huggingFace: {
265
+ model: "allenai/OLMoE-1B-7B-0924-Instruct-GGUF",
266
+ branch: "main",
267
+ file: "olmoe-1b-7b-0924-instruct-q6_k.gguf"
268
+ }
269
+ }, {
270
+ huggingFace: {
271
+ model: "allenai/OLMoE-1B-7B-0924-Instruct-GGUF",
272
+ branch: "main",
273
+ file: "olmoe-1b-7b-0924-instruct-q5_k_m.gguf"
274
+ }
275
+ }, {
276
+ huggingFace: {
277
+ model: "allenai/OLMoE-1B-7B-0924-Instruct-GGUF",
278
+ branch: "main",
279
+ file: "olmoe-1b-7b-0924-instruct-q4_k_s.gguf"
280
+ }
281
+ }, {
282
+ huggingFace: {
283
+ model: "allenai/OLMoE-1B-7B-0924-Instruct-GGUF",
284
+ branch: "main",
285
+ file: "olmoe-1b-7b-0924-instruct-q4_k_m.gguf"
286
+ }
287
+ }]
288
+ }, {
251
289
  name: "Gemma 2 9B",
252
290
  abilities: ["chat", "complete"],
253
291
  description: "Gemma models were created by Google and are optimized suited for variety of text generation tasks, " +
@@ -461,6 +499,7 @@ export const recommendedModels = [{
461
499
  abilities: ["code", "complete", "infill"],
462
500
  description: "CodeGemma models were created by Google and are optimized for code completion, code generation, " +
463
501
  "natual language understanding, mathematical reasoning, and instruction following.\n" +
502
+ "This model is not suited for chat.\n" +
464
503
  "This is the 2 billion parameters version of the model.\n",
465
504
  fileOptions: [{
466
505
  huggingFace: {
@@ -498,6 +537,7 @@ export const recommendedModels = [{
498
537
  abilities: ["code", "complete", "infill"],
499
538
  description: "CodeGemma models were created by Google and are optimized for code completion, code generation, " +
500
539
  "natual language understanding, mathematical reasoning, and instruction following.\n" +
540
+ "This model is not suited for chat.\n" +
501
541
  "This is the 7 billion parameters version of the model.\n",
502
542
  fileOptions: [{
503
543
  huggingFace: {
@@ -1 +1 @@
1
- {"version":3,"file":"recommendedModels.js","sourceRoot":"","sources":["../../src/cli/recommendedModels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommendedModels.js","sourceRoot":"","sources":["../../src/cli/recommendedModels.ts"],"names":[],"mappings":"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"}
@@ -315,4 +315,6 @@ export declare class LlamaChatSession {
315
315
  getChatHistory(): ChatHistoryItem[];
316
316
  getLastEvaluationContextWindow(): ChatHistoryItem[] | null;
317
317
  setChatHistory(chatHistory: ChatHistoryItem[]): void;
318
+ /** Clear the chat history and reset it to the initial state. */
319
+ resetChatHistory(): void;
318
320
  }
@@ -8,6 +8,8 @@ export class LlamaChatSession {
8
8
  /** @internal */ _disposeAggregator = new DisposeAggregator();
9
9
  /** @internal */ _autoDisposeSequence;
10
10
  /** @internal */ _contextShift;
11
+ /** @internal */ _forceAddSystemPrompt;
12
+ /** @internal */ _systemPrompt;
11
13
  /** @internal */ _chatLock = {};
12
14
  /** @internal */ _chatHistory;
13
15
  /** @internal */ _lastEvaluation;
@@ -22,14 +24,16 @@ export class LlamaChatSession {
22
24
  if (contextSequence.disposed)
23
25
  throw new DisposedError();
24
26
  this._contextShift = contextShift;
27
+ this._forceAddSystemPrompt = forceAddSystemPrompt;
28
+ this._systemPrompt = systemPrompt;
25
29
  this._chat = new LlamaChat({
26
30
  autoDisposeSequence,
27
31
  chatWrapper,
28
32
  contextSequence
29
33
  });
30
34
  const chatWrapperSupportsSystemMessages = this._chat.chatWrapper.settings.supportsSystemMessages;
31
- if (chatWrapperSupportsSystemMessages == null || chatWrapperSupportsSystemMessages || forceAddSystemPrompt)
32
- this._chatHistory = this._chat.chatWrapper.generateInitialChatHistory({ systemPrompt });
35
+ if (chatWrapperSupportsSystemMessages == null || chatWrapperSupportsSystemMessages || this._forceAddSystemPrompt)
36
+ this._chatHistory = this._chat.chatWrapper.generateInitialChatHistory({ systemPrompt: this._systemPrompt });
33
37
  else
34
38
  this._chatHistory = [];
35
39
  this._autoDisposeSequence = autoDisposeSequence;
@@ -381,6 +385,16 @@ export class LlamaChatSession {
381
385
  this._chatHistoryStateRef = {};
382
386
  this._lastEvaluation = undefined;
383
387
  }
388
+ /** Clear the chat history and reset it to the initial state. */
389
+ resetChatHistory() {
390
+ if (this._chat == null || this.disposed)
391
+ throw new DisposedError();
392
+ const chatWrapperSupportsSystemMessages = this._chat.chatWrapper.settings.supportsSystemMessages;
393
+ if (chatWrapperSupportsSystemMessages == null || chatWrapperSupportsSystemMessages || this._forceAddSystemPrompt)
394
+ this.setChatHistory(this._chat.chatWrapper.generateInitialChatHistory({ systemPrompt: this._systemPrompt }));
395
+ else
396
+ this.setChatHistory([]);
397
+ }
384
398
  /** @internal */
385
399
  _stopAllPreloadAndPromptCompletions() {
386
400
  for (const abortController of this._preloadAndCompleteAbortControllers)
@@ -1 +1 @@
1
- {"version":3,"file":"LlamaChatSession.js","sourceRoot":"","sources":["../../../src/evaluator/LlamaChatSession/LlamaChatSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlamaChatSession.js","sourceRoot":"","sources":["../../../src/evaluator/LlamaChatSession/LlamaChatSession.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,7 @@ export class LlamaCompletion {
62
62
  throw new DisposedError();
63
63
  const bosToken = this._sequence.model.tokens.bos;
64
64
  const shouldPrependBosToken = this._sequence.model.tokens.shouldPrependBosToken;
65
+ const extraEosTokens = getExtraCompletionEosTokens(this._sequence.model);
65
66
  async function fitInputIntoContext({ maxTokens, tokens }) {
66
67
  const res = [];
67
68
  if (shouldPrependBosToken && bosToken != null)
@@ -123,7 +124,8 @@ export class LlamaCompletion {
123
124
  tokens: [...resolvedInput, ...res, ...pendingTokens]
124
125
  })
125
126
  };
126
- }
127
+ },
128
+ extraEosTokens
127
129
  });
128
130
  });
129
131
  }
@@ -436,6 +438,21 @@ async function resolveContextShiftSize(contextShiftSize, sequence) {
436
438
  : contextShiftSize)));
437
439
  return defaultContextShiftSize(sequence);
438
440
  }
441
+ function getExtraCompletionEosTokens(model) {
442
+ const extraEosTokens = new Set();
443
+ if (model.fileInfo.metadata?.general?.architecture === GgufArchitectureType.gemma ||
444
+ model.fileInfo.metadata?.general?.architecture === GgufArchitectureType.gemma2) {
445
+ for (const token of model.iterateAllTokens()) {
446
+ const tokenText = model.detokenize([token], true);
447
+ if (tokenText === "<|file_separator|>" || tokenText === "<|fim_prefix|>") {
448
+ extraEosTokens.add(token);
449
+ if (extraEosTokens.size === 2)
450
+ break;
451
+ }
452
+ }
453
+ }
454
+ return extraEosTokens;
455
+ }
439
456
  function getExtraInfillEosTokens(model) {
440
457
  const extraEosTokens = new Set();
441
458
  if (model.fileInfo.metadata?.general?.architecture === GgufArchitectureType.gemma ||
@@ -1 +1 @@
1
- {"version":3,"file":"LlamaCompletion.js","sourceRoot":"","sources":["../../src/evaluator/LlamaCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAyB,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAC,sBAAsB,EAAC,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAC,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,gCAAgC,EAAC,MAAM,8CAA8C,CAAC;AAC9F,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAC;AA4J7E,MAAM,uBAAuB,GAAG,CAC5B,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CACZ,CAAC;AACjE,MAAM,0BAA0B,GAAG,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CACb,CAAC;AAEhE,MAAM,OAAO,eAAe;IACxB,gBAAgB,CAAkB,kBAAkB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC/E,gBAAgB,CAAkB,oBAAoB,CAAU;IAChE,gBAAgB,CAAS,SAAS,CAA8B;IAChD,SAAS,GAAG,IAAI,UAAU,EAAQ,CAAC;IAEnD,YAAmB,EACf,eAAe,EACf,mBAAmB,GAAG,KAAK,EACN;QACrB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAEhD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CACL,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC9D,CAAC;IAEM,OAAO,CAAC,EAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,KAAiC,EAAE;QAC1F,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;YACvC,OAAO;QAEX,IAAI,eAAe;YACf,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,cAAc;IACP,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAED,IAAW,eAAe;QACtB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,MAAM,IAAI,aAAa,EAAE,CAAC;QAE9B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI;YACpD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAAC,KAAmC,EAAE,UAA4C,EAAE;QAC/G,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEzE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0BAA0B,CACnC,KAAmC,EACnC,EACI,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,EAAE,EAClB,SAAS,EACT,kBAAkB,GAAG,CAAC,EACtB,OAAO,EACP,kBAAkB,EAClB,gBAAgB,GAAG,uBAAuB,EAC1C,mBAAmB,KACe,EAAE;QAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;YACvC,MAAM,IAAI,aAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACjD,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAEhF,KAAK,UAAU,mBAAmB,CAAC,EAC/B,SAAS,EAAE,MAAM,EAGpB;YACG,MAAM,GAAG,GAAG,EAAE,CAAC;YAEf,IAAI,qBAAqB,IAAI,QAAQ,IAAI,IAAI;gBACzC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvB,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAErF,IAAI,eAAe,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;YAEhG,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAE3B,OAAO,GAAG,CAAC;QACf,CAAC;QAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,IAAI,MAAM,EAAE,OAAO;gBACf,MAAM,MAAM,CAAC,MAAM,CAAC;YAExB,IAAI,IAAI,CAAC,QAAQ;gBACb,MAAM,IAAI,aAAa,EAAE,CAAC;QAClC,CAAC,CAAC;QAEF,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YACjE,gBAAgB,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;gBACvC,MAAM,IAAI,aAAa,EAAE,CAAC;YAE9B,MAAM,aAAa,GAAG,aAAa,CAC/B,KAAK,EACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAC9B,CAAC,qBAAqB,IAAI,QAAQ,IAAI,IAAI,CAAC;gBACvC,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,SAAS,CAClB,CAAC;YACF,MAAM,wBAAwB,GAAG,MAAM,uBAAuB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjG,gBAAgB,EAAE,CAAC;YAEnB,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC;gBAC1C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,wBAAwB;gBACxE,MAAM,EAAE,aAAa;aACxB,CAAC,CAAC;YACH,gBAAgB,EAAE,CAAC;YACnB,MAAM,iBAAiB,GAAG,CAAC,mBAAmB;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;oBAClC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;oBAC9E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;YAElE,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;gBAC7C,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC;gBAC3C,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACnC,MAAM;gBACN,SAAS,EAAE,iBAAiB;gBAC5B,WAAW;gBACX,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,oBAAoB;gBACpB,aAAa;gBACb,SAAS;gBACT,kBAAkB;gBAClB,OAAO;gBACP,gBAAgB;gBAChB,kBAAkB;aACrB,EAAE;gBACC,KAAK,CAAC,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAC;oBAGxD,OAAO;wBACH,eAAe,EAAE,MAAM,mBAAmB,CAAC;4BACvC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS;4BACnD,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,GAAG,EAAE,GAAG,aAAa,CAAC;yBACvD,CAAC;qBACL,CAAC;gBACN,CAAC;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,wBAAwB,CACjC,WAAyC,EACzC,WAAyC,EACzC,UAAwC,EAAE;QAE1C,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAElG,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,gCAAgC,CACzC,WAAyC,EACzC,WAAyC,EACzC,EACI,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,EAAE,EAClB,SAAS,EACT,kBAAkB,GAAG,CAAC,EACtB,OAAO,EACP,gBAAgB,GAAG,uBAAuB,EAC1C,kBAAkB,EAClB,mBAAmB,GAAG,0BAA0B,EAChD,mBAAmB,GAAG,KAAK,KACG,EAAE;QAEpC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;YACvC,MAAM,IAAI,aAAa,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACjD,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAEhF,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI;YAC1C,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC,CAAC;QAErF,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAErE,KAAK,UAAU,mBAAmB,CAAC,EAC/B,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAGlD;YACG,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI;gBAC1C,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC,CAAC;YAErF,6CAA6C;YAC7C,MAAM,sBAAsB,GAAG,CAAC;gBAC5B,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,qBAAqB,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,iBAAiB,GAAG,SAAS,GAAG,sBAAsB,CAAC;YAC7D,IAAI,cAAc,GAAG,iBAAiB,CAAC;YAEvC,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YACrE,cAAc,IAAI,gBAAgB,CAAC;YAEnC,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YACrE,cAAc,IAAI,gBAAgB,CAAC;YAEnC,IAAI,cAAc,IAAI,CAAC,IAAI,mBAAmB;gBAC1C,MAAM,IAAI,KAAK,CACX,2GAA2G;oBAC3G,qEAAqE,CACxE,CAAC;YAEN,MAAM,2BAA2B,GAAG,IAAI,CAAC,GAAG,CACxC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,MAAM,CAAC,EAChD,IAAI,CAAC,GAAG,CACJ,CAAC,EACD,IAAI,CAAC,KAAK,CACN,mBAAmB,YAAY,QAAQ;gBACnC,CAAC,CAAC,MAAM,mBAAmB,CAAC,QAAQ,CAAC;gBACrC,CAAC,CAAC,mBAAmB,CAC5B,CACJ,CACJ,CAAC;YAEF,IAAI,gBAAgB,GAAG,2BAA2B,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,gBAAgB,CAAC,CAAC;gBAC9F,gBAAgB,IAAI,UAAU,CAAC;gBAC/B,gBAAgB,IAAI,UAAU,CAAC;YACnC,CAAC;YAED,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACnE,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAErE,MAAM,eAAe,GAAY,EAAE,CAAC;YAEpC,IAAI,qBAAqB,IAAI,QAAQ,IAAI,IAAI;gBACzC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEnC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;gBACtB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;gBAE/C,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;gBAE/C,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;gBAE/C,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;YACnD,CAAC;YAED,OAAO,eAAe,CAAC;QAC3B,CAAC;QAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,IAAI,MAAM,EAAE,OAAO;gBACf,MAAM,MAAM,CAAC,MAAM,CAAC;YAExB,IAAI,IAAI,CAAC,QAAQ;gBACb,MAAM,IAAI,aAAa,EAAE,CAAC;QAClC,CAAC,CAAC;QAEF,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YACjE,gBAAgB,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;gBACvC,MAAM,IAAI,aAAa,EAAE,CAAC;YAE9B,MAAM,yBAAyB,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YACjH,MAAM,yBAAyB,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YACjH,MAAM,wBAAwB,GAAG,MAAM,uBAAuB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjG,gBAAgB,EAAE,CAAC;YAEnB,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC;gBAC1C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,wBAAwB;gBACxE,YAAY,EAAE,yBAAyB;gBACvC,YAAY,EAAE,yBAAyB;gBACvC,QAAQ,EAAE,IAAI,CAAC,SAAS;aAC3B,CAAC,CAAC;YACH,gBAAgB,EAAE,CAAC;YAEnB,MAAM,iBAAiB,GAAG,CAAC,mBAAmB;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;oBAClC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;oBAC9E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;YAElE,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;gBAC7C,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC;gBAC3C,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACnC,MAAM;gBACN,SAAS,EAAE,iBAAiB;gBAC5B,WAAW;gBACX,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,oBAAoB;gBACpB,aAAa;gBACb,SAAS;gBACT,kBAAkB;gBAClB,OAAO;gBACP,gBAAgB;gBAChB,kBAAkB;aACrB,EAAE;gBACC,KAAK,CAAC,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAC;oBAGxD,OAAO;wBACH,eAAe,EAAE,MAAM,mBAAmB,CAAC;4BACvC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS;4BACnD,YAAY,EAAE,CAAC,GAAG,yBAAyB,EAAE,GAAG,GAAG,EAAE,GAAG,aAAa,CAAC;4BACtE,YAAY,EAAE,yBAAyB;4BACvC,QAAQ;yBACX,CAAC;qBACL,CAAC;gBACN,CAAC;gBACD,cAAc;aACjB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gBAAgB;IACR,KAAK,CAAC,iBAAiB,CAC3B,MAAe,EACf,EACI,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,EAAE,EAClB,SAAS,EACT,kBAAkB,GAAG,CAAC,EACtB,OAAO,EACP,gBAAgB,GAAG,uBAAuB,EAC1C,kBAAkB,EACa,EACnC,EACI,YAAY,EACZ,cAAc,GAAG,IAAI,GAAG,EAAE,EAS7B;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,MAAM,IAAI,aAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAEjC,MAAM,GAAG,GAAY,EAAE,CAAC;QACxB,MAAM,aAAa,GAAY,EAAE,CAAC;QAClC,MAAM,sBAAsB,GAAG,OAAO,IAAI,IAAI;YAC1C,CAAC,CAAC,IAAI,2BAA2B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,EACF,UAAU,EAAE,uBAAuB,GAAG,EAAE,EACxC,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,eAAe,EAClB,GAAiC,aAAa,KAAK,KAAK;YACrD,CAAC,CAAC,EAAC,UAAU,EAAE,CAAC,EAAC;YACjB,CAAC,CAAC,aAAa,CAAC;QACpB,MAAM,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACnD,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC5D,MAAM,oCAAoC,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC1E,MAAM,+BAA+B,GAA6B,EAAE,CAAC;QACrE,MAAM,oBAAoB,GAAG,uBAAuB,GAAG,CAAC,CAAC;QAEzD,IAAI,WAAW,GAAG,MAAM,CAAC;QACzB,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,IAAI,OAAO,IAAI,IAAI;YACf,sBAAsB,CAAC,mBAAmB,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC;iBACtF,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAElF,IAAI,kBAAkB,IAAI,IAAI;YAC1B,sBAAsB,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC;iBAC1E,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,oCAAoC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAEhG,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,IAAI,MAAM,EAAE,OAAO;gBACf,MAAM,MAAM,CAAC,MAAM,CAAC;YAExB,IAAI,IAAI,CAAC,QAAQ;gBACb,MAAM,IAAI,aAAa,EAAE,CAAC;QAClC,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;gBACtB,MAAM,IAAI,aAAa,EAAE,CAAC;YAE9B,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC;YAEvD,IAAI,kBAAkB,IAAI,IAAI;gBAC1B,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEpD,IAAI,eAAe,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAEhC,IAAI,OAAO,IAAI,IAAI;oBACf,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YACvE,CAAC;YAED,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC;QAEF,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACV,gBAAgB,EAAE,CAAC;YAEnB,IAAI,kBAAkB,GAAG,KAAK,CAAC;YAE/B,IAAI,EAAC,mBAAmB,EAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAEvE,8DAA8D;YAC9D,IAAI,mBAAmB,KAAK,WAAW,CAAC,MAAM,IAAI,mBAAmB,GAAG,CAAC;gBACrE,mBAAmB,IAAI,CAAC,CAAC;YAE7B,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAE3C,IAAI,mBAAmB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM,QAAQ,CAAC,uBAAuB,CAAC,CAAC;wBACpC,KAAK,EAAE,mBAAmB;wBAC1B,GAAG,EAAE,QAAQ,CAAC,cAAc;qBAC/B,CAAC,CAAC,CAAC;gBACJ,gBAAgB,EAAE,CAAC;YACvB,CAAC;YAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;gBACvE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACnC,sBAAsB;gBACtB,aAAa,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC/C,YAAY,EAAE,gBAAgB;oBAC9B,eAAe,EAAE,uBAAuB;oBACxC,OAAO;oBACP,gBAAgB;oBAChB,eAAe;iBAClB;gBACD,SAAS;gBACT,kBAAkB;gBAClB,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC,CAAC;YAEJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;gBAC3C,gBAAgB,EAAE,CAAC;gBACnB,eAAe,EAAE,CAAC;gBAElB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,MAAM,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CACvC,CAAC,OAAO,EAAE,oBAAoB,IAAI,oBAAoB,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAChF,IAAI,CACD,IAAI,KAAK,EAAE,IAAI,+BAA+B,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAC5F,EAAE,CAAC;oBACA,+BAA+B,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACJ,OAAO,+BAA+B,CAAC,MAAM,GAAG,CAAC;wBAC7C,+BAA+B,CAAC,KAAK,EAAG,CAAC,OAAO,EAAE,CAAC;gBAC3D,CAAC;gBAED,sBAAsB,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAC,CAAC,CAAC;gBAC5E,oCAAoC,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAC,CAAC,CAAC;gBAE1F,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;oBACpD,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBAE/C,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAE7D,IAAI,sBAAsB,CAAC,iBAAiB,IAAI,oCAAoC,CAAC,iBAAiB;oBAClG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EACtD,CAAC;oBACC,MAAM,cAAc,GAAI,sBAAsB,CAAC,iBAAiB;wBAC5D,CAAC,CAAC,sBAAsB,CAAC,iBAAiB,EAAE;wBAC5C,CAAC,CAAC,oCAAoC,CAAC,iBAAiB,EAAE,CAAC;oBAC/D,MAAM,mBAAmB,GAAG,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAEnF,MAAM,6BAA6B,GAAG,gCAAgC,CAClE,cAAc,EACd,mBAAmB,EACnB,KAAK,CAAC,SAAS,CAClB,CAAC;oBACF,OAAO,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;oBAEtD,MAAM,EAAC,iCAAiC,EAAC,GAAG,sBAAsB,CAAC,oCAAoC,CAAC,cAAc,CAAC,CAAC;oBAExH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;wBACjC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC/D,CAAC;oBAED,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;oBAC5B,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;oBAEzB,IAAI,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAE1C,IAAI,OAAO,EAAE,oBAAoB,IAAI,oBAAoB;wBACrD,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;oBAE5C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAExE,IAAI,UAAU,IAAI,sBAAsB,CAAC,iBAAiB;wBACtD,OAAO;4BACH,QAAQ,EAAE,aAAa;4BACvB,QAAQ,EAAE;gCACN,4BAA4B,EAAE,iCAAiC;gCAC/D,UAAU,EAAE,UAAU;oCAClB,CAAC,CAAC,UAAU;oCACZ,CAAC,CAAC,uBAAuB;6BAChC;yBACJ,CAAC;oBAEN,OAAO;wBACH,QAAQ,EAAE,aAAa;wBACvB,QAAQ,EAAE;4BACN,4BAA4B,EAAE,iCAAiC;4BAC/D,UAAU,EAAE,mBAAmB;4BAC/B,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAE,CAAC,WAAW;yBACpD;qBACJ,CAAC;gBACN,CAAC;gBAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;oBACjC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC3D,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;oBAC5B,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAED,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,IAAI,eAAe,IAAI,SAAS,EAAE,CAAC;oBACrE,IAAI,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAE1C,IAAI,OAAO,EAAE,oBAAoB,IAAI,oBAAoB;wBACrD,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;oBAE5C,OAAO;wBACH,QAAQ,EAAE,aAAa;wBACvB,QAAQ,EAAE;4BACN,UAAU,EAAE,WAAW;yBAC1B;qBACJ,CAAC;gBACN,CAAC;gBAED,IAAI,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;oBACrD,kBAAkB,GAAG,IAAI,CAAC;oBAC1B,MAAM;gBACV,CAAC;YACL,CAAC;YAED,IAAI,kBAAkB,EAAE,CAAC;gBACrB,MAAM,wBAAwB,GAAG,MAAM,uBAAuB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAC3F,gBAAgB,EAAE,CAAC;gBAEnB,MAAM,EAAC,eAAe,EAAC,GAAG,MAAM,YAAY,CAAC;oBACzC,SAAS,EAAE,wBAAwB;oBACnC,GAAG;oBACH,aAAa;oBACb,QAAQ;iBACX,CAAC,CAAC;gBACH,gBAAgB,EAAE,CAAC;gBACnB,WAAW,GAAG,eAAe,CAAC;gBAE9B,SAAS;YACb,CAAC;YAED,MAAM;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC5E,CAAC;CACJ;AAED,KAAK,UAAU,uBAAuB,CAClC,gBAAgF,EAChF,QAA8B;IAE9B,IAAI,OAAO,gBAAgB,KAAK,QAAQ;QACpC,OAAO,gBAAgB,CAAC;SACvB,IAAI,gBAAgB,YAAY,QAAQ;QACzC,OAAO,IAAI,CAAC,GAAG,CACX,QAAQ,CAAC,OAAO,CAAC,WAAW,EAC5B,IAAI,CAAC,GAAG,CACJ,CAAC,EACD,IAAI,CAAC,KAAK,CACN,gBAAgB,YAAY,QAAQ;YAChC,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC;YAClC,CAAC,CAAC,gBAAgB,CACzB,CACJ,CACJ,CAAC;IAEN,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAiB;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAS,CAAC;IAExC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,KAAK,oBAAoB,CAAC,KAAK;QAC7E,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,KAAK,oBAAoB,CAAC,MAAM,EAChF,CAAC;QACC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;gBACrC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"LlamaCompletion.js","sourceRoot":"","sources":["../../src/evaluator/LlamaCompletion.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import fs from "fs-extra";
5
5
  import { normalizeGgufDownloadUrl } from "../gguf/utils/normalizeGgufDownloadUrl.js";
6
6
  import { createSplitPartFilename, resolveSplitGgufParts } from "../gguf/utils/resolveSplitGgufParts.js";
7
7
  import { getFilenameForBinarySplitGgufPartUrls, resolveBinarySplitGgufPartUrls } from "../gguf/utils/resolveBinarySplitGgufPartUrls.js";
8
- import { cliModelsDirectory } from "../config.js";
8
+ import { cliModelsDirectory, isCI } from "../config.js";
9
9
  import { safeEventCallback } from "./safeEventCallback.js";
10
10
  import { resolveModelFileAccessTokensTryHeaders } from "./modelFileAccesTokens.js";
11
11
  import { pushAll } from "./pushAll.js";
@@ -224,6 +224,7 @@ export class ModelDownloader {
224
224
  directory: this._dirPath,
225
225
  fileName: this._fileName ?? getFilenameForBinarySplitGgufPartUrls(binarySplitPartUrls),
226
226
  cliProgress: this._showCliProgress,
227
+ cliStyle: isCI ? "ci" : "fancy",
227
228
  headers: this._headers ?? {},
228
229
  tryHeaders: this._tryHeaders.slice(),
229
230
  skipExisting: this._skipExisting
@@ -243,6 +244,7 @@ export class ModelDownloader {
243
244
  directory: this._dirPath,
244
245
  fileName: this._fileName ?? undefined,
245
246
  cliProgress: this._showCliProgress,
247
+ cliStyle: isCI ? "ci" : "fancy",
246
248
  headers: this._headers ?? {},
247
249
  tryHeaders: this._tryHeaders.slice(),
248
250
  skipExisting: this._skipExisting
@@ -266,6 +268,7 @@ export class ModelDownloader {
266
268
  }));
267
269
  this._downloader = await downloadSequence({
268
270
  cliProgress: this._showCliProgress,
271
+ cliStyle: isCI ? "ci" : "fancy",
269
272
  parallelDownloads: this._parallelDownloads
270
273
  }, ...partDownloads);
271
274
  const firstDownload = await partDownloads[0];
@@ -390,6 +393,7 @@ export class CombinedModelDownloader {
390
393
  async _init() {
391
394
  this._downloader = await downloadSequence({
392
395
  cliProgress: this._showCliProgress,
396
+ cliStyle: isCI ? "ci" : "fancy",
393
397
  parallelDownloads: this._parallelDownloads
394
398
  }, ...(await Promise.all(this._downloaders)).flatMap((downloader) => downloader._specificFileDownloaders));
395
399
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createModelDownloader.js","sourceRoot":"","sources":["../../src/utils/createModelDownloader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createModelDownloader.js","sourceRoot":"","sources":["../../src/utils/createModelDownloader.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b3787"
2
+ "release": "b3804"
3
3
  }
Binary file
@@ -1,4 +1,4 @@
1
1
  {
2
- "tag": "b3787",
2
+ "tag": "b3804",
3
3
  "llamaCppGithubRepo": "ggerganov/llama.cpp"
4
4
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "node-llama-cpp",
3
- "version": "3.0.0-beta.46",
4
- "description": "Run AI models locally on your machine with node.js bindings for llama.cpp. Force a JSON schema on the model output on the generation level",
3
+ "version": "3.0.0-beta.47",
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",
7
7
  "types": "./dist/index.d.ts",
@@ -181,7 +181,7 @@
181
181
  "filenamify": "^6.0.0",
182
182
  "fs-extra": "^11.2.0",
183
183
  "ignore": "^5.3.2",
184
- "ipull": "^3.6.2",
184
+ "ipull": "^3.7.2",
185
185
  "is-unicode-supported": "^2.1.0",
186
186
  "lifecycle-utils": "^1.7.0",
187
187
  "log-symbols": "^7.0.0",
@@ -209,16 +209,16 @@
209
209
  }
210
210
  },
211
211
  "optionalDependencies": {
212
- "@node-llama-cpp/linux-arm64": "3.0.0-beta.46",
213
- "@node-llama-cpp/linux-armv7l": "3.0.0-beta.46",
214
- "@node-llama-cpp/linux-x64": "3.0.0-beta.46",
215
- "@node-llama-cpp/linux-x64-cuda": "3.0.0-beta.46",
216
- "@node-llama-cpp/linux-x64-vulkan": "3.0.0-beta.46",
217
- "@node-llama-cpp/mac-arm64-metal": "3.0.0-beta.46",
218
- "@node-llama-cpp/mac-x64": "3.0.0-beta.46",
219
- "@node-llama-cpp/win-arm64": "3.0.0-beta.46",
220
- "@node-llama-cpp/win-x64": "3.0.0-beta.46",
221
- "@node-llama-cpp/win-x64-cuda": "3.0.0-beta.46",
222
- "@node-llama-cpp/win-x64-vulkan": "3.0.0-beta.46"
212
+ "@node-llama-cpp/linux-arm64": "3.0.0-beta.47",
213
+ "@node-llama-cpp/linux-armv7l": "3.0.0-beta.47",
214
+ "@node-llama-cpp/linux-x64": "3.0.0-beta.47",
215
+ "@node-llama-cpp/linux-x64-cuda": "3.0.0-beta.47",
216
+ "@node-llama-cpp/linux-x64-vulkan": "3.0.0-beta.47",
217
+ "@node-llama-cpp/mac-arm64-metal": "3.0.0-beta.47",
218
+ "@node-llama-cpp/mac-x64": "3.0.0-beta.47",
219
+ "@node-llama-cpp/win-arm64": "3.0.0-beta.47",
220
+ "@node-llama-cpp/win-x64": "3.0.0-beta.47",
221
+ "@node-llama-cpp/win-x64-cuda": "3.0.0-beta.47",
222
+ "@node-llama-cpp/win-x64-vulkan": "3.0.0-beta.47"
223
223
  }
224
224
  }
@@ -1 +1 @@
1
- {"files":[{"path":[".editorconfig"],"content":"root = true\n\n[*]\nindent_style = space\nindent_size = 4\n\n[{*.ts,*.tsx,*.js,*.jsx,*.css,*.scss}]\ninsert_final_newline = true\n\n[{package.json,package-lock.json,manifest.json,electron-builder.json5}]\nindent_size = 2\n\n[*.yml]\nindent_size = 2\n"},{"path":[".eslintrc.json"],"content":"{\n \"root\": true,\n \"env\": {\n \"node\": true,\n \"browser\": false,\n \"es6\": true\n },\n \"ignorePatterns\": [\"/dist\", \"/dist-electron\", \"/release\", \"/models\"],\n \"extends\": [\n \"eslint:recommended\",\n \"plugin:jsdoc/recommended\",\n \"plugin:react-hooks/recommended\"\n ],\n \"globals\": {\n \"Atomics\": \"readonly\",\n \"SharedArrayBuffer\": \"readonly\"\n },\n \"parserOptions\": {\n \"ecmaFeatures\": {\n \"jsx\": true\n },\n \"ecmaVersion\": 2023,\n \"sourceType\": \"module\"\n },\n \"overrides\": [{\n \"files\": [\"**.ts\", \"**.tsx\"],\n \"extends\": [\n \"eslint:recommended\",\n \"plugin:@typescript-eslint/recommended\",\n \"plugin:jsdoc/recommended-typescript\"\n ],\n \"parser\": \"@typescript-eslint/parser\",\n \"plugins\": [\n \"@typescript-eslint\",\n \"import\",\n \"jsdoc\",\n \"react-refresh\"\n ],\n \"rules\": {\n \"@typescript-eslint/explicit-module-boundary-types\": [\"off\"],\n \"@typescript-eslint/ban-ts-comment\": [\"off\"],\n \"@typescript-eslint/no-explicit-any\": [\"off\"],\n \"semi\": [\"off\"],\n \"@typescript-eslint/semi\": [\"warn\", \"always\"],\n \"@typescript-eslint/no-inferrable-types\": [\"off\"],\n \"@typescript-eslint/member-ordering\": [\"warn\", {\n \"default\": [\"field\", \"constructor\", \"method\", \"signature\"],\n \"typeLiterals\": []\n }],\n \"@typescript-eslint/parameter-properties\": [\"warn\", {\n \"allow\": []\n }],\n \"@typescript-eslint/explicit-member-accessibility\": [\"warn\"],\n \"@typescript-eslint/member-delimiter-style\": [\"warn\", {\n \"multiline\": {\n \"delimiter\": \"comma\",\n \"requireLast\": false\n },\n \"singleline\": {\n \"delimiter\": \"comma\",\n \"requireLast\": false\n },\n \"multilineDetection\": \"brackets\"\n }],\n \"jsdoc/require-param\": [\"off\"],\n \"jsdoc/check-param-names\": [\"warn\", {\n \"checkDestructured\": false\n }],\n \"jsdoc/require-returns\": [\"off\"],\n \"jsdoc/require-jsdoc\": [\"off\"],\n \"jsdoc/require-yields\": [\"off\"],\n \"jsdoc/require-param-description\": [\"off\"]\n }\n }],\n \"plugins\": [\n \"@typescript-eslint\",\n \"import\",\n \"jsdoc\",\n \"react-refresh\"\n ],\n \"settings\": {\n \"import/parsers\": {\n \"@typescript-eslint/parser\": [\".ts\"]\n },\n \"jsdoc\": {\n \"exemptDestructuredRootsFromChecks\": true,\n \"tagNamePreference\": {\n \"hidden\": \"hidden\"\n }\n }\n },\n \"rules\": {\n \"indent\": [\"warn\", 4, {\n \"SwitchCase\": 1,\n \"FunctionDeclaration\": {\n \"parameters\": \"first\"\n }\n }],\n \"eqeqeq\": [\"off\"],\n \"no-undef\": \"off\",\n \"quotes\": [\"warn\", \"double\", { \"avoidEscape\": true }],\n \"no-unused-vars\": [\"warn\", {\n \"args\": \"none\",\n \"ignoreRestSiblings\": true,\n \"varsIgnorePattern\": \"^set\"\n }],\n \"no-prototype-builtins\": [\"off\"],\n \"object-curly-spacing\": [\"warn\", \"never\"],\n \"semi\": [\"warn\", \"always\"],\n \"no-undefined\": [\"off\"],\n \"array-bracket-newline\": [\"error\", \"consistent\"],\n \"brace-style\": [\"error\", \"1tbs\", {\n \"allowSingleLine\": false\n }],\n \"comma-spacing\": [\"error\", {\n \"before\": false,\n \"after\": true\n }],\n \"comma-style\": [\"error\", \"last\"],\n \"comma-dangle\": [\"error\", \"never\"],\n \"no-var\": [\"error\"],\n \"import/order\": [\"error\", {\n \"groups\": [\"builtin\", \"external\",\"internal\", \"parent\", \"sibling\", \"index\", \"type\", \"object\", \"unknown\"],\n \"warnOnUnassignedImports\": true\n }],\n \"newline-per-chained-call\": [\"error\", {\n \"ignoreChainWithDepth\": 2\n }],\n \"no-confusing-arrow\": [\"error\"],\n \"no-const-assign\": [\"error\"],\n \"no-duplicate-imports\": [\"error\", {\n \"includeExports\": true\n }],\n \"camelcase\": [\"warn\"],\n \"jsx-quotes\": [\"warn\"],\n \"yoda\": [\"error\", \"never\", {\n \"exceptRange\": true\n }],\n \"no-eval\": [\"error\"],\n \"array-callback-return\": [\"error\"],\n \"no-empty\": [\"error\", {\n \"allowEmptyCatch\": true\n }],\n \"keyword-spacing\": [\"warn\"],\n \"space-infix-ops\": [\"warn\"],\n \"spaced-comment\": [\"warn\", \"always\", {\n \"markers\": [\"/\"]\n }],\n \"eol-last\": [\"warn\", \"always\"],\n \"max-len\": [\"warn\", {\n \"code\": 140,\n \"tabWidth\": 4,\n \"ignoreStrings\": true\n }],\n \"react-refresh/only-export-components\": [\"warn\", {\n \"allowConstantExport\": true\n }],\n \"react-hooks/exhaustive-deps\": [\"off\"]\n }\n}\n"},{"path":[".gitignore"],"content":"/.idea\n/.vscode\nnode_modules\n.DS_Store\n\n/dist\n/dist-electron\n/release\n/models\n"},{"path":["README.md"],"content":"# Electron + TypeScript + React + Vite + `node-llama-cpp`\nThis template provides a minimal setup to get an Electron app working with TypeScript and `node-llama-cpp`, React with TypeScript for the renderer, and some ESLint rules.\n\n## Get started\nInstall node modules and download the model files used by `node-llama-cpp`:\n```bash\nnpm install\n```\n\nStart the project:\n```bash\nnpm start\n```\n"},{"path":["electron","electron-env.d.ts"],"content":"/// <reference types=\"vite-plugin-electron/electron-env\" />\n\ndeclare namespace NodeJS {\n interface ProcessEnv {\n /**\n * The built directory structure\n *\n * ```tree\n * ├─┬─┬ dist\n * │ │ └── index.html\n * │ │\n * │ ├─┬ dist-electron\n * │ │ ├── index.js\n * │ │ └── preload.mjs\n * │\n * ```\n */\n APP_ROOT: string,\n /** /dist/ or /public/ */\n VITE_PUBLIC: string\n }\n}\n\n// Used in Renderer process, expose in `preload.ts`\ninterface Window {\n ipcRenderer: import(\"electron\").IpcRenderer\n}\n"},{"path":["electron","index.ts"],"content":"import {fileURLToPath} from \"node:url\";\nimport path from \"node:path\";\nimport {app, shell, BrowserWindow} from \"electron\";\nimport {registerLlmRpc} from \"./rpc/llmRpc.ts\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n// The built directory structure\n//\n// ├─┬─┬ dist\n// │ │ └── index.html\n// │ │\n// │ ├─┬ dist-electron\n// │ │ ├── index.js\n// │ │ └── preload.mjs\n// │\nprocess.env.APP_ROOT = path.join(__dirname, \"..\");\n\nexport const VITE_DEV_SERVER_URL = process.env[\"VITE_DEV_SERVER_URL\"];\nexport const MAIN_DIST = path.join(process.env.APP_ROOT, \"dist-electron\");\nexport const RENDERER_DIST = path.join(process.env.APP_ROOT, \"dist\");\n\nprocess.env.VITE_PUBLIC = VITE_DEV_SERVER_URL\n ? path.join(process.env.APP_ROOT, \"public\")\n : RENDERER_DIST;\n\nlet win: BrowserWindow | null;\n\nfunction createWindow() {\n win = new BrowserWindow({\n icon: path.join(process.env.VITE_PUBLIC, \"electron-vite.svg\"),\n webPreferences: {\n preload: path.join(__dirname, \"preload.mjs\")\n },\n width: 1000,\n height: 700\n });\n registerLlmRpc(win);\n\n // open external links in the default browser\n win.webContents.setWindowOpenHandler(({url}) => {\n if (url.startsWith(\"file://\"))\n return {action: \"allow\"};\n\n void shell.openExternal(url);\n return {action: \"deny\"};\n });\n\n // Test active push message to Renderer-process.\n win.webContents.on(\"did-finish-load\", () => {\n win?.webContents.send(\"main-process-message\", (new Date).toLocaleString());\n });\n\n if (VITE_DEV_SERVER_URL)\n void win.loadURL(VITE_DEV_SERVER_URL);\n else\n void win.loadFile(path.join(RENDERER_DIST, \"index.html\"));\n}\n\n// Quit when all windows are closed, except on macOS. There, it's common\n// for applications and their menu bar to stay active until the user quits\n// explicitly with Cmd + Q.\napp.on(\"window-all-closed\", () => {\n if (process.platform !== \"darwin\") {\n app.quit();\n win = null;\n }\n});\n\napp.on(\"activate\", () => {\n // On OS X it's common to re-create a window in the app when the\n // dock icon is clicked and there are no other windows open.\n if (BrowserWindow.getAllWindows().length === 0) {\n createWindow();\n }\n});\n\napp.whenReady().then(createWindow);\n"},{"path":["electron","preload.ts"],"content":"import {ipcRenderer, contextBridge} from \"electron\";\n\n// --------- Expose some API to the Renderer process ---------\ncontextBridge.exposeInMainWorld(\"ipcRenderer\", {\n on(...args: Parameters<typeof ipcRenderer.on>) {\n const [channel, listener] = args;\n return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args));\n },\n off(...args: Parameters<typeof ipcRenderer.off>) {\n const [channel, ...omit] = args;\n return ipcRenderer.off(channel, ...omit);\n },\n send(...args: Parameters<typeof ipcRenderer.send>) {\n const [channel, ...omit] = args;\n return ipcRenderer.send(channel, ...omit);\n },\n invoke(...args: Parameters<typeof ipcRenderer.invoke>) {\n const [channel, ...omit] = args;\n return ipcRenderer.invoke(channel, ...omit);\n }\n\n // You can expose other APIs you need here\n // ...\n});\n"},{"path":["electron","rpc","llmRpc.ts"],"content":"import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport {BrowserWindow, dialog} from \"electron\";\nimport {createElectronSideBirpc} from \"../utils/createElectronSideBirpc.ts\";\nimport {llmFunctions, llmState} from \"../state/llmState.ts\";\nimport type {RenderedFunctions} from \"../../src/rpc/llmRpc.ts\";\n\nconst modelDirectoryPath = path.join(process.cwd(), \"models\");\n\nexport class ElectronLlmRpc {\n public readonly rendererLlmRpc: ReturnType<typeof createElectronSideBirpc<RenderedFunctions, typeof this.functions>>;\n\n public readonly functions = {\n async selectModelFileAndLoad() {\n const res = await dialog.showOpenDialog({\n message: \"Select a model file\",\n title: \"Select a model file\",\n filters: [\n {name: \"Model file\", extensions: [\"gguf\"]}\n ],\n buttonLabel: \"Open\",\n defaultPath: await pathExists(modelDirectoryPath)\n ? modelDirectoryPath\n : undefined,\n properties: [\"openFile\"]\n });\n\n if (!res.canceled && res.filePaths.length > 0) {\n llmState.state = {\n ...llmState.state,\n selectedModelFilePath: path.resolve(res.filePaths[0]!),\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: llmState.state.chatSession.draftPrompt.prompt,\n completion: \"\"\n }\n }\n };\n\n if (!llmState.state.llama.loaded)\n await llmFunctions.loadLlama();\n\n await llmFunctions.loadModel(llmState.state.selectedModelFilePath!);\n await llmFunctions.createContext();\n await llmFunctions.createContextSequence();\n await llmFunctions.chatSession.createChatSession();\n }\n },\n getState() {\n return llmState.state;\n },\n setDraftPrompt: llmFunctions.chatSession.setDraftPrompt,\n prompt: llmFunctions.chatSession.prompt,\n stopActivePrompt: llmFunctions.chatSession.stopActivePrompt,\n resetChatHistory: llmFunctions.chatSession.resetChatHistory\n } as const;\n\n public constructor(window: BrowserWindow) {\n this.rendererLlmRpc = createElectronSideBirpc<RenderedFunctions, typeof this.functions>(\"llmRpc\", \"llmRpc\", window, this.functions);\n\n this.sendCurrentLlmState = this.sendCurrentLlmState.bind(this);\n\n llmState.createChangeListener(this.sendCurrentLlmState);\n this.sendCurrentLlmState();\n }\n\n public sendCurrentLlmState() {\n this.rendererLlmRpc.updateState(llmState.state);\n }\n}\n\nexport type ElectronFunctions = typeof ElectronLlmRpc.prototype.functions;\n\nexport function registerLlmRpc(window: BrowserWindow) {\n new ElectronLlmRpc(window);\n}\n\nasync function pathExists(path: string) {\n try {\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n"},{"path":["electron","state","llmState.ts"],"content":"import path from \"node:path\";\nimport {\n getLlama, Llama, LlamaChatSession, LlamaChatSessionPromptCompletionEngine, LlamaContext, LlamaContextSequence, LlamaModel\n} from \"node-llama-cpp\";\nimport {withLock, State} from \"lifecycle-utils\";\nimport packageJson from \"../../package.json\";\n\nexport const llmState = new State<LlmState>({\n appVersion: packageJson.version,\n llama: {\n loaded: false\n },\n model: {\n loaded: false\n },\n context: {\n loaded: false\n },\n contextSequence: {\n loaded: false\n },\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: \"\",\n completion: \"\"\n }\n }\n});\n\nexport type LlmState = {\n appVersion?: string,\n llama: {\n loaded: boolean,\n error?: string\n },\n selectedModelFilePath?: string,\n model: {\n loaded: boolean,\n loadProgress?: number,\n name?: string,\n error?: string\n },\n context: {\n loaded: boolean,\n error?: string\n },\n contextSequence: {\n loaded: boolean,\n error?: string\n },\n chatSession: {\n loaded: boolean,\n generatingResult: boolean,\n simplifiedChat: SimplifiedChatItem[],\n draftPrompt: {\n prompt: string,\n completion: string\n }\n }\n};\n\ntype SimplifiedChatItem = {\n type: \"user\" | \"model\",\n message: string\n};\n\nlet llama: Llama | null = null;\nlet model: LlamaModel | null = null;\nlet context: LlamaContext | null = null;\nlet contextSequence: LlamaContextSequence | null = null;\n\nlet chatSession: LlamaChatSession | null = null;\nlet chatSessionCompletionEngine: LlamaChatSessionPromptCompletionEngine | null = null;\nlet promptAbortController: AbortController | null = null;\nlet inProgressResponse: string = \"\";\n\nexport const llmFunctions = {\n async loadLlama() {\n await withLock(llmFunctions, \"llama\", async () => {\n if (llama != null) {\n try {\n await llama.dispose();\n llama = null;\n } catch (err) {\n console.error(\"Failed to dispose llama\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n llama: {loaded: false}\n };\n\n llama = await getLlama();\n llmState.state = {\n ...llmState.state,\n llama: {loaded: true}\n };\n\n llama.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n llama: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to load llama\", err);\n llmState.state = {\n ...llmState.state,\n llama: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n async loadModel(modelPath: string) {\n await withLock(llmFunctions, \"model\", async () => {\n if (llama == null)\n throw new Error(\"Llama not loaded\");\n\n if (model != null) {\n try {\n await model.dispose();\n model = null;\n } catch (err) {\n console.error(\"Failed to dispose model\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n model: {\n loaded: false,\n loadProgress: 0\n }\n };\n\n model = await llama.loadModel({\n modelPath,\n onLoadProgress(loadProgress: number) {\n llmState.state = {\n ...llmState.state,\n model: {\n ...llmState.state.model,\n loadProgress\n }\n };\n }\n });\n llmState.state = {\n ...llmState.state,\n model: {\n loaded: true,\n loadProgress: 1,\n name: path.basename(modelPath)\n }\n };\n\n model.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n model: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to load model\", err);\n llmState.state = {\n ...llmState.state,\n model: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n async createContext() {\n await withLock(llmFunctions, \"context\", async () => {\n if (model == null)\n throw new Error(\"Model not loaded\");\n\n if (context != null) {\n try {\n await context.dispose();\n context = null;\n } catch (err) {\n console.error(\"Failed to dispose context\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n context: {loaded: false}\n };\n\n context = await model.createContext();\n llmState.state = {\n ...llmState.state,\n context: {loaded: true}\n };\n\n context.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n context: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to create context\", err);\n llmState.state = {\n ...llmState.state,\n context: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n async createContextSequence() {\n await withLock(llmFunctions, \"contextSequence\", async () => {\n if (context == null)\n throw new Error(\"Context not loaded\");\n\n try {\n llmState.state = {\n ...llmState.state,\n contextSequence: {loaded: false}\n };\n\n contextSequence = context.getSequence();\n llmState.state = {\n ...llmState.state,\n contextSequence: {loaded: true}\n };\n\n contextSequence.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n contextSequence: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to get context sequence\", err);\n llmState.state = {\n ...llmState.state,\n contextSequence: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n chatSession: {\n async createChatSession() {\n await withLock(llmFunctions, \"chatSession\", async () => {\n if (contextSequence == null)\n throw new Error(\"Context sequence not loaded\");\n\n if (chatSession != null) {\n try {\n chatSession.dispose();\n chatSession = null;\n chatSessionCompletionEngine = null;\n } catch (err) {\n console.error(\"Failed to dispose chat session\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: llmState.state.chatSession.draftPrompt\n }\n };\n\n llmFunctions.chatSession.resetChatHistory(false);\n\n try {\n await chatSession?.preloadPrompt(\"\", {\n signal: promptAbortController?.signal\n });\n } catch (err) {\n // do nothing\n }\n chatSessionCompletionEngine?.complete(llmState.state.chatSession.draftPrompt.prompt);\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n loaded: true\n }\n };\n } catch (err) {\n console.error(\"Failed to create chat session\", err);\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: llmState.state.chatSession.draftPrompt\n }\n };\n }\n });\n },\n async prompt(message: string) {\n await withLock(llmFunctions, \"chatSession\", async () => {\n if (chatSession == null)\n throw new Error(\"Chat session not loaded\");\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n generatingResult: true,\n draftPrompt: {\n prompt: \"\",\n completion: \"\"\n }\n }\n };\n promptAbortController = new AbortController();\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n simplifiedChat: getSimplifiedChatHistory(true, message)\n }\n };\n await chatSession.prompt(message, {\n signal: promptAbortController.signal,\n stopOnAbortSignal: true,\n onTextChunk(chunk) {\n inProgressResponse += chunk;\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n simplifiedChat: getSimplifiedChatHistory(true, message)\n }\n };\n }\n });\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n generatingResult: false,\n simplifiedChat: getSimplifiedChatHistory(false),\n draftPrompt: {\n ...llmState.state.chatSession.draftPrompt,\n completion: chatSessionCompletionEngine?.complete(llmState.state.chatSession.draftPrompt.prompt) ?? \"\"\n }\n }\n };\n inProgressResponse = \"\";\n });\n },\n stopActivePrompt() {\n promptAbortController?.abort();\n },\n resetChatHistory(markAsLoaded: boolean = true) {\n if (contextSequence == null)\n return;\n\n chatSession?.dispose();\n chatSession = new LlamaChatSession({\n contextSequence,\n autoDisposeSequence: false\n });\n chatSessionCompletionEngine = chatSession.createPromptCompletionEngine({\n onGeneration(prompt, completion) {\n if (llmState.state.chatSession.draftPrompt.prompt === prompt) {\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n draftPrompt: {\n prompt,\n completion\n }\n }\n };\n }\n }\n });\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: markAsLoaded\n ? true\n : llmState.state.chatSession.loaded,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: llmState.state.chatSession.draftPrompt.prompt,\n completion: chatSessionCompletionEngine.complete(llmState.state.chatSession.draftPrompt.prompt) ?? \"\"\n }\n }\n };\n\n chatSession.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: llmState.state.chatSession.draftPrompt\n }\n };\n });\n },\n setDraftPrompt(prompt: string) {\n if (chatSessionCompletionEngine == null)\n return;\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n draftPrompt: {\n prompt: prompt,\n completion: chatSessionCompletionEngine.complete(prompt) ?? \"\"\n }\n }\n };\n }\n }\n} as const;\n\nfunction getSimplifiedChatHistory(generatingResult: boolean, currentPrompt?: string) {\n if (chatSession == null)\n return [];\n\n const chatHistory: SimplifiedChatItem[] = chatSession.getChatHistory()\n .flatMap((item): SimplifiedChatItem[] => {\n if (item.type === \"system\")\n return [];\n else if (item.type === \"user\")\n return [{type: \"user\", message: item.text}];\n else if (item.type === \"model\")\n return [{\n type: \"model\",\n message: item.response\n .filter((value) => typeof value === \"string\")\n .join(\"\")\n }];\n\n void (item satisfies never); // ensure all item types are handled\n return [];\n });\n\n if (generatingResult && currentPrompt != null) {\n chatHistory.push({\n type: \"user\",\n message: currentPrompt\n });\n\n if (inProgressResponse.length > 0)\n chatHistory.push({\n type: \"model\",\n message: inProgressResponse\n });\n }\n\n return chatHistory;\n}\n"},{"path":["electron","utils","createElectronSideBirpc.ts"],"content":"import {BrowserWindow, ipcMain} from \"electron\";\nimport {createBirpc} from \"birpc\";\n\nexport function createElectronSideBirpc<\n const RendererFunction = Record<string, never>,\n const ElectronFunctions extends object = Record<string, never>\n>(\n toRendererEventName: string,\n fromRendererEventName: string,\n window: BrowserWindow,\n electronFunctions: ElectronFunctions\n) {\n return createBirpc<RendererFunction, ElectronFunctions>(electronFunctions, {\n post: (data) => window.webContents.send(toRendererEventName, data),\n on: (onData) => ipcMain.on(fromRendererEventName, (event, data) => {\n if (BrowserWindow.fromWebContents(event.sender) === window)\n onData(data);\n }),\n serialize: (value) => JSON.stringify(value),\n deserialize: (value) => JSON.parse(value)\n });\n}\n"},{"path":["electron-builder.ts"],"content":"import path from \"node:path\";\nimport {$} from \"zx\";\nimport type {Configuration} from \"electron-builder\";\n\nconst appId = \"node-llama-cpp.electron.example\";\nconst productName = \"node-llama-cpp Electron example\";\nconst executableName = \"node-llama-cpp-electron-example\";\nconst appxIdentityName = \"node.llama.cpp.electron.example\";\n\n/**\n * @see - https://www.electron.build/configuration/configuration\n */\nexport default {\n appId: appId,\n asar: true,\n productName: productName,\n executableName: executableName,\n directories: {\n output: \"release\"\n },\n\n // remove this once you set up your own code signing for macOS\n async afterPack(context) {\n if (context.electronPlatformName === \"darwin\") {\n // check whether the app was already signed\n const appPath = path.join(context.appOutDir, `${context.packager.appInfo.productFilename}.app`);\n\n // this is needed for the app to not appear as \"damaged\" on Apple Silicon Macs\n // https://github.com/electron-userland/electron-builder/issues/5850#issuecomment-1821648559\n await $`codesign --force --deep --sign - ${appPath}`;\n }\n },\n files: [\n \"dist\",\n \"dist-electron\",\n \"!node_modules/node-llama-cpp/bins/**/*\",\n \"node_modules/node-llama-cpp/bins/${os}-${arch}*/**/*\",\n \"!node_modules/@node-llama-cpp/*/bins/**/*\",\n \"node_modules/@node-llama-cpp/${os}-${arch}*/bins/**/*\",\n \"!node_modules/node-llama-cpp/llama/localBuilds/**/*\",\n \"node_modules/node-llama-cpp/llama/localBuilds/${os}-${arch}*/**/*\"\n ],\n asarUnpack: [\n \"node_modules/node-llama-cpp/bins\",\n \"node_modules/node-llama-cpp/llama/localBuilds\",\n \"node_modules/@node-llama-cpp/*\"\n ],\n mac: {\n target: [{\n target: \"dmg\",\n arch: [\n \"arm64\",\n \"x64\"\n ]\n }, {\n target: \"zip\",\n arch: [\n \"arm64\",\n \"x64\"\n ]\n }],\n\n artifactName: \"${name}.macOS.${version}.${arch}.${ext}\"\n },\n win: {\n target: [{\n target: \"nsis\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }],\n\n artifactName: \"${name}.Windows.${version}.${arch}.${ext}\"\n },\n appx: {\n identityName: appxIdentityName,\n artifactName: \"${name}.Windows.${version}.${arch}.${ext}\"\n },\n nsis: {\n oneClick: true,\n perMachine: false,\n allowToChangeInstallationDirectory: false,\n deleteAppDataOnUninstall: true\n },\n linux: {\n target: [{\n target: \"AppImage\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }, {\n target: \"snap\",\n arch: [\n \"x64\"\n ]\n }, {\n target: \"deb\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }, {\n target: \"tar.gz\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }],\n category: \"Utility\",\n\n artifactName: \"${name}.Linux.${version}.${arch}.${ext}\"\n }\n} as Configuration;\n"},{"path":["package.json"],"content":"{\n \"name\": \"node-llama-cpp-project\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"main\": \"./dist-electron/index.js\",\n \"type\": \"module\",\n \"homepage\": \"https://github.com/withcatai/node-llama-cpp\",\n \"author\": {\n \"name\": \"Author name\",\n \"email\": \"email@example.com\"\n },\n \"scripts\": {\n \"postinstall\": \"npm run models:pull\",\n \"models:pull\": \"node-llama-cpp pull --dir ./models \\\"{{modelUrl|escape|escape}}\\\"\",\n \"start\": \"vite dev\",\n \"start:build\": \"electron ./dist-electron\",\n \"prebuild\": \"rimraf ./dist ./dist-electron ./release\",\n \"build\": \"tsc && vite build && electron-builder --config ./electron-builder.ts\",\n \"lint\": \"npm run lint:eslint\",\n \"lint:eslint\": \"eslint --ext .js --ext .ts --report-unused-disable-directives .\",\n \"format\": \"npm run lint:eslint -- --fix\",\n \"clean\": \"rm -rf ./node_modules ./dist ./dist-electron ./release ./models\"\n },\n \"dependencies\": {\n \"birpc\": \"^0.2.17\",\n \"classnames\": \"^2.5.1\",\n \"highlight.js\": \"^11.10.0\",\n \"lifecycle-utils\": \"^1.7.0\",\n \"markdown-it\": \"^14.1.0\",\n \"node-llama-cpp\": \"^{{currentNodeLlamaCppModuleVersion|escape}}\",\n \"react\": \"^18.3.1\",\n \"react-dom\": \"^18.3.1\",\n \"semver\": \"^7.6.3\"\n },\n \"devDependencies\": {\n \"@types/markdown-it\": \"^14.1.2\",\n \"@types/react\": \"^18.3.5\",\n \"@types/react-dom\": \"^18.3.0\",\n \"@types/semver\": \"^7.5.8\",\n \"@typescript-eslint/eslint-plugin\": \"^7.12.0\",\n \"@typescript-eslint/parser\": \"^7.12.0\",\n \"@vitejs/plugin-react\": \"^4.3.1\",\n \"electron\": \"^32.1.0\",\n \"electron-builder\": \"^24.13.3\",\n \"eslint\": \"^8.57.0\",\n \"eslint-plugin-import\": \"^2.29.1\",\n \"eslint-plugin-jsdoc\": \"^48.2.9\",\n \"eslint-plugin-react-hooks\": \"^4.6.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.7\",\n \"rimraf\": \"^6.0.1\",\n \"typescript\": \"^5.6.2\",\n \"vite\": \"^5.4.5\",\n \"vite-plugin-electron\": \"^0.28.7\",\n \"vite-plugin-electron-renderer\": \"^0.14.5\",\n \"zx\": \"^8.1.7\"\n },\n \"overrides\": {\n \"electron-builder\": {\n \"read-config-file\": {\n \"config-file-ts\": \">=0.2.8-rc1\"\n }\n }\n }\n}"},{"path":["public","vite.svg"],"content":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\"\n class=\"iconify iconify--logos\" width=\"31.88\" height=\"32\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 256 257\">\n <defs>\n <linearGradient id=\"IconifyId1813088fe1fbc01fb466\" x1=\"-.828%\" x2=\"57.636%\" y1=\"7.652%\" y2=\"78.411%\">\n <stop offset=\"0%\" stop-color=\"#41D1FF\"></stop>\n <stop offset=\"100%\" stop-color=\"#BD34FE\"></stop>\n </linearGradient>\n <linearGradient id=\"IconifyId1813088fe1fbc01fb467\" x1=\"43.376%\" x2=\"50.316%\" y1=\"2.242%\" y2=\"89.03%\">\n <stop offset=\"0%\" stop-color=\"#FFEA83\"></stop>\n <stop offset=\"8.333%\" stop-color=\"#FFDD35\"></stop>\n <stop offset=\"100%\" stop-color=\"#FFA800\"></stop>\n </linearGradient>\n </defs>\n <path fill=\"url(#IconifyId1813088fe1fbc01fb466)\"\n d=\"M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z\"></path>\n <path fill=\"url(#IconifyId1813088fe1fbc01fb467)\"\n d=\"M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z\"></path>\n</svg>\n"},{"path":["src","App","App.css"],"content":"#root {\n margin: 0 auto;\n padding: 16px;\n text-align: center;\n width: 100%;\n min-height: 100%;\n align-items: center;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.app {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n max-width: 1280px;\n\n > .message {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: center;\n gap: 48px;\n overflow: auto;\n padding: 24px 0px;\n\n > .error {\n border: solid 1px var(--error-border-color);\n padding: 8px 12px;\n border-radius: 12px;\n box-shadow: 0px 8px 32px -16px var(--error-border-color);\n }\n\n > .loadModel {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 64px;\n text-align: start;\n\n > .hint {\n margin-top: 64px;\n opacity: 0.6;\n }\n\n > .actions {\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: var(--actions-block-background-color);\n border: solid 1px var(--actions-block-border-color);\n box-shadow: var(--actions-block-box-shadow);\n padding: 16px 24px;\n border-radius: 12px;\n gap: 16px;\n\n > .starLink {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n color: var(--star-link-color);\n\n &:hover {\n color: var(--star-hover-color);\n }\n\n > .starIcon {\n flex-shrink: 0;\n fill: currentColor;\n }\n }\n\n > .links {\n display: flex;\n flex-direction: row;\n\n > a {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n\n > .downloadIcon {\n flex-shrink: 0;\n fill: currentColor;\n }\n }\n\n > .separator {\n width: 1px;\n background-color: var(--link-color);\n opacity: 0.2;\n margin: 0px 16px;\n height: 0.8lh;\n align-self: center;\n }\n }\n\n > .browseLink {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n\n > .searchIcon {\n flex-shrink: 0;\n fill: currentColor;\n }\n }\n }\n }\n\n > .loading {\n opacity: 0.6;\n font-weight: bold;\n\n mask: linear-gradient(\n to right,\n rgb(0 0 0 / 48%) 34%,\n black,\n rgb(0 0 0 / 48%) 66%\n ) content-box 0 0 / 300% 100% no-repeat;\n animation: loading-animation 2s infinite ease-in-out;\n }\n\n > .typeMessage {\n opacity: 0.6;\n }\n }\n}\n\n@keyframes loading-animation {\n 0% {\n mask-position: 100% 100%;\n }\n\n 100% {\n mask-position: 0 100%;\n }\n}\n"},{"path":["src","App","App.tsx"],"content":"import {useCallback, useLayoutEffect, useRef} from \"react\";\nimport {llmState} from \"../state/llmState.ts\";\nimport {electronLlmRpc} from \"../rpc/llmRpc.ts\";\nimport {useExternalState} from \"../hooks/useExternalState.ts\";\nimport {SearchIconSVG} from \"../icons/SearchIconSVG.tsx\";\nimport {StarIconSVG} from \"../icons/StarIconSVG.tsx\";\nimport {DownloadIconSVG} from \"../icons/DownloadIconSVG.tsx\";\nimport {Header} from \"./components/Header/Header.tsx\";\nimport {ChatHistory} from \"./components/ChatHistory/ChatHistory.tsx\";\nimport {InputRow} from \"./components/InputRow/InputRow.tsx\";\n\nimport \"./App.css\";\n\n\nexport function App() {\n const state = useExternalState(llmState);\n const {generatingResult} = state.chatSession;\n const isScrollAnchoredRef = useRef(false);\n\n const isScrolledToTheBottom = useCallback(() => {\n return document.documentElement.scrollHeight - document.documentElement.scrollTop === document.documentElement.clientHeight;\n }, []);\n\n const scrollToBottom = useCallback(() => {\n document.documentElement.scrollTop = document.documentElement.scrollHeight;\n isScrollAnchoredRef.current = isScrolledToTheBottom();\n }, []);\n\n useLayoutEffect(() => {\n // anchor scroll to bottom\n\n function onScroll() {\n isScrollAnchoredRef.current = isScrolledToTheBottom();\n }\n\n const observer = new ResizeObserver(() => {\n if (isScrollAnchoredRef.current && !isScrolledToTheBottom())\n scrollToBottom();\n });\n\n window.addEventListener(\"scroll\", onScroll, {passive: false});\n observer.observe(document.body, {\n box: \"border-box\"\n });\n scrollToBottom();\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, []);\n\n const openSelectModelFileDialog = useCallback(async () => {\n await electronLlmRpc.selectModelFileAndLoad();\n }, []);\n\n const stopActivePrompt = useCallback(() => {\n void electronLlmRpc.stopActivePrompt();\n }, []);\n\n const resetChatHistory = useCallback(() => {\n void electronLlmRpc.stopActivePrompt();\n void electronLlmRpc.resetChatHistory();\n }, []);\n\n const sendPrompt = useCallback((prompt: string) => {\n if (generatingResult)\n return;\n\n scrollToBottom();\n void electronLlmRpc.prompt(prompt);\n }, [generatingResult, scrollToBottom]);\n\n const onPromptInput = useCallback((currentText: string) => {\n void electronLlmRpc.setDraftPrompt(currentText);\n }, []);\n\n const error = state.llama.error ?? state.model.error ?? state.context.error ?? state.contextSequence.error;\n const loading = state.selectedModelFilePath != null && error == null && (\n !state.model.loaded || !state.llama.loaded || !state.context.loaded || !state.contextSequence.loaded || !state.chatSession.loaded\n );\n const showMessage = state.selectedModelFilePath == null || error != null || state.chatSession.simplifiedChat.length === 0;\n\n return <div className=\"app\">\n <Header\n appVersion={state.appVersion}\n canShowCurrentVersion={state.selectedModelFilePath == null}\n modelName={state.model.name}\n loadPercentage={state.model.loadProgress}\n onLoadClick={openSelectModelFileDialog}\n onResetChatClick={\n !showMessage\n ? resetChatHistory\n : undefined\n }\n />\n {\n showMessage &&\n <div className=\"message\">\n {\n error != null &&\n <div className=\"error\">\n {String(error)}\n </div>\n }\n {\n loading &&\n <div className=\"loading\">\n Loading...\n </div>\n }\n {\n (state.selectedModelFilePath == null || state.llama.error != null) &&\n <div className=\"loadModel\">\n <div className=\"hint\">Click the button above to load a model</div>\n <div className=\"actions\">\n <a className=\"starLink\" target=\"_blank\" href=\"https://github.com/withcatai/node-llama-cpp\">\n <StarIconSVG className=\"starIcon\"/>\n <div className=\"text\">\n Star <code>node-llama-cpp</code> on GitHub\n </div>\n </a>\n <div className=\"links\">\n <a\n target=\"_blank\"\n href=\"https://huggingface.co/mradermacher/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct.Q4_K_M.gguf\"\n >\n <DownloadIconSVG className=\"downloadIcon\"/>\n <div className=\"text\">Get Llama 3.1 8B model</div>\n </a>\n <div className=\"separator\"/>\n <a\n target=\"_blank\"\n href=\"https://huggingface.co/bartowski/gemma-2-2b-it-GGUF/resolve/main/gemma-2-2b-it-Q4_K_M.gguf\"\n >\n <DownloadIconSVG className=\"downloadIcon\"/>\n <div className=\"text\">Get Gemma 2 2B model</div>\n </a>\n </div>\n <a className=\"browseLink\" target=\"_blank\" href=\"https://huggingface.co/mradermacher\">\n <SearchIconSVG className=\"searchIcon\"/>\n <div className=\"text\">Find more models</div>\n </a>\n </div>\n </div>\n }\n {\n (\n !loading &&\n state.selectedModelFilePath != null &&\n error == null &&\n state.chatSession.simplifiedChat.length === 0\n ) &&\n <div className=\"typeMessage\">\n Type a message to start the conversation\n </div>\n }\n </div>\n }\n {\n !showMessage &&\n <ChatHistory\n simplifiedChat={state.chatSession.simplifiedChat}\n generatingResult={generatingResult}\n />\n }\n <InputRow\n disabled={!state.model.loaded || !state.contextSequence.loaded}\n stopGeneration={\n generatingResult\n ? stopActivePrompt\n : undefined\n }\n onPromptInput={onPromptInput}\n sendPrompt={sendPrompt}\n generatingResult={generatingResult}\n autocompleteInputDraft={state.chatSession.draftPrompt.prompt}\n autocompleteCompletion={state.chatSession.draftPrompt.completion}\n />\n </div>;\n}\n"},{"path":["src","App","components","ChatHistory","ChatHistory.css"],"content":".appChatHistory {\n flex: 1;\n display: flex;\n flex-direction: column;\n text-align: start;\n overflow: auto;\n padding: 24px 0px;\n\n > .message {\n &.user {\n align-self: flex-end;\n background-color: var(--user-message-background-color);\n padding: 8px 12px;\n border-radius: 12px;\n margin-bottom: 12px;\n margin-inline-start: 48px;\n margin-inline-end: 12px;\n color: var(--user-message-text-color);\n word-break: break-word;\n\n &:not(:first-child) {\n margin-top: 36px;\n }\n }\n\n &.model {\n align-self: flex-start;\n margin-inline-end: 48px;\n padding-inline-start: 24px;\n word-break: break-word;\n\n &.active {\n &:empty:after,\n &:not(:empty)>:last-child:not(ol, ul, table):after,\n &:not(:empty)>:last-child:where(ol, ul)>:last-child:after,\n &:not(:empty)>:last-child:where(table)>:last-child>:last-child>:last-child:after {\n content: \"\";\n position: static;\n display: inline-block;\n background-color: currentColor;\n width: 8px;\n height: 8px;\n translate: 0px -2px;\n border-radius: 9999px;\n margin-inline-start: 8px;\n vertical-align: middle;\n\n animation: activeModelMessageIndicator 2s infinite ease-in-out;\n }\n }\n }\n\n > :first-child {\n margin-top: 0px;\n }\n\n > :last-child {\n margin-bottom: 0px;\n }\n\n table {\n display: block;\n border-style: hidden;\n border-radius: 12px;\n outline: solid 1px var(--message-table-outline-color);\n outline-offset: -1px;\n max-width: max-content;\n border-collapse: collapse;\n overflow-x: auto;\n background-color: var(--background-color);\n\n thead {\n text-align: justify;\n }\n\n tr {\n background-color: var(--message-table-background-color);\n border-top: 1px solid var(--message-table-outline-color);\n\n &:nth-child(2n) td {\n background-color: var(--message-table-even-background-color);\n }\n\n th {\n background-color: var(--message-table-even-background-color);\n border: 1px solid var(--message-table-outline-color);\n padding: 8px 16px;\n }\n\n td {\n border: 1px solid var(--message-table-outline-color);\n padding: 8px 16px;\n }\n }\n }\n }\n}\n\n@keyframes activeModelMessageIndicator {\n 0% {\n transform: scale(1);\n opacity: 0.64;\n }\n 50% {\n transform: scale(1.4);\n opacity: 0.32;\n }\n 100% {\n transform: scale(1);\n opacity: 0.64;\n }\n}\n"},{"path":["src","App","components","ChatHistory","ChatHistory.tsx"],"content":"import classNames from \"classnames\";\nimport {LlmState} from \"../../../../electron/state/llmState.ts\";\nimport {MarkdownContent} from \"../MarkdownContent/MarkdownContent.js\";\n\nimport \"./ChatHistory.css\";\n\n\nexport function ChatHistory({simplifiedChat, generatingResult}: ChatHistoryProps) {\n return <div className=\"appChatHistory\">\n {\n simplifiedChat.map((item, index) => {\n if (item.type === \"model\") {\n const isActive = index === simplifiedChat.length - 1 && generatingResult;\n return <MarkdownContent key={index} className={classNames(\"message\", \"model\", isActive && \"active\")}>\n {item.message}\n </MarkdownContent>;\n\n } else if (item.type === \"user\")\n return <MarkdownContent key={index} className=\"message user\">\n {item.message}\n </MarkdownContent>;\n\n return null;\n })\n }\n {\n (\n simplifiedChat.length > 0 &&\n simplifiedChat[simplifiedChat.length - 1]!.type !== \"model\" &&\n generatingResult\n ) &&\n <div className=\"message model active\"/>\n }\n </div>;\n}\n\ntype ChatHistoryProps = {\n simplifiedChat: LlmState[\"chatSession\"][\"simplifiedChat\"],\n generatingResult: boolean\n};\n"},{"path":["src","App","components","Header","Header.css"],"content":".appHeader {\n display: flex;\n flex-direction: row;\n z-index: 10;\n position: sticky;\n top: 16px;\n pointer-events: none;\n\n > .panel {\n pointer-events: all;\n display: flex;\n flex-direction: row;\n align-self: start;\n background-color: var(--panel-background-color);\n border-radius: 12px;\n backdrop-filter: blur(8px);\n box-shadow: var(--panel-box-shadow);\n overflow: clip;\n isolation: isolate;\n color: var(--panel-text-color);\n z-index: 10;\n\n > button {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 8px 12px;\n margin: 8px;\n background-color: var(--panel-button-background-color);\n color: var(--panel-text-color);\n fill: var(--panel-text-color);\n\n + button {\n margin-inline-start: 0px;\n }\n\n &:hover,\n &:focus,\n &:focus-visible {\n border-color: var(--panel-button-hover-border-color);\n }\n\n > .icon {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n > .model {\n position: relative;\n\n > .progress {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n bottom: 0;\n background-color: var(--panel-progress-color);\n width: calc(var(--progress) * 100%);\n pointer-events: none;\n z-index: -1;\n\n --progress: 0;\n\n &.hide {\n opacity: 0;\n\n transition: opacity 0.3s var(--transition-easing);\n }\n }\n\n > .modelName,\n > .noModel {\n flex: 1;\n text-align: start;\n align-self: center;\n flex-basis: 400px;\n padding: 12px 24px;\n word-break: break-word;\n\n margin-inline-end: 48px;\n }\n }\n\n > .spacer {\n flex-grow: 1;\n }\n}\n"},{"path":["src","App","components","Header","Header.tsx"],"content":"import {CSSProperties} from \"react\";\nimport classNames from \"classnames\";\nimport {LoadFileIconSVG} from \"../../../icons/LoadFileIconSVG.tsx\";\nimport {DeleteIconSVG} from \"../../../icons/DeleteIconSVG.tsx\";\nimport {UpdateBadge} from \"./components/UpdateBadge.js\";\n\nimport \"./Header.css\";\n\n\nexport function Header({appVersion, canShowCurrentVersion, modelName, onLoadClick, loadPercentage, onResetChatClick}: HeaderProps) {\n return <div className=\"appHeader\">\n <div className=\"panel model\">\n <div\n className={classNames(\"progress\", loadPercentage === 1 && \"hide\")}\n style={{\n \"--progress\": loadPercentage != null ? (loadPercentage * 100) : undefined\n } as CSSProperties}\n />\n\n {\n modelName != null &&\n <div className=\"modelName\">{modelName}</div>\n }\n {\n modelName == null &&\n <div className=\"noModel\">No model loaded</div>\n }\n\n <button\n className=\"resetChatButton\"\n disabled={onResetChatClick == null}\n onClick={onResetChatClick}\n >\n <DeleteIconSVG className=\"icon\"/>\n </button>\n <button className=\"loadModelButton\" onClick={onLoadClick} disabled={onLoadClick == null}>\n <LoadFileIconSVG className=\"icon\"/>\n </button>\n </div>\n <div className=\"spacer\"/>\n <UpdateBadge\n appVersion={appVersion}\n canShowCurrentVersion={canShowCurrentVersion}\n />\n </div>;\n}\n\ntype HeaderProps = {\n appVersion?: string,\n canShowCurrentVersion?: boolean,\n modelName?: string,\n onLoadClick?(): void,\n loadPercentage?: number,\n onResetChatClick?(): void\n};\n"},{"path":["src","App","components","Header","components","UpdateBadge.css"],"content":".appHeader > .updateBadge {\n pointer-events: all;\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-shrink: 0;\n margin-inline-start: 16px;\n\n > .currentVersion {\n opacity: 0.4;\n margin: 14px;\n\n > code {\n background-color: transparent;\n }\n }\n\n > .newVersion {\n background-color: var(--update-badge-background-color);\n border: solid 1px var(--update-badge-border-color);\n box-shadow: var(--update-badge-box-shadow);\n border-radius: 12px;\n backdrop-filter: blur(8px);\n padding: 8px 12px;\n margin: 0px 8px;\n\n > .version {\n margin: 0px 4px;\n font-family: monospace;\n }\n }\n}\n"},{"path":["src","App","components","Header","components","UpdateBadge.tsx"],"content":"import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\nimport {withLock} from \"lifecycle-utils\";\nimport semver from \"semver\";\n\nimport \"./UpdateBadge.css\";\n\nconst latestReleaseUrl = \"https://github.com/withcatai/node-llama-cpp/releases/latest\";\nconst checkInterval = 1000 * 60 * 60 * 24;\n\n\nexport function UpdateBadge({appVersion, canShowCurrentVersion}: UpdateBadgeProps) {\n const [latestVersion, setLatestVersion] = useState<string | null>(null);\n const [releaseLink, setReleaseLink] = useState<string | null>(null);\n const shouldUpdateCurrentVersion = useRef(true);\n const nextUpdateTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const instanceLock = useRef({});\n\n const appVersionIsBeta = useMemo(() => {\n if (appVersion == null)\n return null;\n\n const componenets = semver.prerelease(appVersion);\n return componenets?.includes(\"beta\") ?? false;\n }, [appVersion]);\n\n const updateLatestVersionInfo = useCallback(async () => {\n clearTimeout(nextUpdateTimeoutRef.current);\n await withLock(instanceLock.current, \"updateVersion\", async () => {\n clearTimeout(nextUpdateTimeoutRef.current);\n\n const latestVersion = await getLatestAvailableVersion(appVersionIsBeta ?? false);\n if (shouldUpdateCurrentVersion.current && latestVersion.version != null) {\n setLatestVersion(latestVersion.version);\n setReleaseLink(latestVersion.url);\n }\n\n nextUpdateTimeoutRef.current = setTimeout(updateLatestVersionInfo, checkInterval);\n });\n }, [appVersionIsBeta]);\n\n useEffect(() => {\n if (appVersionIsBeta == null)\n return;\n\n shouldUpdateCurrentVersion.current = true;\n void updateLatestVersionInfo();\n\n return () => {\n shouldUpdateCurrentVersion.current = false;\n clearTimeout(nextUpdateTimeoutRef.current);\n };\n }, [appVersionIsBeta]);\n\n const releasedVersionIsNewerThanCurrent = useMemo(() => {\n if (appVersion == null || latestVersion == null)\n return false;\n\n try {\n return semver.gt(latestVersion, appVersion);\n } catch (err) {\n return true;\n }\n }, [appVersion, latestVersion]);\n\n if (latestVersion == null)\n return null;\n\n return <div className=\"updateBadge\">\n {\n (!releasedVersionIsNewerThanCurrent && appVersion && canShowCurrentVersion) &&\n <div className=\"currentVersion\"><code>v{appVersion}</code></div>\n }\n {\n (releasedVersionIsNewerThanCurrent && releaseLink != null) &&\n <a\n target=\"_blank\"\n href={releaseLink}\n className=\"newVersion\"\n >\n Version <code className=\"version\">{latestVersion}</code> is available\n </a>\n }\n </div>;\n}\n\ntype UpdateBadgeProps = {\n appVersion?: string,\n canShowCurrentVersion?: boolean\n};\n\nasync function getLatestAvailableVersion(includePrerelease: boolean = false): Promise<{\n version?: string,\n url: string\n}> {\n try {\n if (includePrerelease) {\n const latestReleases = await getLatestPrereleaseAndRelease();\n if (latestReleases.latestPrerelease != null && latestReleases.latestRelease != null) {\n if (semver.gt(latestReleases.latestPrerelease.version, latestReleases.latestRelease.version))\n return {\n version: latestReleases.latestPrerelease.version,\n url: latestReleases.latestPrerelease.url\n };\n\n return {\n version: latestReleases.latestRelease.version,\n url: latestReleaseUrl\n };\n } else if (latestReleases.latestPrerelease != null) {\n return {\n version: latestReleases.latestPrerelease.version,\n url: latestReleases.latestPrerelease.url\n };\n } else if (latestReleases.latestRelease != null) {\n return {\n version: latestReleases.latestRelease.version,\n url: latestReleaseUrl\n };\n }\n }\n\n const releaseRes = await fetch(\"https://api.github.com/repos/withcatai/node-llama-cpp/releases/latest\");\n const release: {\n tag_name: string\n } = await releaseRes.json();\n\n return {\n version: normalizeTagName(release?.tag_name),\n url: latestReleaseUrl\n };\n } catch (err) {\n console.error(err);\n return {\n version: undefined,\n url: latestReleaseUrl\n };\n }\n}\n\nasync function getLatestPrereleaseAndRelease(): Promise<{\n latestRelease?: {\n version: string,\n url: string\n },\n latestPrerelease?: {\n version: string,\n url: string\n }\n}> {\n try {\n const releasesRes = await fetch(\"https://api.github.com/repos/withcatai/node-llama-cpp/releases?per_page=100\");\n const releases: Array<{\n tag_name: string,\n html_url: string,\n prerelease: boolean,\n draft: boolean\n }> = await releasesRes.json();\n\n const latestRelease = releases.find((release) => !release.prerelease && !release.draft);\n const latestPrerelease = releases.find((release) => release.prerelease && !release.draft);\n\n return {\n latestRelease: latestRelease == null ? undefined : {\n version: normalizeTagName(latestRelease.tag_name)!,\n url: latestRelease.html_url\n },\n latestPrerelease: latestPrerelease == null ? undefined : {\n version: normalizeTagName(latestPrerelease.tag_name)!,\n url: latestPrerelease.html_url\n }\n };\n } catch (err) {\n console.error(err);\n return {};\n }\n}\n\nfunction normalizeTagName(tagName?: string) {\n if (tagName == null)\n return undefined;\n\n if (tagName.toLowerCase().startsWith(\"v\"))\n return tagName.slice(\"v\".length);\n\n return tagName;\n}\n"},{"path":["src","App","components","InputRow","InputRow.css"],"content":".appInputRow {\n display: flex;\n flex-direction: row;\n position: sticky;\n bottom: 16px;\n background-color: var(--panel-background-color);\n border-radius: 12px;\n backdrop-filter: blur(8px);\n box-shadow: var(--panel-box-shadow);\n overflow: clip;\n color: var(--panel-text-color);\n flex-shrink: 0;\n z-index: 10;\n align-items: flex-end;\n\n &.disabled {\n opacity: 0.48;\n }\n\n > .inputContainer {\n flex: 1;\n display: flex;\n flex-direction: row;\n overflow: hidden;\n position: relative;\n isolation: isolate;\n max-height: 400px;\n min-height: var(--min-height);\n --min-height: 55px;\n\n > .input {\n flex: 1;\n border: none;\n resize: none;\n box-sizing: border-box;\n max-height: 160px;\n min-height: var(--min-height);\n height: 55px;\n outline: none;\n padding: calc((var(--min-height) - 1lh) / 2) 24px;\n background-color: transparent;\n font: inherit;\n align-content: center;\n align-self: stretch;\n color: var(--panel-text-color);\n z-index: 2;\n unicode-bidi: plaintext;\n overflow: auto;\n\n &::placeholder {\n color: var(--panel-text-color);\n opacity: 0.4;\n }\n }\n\n > .autocomplete {\n position: absolute;\n inset: 0px;\n z-index: 1;\n display: flex;\n overflow: hidden;\n pointer-events: none;\n user-select: none;\n\n > .content {\n flex: 1;\n flex-shrink: 0;\n font: inherit;\n padding: calc((var(--min-height) - 1lh) / 2) 24px;\n text-align: initial;\n unicode-bidi: plaintext;\n overflow: hidden;\n opacity: 0.36;\n mask: linear-gradient(to top, rgb(0 0 0 / 16%), black 24px);\n\n &.hide {\n opacity: 0;\n }\n\n > .currentText {\n opacity: 0;\n display: inline;\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n > .completion {\n display: inline;\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n > .pressTab {\n display: inline-block;\n margin: -1px 8px;\n opacity: 0.8;\n border: solid 1px color-mix(in srgb, currentColor, transparent 64%);\n border-bottom-width: 2px;\n border-radius: 8px;\n padding: 0.1em 0.4em;\n font-size: 0.8em;\n vertical-align: top;\n }\n }\n }\n }\n\n > .stopGenerationButton,\n > .sendButton {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 8px 12px;\n margin: 8px;\n background-color: var(--panel-button-background-color);\n color: var(--panel-text-color);\n fill: var(--panel-text-color);\n\n + button {\n margin-inline-start: 0px;\n }\n\n &:hover,\n &:focus,\n &:focus-visible {\n border-color: var(--panel-button-hover-border-color);\n }\n\n > .icon {\n width: 20px;\n height: 20px;\n }\n }\n\n > .stopGenerationButton {\n transition: border-color 0.3s var(--transition-easing), opacity 0.3s var(--transition-easing);\n\n &[disabled] {\n opacity: 0;\n }\n }\n}\n"},{"path":["src","App","components","InputRow","InputRow.tsx"],"content":"import {useCallback, useMemo, useRef, useState} from \"react\";\nimport classNames from \"classnames\";\nimport {AddMessageIconSVG} from \"../../../icons/AddMessageIconSVG.tsx\";\nimport {AbortIconSVG} from \"../../../icons/AbortIconSVG.tsx\";\n\nimport \"./InputRow.css\";\n\n\nexport function InputRow({\n disabled = false, stopGeneration, sendPrompt, onPromptInput, autocompleteInputDraft, autocompleteCompletion, generatingResult\n}: InputRowProps) {\n const [inputText, setInputText] = useState<string>(\"\");\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const autocompleteRef = useRef<HTMLDivElement>(null);\n const autocompleteCurrentTextRef = useRef<HTMLDivElement>(null);\n\n const autocompleteText = useMemo(() => {\n const fullText = (autocompleteInputDraft ?? \"\") + (autocompleteCompletion ?? \"\");\n if (fullText.startsWith(inputText))\n return fullText.slice(inputText.length);\n\n return \"\";\n }, [inputText, autocompleteInputDraft, autocompleteCompletion]);\n\n const setInputValue = useCallback((value: string) => {\n if (inputRef.current != null)\n inputRef.current.value = value;\n\n if (autocompleteCurrentTextRef.current != null)\n autocompleteCurrentTextRef.current.innerText = value;\n\n setInputText(value);\n }, []);\n\n const resizeInput = useCallback(() => {\n if (inputRef.current == null)\n return;\n\n inputRef.current.style.height = \"\";\n inputRef.current.style.height = inputRef.current.scrollHeight + \"px\";\n\n if (autocompleteRef.current != null) {\n autocompleteRef.current.scrollTop = inputRef.current.scrollTop;\n }\n }, []);\n\n const submitPrompt = useCallback(() => {\n if (generatingResult || inputRef.current == null)\n return;\n\n const message = inputRef.current.value;\n if (message.length === 0)\n return;\n\n setInputValue(\"\");\n resizeInput();\n onPromptInput?.(\"\");\n sendPrompt(message);\n }, [setInputValue, generatingResult, resizeInput, sendPrompt, onPromptInput]);\n\n const onInput = useCallback(() => {\n setInputText(inputRef.current?.value ?? \"\");\n resizeInput();\n\n if (autocompleteCurrentTextRef.current != null && inputRef.current != null)\n autocompleteCurrentTextRef.current.innerText = inputRef.current?.value;\n\n if (inputRef.current != null && onPromptInput != null)\n onPromptInput(inputRef.current?.value);\n }, [resizeInput, onPromptInput]);\n\n const onInputKeyDown = useCallback((event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n submitPrompt();\n } else if (event.key === \"Tab\" && !event.shiftKey && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n if (inputRef.current != null && autocompleteText !== \"\") {\n setInputValue(inputRef.current.value + autocompleteText);\n inputRef.current.scrollTop = inputRef.current.scrollHeight;\n onPromptInput?.(inputRef.current.value);\n }\n\n resizeInput();\n }\n }, [submitPrompt, setInputValue, onPromptInput, resizeInput, autocompleteText]);\n\n return <div className={classNames(\"appInputRow\", disabled && \"disabled\")}>\n <div className=\"inputContainer\">\n <textarea\n ref={inputRef}\n onInput={onInput}\n onKeyDownCapture={onInputKeyDown}\n className=\"input\"\n autoComplete=\"off\"\n spellCheck\n disabled={disabled}\n onScroll={resizeInput}\n placeholder={\n autocompleteText === \"\"\n ? \"Type a message...\"\n : \"\"\n }\n />\n <div className=\"autocomplete\" ref={autocompleteRef}>\n <div className={classNames(\"content\", autocompleteText === \"\" && \"hide\")}>\n <div className=\"currentText\" ref={autocompleteCurrentTextRef}/>\n <div className=\"completion\">{autocompleteText}</div>\n <div className=\"pressTab\">Tab</div>\n </div>\n </div>\n </div>\n <button\n className=\"stopGenerationButton\"\n disabled={disabled || stopGeneration == null || !generatingResult}\n onClick={stopGeneration}\n >\n <AbortIconSVG className=\"icon\" />\n </button>\n <button\n className=\"sendButton\"\n disabled={disabled || inputText === \"\" || generatingResult}\n onClick={submitPrompt}\n >\n <AddMessageIconSVG className=\"icon\" />\n </button>\n </div>;\n}\n\ntype InputRowProps = {\n disabled?: boolean,\n stopGeneration?(): void,\n sendPrompt(prompt: string): void,\n onPromptInput?(currentText: string): void,\n autocompleteInputDraft?: string,\n autocompleteCompletion?: string,\n generatingResult: boolean\n};\n"},{"path":["src","App","components","MarkdownContent","MarkdownContent.css"],"content":"/* Only style code blocks */\npre > code {\n display: block;\n background-color: var(--code-block-background-color);\n padding: 0.8em 1.2em;\n border-radius: 0.4em;\n font-size: 1.2em;\n overflow-x: auto;\n user-select: all;\n\n @media (prefers-color-scheme: light) {\n /*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n */\n .hljs {\n color: #24292e;\n background: #ffffff\n }\n .hljs-doctag,\n .hljs-keyword,\n .hljs-meta .hljs-keyword,\n .hljs-template-tag,\n .hljs-template-variable,\n .hljs-type,\n .hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #d73a49\n }\n .hljs-title,\n .hljs-title.class_,\n .hljs-title.class_.inherited__,\n .hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #6f42c1\n }\n .hljs-attr,\n .hljs-attribute,\n .hljs-literal,\n .hljs-meta,\n .hljs-number,\n .hljs-operator,\n .hljs-variable,\n .hljs-selector-attr,\n .hljs-selector-class,\n .hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #005cc5\n }\n .hljs-regexp,\n .hljs-string,\n .hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #032f62\n }\n .hljs-built_in,\n .hljs-symbol {\n /* prettylights-syntax-variable */\n color: #e36209\n }\n .hljs-comment,\n .hljs-code,\n .hljs-formula {\n /* prettylights-syntax-comment */\n color: #6a737d\n }\n .hljs-name,\n .hljs-quote,\n .hljs-selector-tag,\n .hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #22863a\n }\n .hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #24292e\n }\n .hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #005cc5;\n font-weight: bold\n }\n .hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #735c0f\n }\n .hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #24292e;\n font-style: italic\n }\n .hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #24292e;\n font-weight: bold\n }\n .hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #22863a;\n background-color: #f0fff4\n }\n .hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #b31d28;\n background-color: #ffeef0\n }\n .hljs-char.escape_,\n .hljs-link,\n .hljs-params,\n .hljs-property,\n .hljs-punctuation,\n .hljs-tag {\n /* purposely ignored */\n }\n }\n\n @media (prefers-color-scheme: dark) {\n /*!\n Theme: GitHub Dark\n Description: Dark theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-dark\n Current colors taken from GitHub's CSS\n */\n .hljs {\n color: #c9d1d9;\n background: #0d1117\n }\n .hljs-doctag,\n .hljs-keyword,\n .hljs-meta .hljs-keyword,\n .hljs-template-tag,\n .hljs-template-variable,\n .hljs-type,\n .hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #ff7b72\n }\n .hljs-title,\n .hljs-title.class_,\n .hljs-title.class_.inherited__,\n .hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #d2a8ff\n }\n .hljs-attr,\n .hljs-attribute,\n .hljs-literal,\n .hljs-meta,\n .hljs-number,\n .hljs-operator,\n .hljs-variable,\n .hljs-selector-attr,\n .hljs-selector-class,\n .hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #79c0ff\n }\n .hljs-regexp,\n .hljs-string,\n .hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #a5d6ff\n }\n .hljs-built_in,\n .hljs-symbol {\n /* prettylights-syntax-variable */\n color: #ffa657\n }\n .hljs-comment,\n .hljs-code,\n .hljs-formula {\n /* prettylights-syntax-comment */\n color: #8b949e\n }\n .hljs-name,\n .hljs-quote,\n .hljs-selector-tag,\n .hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #7ee787\n }\n .hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #c9d1d9\n }\n .hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #1f6feb;\n font-weight: bold\n }\n .hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #f2cc60\n }\n .hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #c9d1d9;\n font-style: italic\n }\n .hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #c9d1d9;\n font-weight: bold\n }\n .hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #aff5b4;\n background-color: #033a16\n }\n .hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #ffdcd7;\n background-color: #67060c\n }\n .hljs-char.escape_,\n .hljs-link,\n .hljs-params,\n .hljs-property,\n .hljs-punctuation,\n .hljs-tag {\n /* purposely ignored */\n }\n }\n}\n"},{"path":["src","App","components","MarkdownContent","MarkdownContent.tsx"],"content":"import {useLayoutEffect, useRef} from \"react\";\nimport markdownit from \"markdown-it\";\nimport hljs from \"highlight.js\";\n\nimport \"./MarkdownContent.css\";\n\nconst md = markdownit({\n highlight(str, lang): string {\n if (hljs.getLanguage(lang) != null) {\n try {\n return hljs.highlight(str, {language: lang}).value;\n } catch (err) {\n // do nothing\n }\n }\n\n return hljs.highlightAuto(str).value;\n }\n});\n\nexport function MarkdownContent({children, className}: MarkdownContentProps) {\n const divRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (divRef.current == null)\n return;\n\n divRef.current.innerHTML = md.render(children ?? \"\");\n }, [children]);\n\n return <div\n className={className}\n ref={divRef}\n />;\n}\n\ntype MarkdownContentProps = {\n className?: string,\n children: string\n};\n"},{"path":["src","hooks","useExternalState.ts"],"content":"import {useEffect, useState} from \"react\";\nimport {State} from \"lifecycle-utils\";\n\nexport function useExternalState<const StateType, const R>(state: State<StateType>, selector: ((state: StateType) => R)): R;\nexport function useExternalState<const StateType>(state: State<StateType>): StateType;\nexport function useExternalState<const StateType>(state: State<StateType>, selector?: ((state: StateType) => any) | null): StateType {\n const [currentState, setCurrentState] = useState(() => (\n selector == null\n ? state.state\n : selector(state.state)\n ));\n\n useEffect(() => {\n return state.createChangeListener((newState) => {\n setCurrentState(\n selector == null\n ? newState\n : selector(newState)\n );\n }, true).dispose;\n }, [state]);\n\n return currentState;\n}\n"},{"path":["src","icons","AbortIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function AbortIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M360-320h240q17 0 28.5-11.5T640-360v-240q0-17-11.5-28.5T600-640H360q-17 0-28.5 11.5T320-600v240q0 17 11.5 28.5T360-320ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","AddMessageIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function AddMessageIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M440-647 244-451q-12 12-28 11.5T188-452q-11-12-11.5-28t11.5-28l264-264q6-6 13-8.5t15-2.5q8 0 15 2.5t13 8.5l264 264q11 11 11 27.5T772-452q-12 12-28.5 12T715-452L520-647v447q0 17-11.5 28.5T480-160q-17 0-28.5-11.5T440-200v-447Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","DeleteIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function DeleteIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M280-120q-33 0-56.5-23.5T200-200v-520q-17 0-28.5-11.5T160-760q0-17 11.5-28.5T200-800h160q0-17 11.5-28.5T400-840h160q17 0 28.5 11.5T600-800h160q17 0 28.5 11.5T800-760q0 17-11.5 28.5T760-720v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520Zm-400 0v520-520Zm200 316 76 76q11 11 28 11t28-11q11-11 11-28t-11-28l-76-76 76-76q11-11 11-28t-11-28q-11-11-28-11t-28 11l-76 76-76-76q-11-11-28-11t-28 11q-11 11-11 28t11 28l76 76-76 76q-11 11-11 28t11 28q11 11 28 11t28-11l76-76Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","DownloadIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function DownloadIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","LoadFileIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function LoadFileIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M440-367v127q0 17 11.5 28.5T480-200q17 0 28.5-11.5T520-240v-127l36 36q6 6 13.5 9t15 2.5q7.5-.5 14.5-3.5t13-9q11-12 11.5-28T612-388L508-492q-6-6-13-8.5t-15-2.5q-8 0-15 2.5t-13 8.5L348-388q-12 12-11.5 28t12.5 28q12 11 28 11.5t28-11.5l35-35ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h287q16 0 30.5 6t25.5 17l194 194q11 11 17 25.5t6 30.5v447q0 33-23.5 56.5T720-80H240Zm280-560v-160H240v640h480v-440H560q-17 0-28.5-11.5T520-640ZM240-800v200-200 640-640Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","SearchIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function SearchIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M380-320q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l224 224q11 11 11 28t-11 28q-11 11-28 11t-28-11L532-372q-30 24-69 38t-83 14Zm0-80q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","StarIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function StarIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm126 18L314-169q-11 7-23 6t-21-8q-9-7-14-17.5t-2-23.5l44-189-147-127q-10-9-12.5-20.5T140-571q4-11 12-18t22-9l194-17 75-178q5-12 15.5-18t21.5-6q11 0 21.5 6t15.5 18l75 178 194 17q14 2 22 9t12 18q4 11 1.5 22.5T809-528L662-401l44 189q3 13-2 23.5T690-171q-9 7-21 8t-23-6L480-269Zm0-201Z\"/>\n </svg>;\n}\n"},{"path":["src","index.css"],"content":":root {\n font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;\n line-height: 1.5;\n font-weight: 400;\n\n color-scheme: light dark;\n background-color: var(--background-color);\n color: var(--text-color);\n\n font-synthesis: none;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n --transition-easing: cubic-bezier(0.4, 0.0, 0.2, 1);\n}\n\n:root {\n --background-color: light-dark(#eeeeee, #242424);\n --text-color: light-dark(#242424, #eeeeee);\n\n --button-background-color: light-dark(rgba(255 255 255 / 64%), rgba(255 255 255 / 8%));\n --button-hover-border-color: light-dark(#646cff, #646cff);\n\n --link-color: light-dark(#646cff, #646cff);\n --link-hover-color: light-dark(#747bff, #535bf2);\n --star-link-color: light-dark(#e09c1c, #eac54f);\n --star-hover-color: light-dark(#daaa52, #c7a027);\n\n --panel-background-color: light-dark(rgba(0 0 0 / 52%), rgba(0 0 0 / 48%));\n --panel-text-color: light-dark(#ffffff, #eeeeee);\n --panel-button-background-color: light-dark(rgba(0 0 0 / 24%), rgba(255 255 255 / 8%));\n --panel-button-hover-border-color: light-dark(var(--panel-text-color), var(--button-hover-border-color));\n --panel-progress-color: light-dark(rgba(255 255 255 / 8%), rgba(255 255 255 / 4%));\n --panel-box-shadow: 0px 4px 8px 0px rgba(0 0 0 / 8%), 0px 6px 24px 0px rgba(0 0 0 / 16%);\n\n --error-border-color: light-dark(rgba(239 83 80 / 100%), rgba(239 83 80 / 100%));\n\n --user-message-background-color: light-dark(rgba(0 0 0 / 16%), rgba(0 0 0 / 48%));\n --user-message-text-color: light-dark(#242424, var(--text-color));\n\n --actions-block-background-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --actions-block-border-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --actions-block-box-shadow: 0px 4px 8px 0px rgba(0 0 0 / 2%), 0px 6px 24px 0px rgba(0 0 0 / 8%);\n\n --code-block-background-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n\n --update-badge-background-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --update-badge-border-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --update-badge-box-shadow: 0px 4px 8px 0px rgba(0 0 0 / 2%), 0px 6px 24px 0px rgba(0 0 0 / 8%);\n\n --message-table-outline-color: light-dark(rgba(0 0 0 / 8%), rgba(255 255 255 / 6%));\n --message-table-background-color: light-dark(rgba(0 0 0 / 0%), rgba(0 0 0 / 12%));\n --message-table-even-background-color: light-dark(rgba(0 0 0 / 4%), rgba(255 255 255 / 6%));\n}\n\nbody {\n margin: 0;\n display: flex;\n min-width: 320px;\n min-height: 100vh;\n}\n\na {\n font-weight: 500;\n color: var(--link-color);\n text-decoration: inherit;\n\n &:hover {\n color: var(--link-hover-color);\n }\n}\n\ncode {\n background-color: color-mix(in srgb, currentColor, transparent 84%);\n padding: 0.1em 0.3em;\n border-radius: 0.4em;\n font-size: 1.2em;\n}\n\nbutton {\n border-radius: 8px;\n border: 1px solid transparent;\n padding: 0.6em 1.2em;\n font-size: 1em;\n font-weight: 500;\n font-family: inherit;\n background-color: var(--button-background-color);\n cursor: pointer;\n transition: border-color 0.3s var(--transition-easing), opacity 0.3s var(--transition-easing);\n color: var(--text-color);\n fill: var(--text-color);\n\n &[disabled] {\n opacity: 0.52;\n pointer-events: none;\n }\n\n &:hover,\n &:focus,\n &:focus-visible {\n border-color: var(--button-hover-border-color);\n }\n}\n\n"},{"path":["src","index.html"],"content":"<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\"/>\n <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n <title>Electron + TypeScript + React + Vite + node-llama-cpp</title>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"./index.tsx\"></script>\n </body>\n</html>\n"},{"path":["src","index.tsx"],"content":"import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport {App} from \"./App/App.tsx\";\nimport \"./index.css\";\n\nReactDOM.createRoot(document.getElementById(\"root\")!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>\n);\n\n// Use contextBridge\nwindow.ipcRenderer.on(\"main-process-message\", (_event, message) => {\n console.log(message);\n});\n"},{"path":["src","rpc","llmRpc.ts"],"content":"import {ElectronFunctions} from \"../../electron/rpc/llmRpc.ts\";\nimport {createRendererSideBirpc} from \"../utils/createRendererSideBirpc.ts\";\nimport {llmState} from \"../state/llmState.ts\";\nimport {LlmState} from \"../../electron/state/llmState.ts\";\n\n\nconst renderedFunctions = {\n updateState(state: LlmState) {\n llmState.state = state;\n }\n} as const;\nexport type RenderedFunctions = typeof renderedFunctions;\n\nexport const electronLlmRpc = createRendererSideBirpc<ElectronFunctions, RenderedFunctions>(\"llmRpc\", \"llmRpc\", renderedFunctions);\n\nelectronLlmRpc.getState()\n .then((state) => {\n llmState.state = state;\n })\n .catch((error) => {\n console.error(\"Failed to get the initial state from the main process\", error);\n });\n"},{"path":["src","state","llmState.ts"],"content":"import {State} from \"lifecycle-utils\";\n\nimport {LlmState} from \"../../electron/state/llmState.ts\";\n\nexport const llmState = new State<LlmState>({\n appVersion: undefined,\n llama: {\n loaded: false\n },\n model: {\n loaded: false\n },\n context: {\n loaded: false\n },\n contextSequence: {\n loaded: false\n },\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: \"\",\n completion: \"\"\n }\n }\n});\n"},{"path":["src","utils","createRendererSideBirpc.ts"],"content":"import {createBirpc} from \"birpc\";\n\nexport function createRendererSideBirpc<\n const RendererFunction = Record<string, never>,\n const ElectronFunctions extends object = Record<string, never>\n>(\n toRendererEventName: string,\n fromRendererEventName: string,\n electronFunctions: ElectronFunctions\n) {\n return createBirpc<RendererFunction, ElectronFunctions>(electronFunctions, {\n post: (data) => window.ipcRenderer.send(fromRendererEventName, data),\n on: (onData) => window.ipcRenderer.on(toRendererEventName, (event, data) => {\n onData(data);\n }),\n serialize: (value) => JSON.stringify(value),\n deserialize: (value) => JSON.parse(value)\n });\n}\n\n"},{"path":["src","vite-env.d.ts"],"content":"/// <reference types=\"vite/client\" />\n"},{"path":["tsconfig.json"],"content":"{\n \"compilerOptions\": {\n \"target\": \"es2022\",\n \"lib\": [\"es2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"es2022\",\n \"skipLibCheck\": true,\n\n \"esModuleInterop\": true,\n \"removeComments\": false,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noUncheckedIndexedAccess\": true,\n \"moduleDetection\": \"force\",\n\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"noEmit\": true,\n \"jsx\": \"react-jsx\",\n\n \"strict\": true,\n \"strictNullChecks\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noImplicitOverride\": true\n },\n \"include\": [\n \"./src\",\n \"./electron\"\n ],\n \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"},{"path":["tsconfig.node.json"],"content":"{\n \"compilerOptions\": {\n \"target\": \"es2022\",\n \"lib\": [\"es2022\"],\n \"module\": \"es2022\",\n \"skipLibCheck\": true,\n\n \"esModuleInterop\": true,\n \"removeComments\": false,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noUncheckedIndexedAccess\": true,\n \"moduleDetection\": \"force\",\n\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": false,\n \"isolatedModules\": true,\n \"composite\": true,\n\n \"strict\": true,\n \"strictNullChecks\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noImplicitOverride\": true\n },\n \"include\": [\n \"vite.config.ts\"\n ]\n}\n"},{"path":["vite.config.ts"],"content":"import path from \"node:path\";\nimport {fileURLToPath} from \"node:url\";\nimport {defineConfig} from \"vite\";\nimport electron from \"vite-plugin-electron/simple\";\nimport react from \"@vitejs/plugin-react\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n// These modules won't be bundled as part of the Vite build of the Electron (main) side,\n// but they'll be included in the final Electron app build inside the asar file.\n// Performance and efficiency wise, this is absolutely fine and has no real drawbacks\nconst electronExternalModules = [\"node-llama-cpp\", \"lifecycle-utils\"];\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n esbuild: {\n target: \"es2022\"\n },\n optimizeDeps: {\n exclude: electronExternalModules,\n esbuildOptions: {\n target: \"es2022\"\n }\n },\n build: {\n outDir: path.join(__dirname, \"dist\"),\n target: \"es2022\"\n },\n root: path.join(__dirname, \"src\"),\n publicDir: path.join(__dirname, \"public\"),\n plugins: [\n react(),\n electron({\n main: {\n // Shortcut of `build.lib.entry`.\n entry: path.join(__dirname, \"electron/index.ts\"),\n vite: {\n build: {\n target: \"es2022\",\n outDir: path.join(__dirname, \"dist-electron\"),\n rollupOptions: {\n external: electronExternalModules\n }\n }\n }\n },\n preload: {\n // Shortcut of `build.rollupOptions.input`.\n // Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.\n input: path.join(__dirname, \"electron/preload.ts\"),\n vite: {\n build: {\n target: \"es2022\",\n outDir: path.join(__dirname, \"dist-electron\")\n }\n }\n },\n // Polyfill the Electron and Node.js API for Renderer process.\n // If you want use Node.js in Renderer process, the `nodeIntegration` needs to be enabled in the Main process.\n // See 👉 https://github.com/electron-vite/vite-plugin-electron-renderer\n renderer: process.env.NODE_ENV === \"test\"\n // https://github.com/electron-vite/vite-plugin-electron-renderer/issues/78#issuecomment-2053600808\n ? undefined\n : {}\n })\n ]\n});\n"}]}
1
+ {"files":[{"path":[".editorconfig"],"content":"root = true\n\n[*]\nindent_style = space\nindent_size = 4\n\n[{*.ts,*.tsx,*.js,*.jsx,*.css,*.scss}]\ninsert_final_newline = true\n\n[{package.json,package-lock.json,manifest.json,electron-builder.json5}]\nindent_size = 2\n\n[*.yml]\nindent_size = 2\n"},{"path":[".eslintrc.json"],"content":"{\n \"root\": true,\n \"env\": {\n \"node\": true,\n \"browser\": false,\n \"es6\": true\n },\n \"ignorePatterns\": [\"/dist\", \"/dist-electron\", \"/release\", \"/models\"],\n \"extends\": [\n \"eslint:recommended\",\n \"plugin:jsdoc/recommended\",\n \"plugin:react-hooks/recommended\"\n ],\n \"globals\": {\n \"Atomics\": \"readonly\",\n \"SharedArrayBuffer\": \"readonly\"\n },\n \"parserOptions\": {\n \"ecmaFeatures\": {\n \"jsx\": true\n },\n \"ecmaVersion\": 2023,\n \"sourceType\": \"module\"\n },\n \"overrides\": [{\n \"files\": [\"**.ts\", \"**.tsx\"],\n \"extends\": [\n \"eslint:recommended\",\n \"plugin:@typescript-eslint/recommended\",\n \"plugin:jsdoc/recommended-typescript\"\n ],\n \"parser\": \"@typescript-eslint/parser\",\n \"plugins\": [\n \"@typescript-eslint\",\n \"import\",\n \"jsdoc\",\n \"react-refresh\"\n ],\n \"rules\": {\n \"@typescript-eslint/explicit-module-boundary-types\": [\"off\"],\n \"@typescript-eslint/ban-ts-comment\": [\"off\"],\n \"@typescript-eslint/no-explicit-any\": [\"off\"],\n \"semi\": [\"off\"],\n \"@typescript-eslint/semi\": [\"warn\", \"always\"],\n \"@typescript-eslint/no-inferrable-types\": [\"off\"],\n \"@typescript-eslint/member-ordering\": [\"warn\", {\n \"default\": [\"field\", \"constructor\", \"method\", \"signature\"],\n \"typeLiterals\": []\n }],\n \"@typescript-eslint/parameter-properties\": [\"warn\", {\n \"allow\": []\n }],\n \"@typescript-eslint/explicit-member-accessibility\": [\"warn\"],\n \"@typescript-eslint/member-delimiter-style\": [\"warn\", {\n \"multiline\": {\n \"delimiter\": \"comma\",\n \"requireLast\": false\n },\n \"singleline\": {\n \"delimiter\": \"comma\",\n \"requireLast\": false\n },\n \"multilineDetection\": \"brackets\"\n }],\n \"jsdoc/require-param\": [\"off\"],\n \"jsdoc/check-param-names\": [\"warn\", {\n \"checkDestructured\": false\n }],\n \"jsdoc/require-returns\": [\"off\"],\n \"jsdoc/require-jsdoc\": [\"off\"],\n \"jsdoc/require-yields\": [\"off\"],\n \"jsdoc/require-param-description\": [\"off\"]\n }\n }],\n \"plugins\": [\n \"@typescript-eslint\",\n \"import\",\n \"jsdoc\",\n \"react-refresh\"\n ],\n \"settings\": {\n \"import/parsers\": {\n \"@typescript-eslint/parser\": [\".ts\"]\n },\n \"jsdoc\": {\n \"exemptDestructuredRootsFromChecks\": true,\n \"tagNamePreference\": {\n \"hidden\": \"hidden\"\n }\n }\n },\n \"rules\": {\n \"indent\": [\"warn\", 4, {\n \"SwitchCase\": 1,\n \"FunctionDeclaration\": {\n \"parameters\": \"first\"\n }\n }],\n \"eqeqeq\": [\"off\"],\n \"no-undef\": \"off\",\n \"quotes\": [\"warn\", \"double\", { \"avoidEscape\": true }],\n \"no-unused-vars\": [\"warn\", {\n \"args\": \"none\",\n \"ignoreRestSiblings\": true,\n \"varsIgnorePattern\": \"^set\"\n }],\n \"no-prototype-builtins\": [\"off\"],\n \"object-curly-spacing\": [\"warn\", \"never\"],\n \"semi\": [\"warn\", \"always\"],\n \"no-undefined\": [\"off\"],\n \"array-bracket-newline\": [\"error\", \"consistent\"],\n \"brace-style\": [\"error\", \"1tbs\", {\n \"allowSingleLine\": false\n }],\n \"comma-spacing\": [\"error\", {\n \"before\": false,\n \"after\": true\n }],\n \"comma-style\": [\"error\", \"last\"],\n \"comma-dangle\": [\"error\", \"never\"],\n \"no-var\": [\"error\"],\n \"import/order\": [\"error\", {\n \"groups\": [\"builtin\", \"external\",\"internal\", \"parent\", \"sibling\", \"index\", \"type\", \"object\", \"unknown\"],\n \"warnOnUnassignedImports\": true\n }],\n \"newline-per-chained-call\": [\"error\", {\n \"ignoreChainWithDepth\": 2\n }],\n \"no-confusing-arrow\": [\"error\"],\n \"no-const-assign\": [\"error\"],\n \"no-duplicate-imports\": [\"error\", {\n \"includeExports\": true\n }],\n \"camelcase\": [\"warn\"],\n \"jsx-quotes\": [\"warn\"],\n \"yoda\": [\"error\", \"never\", {\n \"exceptRange\": true\n }],\n \"no-eval\": [\"error\"],\n \"array-callback-return\": [\"error\"],\n \"no-empty\": [\"error\", {\n \"allowEmptyCatch\": true\n }],\n \"keyword-spacing\": [\"warn\"],\n \"space-infix-ops\": [\"warn\"],\n \"spaced-comment\": [\"warn\", \"always\", {\n \"markers\": [\"/\"]\n }],\n \"eol-last\": [\"warn\", \"always\"],\n \"max-len\": [\"warn\", {\n \"code\": 140,\n \"tabWidth\": 4,\n \"ignoreStrings\": true\n }],\n \"react-refresh/only-export-components\": [\"warn\", {\n \"allowConstantExport\": true\n }],\n \"react-hooks/exhaustive-deps\": [\"off\"]\n }\n}\n"},{"path":[".gitignore"],"content":"/.idea\n/.vscode\nnode_modules\n.DS_Store\n\n/dist\n/dist-electron\n/release\n/models\n"},{"path":["README.md"],"content":"# Electron + TypeScript + React + Vite + `node-llama-cpp`\nThis template provides a minimal setup to get an Electron app working with TypeScript and `node-llama-cpp`, React with TypeScript for the renderer, and some ESLint rules.\n\n## Get started\nInstall node modules and download the model files used by `node-llama-cpp`:\n```bash\nnpm install\n```\n\nStart the project:\n```bash\nnpm start\n```\n"},{"path":["electron","electron-env.d.ts"],"content":"/// <reference types=\"vite-plugin-electron/electron-env\" />\n\ndeclare namespace NodeJS {\n interface ProcessEnv {\n /**\n * The built directory structure\n *\n * ```tree\n * ├─┬─┬ dist\n * │ │ └── index.html\n * │ │\n * │ ├─┬ dist-electron\n * │ │ ├── index.js\n * │ │ └── preload.mjs\n * │\n * ```\n */\n APP_ROOT: string,\n /** /dist/ or /public/ */\n VITE_PUBLIC: string\n }\n}\n\n// Used in Renderer process, expose in `preload.ts`\ninterface Window {\n ipcRenderer: import(\"electron\").IpcRenderer\n}\n"},{"path":["electron","index.ts"],"content":"import {fileURLToPath} from \"node:url\";\nimport path from \"node:path\";\nimport {app, shell, BrowserWindow} from \"electron\";\nimport {registerLlmRpc} from \"./rpc/llmRpc.ts\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n// The built directory structure\n//\n// ├─┬─┬ dist\n// │ │ └── index.html\n// │ │\n// │ ├─┬ dist-electron\n// │ │ ├── index.js\n// │ │ └── preload.mjs\n// │\nprocess.env.APP_ROOT = path.join(__dirname, \"..\");\n\nexport const VITE_DEV_SERVER_URL = process.env[\"VITE_DEV_SERVER_URL\"];\nexport const MAIN_DIST = path.join(process.env.APP_ROOT, \"dist-electron\");\nexport const RENDERER_DIST = path.join(process.env.APP_ROOT, \"dist\");\n\nprocess.env.VITE_PUBLIC = VITE_DEV_SERVER_URL\n ? path.join(process.env.APP_ROOT, \"public\")\n : RENDERER_DIST;\n\nlet win: BrowserWindow | null;\n\nfunction createWindow() {\n win = new BrowserWindow({\n icon: path.join(process.env.VITE_PUBLIC, \"electron-vite.svg\"),\n webPreferences: {\n preload: path.join(__dirname, \"preload.mjs\")\n },\n width: 1000,\n height: 700\n });\n registerLlmRpc(win);\n\n // open external links in the default browser\n win.webContents.setWindowOpenHandler(({url}) => {\n if (url.startsWith(\"file://\"))\n return {action: \"allow\"};\n\n void shell.openExternal(url);\n return {action: \"deny\"};\n });\n\n // Test active push message to Renderer-process.\n win.webContents.on(\"did-finish-load\", () => {\n win?.webContents.send(\"main-process-message\", (new Date).toLocaleString());\n });\n\n if (VITE_DEV_SERVER_URL)\n void win.loadURL(VITE_DEV_SERVER_URL);\n else\n void win.loadFile(path.join(RENDERER_DIST, \"index.html\"));\n}\n\n// Quit when all windows are closed, except on macOS. There, it's common\n// for applications and their menu bar to stay active until the user quits\n// explicitly with Cmd + Q.\napp.on(\"window-all-closed\", () => {\n if (process.platform !== \"darwin\") {\n app.quit();\n win = null;\n }\n});\n\napp.on(\"activate\", () => {\n // On OS X it's common to re-create a window in the app when the\n // dock icon is clicked and there are no other windows open.\n if (BrowserWindow.getAllWindows().length === 0) {\n createWindow();\n }\n});\n\napp.whenReady().then(createWindow);\n"},{"path":["electron","preload.ts"],"content":"import {ipcRenderer, contextBridge} from \"electron\";\n\n// --------- Expose some API to the Renderer process ---------\ncontextBridge.exposeInMainWorld(\"ipcRenderer\", {\n on(...args: Parameters<typeof ipcRenderer.on>) {\n const [channel, listener] = args;\n return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args));\n },\n off(...args: Parameters<typeof ipcRenderer.off>) {\n const [channel, ...omit] = args;\n return ipcRenderer.off(channel, ...omit);\n },\n send(...args: Parameters<typeof ipcRenderer.send>) {\n const [channel, ...omit] = args;\n return ipcRenderer.send(channel, ...omit);\n },\n invoke(...args: Parameters<typeof ipcRenderer.invoke>) {\n const [channel, ...omit] = args;\n return ipcRenderer.invoke(channel, ...omit);\n }\n\n // You can expose other APIs you need here\n // ...\n});\n"},{"path":["electron","rpc","llmRpc.ts"],"content":"import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport {BrowserWindow, dialog} from \"electron\";\nimport {createElectronSideBirpc} from \"../utils/createElectronSideBirpc.ts\";\nimport {llmFunctions, llmState} from \"../state/llmState.ts\";\nimport type {RenderedFunctions} from \"../../src/rpc/llmRpc.ts\";\n\nconst modelDirectoryPath = path.join(process.cwd(), \"models\");\n\nexport class ElectronLlmRpc {\n public readonly rendererLlmRpc: ReturnType<typeof createElectronSideBirpc<RenderedFunctions, typeof this.functions>>;\n\n public readonly functions = {\n async selectModelFileAndLoad() {\n const res = await dialog.showOpenDialog({\n message: \"Select a model file\",\n title: \"Select a model file\",\n filters: [\n {name: \"Model file\", extensions: [\"gguf\"]}\n ],\n buttonLabel: \"Open\",\n defaultPath: await pathExists(modelDirectoryPath)\n ? modelDirectoryPath\n : undefined,\n properties: [\"openFile\"]\n });\n\n if (!res.canceled && res.filePaths.length > 0) {\n llmState.state = {\n ...llmState.state,\n selectedModelFilePath: path.resolve(res.filePaths[0]!),\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: llmState.state.chatSession.draftPrompt.prompt,\n completion: \"\"\n }\n }\n };\n\n if (!llmState.state.llama.loaded)\n await llmFunctions.loadLlama();\n\n await llmFunctions.loadModel(llmState.state.selectedModelFilePath!);\n await llmFunctions.createContext();\n await llmFunctions.createContextSequence();\n await llmFunctions.chatSession.createChatSession();\n }\n },\n getState() {\n return llmState.state;\n },\n setDraftPrompt: llmFunctions.chatSession.setDraftPrompt,\n prompt: llmFunctions.chatSession.prompt,\n stopActivePrompt: llmFunctions.chatSession.stopActivePrompt,\n resetChatHistory: llmFunctions.chatSession.resetChatHistory\n } as const;\n\n public constructor(window: BrowserWindow) {\n this.rendererLlmRpc = createElectronSideBirpc<RenderedFunctions, typeof this.functions>(\"llmRpc\", \"llmRpc\", window, this.functions);\n\n this.sendCurrentLlmState = this.sendCurrentLlmState.bind(this);\n\n llmState.createChangeListener(this.sendCurrentLlmState);\n this.sendCurrentLlmState();\n }\n\n public sendCurrentLlmState() {\n this.rendererLlmRpc.updateState(llmState.state);\n }\n}\n\nexport type ElectronFunctions = typeof ElectronLlmRpc.prototype.functions;\n\nexport function registerLlmRpc(window: BrowserWindow) {\n new ElectronLlmRpc(window);\n}\n\nasync function pathExists(path: string) {\n try {\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n"},{"path":["electron","state","llmState.ts"],"content":"import path from \"node:path\";\nimport {\n getLlama, Llama, LlamaChatSession, LlamaChatSessionPromptCompletionEngine, LlamaContext, LlamaContextSequence, LlamaModel\n} from \"node-llama-cpp\";\nimport {withLock, State} from \"lifecycle-utils\";\nimport packageJson from \"../../package.json\";\n\nexport const llmState = new State<LlmState>({\n appVersion: packageJson.version,\n llama: {\n loaded: false\n },\n model: {\n loaded: false\n },\n context: {\n loaded: false\n },\n contextSequence: {\n loaded: false\n },\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: \"\",\n completion: \"\"\n }\n }\n});\n\nexport type LlmState = {\n appVersion?: string,\n llama: {\n loaded: boolean,\n error?: string\n },\n selectedModelFilePath?: string,\n model: {\n loaded: boolean,\n loadProgress?: number,\n name?: string,\n error?: string\n },\n context: {\n loaded: boolean,\n error?: string\n },\n contextSequence: {\n loaded: boolean,\n error?: string\n },\n chatSession: {\n loaded: boolean,\n generatingResult: boolean,\n simplifiedChat: SimplifiedChatItem[],\n draftPrompt: {\n prompt: string,\n completion: string\n }\n }\n};\n\ntype SimplifiedChatItem = {\n type: \"user\" | \"model\",\n message: string\n};\n\nlet llama: Llama | null = null;\nlet model: LlamaModel | null = null;\nlet context: LlamaContext | null = null;\nlet contextSequence: LlamaContextSequence | null = null;\n\nlet chatSession: LlamaChatSession | null = null;\nlet chatSessionCompletionEngine: LlamaChatSessionPromptCompletionEngine | null = null;\nlet promptAbortController: AbortController | null = null;\nlet inProgressResponse: string = \"\";\n\nexport const llmFunctions = {\n async loadLlama() {\n await withLock(llmFunctions, \"llama\", async () => {\n if (llama != null) {\n try {\n await llama.dispose();\n llama = null;\n } catch (err) {\n console.error(\"Failed to dispose llama\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n llama: {loaded: false}\n };\n\n llama = await getLlama();\n llmState.state = {\n ...llmState.state,\n llama: {loaded: true}\n };\n\n llama.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n llama: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to load llama\", err);\n llmState.state = {\n ...llmState.state,\n llama: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n async loadModel(modelPath: string) {\n await withLock(llmFunctions, \"model\", async () => {\n if (llama == null)\n throw new Error(\"Llama not loaded\");\n\n if (model != null) {\n try {\n await model.dispose();\n model = null;\n } catch (err) {\n console.error(\"Failed to dispose model\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n model: {\n loaded: false,\n loadProgress: 0\n }\n };\n\n model = await llama.loadModel({\n modelPath,\n onLoadProgress(loadProgress: number) {\n llmState.state = {\n ...llmState.state,\n model: {\n ...llmState.state.model,\n loadProgress\n }\n };\n }\n });\n llmState.state = {\n ...llmState.state,\n model: {\n loaded: true,\n loadProgress: 1,\n name: path.basename(modelPath)\n }\n };\n\n model.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n model: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to load model\", err);\n llmState.state = {\n ...llmState.state,\n model: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n async createContext() {\n await withLock(llmFunctions, \"context\", async () => {\n if (model == null)\n throw new Error(\"Model not loaded\");\n\n if (context != null) {\n try {\n await context.dispose();\n context = null;\n } catch (err) {\n console.error(\"Failed to dispose context\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n context: {loaded: false}\n };\n\n context = await model.createContext();\n llmState.state = {\n ...llmState.state,\n context: {loaded: true}\n };\n\n context.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n context: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to create context\", err);\n llmState.state = {\n ...llmState.state,\n context: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n async createContextSequence() {\n await withLock(llmFunctions, \"contextSequence\", async () => {\n if (context == null)\n throw new Error(\"Context not loaded\");\n\n try {\n llmState.state = {\n ...llmState.state,\n contextSequence: {loaded: false}\n };\n\n contextSequence = context.getSequence();\n llmState.state = {\n ...llmState.state,\n contextSequence: {loaded: true}\n };\n\n contextSequence.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n contextSequence: {loaded: false}\n };\n });\n } catch (err) {\n console.error(\"Failed to get context sequence\", err);\n llmState.state = {\n ...llmState.state,\n contextSequence: {\n loaded: false,\n error: String(err)\n }\n };\n }\n });\n },\n chatSession: {\n async createChatSession() {\n await withLock(llmFunctions, \"chatSession\", async () => {\n if (contextSequence == null)\n throw new Error(\"Context sequence not loaded\");\n\n if (chatSession != null) {\n try {\n chatSession.dispose();\n chatSession = null;\n chatSessionCompletionEngine = null;\n } catch (err) {\n console.error(\"Failed to dispose chat session\", err);\n }\n }\n\n try {\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: llmState.state.chatSession.draftPrompt\n }\n };\n\n llmFunctions.chatSession.resetChatHistory(false);\n\n try {\n await chatSession?.preloadPrompt(\"\", {\n signal: promptAbortController?.signal\n });\n } catch (err) {\n // do nothing\n }\n chatSessionCompletionEngine?.complete(llmState.state.chatSession.draftPrompt.prompt);\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n loaded: true\n }\n };\n } catch (err) {\n console.error(\"Failed to create chat session\", err);\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: llmState.state.chatSession.draftPrompt\n }\n };\n }\n });\n },\n async prompt(message: string) {\n await withLock(llmFunctions, \"chatSession\", async () => {\n if (chatSession == null)\n throw new Error(\"Chat session not loaded\");\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n generatingResult: true,\n draftPrompt: {\n prompt: \"\",\n completion: \"\"\n }\n }\n };\n promptAbortController = new AbortController();\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n simplifiedChat: getSimplifiedChatHistory(true, message)\n }\n };\n await chatSession.prompt(message, {\n signal: promptAbortController.signal,\n stopOnAbortSignal: true,\n onTextChunk(chunk) {\n inProgressResponse += chunk;\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n simplifiedChat: getSimplifiedChatHistory(true, message)\n }\n };\n }\n });\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n generatingResult: false,\n simplifiedChat: getSimplifiedChatHistory(false),\n draftPrompt: {\n ...llmState.state.chatSession.draftPrompt,\n completion: chatSessionCompletionEngine?.complete(llmState.state.chatSession.draftPrompt.prompt) ?? \"\"\n }\n }\n };\n inProgressResponse = \"\";\n });\n },\n stopActivePrompt() {\n promptAbortController?.abort();\n },\n resetChatHistory(markAsLoaded: boolean = true) {\n if (contextSequence == null)\n return;\n\n chatSession?.dispose();\n chatSession = new LlamaChatSession({\n contextSequence,\n autoDisposeSequence: false\n });\n chatSessionCompletionEngine = chatSession.createPromptCompletionEngine({\n onGeneration(prompt, completion) {\n if (llmState.state.chatSession.draftPrompt.prompt === prompt) {\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n draftPrompt: {\n prompt,\n completion\n }\n }\n };\n }\n }\n });\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: markAsLoaded\n ? true\n : llmState.state.chatSession.loaded,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: llmState.state.chatSession.draftPrompt.prompt,\n completion: chatSessionCompletionEngine.complete(llmState.state.chatSession.draftPrompt.prompt) ?? \"\"\n }\n }\n };\n\n chatSession.onDispose.createListener(() => {\n llmState.state = {\n ...llmState.state,\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: llmState.state.chatSession.draftPrompt\n }\n };\n });\n },\n setDraftPrompt(prompt: string) {\n if (chatSessionCompletionEngine == null)\n return;\n\n llmState.state = {\n ...llmState.state,\n chatSession: {\n ...llmState.state.chatSession,\n draftPrompt: {\n prompt: prompt,\n completion: chatSessionCompletionEngine.complete(prompt) ?? \"\"\n }\n }\n };\n }\n }\n} as const;\n\nfunction getSimplifiedChatHistory(generatingResult: boolean, currentPrompt?: string) {\n if (chatSession == null)\n return [];\n\n const chatHistory: SimplifiedChatItem[] = chatSession.getChatHistory()\n .flatMap((item): SimplifiedChatItem[] => {\n if (item.type === \"system\")\n return [];\n else if (item.type === \"user\")\n return [{type: \"user\", message: item.text}];\n else if (item.type === \"model\")\n return [{\n type: \"model\",\n message: item.response\n .filter((value) => typeof value === \"string\")\n .join(\"\")\n }];\n\n void (item satisfies never); // ensure all item types are handled\n return [];\n });\n\n if (generatingResult && currentPrompt != null) {\n chatHistory.push({\n type: \"user\",\n message: currentPrompt\n });\n\n if (inProgressResponse.length > 0)\n chatHistory.push({\n type: \"model\",\n message: inProgressResponse\n });\n }\n\n return chatHistory;\n}\n"},{"path":["electron","utils","createElectronSideBirpc.ts"],"content":"import {BrowserWindow, ipcMain} from \"electron\";\nimport {createBirpc} from \"birpc\";\n\nexport function createElectronSideBirpc<\n const RendererFunction = Record<string, never>,\n const ElectronFunctions extends object = Record<string, never>\n>(\n toRendererEventName: string,\n fromRendererEventName: string,\n window: BrowserWindow,\n electronFunctions: ElectronFunctions\n) {\n return createBirpc<RendererFunction, ElectronFunctions>(electronFunctions, {\n post: (data) => window.webContents.send(toRendererEventName, data),\n on: (onData) => ipcMain.on(fromRendererEventName, (event, data) => {\n if (BrowserWindow.fromWebContents(event.sender) === window)\n onData(data);\n }),\n serialize: (value) => JSON.stringify(value),\n deserialize: (value) => JSON.parse(value)\n });\n}\n"},{"path":["electron-builder.ts"],"content":"import path from \"node:path\";\nimport {$} from \"zx\";\nimport type {Configuration} from \"electron-builder\";\n\nconst appId = \"node-llama-cpp.electron.example\";\nconst productName = \"node-llama-cpp Electron example\";\nconst executableName = \"node-llama-cpp-electron-example\";\nconst appxIdentityName = \"node.llama.cpp.electron.example\";\n\n/**\n * @see - https://www.electron.build/configuration/configuration\n */\nexport default {\n appId: appId,\n asar: true,\n productName: productName,\n executableName: executableName,\n directories: {\n output: \"release\"\n },\n\n // remove this once you set up your own code signing for macOS\n async afterPack(context) {\n if (context.electronPlatformName === \"darwin\") {\n // check whether the app was already signed\n const appPath = path.join(context.appOutDir, `${context.packager.appInfo.productFilename}.app`);\n\n // this is needed for the app to not appear as \"damaged\" on Apple Silicon Macs\n // https://github.com/electron-userland/electron-builder/issues/5850#issuecomment-1821648559\n await $`codesign --force --deep --sign - ${appPath}`;\n }\n },\n files: [\n \"dist\",\n \"dist-electron\",\n \"!node_modules/node-llama-cpp/bins/**/*\",\n \"node_modules/node-llama-cpp/bins/${os}-${arch}*/**/*\",\n \"!node_modules/@node-llama-cpp/*/bins/**/*\",\n \"node_modules/@node-llama-cpp/${os}-${arch}*/bins/**/*\",\n \"!node_modules/node-llama-cpp/llama/localBuilds/**/*\",\n \"node_modules/node-llama-cpp/llama/localBuilds/${os}-${arch}*/**/*\"\n ],\n asarUnpack: [\n \"node_modules/node-llama-cpp/bins\",\n \"node_modules/node-llama-cpp/llama/localBuilds\",\n \"node_modules/@node-llama-cpp/*\"\n ],\n mac: {\n target: [{\n target: \"dmg\",\n arch: [\n \"arm64\",\n \"x64\"\n ]\n }, {\n target: \"zip\",\n arch: [\n \"arm64\",\n \"x64\"\n ]\n }],\n\n artifactName: \"${name}.macOS.${version}.${arch}.${ext}\"\n },\n win: {\n target: [{\n target: \"nsis\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }],\n\n artifactName: \"${name}.Windows.${version}.${arch}.${ext}\"\n },\n appx: {\n identityName: appxIdentityName,\n artifactName: \"${name}.Windows.${version}.${arch}.${ext}\"\n },\n nsis: {\n oneClick: true,\n perMachine: false,\n allowToChangeInstallationDirectory: false,\n deleteAppDataOnUninstall: true\n },\n linux: {\n target: [{\n target: \"AppImage\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }, {\n target: \"snap\",\n arch: [\n \"x64\"\n ]\n }, {\n target: \"deb\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }, {\n target: \"tar.gz\",\n arch: [\n \"x64\",\n \"arm64\"\n ]\n }],\n category: \"Utility\",\n\n artifactName: \"${name}.Linux.${version}.${arch}.${ext}\"\n }\n} as Configuration;\n"},{"path":["package.json"],"content":"{\n \"name\": \"node-llama-cpp-project\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"main\": \"./dist-electron/index.js\",\n \"type\": \"module\",\n \"homepage\": \"https://github.com/withcatai/node-llama-cpp\",\n \"author\": {\n \"name\": \"Author name\",\n \"email\": \"email@example.com\"\n },\n \"scripts\": {\n \"postinstall\": \"npm run models:pull\",\n \"models:pull\": \"node-llama-cpp pull --dir ./models \\\"{{modelUrl|escape|escape}}\\\"\",\n \"start\": \"vite dev\",\n \"start:build\": \"electron ./dist-electron\",\n \"prebuild\": \"rimraf ./dist ./dist-electron ./release\",\n \"build\": \"tsc && vite build && electron-builder --config ./electron-builder.ts\",\n \"lint\": \"npm run lint:eslint\",\n \"lint:eslint\": \"eslint --ext .js --ext .ts --report-unused-disable-directives .\",\n \"format\": \"npm run lint:eslint -- --fix\",\n \"clean\": \"rm -rf ./node_modules ./dist ./dist-electron ./release ./models\"\n },\n \"dependencies\": {\n \"birpc\": \"^0.2.17\",\n \"classnames\": \"^2.5.1\",\n \"highlight.js\": \"^11.10.0\",\n \"lifecycle-utils\": \"^1.7.0\",\n \"markdown-it\": \"^14.1.0\",\n \"node-llama-cpp\": \"^{{currentNodeLlamaCppModuleVersion|escape}}\",\n \"react\": \"^18.3.1\",\n \"react-dom\": \"^18.3.1\",\n \"semver\": \"^7.6.3\"\n },\n \"devDependencies\": {\n \"@types/markdown-it\": \"^14.1.2\",\n \"@types/react\": \"^18.3.5\",\n \"@types/react-dom\": \"^18.3.0\",\n \"@types/semver\": \"^7.5.8\",\n \"@typescript-eslint/eslint-plugin\": \"^7.12.0\",\n \"@typescript-eslint/parser\": \"^7.12.0\",\n \"@vitejs/plugin-react\": \"^4.3.1\",\n \"electron\": \"^32.1.0\",\n \"electron-builder\": \"^24.13.3\",\n \"eslint\": \"^8.57.0\",\n \"eslint-plugin-import\": \"^2.29.1\",\n \"eslint-plugin-jsdoc\": \"^48.2.9\",\n \"eslint-plugin-react-hooks\": \"^4.6.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.7\",\n \"rimraf\": \"^6.0.1\",\n \"typescript\": \"^5.6.2\",\n \"vite\": \"^5.4.5\",\n \"vite-plugin-electron\": \"^0.28.7\",\n \"vite-plugin-electron-renderer\": \"^0.14.5\",\n \"zx\": \"^8.1.7\"\n },\n \"overrides\": {\n \"electron-builder\": {\n \"read-config-file\": {\n \"config-file-ts\": \">=0.2.8-rc1\"\n }\n }\n }\n}"},{"path":["public","vite.svg"],"content":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\"\n class=\"iconify iconify--logos\" width=\"31.88\" height=\"32\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 256 257\">\n <defs>\n <linearGradient id=\"IconifyId1813088fe1fbc01fb466\" x1=\"-.828%\" x2=\"57.636%\" y1=\"7.652%\" y2=\"78.411%\">\n <stop offset=\"0%\" stop-color=\"#41D1FF\"></stop>\n <stop offset=\"100%\" stop-color=\"#BD34FE\"></stop>\n </linearGradient>\n <linearGradient id=\"IconifyId1813088fe1fbc01fb467\" x1=\"43.376%\" x2=\"50.316%\" y1=\"2.242%\" y2=\"89.03%\">\n <stop offset=\"0%\" stop-color=\"#FFEA83\"></stop>\n <stop offset=\"8.333%\" stop-color=\"#FFDD35\"></stop>\n <stop offset=\"100%\" stop-color=\"#FFA800\"></stop>\n </linearGradient>\n </defs>\n <path fill=\"url(#IconifyId1813088fe1fbc01fb466)\"\n d=\"M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z\"></path>\n <path fill=\"url(#IconifyId1813088fe1fbc01fb467)\"\n d=\"M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z\"></path>\n</svg>\n"},{"path":["src","App","App.css"],"content":"#root {\n margin: 0 auto;\n padding: 16px;\n text-align: center;\n width: 100%;\n min-height: 100%;\n align-items: center;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.app {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n max-width: 1280px;\n\n > .message {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: center;\n gap: 48px;\n overflow: auto;\n padding: 24px 0px;\n\n > .error {\n border: solid 1px var(--error-border-color);\n padding: 8px 12px;\n border-radius: 12px;\n box-shadow: 0px 8px 32px -16px var(--error-border-color);\n }\n\n > .loadModel {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 64px;\n text-align: start;\n\n > .hint {\n margin-top: 64px;\n opacity: 0.6;\n }\n\n > .actions {\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: var(--actions-block-background-color);\n border: solid 1px var(--actions-block-border-color);\n box-shadow: var(--actions-block-box-shadow);\n padding: 16px 24px;\n border-radius: 12px;\n gap: 16px;\n\n > .starLink {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n color: var(--star-link-color);\n\n &:hover {\n color: var(--star-hover-color);\n }\n\n > .starIcon {\n flex-shrink: 0;\n fill: currentColor;\n }\n }\n\n > .links {\n display: flex;\n flex-direction: row;\n\n > a {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n\n > .downloadIcon {\n flex-shrink: 0;\n fill: currentColor;\n }\n }\n\n > .separator {\n width: 1px;\n background-color: var(--link-color);\n opacity: 0.2;\n margin: 0px 16px;\n height: 0.8lh;\n align-self: center;\n }\n }\n\n > .browseLink {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n\n > .searchIcon {\n flex-shrink: 0;\n fill: currentColor;\n }\n }\n }\n }\n\n > .loading {\n opacity: 0.6;\n font-weight: bold;\n\n mask: linear-gradient(\n to right,\n rgb(0 0 0 / 48%) 34%,\n black,\n rgb(0 0 0 / 48%) 66%\n ) content-box 0 0 / 300% 100% no-repeat;\n animation: loading-animation 2s infinite ease-in-out;\n }\n\n > .typeMessage {\n opacity: 0.6;\n }\n }\n}\n\n@keyframes loading-animation {\n 0% {\n mask-position: 100% 100%;\n }\n\n 100% {\n mask-position: 0 100%;\n }\n}\n"},{"path":["src","App","App.tsx"],"content":"import {useCallback, useLayoutEffect, useRef} from \"react\";\nimport {llmState} from \"../state/llmState.ts\";\nimport {electronLlmRpc} from \"../rpc/llmRpc.ts\";\nimport {useExternalState} from \"../hooks/useExternalState.ts\";\nimport {SearchIconSVG} from \"../icons/SearchIconSVG.tsx\";\nimport {StarIconSVG} from \"../icons/StarIconSVG.tsx\";\nimport {DownloadIconSVG} from \"../icons/DownloadIconSVG.tsx\";\nimport {Header} from \"./components/Header/Header.tsx\";\nimport {ChatHistory} from \"./components/ChatHistory/ChatHistory.tsx\";\nimport {InputRow} from \"./components/InputRow/InputRow.tsx\";\n\nimport \"./App.css\";\n\n\nexport function App() {\n const state = useExternalState(llmState);\n const {generatingResult} = state.chatSession;\n const isScrollAnchoredRef = useRef(false);\n\n const isScrolledToTheBottom = useCallback(() => {\n return document.documentElement.scrollHeight - document.documentElement.scrollTop === document.documentElement.clientHeight;\n }, []);\n\n const scrollToBottom = useCallback(() => {\n document.documentElement.scrollTop = document.documentElement.scrollHeight;\n isScrollAnchoredRef.current = isScrolledToTheBottom();\n }, []);\n\n useLayoutEffect(() => {\n // anchor scroll to bottom\n\n function onScroll() {\n isScrollAnchoredRef.current = isScrolledToTheBottom();\n }\n\n const observer = new ResizeObserver(() => {\n if (isScrollAnchoredRef.current && !isScrolledToTheBottom())\n scrollToBottom();\n });\n\n window.addEventListener(\"scroll\", onScroll, {passive: false});\n observer.observe(document.body, {\n box: \"border-box\"\n });\n scrollToBottom();\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, []);\n\n const openSelectModelFileDialog = useCallback(async () => {\n await electronLlmRpc.selectModelFileAndLoad();\n }, []);\n\n const stopActivePrompt = useCallback(() => {\n void electronLlmRpc.stopActivePrompt();\n }, []);\n\n const resetChatHistory = useCallback(() => {\n void electronLlmRpc.stopActivePrompt();\n void electronLlmRpc.resetChatHistory();\n }, []);\n\n const sendPrompt = useCallback((prompt: string) => {\n if (generatingResult)\n return;\n\n scrollToBottom();\n void electronLlmRpc.prompt(prompt);\n }, [generatingResult, scrollToBottom]);\n\n const onPromptInput = useCallback((currentText: string) => {\n void electronLlmRpc.setDraftPrompt(currentText);\n }, []);\n\n const error = state.llama.error ?? state.model.error ?? state.context.error ?? state.contextSequence.error;\n const loading = state.selectedModelFilePath != null && error == null && (\n !state.model.loaded || !state.llama.loaded || !state.context.loaded || !state.contextSequence.loaded || !state.chatSession.loaded\n );\n const showMessage = state.selectedModelFilePath == null || error != null || state.chatSession.simplifiedChat.length === 0;\n\n return <div className=\"app\">\n <Header\n appVersion={state.appVersion}\n canShowCurrentVersion={state.selectedModelFilePath == null}\n modelName={state.model.name}\n loadPercentage={state.model.loadProgress}\n onLoadClick={openSelectModelFileDialog}\n onResetChatClick={\n !showMessage\n ? resetChatHistory\n : undefined\n }\n />\n {\n showMessage &&\n <div className=\"message\">\n {\n error != null &&\n <div className=\"error\">\n {String(error)}\n </div>\n }\n {\n loading &&\n <div className=\"loading\">\n Loading...\n </div>\n }\n {\n (state.selectedModelFilePath == null || state.llama.error != null) &&\n <div className=\"loadModel\">\n <div className=\"hint\">Click the button above to load a model</div>\n <div className=\"actions\">\n <a className=\"starLink\" target=\"_blank\" href=\"https://github.com/withcatai/node-llama-cpp\">\n <StarIconSVG className=\"starIcon\"/>\n <div className=\"text\">\n Star <code>node-llama-cpp</code> on GitHub\n </div>\n </a>\n <div className=\"links\">\n <a\n target=\"_blank\"\n href=\"https://huggingface.co/mradermacher/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct.Q4_K_M.gguf\"\n >\n <DownloadIconSVG className=\"downloadIcon\"/>\n <div className=\"text\">Get Llama 3.1 8B model</div>\n </a>\n <div className=\"separator\"/>\n <a\n target=\"_blank\"\n href=\"https://huggingface.co/bartowski/gemma-2-2b-it-GGUF/resolve/main/gemma-2-2b-it-Q4_K_M.gguf\"\n >\n <DownloadIconSVG className=\"downloadIcon\"/>\n <div className=\"text\">Get Gemma 2 2B model</div>\n </a>\n </div>\n <a className=\"browseLink\" target=\"_blank\" href=\"https://huggingface.co/mradermacher\">\n <SearchIconSVG className=\"searchIcon\"/>\n <div className=\"text\">Find more models</div>\n </a>\n </div>\n </div>\n }\n {\n (\n !loading &&\n state.selectedModelFilePath != null &&\n error == null &&\n state.chatSession.simplifiedChat.length === 0\n ) &&\n <div className=\"typeMessage\">\n Type a message to start the conversation\n </div>\n }\n </div>\n }\n {\n !showMessage &&\n <ChatHistory\n simplifiedChat={state.chatSession.simplifiedChat}\n generatingResult={generatingResult}\n />\n }\n <InputRow\n disabled={!state.model.loaded || !state.contextSequence.loaded}\n stopGeneration={\n generatingResult\n ? stopActivePrompt\n : undefined\n }\n onPromptInput={onPromptInput}\n sendPrompt={sendPrompt}\n generatingResult={generatingResult}\n autocompleteInputDraft={state.chatSession.draftPrompt.prompt}\n autocompleteCompletion={state.chatSession.draftPrompt.completion}\n />\n </div>;\n}\n"},{"path":["src","App","components","ChatHistory","ChatHistory.css"],"content":".appChatHistory {\n flex: 1;\n display: flex;\n flex-direction: column;\n text-align: start;\n overflow: auto;\n padding: 24px 0px;\n\n > .message {\n &.user {\n align-self: flex-end;\n background-color: var(--user-message-background-color);\n padding: 8px 12px;\n border-radius: 12px;\n margin-bottom: 12px;\n margin-inline-start: 48px;\n margin-inline-end: 12px;\n color: var(--user-message-text-color);\n word-break: break-word;\n max-width: calc(100% - 48px - 12px);\n box-sizing: border-box;\n\n &:not(:first-child) {\n margin-top: 36px;\n }\n }\n\n &.model {\n align-self: flex-start;\n margin-inline-end: 48px;\n padding-inline-start: 24px;\n word-break: break-word;\n max-width: calc(100% - 48px);\n box-sizing: border-box;\n\n &:hover + .buttons {\n opacity: 1;\n }\n\n &.active {\n &:empty:after,\n &:not(:empty)>:last-child:not(ol, ul, table):after,\n &:not(:empty)>:last-child:where(ol, ul)>:last-child:after,\n &:not(:empty)>:last-child:where(table)>:last-child>:last-child>:last-child:after {\n content: \"\";\n position: static;\n display: inline-block;\n background-color: currentColor;\n width: 8px;\n height: 8px;\n translate: 0px -2px;\n border-radius: 9999px;\n margin-inline-start: 8px;\n vertical-align: middle;\n\n animation: activeModelMessageIndicator 2s infinite ease-in-out;\n }\n }\n }\n\n > :first-child {\n margin-top: 0px;\n }\n\n > :last-child {\n margin-bottom: 0px;\n }\n\n h2 {\n margin: 16px 0px;\n padding-top: 24px;\n }\n\n h3 {\n margin: 32px 0px 0px 0px;\n }\n\n table {\n display: block;\n border-style: hidden;\n border-radius: 12px;\n outline: solid 1px var(--message-table-outline-color);\n outline-offset: -1px;\n max-width: max-content;\n border-collapse: collapse;\n overflow-x: auto;\n background-color: var(--background-color);\n\n thead {\n text-align: justify;\n }\n\n tr {\n background-color: var(--message-table-background-color);\n border-top: 1px solid var(--message-table-outline-color);\n\n &:nth-child(2n) td {\n background-color: var(--message-table-even-background-color);\n }\n\n th {\n background-color: var(--message-table-even-background-color);\n border: 1px solid var(--message-table-outline-color);\n padding: 8px 16px;\n }\n\n td {\n border: 1px solid var(--message-table-outline-color);\n padding: 8px 16px;\n }\n }\n }\n }\n\n > .buttons {\n display: flex;\n flex-direction: row;\n padding: 8px 18px;\n opacity: 0;\n\n transition: opacity 0.1s ease-in-out;\n\n &:hover,\n &:focus-visible {\n opacity: 1;\n }\n }\n}\n\n@keyframes activeModelMessageIndicator {\n 0% {\n transform: scale(1);\n opacity: 0.64;\n }\n 50% {\n transform: scale(1.4);\n opacity: 0.32;\n }\n 100% {\n transform: scale(1);\n opacity: 0.64;\n }\n}\n"},{"path":["src","App","components","ChatHistory","ChatHistory.tsx"],"content":"import classNames from \"classnames\";\nimport {LlmState} from \"../../../../electron/state/llmState.ts\";\nimport {MarkdownContent} from \"../MarkdownContent/MarkdownContent.js\";\nimport {MessageCopyButton} from \"./components/MessageCopyButton/MessageCopyButton.js\";\n\nimport \"./ChatHistory.css\";\n\n\nexport function ChatHistory({simplifiedChat, generatingResult}: ChatHistoryProps) {\n return <div className=\"appChatHistory\">\n {\n simplifiedChat.map((item, index) => {\n if (item.type === \"model\") {\n const isActive = index === simplifiedChat.length - 1 && generatingResult;\n return <>\n <MarkdownContent key={index} className={classNames(\"message\", \"model\", isActive && \"active\")}>\n {item.message}\n </MarkdownContent>\n {\n !isActive && <div className=\"buttons\">\n <MessageCopyButton text={item.message} />\n </div>\n }\n </>;\n\n } else if (item.type === \"user\")\n return <MarkdownContent key={index} className=\"message user\">\n {item.message}\n </MarkdownContent>;\n\n return null;\n })\n }\n {\n (\n simplifiedChat.length > 0 &&\n simplifiedChat[simplifiedChat.length - 1]!.type !== \"model\" &&\n generatingResult\n ) &&\n <div className=\"message model active\"/>\n }\n </div>;\n}\n\ntype ChatHistoryProps = {\n simplifiedChat: LlmState[\"chatSession\"][\"simplifiedChat\"],\n generatingResult: boolean\n};\n"},{"path":["src","App","components","ChatHistory","components","MessageCopyButton","MessageCopyButton.css"],"content":".appChatHistory > .buttons {\n > .copyButton {\n display: grid;\n grid-template-areas: \"icon\";\n padding: 6px;\n border: none;\n\n transition: background-color 0.1s ease-in-out;\n\n &:not(:hover, :focus-visible) {\n background-color: transparent;\n }\n\n &.copied {\n > .icon.copy {\n opacity: 0;\n transition-delay: 0s;\n }\n\n > .icon.check {\n opacity: 1;\n transition-delay: 0.1s;\n }\n }\n\n > .icon {\n grid-area: icon;\n width: 18px;\n height: 18px;\n\n transition: opacity 0.3s ease-in-out;\n\n &.copy {\n opacity: 1;\n transition-delay: 0.1s;\n }\n &.check {\n opacity: 0;\n }\n }\n }\n}\n"},{"path":["src","App","components","ChatHistory","components","MessageCopyButton","MessageCopyButton.tsx"],"content":"import classNames from \"classnames\";\nimport {useCallback, useState} from \"react\";\nimport {CopyIconSVG} from \"../../../../../icons/CopyIconSVG.js\";\nimport {CheckIconSVG} from \"../../../../../icons/CheckIconSVG.js\";\n\nimport \"./MessageCopyButton.css\";\n\nconst showCopiedTime = 1000 * 2;\n\nexport function MessageCopyButton({text}: MessageCopyButtonProps) {\n const [copies, setCopies] = useState(0);\n\n const onClick = useCallback(() => {\n navigator.clipboard.writeText(text)\n .then(() => {\n setCopies(copies + 1);\n\n setTimeout(() => {\n setCopies(copies - 1);\n }, showCopiedTime);\n })\n .catch((error) => {\n console.error(\"Failed to copy text to clipboard\", error);\n });\n }, [text]);\n\n return <button\n onClick={onClick}\n className={classNames(\"copyButton\", copies > 0 && \"copied\")}\n >\n <CopyIconSVG className=\"icon copy\" />\n <CheckIconSVG className=\"icon check\" />\n </button>;\n}\n\ntype MessageCopyButtonProps = {\n text: string\n};\n"},{"path":["src","App","components","Header","Header.css"],"content":".appHeader {\n display: flex;\n flex-direction: row;\n z-index: 10;\n position: sticky;\n top: 16px;\n pointer-events: none;\n\n > .panel {\n pointer-events: all;\n display: flex;\n flex-direction: row;\n align-self: start;\n background-color: var(--panel-background-color);\n border-radius: 12px;\n backdrop-filter: blur(8px);\n box-shadow: var(--panel-box-shadow);\n overflow: clip;\n isolation: isolate;\n color: var(--panel-text-color);\n z-index: 10;\n\n > button {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 8px 12px;\n margin: 8px;\n background-color: var(--panel-button-background-color);\n color: var(--panel-text-color);\n fill: var(--panel-text-color);\n\n + button {\n margin-inline-start: 0px;\n }\n\n &:hover,\n &:focus,\n &:focus-visible {\n border-color: var(--panel-button-hover-border-color);\n }\n\n > .icon {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n > .model {\n position: relative;\n\n > .progress {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n bottom: 0;\n background-color: var(--panel-progress-color);\n width: calc(var(--progress) * 100%);\n pointer-events: none;\n z-index: -1;\n\n --progress: 0;\n\n &.hide {\n opacity: 0;\n\n transition: opacity 0.3s var(--transition-easing);\n }\n }\n\n > .modelName,\n > .noModel {\n flex: 1;\n text-align: start;\n align-self: center;\n flex-basis: 400px;\n padding: 12px 24px;\n word-break: break-word;\n\n margin-inline-end: 48px;\n }\n }\n\n > .spacer {\n flex-grow: 1;\n }\n}\n"},{"path":["src","App","components","Header","Header.tsx"],"content":"import {CSSProperties} from \"react\";\nimport classNames from \"classnames\";\nimport {LoadFileIconSVG} from \"../../../icons/LoadFileIconSVG.tsx\";\nimport {DeleteIconSVG} from \"../../../icons/DeleteIconSVG.tsx\";\nimport {UpdateBadge} from \"./components/UpdateBadge.js\";\n\nimport \"./Header.css\";\n\n\nexport function Header({appVersion, canShowCurrentVersion, modelName, onLoadClick, loadPercentage, onResetChatClick}: HeaderProps) {\n return <div className=\"appHeader\">\n <div className=\"panel model\">\n <div\n className={classNames(\"progress\", loadPercentage === 1 && \"hide\")}\n style={{\n \"--progress\": loadPercentage != null ? (loadPercentage * 100) : undefined\n } as CSSProperties}\n />\n\n {\n modelName != null &&\n <div className=\"modelName\">{modelName}</div>\n }\n {\n modelName == null &&\n <div className=\"noModel\">No model loaded</div>\n }\n\n <button\n className=\"resetChatButton\"\n disabled={onResetChatClick == null}\n onClick={onResetChatClick}\n >\n <DeleteIconSVG className=\"icon\"/>\n </button>\n <button className=\"loadModelButton\" onClick={onLoadClick} disabled={onLoadClick == null}>\n <LoadFileIconSVG className=\"icon\"/>\n </button>\n </div>\n <div className=\"spacer\"/>\n <UpdateBadge\n appVersion={appVersion}\n canShowCurrentVersion={canShowCurrentVersion}\n />\n </div>;\n}\n\ntype HeaderProps = {\n appVersion?: string,\n canShowCurrentVersion?: boolean,\n modelName?: string,\n onLoadClick?(): void,\n loadPercentage?: number,\n onResetChatClick?(): void\n};\n"},{"path":["src","App","components","Header","components","UpdateBadge.css"],"content":".appHeader > .updateBadge {\n pointer-events: all;\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-shrink: 0;\n margin-inline-start: 16px;\n\n > .currentVersion {\n opacity: 0.4;\n margin: 14px;\n\n > code {\n background-color: transparent;\n }\n }\n\n > .newVersion {\n background-color: var(--update-badge-background-color);\n border: solid 1px var(--update-badge-border-color);\n box-shadow: var(--update-badge-box-shadow);\n border-radius: 12px;\n backdrop-filter: blur(8px);\n padding: 8px 12px;\n margin: 0px 8px;\n\n > .version {\n margin: 0px 4px;\n font-family: monospace;\n }\n }\n}\n"},{"path":["src","App","components","Header","components","UpdateBadge.tsx"],"content":"import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\nimport {withLock} from \"lifecycle-utils\";\nimport semver from \"semver\";\n\nimport \"./UpdateBadge.css\";\n\nconst latestReleaseUrl = \"https://github.com/withcatai/node-llama-cpp/releases/latest\";\nconst checkInterval = 1000 * 60 * 60 * 24;\n\n\nexport function UpdateBadge({appVersion, canShowCurrentVersion}: UpdateBadgeProps) {\n const [latestVersion, setLatestVersion] = useState<string | null>(null);\n const [releaseLink, setReleaseLink] = useState<string | null>(null);\n const shouldUpdateCurrentVersion = useRef(true);\n const nextUpdateTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const instanceLock = useRef({});\n\n const appVersionIsBeta = useMemo(() => {\n if (appVersion == null)\n return null;\n\n const componenets = semver.prerelease(appVersion);\n return componenets?.includes(\"beta\") ?? false;\n }, [appVersion]);\n\n const updateLatestVersionInfo = useCallback(async () => {\n clearTimeout(nextUpdateTimeoutRef.current);\n await withLock(instanceLock.current, \"updateVersion\", async () => {\n clearTimeout(nextUpdateTimeoutRef.current);\n\n const latestVersion = await getLatestAvailableVersion(appVersionIsBeta ?? false);\n if (shouldUpdateCurrentVersion.current && latestVersion.version != null) {\n setLatestVersion(latestVersion.version);\n setReleaseLink(latestVersion.url);\n }\n\n nextUpdateTimeoutRef.current = setTimeout(updateLatestVersionInfo, checkInterval);\n });\n }, [appVersionIsBeta]);\n\n useEffect(() => {\n if (appVersionIsBeta == null)\n return;\n\n shouldUpdateCurrentVersion.current = true;\n void updateLatestVersionInfo();\n\n return () => {\n shouldUpdateCurrentVersion.current = false;\n clearTimeout(nextUpdateTimeoutRef.current);\n };\n }, [appVersionIsBeta]);\n\n const releasedVersionIsNewerThanCurrent = useMemo(() => {\n if (appVersion == null || latestVersion == null)\n return false;\n\n try {\n return semver.gt(latestVersion, appVersion);\n } catch (err) {\n return true;\n }\n }, [appVersion, latestVersion]);\n\n if (latestVersion == null)\n return null;\n\n return <div className=\"updateBadge\">\n {\n (!releasedVersionIsNewerThanCurrent && appVersion && canShowCurrentVersion) &&\n <div className=\"currentVersion\"><code>v{appVersion}</code></div>\n }\n {\n (releasedVersionIsNewerThanCurrent && releaseLink != null) &&\n <a\n target=\"_blank\"\n href={releaseLink}\n className=\"newVersion\"\n >\n Version <code className=\"version\">{latestVersion}</code> is available\n </a>\n }\n </div>;\n}\n\ntype UpdateBadgeProps = {\n appVersion?: string,\n canShowCurrentVersion?: boolean\n};\n\nasync function getLatestAvailableVersion(includePrerelease: boolean = false): Promise<{\n version?: string,\n url: string\n}> {\n try {\n if (includePrerelease) {\n const latestReleases = await getLatestPrereleaseAndRelease();\n if (latestReleases.latestPrerelease != null && latestReleases.latestRelease != null) {\n if (semver.gt(latestReleases.latestPrerelease.version, latestReleases.latestRelease.version))\n return {\n version: latestReleases.latestPrerelease.version,\n url: latestReleases.latestPrerelease.url\n };\n\n return {\n version: latestReleases.latestRelease.version,\n url: latestReleaseUrl\n };\n } else if (latestReleases.latestPrerelease != null) {\n return {\n version: latestReleases.latestPrerelease.version,\n url: latestReleases.latestPrerelease.url\n };\n } else if (latestReleases.latestRelease != null) {\n return {\n version: latestReleases.latestRelease.version,\n url: latestReleaseUrl\n };\n }\n }\n\n const releaseRes = await fetch(\"https://api.github.com/repos/withcatai/node-llama-cpp/releases/latest\");\n const release: {\n tag_name: string\n } = await releaseRes.json();\n\n return {\n version: normalizeTagName(release?.tag_name),\n url: latestReleaseUrl\n };\n } catch (err) {\n console.error(err);\n return {\n version: undefined,\n url: latestReleaseUrl\n };\n }\n}\n\nasync function getLatestPrereleaseAndRelease(): Promise<{\n latestRelease?: {\n version: string,\n url: string\n },\n latestPrerelease?: {\n version: string,\n url: string\n }\n}> {\n try {\n const releasesRes = await fetch(\"https://api.github.com/repos/withcatai/node-llama-cpp/releases?per_page=100\");\n const releases: Array<{\n tag_name: string,\n html_url: string,\n prerelease: boolean,\n draft: boolean\n }> = await releasesRes.json();\n\n const latestRelease = releases.find((release) => !release.prerelease && !release.draft);\n const latestPrerelease = releases.find((release) => release.prerelease && !release.draft);\n\n return {\n latestRelease: latestRelease == null ? undefined : {\n version: normalizeTagName(latestRelease.tag_name)!,\n url: latestRelease.html_url\n },\n latestPrerelease: latestPrerelease == null ? undefined : {\n version: normalizeTagName(latestPrerelease.tag_name)!,\n url: latestPrerelease.html_url\n }\n };\n } catch (err) {\n console.error(err);\n return {};\n }\n}\n\nfunction normalizeTagName(tagName?: string) {\n if (tagName == null)\n return undefined;\n\n if (tagName.toLowerCase().startsWith(\"v\"))\n return tagName.slice(\"v\".length);\n\n return tagName;\n}\n"},{"path":["src","App","components","InputRow","InputRow.css"],"content":".appInputRow {\n display: flex;\n flex-direction: row;\n position: sticky;\n bottom: 16px;\n background-color: var(--panel-background-color);\n border-radius: 12px;\n backdrop-filter: blur(8px);\n box-shadow: var(--panel-box-shadow);\n overflow: clip;\n color: var(--panel-text-color);\n flex-shrink: 0;\n z-index: 10;\n align-items: flex-end;\n\n &.disabled {\n opacity: 0.48;\n }\n\n > .inputContainer {\n flex: 1;\n display: flex;\n flex-direction: row;\n overflow: hidden;\n position: relative;\n isolation: isolate;\n max-height: 400px;\n min-height: var(--min-height);\n --min-height: 55px;\n\n > .input {\n flex: 1;\n border: none;\n resize: none;\n box-sizing: border-box;\n max-height: 160px;\n min-height: var(--min-height);\n height: 55px;\n outline: none;\n padding: calc((var(--min-height) - 1lh) / 2) 24px;\n background-color: transparent;\n font: inherit;\n align-content: center;\n align-self: stretch;\n color: var(--panel-text-color);\n z-index: 2;\n unicode-bidi: plaintext;\n overflow: auto;\n\n &::placeholder {\n color: var(--panel-text-color);\n opacity: 0.4;\n }\n }\n\n > .autocomplete {\n position: absolute;\n inset: 0px;\n z-index: 1;\n display: flex;\n overflow: hidden;\n pointer-events: none;\n user-select: none;\n\n > .content {\n flex: 1;\n flex-shrink: 0;\n font: inherit;\n padding: calc((var(--min-height) - 1lh) / 2) 24px;\n text-align: initial;\n unicode-bidi: plaintext;\n overflow: hidden;\n opacity: 0.36;\n mask: linear-gradient(to top, rgb(0 0 0 / 16%), black 24px);\n\n &.hide {\n opacity: 0;\n }\n\n > .currentText {\n opacity: 0;\n display: inline;\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n > .completion {\n display: inline;\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n > .pressTab {\n display: inline-block;\n margin: -1px 8px;\n opacity: 0.8;\n border: solid 1px color-mix(in srgb, currentColor, transparent 64%);\n border-bottom-width: 2px;\n border-radius: 8px;\n padding: 0.1em 0.4em;\n font-size: 0.8em;\n vertical-align: top;\n }\n }\n }\n }\n\n > .stopGenerationButton,\n > .sendButton {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 8px 12px;\n margin: 8px;\n background-color: var(--panel-button-background-color);\n color: var(--panel-text-color);\n fill: var(--panel-text-color);\n\n + button {\n margin-inline-start: 0px;\n }\n\n &:hover,\n &:focus,\n &:focus-visible {\n border-color: var(--panel-button-hover-border-color);\n }\n\n > .icon {\n width: 20px;\n height: 20px;\n }\n }\n\n > .stopGenerationButton {\n transition: border-color 0.3s var(--transition-easing), opacity 0.3s var(--transition-easing);\n\n &[disabled] {\n opacity: 0;\n }\n }\n}\n"},{"path":["src","App","components","InputRow","InputRow.tsx"],"content":"import {useCallback, useMemo, useRef, useState} from \"react\";\nimport classNames from \"classnames\";\nimport {AddMessageIconSVG} from \"../../../icons/AddMessageIconSVG.tsx\";\nimport {AbortIconSVG} from \"../../../icons/AbortIconSVG.tsx\";\n\nimport \"./InputRow.css\";\n\n\nexport function InputRow({\n disabled = false, stopGeneration, sendPrompt, onPromptInput, autocompleteInputDraft, autocompleteCompletion, generatingResult\n}: InputRowProps) {\n const [inputText, setInputText] = useState<string>(\"\");\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const autocompleteRef = useRef<HTMLDivElement>(null);\n const autocompleteCurrentTextRef = useRef<HTMLDivElement>(null);\n\n const autocompleteText = useMemo(() => {\n const fullText = (autocompleteInputDraft ?? \"\") + (autocompleteCompletion ?? \"\");\n if (fullText.startsWith(inputText))\n return fullText.slice(inputText.length);\n\n return \"\";\n }, [inputText, autocompleteInputDraft, autocompleteCompletion]);\n\n const setInputValue = useCallback((value: string) => {\n if (inputRef.current != null)\n inputRef.current.value = value;\n\n if (autocompleteCurrentTextRef.current != null)\n autocompleteCurrentTextRef.current.innerText = value;\n\n setInputText(value);\n }, []);\n\n const resizeInput = useCallback(() => {\n if (inputRef.current == null)\n return;\n\n inputRef.current.style.height = \"\";\n inputRef.current.style.height = inputRef.current.scrollHeight + \"px\";\n\n if (autocompleteRef.current != null) {\n autocompleteRef.current.scrollTop = inputRef.current.scrollTop;\n }\n }, []);\n\n const submitPrompt = useCallback(() => {\n if (generatingResult || inputRef.current == null)\n return;\n\n const message = inputRef.current.value;\n if (message.length === 0)\n return;\n\n setInputValue(\"\");\n resizeInput();\n onPromptInput?.(\"\");\n sendPrompt(message);\n }, [setInputValue, generatingResult, resizeInput, sendPrompt, onPromptInput]);\n\n const onInput = useCallback(() => {\n setInputText(inputRef.current?.value ?? \"\");\n resizeInput();\n\n if (autocompleteCurrentTextRef.current != null && inputRef.current != null)\n autocompleteCurrentTextRef.current.innerText = inputRef.current?.value;\n\n if (inputRef.current != null && onPromptInput != null)\n onPromptInput(inputRef.current?.value);\n }, [resizeInput, onPromptInput]);\n\n const onInputKeyDown = useCallback((event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n submitPrompt();\n } else if (event.key === \"Tab\" && !event.shiftKey && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n if (inputRef.current != null && autocompleteText !== \"\") {\n setInputValue(inputRef.current.value + autocompleteText);\n inputRef.current.scrollTop = inputRef.current.scrollHeight;\n onPromptInput?.(inputRef.current.value);\n }\n\n resizeInput();\n }\n }, [submitPrompt, setInputValue, onPromptInput, resizeInput, autocompleteText]);\n\n return <div className={classNames(\"appInputRow\", disabled && \"disabled\")}>\n <div className=\"inputContainer\">\n <textarea\n ref={inputRef}\n onInput={onInput}\n onKeyDownCapture={onInputKeyDown}\n className=\"input\"\n autoComplete=\"off\"\n spellCheck\n disabled={disabled}\n onScroll={resizeInput}\n placeholder={\n autocompleteText === \"\"\n ? \"Type a message...\"\n : \"\"\n }\n />\n <div className=\"autocomplete\" ref={autocompleteRef}>\n <div className={classNames(\"content\", autocompleteText === \"\" && \"hide\")}>\n <div className=\"currentText\" ref={autocompleteCurrentTextRef}/>\n <div className=\"completion\">{autocompleteText}</div>\n <div className=\"pressTab\">Tab</div>\n </div>\n </div>\n </div>\n <button\n className=\"stopGenerationButton\"\n disabled={disabled || stopGeneration == null || !generatingResult}\n onClick={stopGeneration}\n >\n <AbortIconSVG className=\"icon\" />\n </button>\n <button\n className=\"sendButton\"\n disabled={disabled || inputText === \"\" || generatingResult}\n onClick={submitPrompt}\n >\n <AddMessageIconSVG className=\"icon\" />\n </button>\n </div>;\n}\n\ntype InputRowProps = {\n disabled?: boolean,\n stopGeneration?(): void,\n sendPrompt(prompt: string): void,\n onPromptInput?(currentText: string): void,\n autocompleteInputDraft?: string,\n autocompleteCompletion?: string,\n generatingResult: boolean\n};\n"},{"path":["src","App","components","MarkdownContent","MarkdownContent.css"],"content":"/* Only style code blocks */\npre > code {\n display: block;\n background-color: var(--code-block-background-color);\n padding: 0.8em 1.2em;\n border-radius: 0.4em;\n font-size: 1.2em;\n overflow-x: auto;\n user-select: all;\n\n @media (prefers-color-scheme: light) {\n /*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n */\n .hljs {\n color: #24292e;\n background: #ffffff\n }\n .hljs-doctag,\n .hljs-keyword,\n .hljs-meta .hljs-keyword,\n .hljs-template-tag,\n .hljs-template-variable,\n .hljs-type,\n .hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #d73a49\n }\n .hljs-title,\n .hljs-title.class_,\n .hljs-title.class_.inherited__,\n .hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #6f42c1\n }\n .hljs-attr,\n .hljs-attribute,\n .hljs-literal,\n .hljs-meta,\n .hljs-number,\n .hljs-operator,\n .hljs-variable,\n .hljs-selector-attr,\n .hljs-selector-class,\n .hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #005cc5\n }\n .hljs-regexp,\n .hljs-string,\n .hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #032f62\n }\n .hljs-built_in,\n .hljs-symbol {\n /* prettylights-syntax-variable */\n color: #e36209\n }\n .hljs-comment,\n .hljs-code,\n .hljs-formula {\n /* prettylights-syntax-comment */\n color: #6a737d\n }\n .hljs-name,\n .hljs-quote,\n .hljs-selector-tag,\n .hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #22863a\n }\n .hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #24292e\n }\n .hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #005cc5;\n font-weight: bold\n }\n .hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #735c0f\n }\n .hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #24292e;\n font-style: italic\n }\n .hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #24292e;\n font-weight: bold\n }\n .hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #22863a;\n background-color: #f0fff4\n }\n .hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #b31d28;\n background-color: #ffeef0\n }\n .hljs-char.escape_,\n .hljs-link,\n .hljs-params,\n .hljs-property,\n .hljs-punctuation,\n .hljs-tag {\n /* purposely ignored */\n }\n }\n\n @media (prefers-color-scheme: dark) {\n /*!\n Theme: GitHub Dark\n Description: Dark theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-dark\n Current colors taken from GitHub's CSS\n */\n .hljs {\n color: #c9d1d9;\n background: #0d1117\n }\n .hljs-doctag,\n .hljs-keyword,\n .hljs-meta .hljs-keyword,\n .hljs-template-tag,\n .hljs-template-variable,\n .hljs-type,\n .hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #ff7b72\n }\n .hljs-title,\n .hljs-title.class_,\n .hljs-title.class_.inherited__,\n .hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #d2a8ff\n }\n .hljs-attr,\n .hljs-attribute,\n .hljs-literal,\n .hljs-meta,\n .hljs-number,\n .hljs-operator,\n .hljs-variable,\n .hljs-selector-attr,\n .hljs-selector-class,\n .hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #79c0ff\n }\n .hljs-regexp,\n .hljs-string,\n .hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #a5d6ff\n }\n .hljs-built_in,\n .hljs-symbol {\n /* prettylights-syntax-variable */\n color: #ffa657\n }\n .hljs-comment,\n .hljs-code,\n .hljs-formula {\n /* prettylights-syntax-comment */\n color: #8b949e\n }\n .hljs-name,\n .hljs-quote,\n .hljs-selector-tag,\n .hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #7ee787\n }\n .hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #c9d1d9\n }\n .hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #1f6feb;\n font-weight: bold\n }\n .hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #f2cc60\n }\n .hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #c9d1d9;\n font-style: italic\n }\n .hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #c9d1d9;\n font-weight: bold\n }\n .hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #aff5b4;\n background-color: #033a16\n }\n .hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #ffdcd7;\n background-color: #67060c\n }\n .hljs-char.escape_,\n .hljs-link,\n .hljs-params,\n .hljs-property,\n .hljs-punctuation,\n .hljs-tag {\n /* purposely ignored */\n }\n }\n}\n"},{"path":["src","App","components","MarkdownContent","MarkdownContent.tsx"],"content":"import {useLayoutEffect, useRef} from \"react\";\nimport markdownit from \"markdown-it\";\nimport hljs from \"highlight.js\";\n\nimport \"./MarkdownContent.css\";\n\nconst md = markdownit({\n highlight(str, lang): string {\n if (hljs.getLanguage(lang) != null) {\n try {\n return hljs.highlight(str, {language: lang}).value;\n } catch (err) {\n // do nothing\n }\n }\n\n return hljs.highlightAuto(str).value;\n }\n});\n\nexport function MarkdownContent({children, className}: MarkdownContentProps) {\n const divRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (divRef.current == null)\n return;\n\n divRef.current.innerHTML = md.render(children ?? \"\");\n }, [children]);\n\n return <div\n className={className}\n ref={divRef}\n />;\n}\n\ntype MarkdownContentProps = {\n className?: string,\n children: string\n};\n"},{"path":["src","hooks","useExternalState.ts"],"content":"import {useEffect, useState} from \"react\";\nimport {State} from \"lifecycle-utils\";\n\nexport function useExternalState<const StateType, const R>(state: State<StateType>, selector: ((state: StateType) => R)): R;\nexport function useExternalState<const StateType>(state: State<StateType>): StateType;\nexport function useExternalState<const StateType>(state: State<StateType>, selector?: ((state: StateType) => any) | null): StateType {\n const [currentState, setCurrentState] = useState(() => (\n selector == null\n ? state.state\n : selector(state.state)\n ));\n\n useEffect(() => {\n return state.createChangeListener((newState) => {\n setCurrentState(\n selector == null\n ? newState\n : selector(newState)\n );\n }, true).dispose;\n }, [state]);\n\n return currentState;\n}\n"},{"path":["src","icons","AbortIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function AbortIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M360-320h240q17 0 28.5-11.5T640-360v-240q0-17-11.5-28.5T600-640H360q-17 0-28.5 11.5T320-600v240q0 17 11.5 28.5T360-320ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","AddMessageIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function AddMessageIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M440-647 244-451q-12 12-28 11.5T188-452q-11-12-11.5-28t11.5-28l264-264q6-6 13-8.5t15-2.5q8 0 15 2.5t13 8.5l264 264q11 11 11 27.5T772-452q-12 12-28.5 12T715-452L520-647v447q0 17-11.5 28.5T480-160q-17 0-28.5-11.5T440-200v-447Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","CheckIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function CheckIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","CopyIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function CopyIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","DeleteIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function DeleteIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M280-120q-33 0-56.5-23.5T200-200v-520q-17 0-28.5-11.5T160-760q0-17 11.5-28.5T200-800h160q0-17 11.5-28.5T400-840h160q17 0 28.5 11.5T600-800h160q17 0 28.5 11.5T800-760q0 17-11.5 28.5T760-720v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520Zm-400 0v520-520Zm200 316 76 76q11 11 28 11t28-11q11-11 11-28t-11-28l-76-76 76-76q11-11 11-28t-11-28q-11-11-28-11t-28 11l-76 76-76-76q-11-11-28-11t-28 11q-11 11-11 28t11 28l76 76-76 76q-11 11-11 28t11 28q11 11 28 11t28-11l76-76Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","DownloadIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function DownloadIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","LoadFileIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function LoadFileIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M440-367v127q0 17 11.5 28.5T480-200q17 0 28.5-11.5T520-240v-127l36 36q6 6 13.5 9t15 2.5q7.5-.5 14.5-3.5t13-9q11-12 11.5-28T612-388L508-492q-6-6-13-8.5t-15-2.5q-8 0-15 2.5t-13 8.5L348-388q-12 12-11.5 28t12.5 28q12 11 28 11.5t28-11.5l35-35ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h287q16 0 30.5 6t25.5 17l194 194q11 11 17 25.5t6 30.5v447q0 33-23.5 56.5T720-80H240Zm280-560v-160H240v640h480v-440H560q-17 0-28.5-11.5T520-640ZM240-800v200-200 640-640Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","SearchIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function SearchIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"M380-320q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l224 224q11 11 11 28t-11 28q-11 11-28 11t-28-11L532-372q-30 24-69 38t-83 14Zm0-80q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\"/>\n </svg>;\n}\n"},{"path":["src","icons","StarIconSVG.tsx"],"content":"import {SVGProps} from \"react\";\n\nexport function StarIconSVG(props: SVGProps<SVGSVGElement>) {\n return <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" {...props}>\n <path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm126 18L314-169q-11 7-23 6t-21-8q-9-7-14-17.5t-2-23.5l44-189-147-127q-10-9-12.5-20.5T140-571q4-11 12-18t22-9l194-17 75-178q5-12 15.5-18t21.5-6q11 0 21.5 6t15.5 18l75 178 194 17q14 2 22 9t12 18q4 11 1.5 22.5T809-528L662-401l44 189q3 13-2 23.5T690-171q-9 7-21 8t-23-6L480-269Zm0-201Z\"/>\n </svg>;\n}\n"},{"path":["src","index.css"],"content":":root {\n font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;\n line-height: 1.5;\n font-weight: 400;\n\n color-scheme: light dark;\n background-color: var(--background-color);\n color: var(--text-color);\n\n font-synthesis: none;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n --transition-easing: cubic-bezier(0.4, 0.0, 0.2, 1);\n}\n\n:root {\n --background-color: light-dark(#eeeeee, #242424);\n --text-color: light-dark(#242424, #eeeeee);\n\n --button-background-color: light-dark(rgba(255 255 255 / 64%), rgba(255 255 255 / 8%));\n --button-hover-border-color: light-dark(#646cff, #646cff);\n\n --link-color: light-dark(#646cff, #646cff);\n --link-hover-color: light-dark(#747bff, #535bf2);\n --star-link-color: light-dark(#e09c1c, #eac54f);\n --star-hover-color: light-dark(#daaa52, #c7a027);\n\n --panel-background-color: light-dark(rgba(0 0 0 / 52%), rgba(0 0 0 / 48%));\n --panel-text-color: light-dark(#ffffff, #eeeeee);\n --panel-button-background-color: light-dark(rgba(0 0 0 / 24%), rgba(255 255 255 / 8%));\n --panel-button-hover-border-color: light-dark(var(--panel-text-color), var(--button-hover-border-color));\n --panel-progress-color: light-dark(rgba(255 255 255 / 8%), rgba(255 255 255 / 4%));\n --panel-box-shadow: 0px 4px 8px 0px rgba(0 0 0 / 8%), 0px 6px 24px 0px rgba(0 0 0 / 16%);\n\n --error-border-color: light-dark(rgba(239 83 80 / 100%), rgba(239 83 80 / 100%));\n\n --user-message-background-color: light-dark(rgba(0 0 0 / 16%), rgba(0 0 0 / 48%));\n --user-message-text-color: light-dark(#242424, var(--text-color));\n\n --actions-block-background-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --actions-block-border-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --actions-block-box-shadow: 0px 4px 8px 0px rgba(0 0 0 / 2%), 0px 6px 24px 0px rgba(0 0 0 / 8%);\n\n --code-block-background-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n\n --update-badge-background-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --update-badge-border-color: light-dark(rgba(0 0 0 / 4%), rgba(0 0 0 / 16%));\n --update-badge-box-shadow: 0px 4px 8px 0px rgba(0 0 0 / 2%), 0px 6px 24px 0px rgba(0 0 0 / 8%);\n\n --message-table-outline-color: light-dark(rgba(0 0 0 / 8%), rgba(255 255 255 / 6%));\n --message-table-background-color: light-dark(rgba(0 0 0 / 0%), rgba(0 0 0 / 12%));\n --message-table-even-background-color: light-dark(rgba(0 0 0 / 4%), rgba(255 255 255 / 6%));\n}\n\nbody {\n margin: 0;\n display: flex;\n min-width: 320px;\n min-height: 100vh;\n}\n\na {\n font-weight: 500;\n color: var(--link-color);\n text-decoration: inherit;\n\n &:hover {\n color: var(--link-hover-color);\n }\n}\n\ncode {\n background-color: color-mix(in srgb, currentColor, transparent 84%);\n padding: 0.1em 0.3em;\n border-radius: 0.4em;\n font-size: 1.2em;\n}\n\nbutton {\n border-radius: 8px;\n border: 1px solid transparent;\n padding: 0.6em 1.2em;\n font-size: 1em;\n font-weight: 500;\n font-family: inherit;\n background-color: var(--button-background-color);\n cursor: pointer;\n transition: border-color 0.3s var(--transition-easing), opacity 0.3s var(--transition-easing);\n color: var(--text-color);\n fill: var(--text-color);\n\n &[disabled] {\n opacity: 0.52;\n pointer-events: none;\n }\n\n &:hover,\n &:focus,\n &:focus-visible {\n border-color: var(--button-hover-border-color);\n }\n}\n\n"},{"path":["src","index.html"],"content":"<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\"/>\n <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n <title>Electron + TypeScript + React + Vite + node-llama-cpp</title>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"./index.tsx\"></script>\n </body>\n</html>\n"},{"path":["src","index.tsx"],"content":"import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport {App} from \"./App/App.tsx\";\nimport \"./index.css\";\n\nReactDOM.createRoot(document.getElementById(\"root\")!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>\n);\n\n// Use contextBridge\nwindow.ipcRenderer.on(\"main-process-message\", (_event, message) => {\n console.log(message);\n});\n"},{"path":["src","rpc","llmRpc.ts"],"content":"import {ElectronFunctions} from \"../../electron/rpc/llmRpc.ts\";\nimport {createRendererSideBirpc} from \"../utils/createRendererSideBirpc.ts\";\nimport {llmState} from \"../state/llmState.ts\";\nimport {LlmState} from \"../../electron/state/llmState.ts\";\n\n\nconst renderedFunctions = {\n updateState(state: LlmState) {\n llmState.state = state;\n }\n} as const;\nexport type RenderedFunctions = typeof renderedFunctions;\n\nexport const electronLlmRpc = createRendererSideBirpc<ElectronFunctions, RenderedFunctions>(\"llmRpc\", \"llmRpc\", renderedFunctions);\n\nelectronLlmRpc.getState()\n .then((state) => {\n llmState.state = state;\n })\n .catch((error) => {\n console.error(\"Failed to get the initial state from the main process\", error);\n });\n"},{"path":["src","state","llmState.ts"],"content":"import {State} from \"lifecycle-utils\";\n\nimport {LlmState} from \"../../electron/state/llmState.ts\";\n\nexport const llmState = new State<LlmState>({\n appVersion: undefined,\n llama: {\n loaded: false\n },\n model: {\n loaded: false\n },\n context: {\n loaded: false\n },\n contextSequence: {\n loaded: false\n },\n chatSession: {\n loaded: false,\n generatingResult: false,\n simplifiedChat: [],\n draftPrompt: {\n prompt: \"\",\n completion: \"\"\n }\n }\n});\n"},{"path":["src","utils","createRendererSideBirpc.ts"],"content":"import {createBirpc} from \"birpc\";\n\nexport function createRendererSideBirpc<\n const RendererFunction = Record<string, never>,\n const ElectronFunctions extends object = Record<string, never>\n>(\n toRendererEventName: string,\n fromRendererEventName: string,\n electronFunctions: ElectronFunctions\n) {\n return createBirpc<RendererFunction, ElectronFunctions>(electronFunctions, {\n post: (data) => window.ipcRenderer.send(fromRendererEventName, data),\n on: (onData) => window.ipcRenderer.on(toRendererEventName, (event, data) => {\n onData(data);\n }),\n serialize: (value) => JSON.stringify(value),\n deserialize: (value) => JSON.parse(value)\n });\n}\n\n"},{"path":["src","vite-env.d.ts"],"content":"/// <reference types=\"vite/client\" />\n"},{"path":["tsconfig.json"],"content":"{\n \"compilerOptions\": {\n \"target\": \"es2022\",\n \"lib\": [\"es2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"es2022\",\n \"skipLibCheck\": true,\n\n \"esModuleInterop\": true,\n \"removeComments\": false,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noUncheckedIndexedAccess\": true,\n \"moduleDetection\": \"force\",\n\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"noEmit\": true,\n \"jsx\": \"react-jsx\",\n\n \"strict\": true,\n \"strictNullChecks\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noImplicitOverride\": true\n },\n \"include\": [\n \"./src\",\n \"./electron\"\n ],\n \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"},{"path":["tsconfig.node.json"],"content":"{\n \"compilerOptions\": {\n \"target\": \"es2022\",\n \"lib\": [\"es2022\"],\n \"module\": \"es2022\",\n \"skipLibCheck\": true,\n\n \"esModuleInterop\": true,\n \"removeComments\": false,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noUncheckedIndexedAccess\": true,\n \"moduleDetection\": \"force\",\n\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": false,\n \"isolatedModules\": true,\n \"composite\": true,\n\n \"strict\": true,\n \"strictNullChecks\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noImplicitOverride\": true\n },\n \"include\": [\n \"vite.config.ts\"\n ]\n}\n"},{"path":["vite.config.ts"],"content":"import path from \"node:path\";\nimport {fileURLToPath} from \"node:url\";\nimport {defineConfig} from \"vite\";\nimport electron from \"vite-plugin-electron/simple\";\nimport react from \"@vitejs/plugin-react\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n// These modules won't be bundled as part of the Vite build of the Electron (main) side,\n// but they'll be included in the final Electron app build inside the asar file.\n// Performance and efficiency wise, this is absolutely fine and has no real drawbacks\nconst electronExternalModules = [\"node-llama-cpp\", \"lifecycle-utils\"];\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n esbuild: {\n target: \"es2022\"\n },\n optimizeDeps: {\n exclude: electronExternalModules,\n esbuildOptions: {\n target: \"es2022\"\n }\n },\n build: {\n outDir: path.join(__dirname, \"dist\"),\n target: \"es2022\"\n },\n root: path.join(__dirname, \"src\"),\n publicDir: path.join(__dirname, \"public\"),\n plugins: [\n react(),\n electron({\n main: {\n // Shortcut of `build.lib.entry`.\n entry: path.join(__dirname, \"electron/index.ts\"),\n vite: {\n build: {\n target: \"es2022\",\n outDir: path.join(__dirname, \"dist-electron\"),\n rollupOptions: {\n external: electronExternalModules\n }\n }\n }\n },\n preload: {\n // Shortcut of `build.rollupOptions.input`.\n // Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.\n input: path.join(__dirname, \"electron/preload.ts\"),\n vite: {\n build: {\n target: \"es2022\",\n outDir: path.join(__dirname, \"dist-electron\")\n }\n }\n },\n // Polyfill the Electron and Node.js API for Renderer process.\n // If you want use Node.js in Renderer process, the `nodeIntegration` needs to be enabled in the Main process.\n // See 👉 https://github.com/electron-vite/vite-plugin-electron-renderer\n renderer: process.env.NODE_ENV === \"test\"\n // https://github.com/electron-vite/vite-plugin-electron-renderer/issues/78#issuecomment-2053600808\n ? undefined\n : {}\n })\n ]\n});\n"}]}