1- import { processAudio } from "../../markdown/custom/directives/audio.mjs" ;
2- import { processRandomMessage } from "../../markdown/custom/random.mjs" ;
3- import {
4- processDirectiveBot ,
5- processMultipleBots ,
6- } from "../../markdown/custom/directives/bot.mjs" ;
7- import { processKroki } from "./helpers/plugins/processKroki.mjs" ;
8- import { processDirectiveNext } from "../../markdown/custom/directives/next.mjs" ;
9- import { processDirectiveSelectNext } from "../../markdown/custom/directives/selectNext.mjs" ;
10- import { processFixedVariables } from "../../../js//markdown/custom/variablesFixed.mjs" ;
11- import { processDynamicVariables } from "../../../js//markdown/custom/variablesDynamic.mjs" ;
1+ import { yaml } from "../../markdown/custom/yaml.mjs" ;
2+ import { processMultipleBots } from "../../markdown/custom/directives/bot.mjs" ;
123import { convertLatexExpressions } from "../../../js//markdown/latex.mjs" ;
134import { displayMessage } from "../messages/display.mjs" ;
145import { extractMarkdownAndPrompts } from "../../markdown/custom/directives/useLLM/extractMarkdownAndPrompts.mjs" ;
15- import { yaml } from "../../markdown/custom/yaml.mjs" ;
166import { markdownToHTML } from "../../markdown/parser.mjs" ;
177import { getChatbotResponse } from "../interactions/getChatbotResponse.mjs" ;
188import { processMessageWithPrompt } from "../../markdown/custom/directives/useLLM/processMessageWithPrompt.mjs" ;
9+ import { createMessageElement } from "./helpers/dom.mjs" ;
10+ import { processVariables } from "./helpers/processVariables.mjs" ;
11+ import { processDirectives } from "./helpers/processDirectives.mjs" ;
12+ import { processPlugins } from "./helpers/processPlugins.mjs" ;
13+
14+ function handleBotResponse ( chatbot ) {
15+ if ( chatbot . nextMessage . selected ) {
16+ return getChatbotResponse ( chatbot , chatbot . nextMessage . selected ) ;
17+ }
18+ }
1919
2020// Création du message par le bot ou l'utilisateur
2121export function createChatMessage (
@@ -24,63 +24,25 @@ export function createChatMessage(
2424 isUser ,
2525 chatMessageElement ,
2626) {
27- let dynamicVariables = chatbot . dynamicVariables ;
2827 const originalMessage = message ;
29- let chatMessage ;
30- if ( ! chatMessageElement ) {
31- chatMessage = document . createElement ( "div" ) ;
32- chatMessage . classList . add ( "message" ) ;
33- chatMessage . classList . add ( isUser ? "user-message" : "bot-message" ) ;
34- } else {
35- chatMessage = chatMessageElement ;
36- }
28+ let container = chatMessageElement || createMessageElement ( isUser ) ;
29+
3730 chatbot . nextMessage . selected = undefined ;
38- // Gestion des variables fixes prédéfinies
39- if ( yaml && yaml . variables ) {
40- message = processFixedVariables ( message ) ;
41- }
42- if ( ! isUser ) {
43- message = processRandomMessage ( message ) ;
44- }
4531
46- if ( yaml && yaml . dynamicContent ) {
47- // On traite les variables dynamiques
48- message = processDynamicVariables (
49- chatbot ,
50- message ,
51- dynamicVariables ,
52- isUser ,
53- ) ;
54- }
32+ message = processVariables ( chatbot , message , isUser ) ;
5533
5634 // Cas où c'est un message du bot
5735 if ( ! isUser ) {
58- // Gestion de la directive !Bot: botName
59- if ( yaml && yaml . bots ) {
60- message = processDirectiveBot ( message , chatMessage ) ;
61- }
62-
63- // Gestion de l'audio
64- message = processAudio ( message ) ;
65-
66- // Gestion de la directive !Next: Titre réponse / message si mauvaise réponse
67- message = processDirectiveNext ( chatbot , message ) ;
68-
69- // Gestion de la directive !SelectNext pour sélectionner aléatoirement le prochain message du chatbot
70- message = processDirectiveSelectNext ( chatbot , message ) ;
71-
72- // Gestion de schémas et images créés avec mermaid, tikz, graphviz, plantuml … grâce à Kroki (il faut l'inclure en plugin si on veut l'utiliser)
73- if ( yaml && yaml . plugins && yaml . plugins . includes ( "kroki" ) ) {
74- message = processKroki ( message ) ;
75- }
36+ message = processDirectives ( chatbot , message , container ) ;
37+ message = processPlugins ( message ) ;
7638 }
7739 const checkPromptsinMessage = extractMarkdownAndPrompts ( message ) ;
7840 const hasPromptInmessage = checkPromptsinMessage . useLLM ;
7941
8042 if ( hasPromptInmessage ) {
8143 // On gère le cas où il y a une partie dans le message qui doit être gérée par un LLM
8244 const markdownAndPromptSequence = checkPromptsinMessage . sequence ;
83- processMessageWithPrompt ( markdownAndPromptSequence , chatMessage , isUser ) ;
45+ processMessageWithPrompt ( markdownAndPromptSequence , container , isUser ) ;
8446 } else {
8547 let html = markdownToHTML ( message ) ;
8648 if ( html . trim ( ) !== "" ) {
@@ -107,44 +69,34 @@ export function createChatMessage(
10769 }
10870 }
10971 if ( timeToDisplayMessage ) {
110- displayMessage ( html , isUser , chatMessage ) . then ( ( ) => {
111- if ( chatbot . nextMessage . selected ) {
112- const response = getChatbotResponse (
113- chatbot ,
114- chatbot . nextMessage . selected ,
115- ) ;
116- if ( response ) {
117- createChatMessage ( chatbot , response , false ) ;
118- }
72+ displayMessage ( html , isUser , container ) . then ( ( ) => {
73+ const response = handleBotResponse ( chatbot ) ;
74+ if ( response ) {
75+ createChatMessage ( chatbot , response , false ) ;
11976 }
12077 } ) ;
12178 // Gestion des éléments HTML <select> si on veut les utiliser pour gérer des variables dynamiques
12279 message = processSelectElements (
12380 chatbot ,
12481 message ,
12582 originalMessage ,
126- chatMessage ,
83+ container ,
12784 ) ;
12885 }
12986 } , 100 ) ;
13087 } else {
131- displayMessage ( html , isUser , chatMessage ) . then ( ( ) => {
132- if ( chatbot . nextMessage . selected ) {
133- const response = getChatbotResponse (
134- chatbot ,
135- chatbot . nextMessage . selected ,
136- ) ;
137- if ( response ) {
138- createChatMessage ( chatbot , response , false ) ;
139- }
88+ displayMessage ( html , isUser , container ) . then ( ( ) => {
89+ const response = handleBotResponse ( chatbot ) ;
90+ if ( response ) {
91+ createChatMessage ( chatbot , response , false ) ;
14092 }
14193 } ) ;
14294 // Gestion des éléments HTML <select> si on veut les utiliser pour gérer des variables dynamiques
14395 message = processSelectElements (
14496 chatbot ,
14597 message ,
14698 originalMessage ,
147- chatMessage ,
99+ container ,
148100 ) ;
149101 }
150102 }
0 commit comments