File size: 1,791 Bytes
811916b
 
c86c048
811916b
 
cbf8fa6
f059dc2
811916b
e7bfb69
1545694
51e3b39
811916b
 
51e3b39
811916b
 
f059dc2
51e3b39
811916b
 
f059dc2
0d0f934
e7bfb69
0d0f934
2a0250a
f332e70
 
4dc14dc
 
c86c048
4dc14dc
c86c048
4dc14dc
5d0136a
 
eeb4c01
 
 
 
 
 
 
 
 
 
5d0136a
4dc14dc
811916b
 
4dc14dc
cbf8fa6
 
 
c86c048
 
e7bfb69
2a0250a
811916b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// @ts-check

import { makeEnterPlugins, setupCrepeEnterKey } from './enter-key';
import { initHTML } from './init-html';
import { initMilkdown } from './init-milkdown';
import { outputMessage, flushBufferedOutputs } from './output-message';
import { workerConnection } from './worker-connection';

import { name, description, version } from '../../package.json';

/** @type {import('@milkdown/core').Editor} */
export var chatLogEditor;

/** @type {import('@milkdown/core').Editor} */
export var chatInputEditor;

export var worker;

export async function bootApp() {
  const { chatLog, chatInput } = initHTML();
  worker = workerConnection();
  worker.loaded.then(async ({ env }) => {
    document.title = name + ' v' + version + ' t/' + env.version;
    outputMessage(
      'transformers.js **v' + env.version + '**');
  });

  const {
    chatLogEditor: chatLogEditorInstance,
    chatInputEditor: chatInputEditorInstance,
    crepeInput
  } = await initMilkdown({
    worker,
    chatLog,
    chatInput,
    inputPlugins: makeEnterPlugins({ workerConnection: worker }),
    onSlashCommand: async (modelId) => {
      try {
        outputMessage(`Loading model: ${modelId}...`);
        await worker.loadModel(modelId);
        outputMessage(`Model ${modelId} loaded successfully!`);
      } catch (error) {
        outputMessage(`Error loading model ${modelId}: ${error.message}`);
      }
    }
  });

  chatLogEditor = chatLogEditorInstance;
  chatInputEditor = chatInputEditorInstance;

  // Flush any outputs that were buffered before the editor was ready
  flushBufferedOutputs();

  // Setup Enter key handling for the Crepe input editor
  setupCrepeEnterKey(crepeInput, worker);
  document.title = name + ' v' + version;
  outputMessage(description + ' **v' + version + '**');
}