@ourlu/assistant-sdk 0.2.4 → 0.2.6
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/dist/iife/audio.v1.028c93fe.js +160 -0
- package/dist/iife/audio.v1.051ececf.js +183 -0
- package/dist/iife/audio.v1.200db1a6.js +208 -0
- package/dist/iife/audio.v1.20858b08.js +191 -0
- package/dist/iife/audio.v1.2690e445.js +179 -0
- package/dist/iife/audio.v1.2742ff12.js +188 -0
- package/dist/iife/audio.v1.70af81b3.js +191 -0
- package/dist/iife/audio.v1.95146620.js +1 -1
- package/dist/iife/audio.v1.b330baaf.js +166 -0
- package/dist/iife/audio.v1.bb9c2d88.js +181 -0
- package/dist/iife/audio.v1.ea7571b2.js +182 -0
- package/dist/iife/audio.v1.fc0aa8af.js +191 -0
- package/dist/iife/audio.v1.js +107 -95
- package/dist/iife/engine.v1.19c589a2.js +861 -0
- package/dist/iife/engine.v1.2b5bb43b.js +3 -3
- package/dist/iife/engine.v1.3b09dc20.js +3 -3
- package/dist/iife/engine.v1.56074e5a.js +769 -0
- package/dist/iife/engine.v1.61c10e6c.js +770 -0
- package/dist/iife/engine.v1.773fc15d.js +2 -2
- package/dist/iife/engine.v1.80d2230f.js +3 -3
- package/dist/iife/engine.v1.940ba9ea.js +764 -0
- package/dist/iife/engine.v1.99a33ee2.js +767 -0
- package/dist/iife/engine.v1.9ca6b7ec.js +3 -3
- package/dist/iife/engine.v1.a1f7dea2.js +764 -0
- package/dist/iife/engine.v1.bc9c0b5e.js +838 -0
- package/dist/iife/engine.v1.c0c00bd0.js +3 -3
- package/dist/iife/engine.v1.c127656e.js +820 -0
- package/dist/iife/engine.v1.c54c9a1a.js +3 -3
- package/dist/iife/engine.v1.d1052e81.js +3 -3
- package/dist/iife/engine.v1.ec035c58.js +782 -0
- package/dist/iife/engine.v1.f6d23a0f.js +770 -0
- package/dist/iife/engine.v1.js +116 -25
- package/dist/iife/loader.v1.js +9 -1
- package/dist/iife/plu.v1.cc853a2d.js +458 -0
- package/dist/iife/plu.v1.js +458 -0
- package/dist/iife/signalement.v1.d321dfde.js +518 -0
- package/dist/iife/signalement.v1.js +518 -0
- package/dist/iife/ui.v1.00abf020.js +895 -0
- package/dist/iife/ui.v1.0caedc90.js +1018 -0
- package/dist/iife/ui.v1.0ccf99d5.js +997 -0
- package/dist/iife/ui.v1.11a41f0d.js +1007 -0
- package/dist/iife/ui.v1.12986798.js +962 -0
- package/dist/iife/ui.v1.15b2cd71.js +986 -0
- package/dist/iife/ui.v1.163772e6.js +962 -0
- package/dist/iife/ui.v1.3a1d08a0.js +1007 -0
- package/dist/iife/ui.v1.3c0cf4da.js +947 -0
- package/dist/iife/ui.v1.3fcff562.js +997 -0
- package/dist/iife/ui.v1.44616ccb.js +986 -0
- package/dist/iife/ui.v1.4e202266.js +1007 -0
- package/dist/iife/ui.v1.6becaa84.js +895 -0
- package/dist/iife/ui.v1.6c9e4995.js +895 -0
- package/dist/iife/ui.v1.7432d2af.js +995 -0
- package/dist/iife/ui.v1.84d77387.js +1003 -0
- package/dist/iife/ui.v1.857a0e8b.js +986 -0
- package/dist/iife/ui.v1.88bf5494.js +898 -0
- package/dist/iife/ui.v1.89fbfdd9.js +963 -0
- package/dist/iife/ui.v1.a588a766.js +997 -0
- package/dist/iife/ui.v1.a8cfe724.js +900 -0
- package/dist/iife/ui.v1.cd72e7c3.js +1006 -0
- package/dist/iife/ui.v1.e007c7c4.js +926 -0
- package/dist/iife/ui.v1.e24ba2bd.js +903 -0
- package/dist/iife/ui.v1.e8703c6d.js +1006 -0
- package/dist/iife/ui.v1.f1d8e998.js +903 -0
- package/dist/iife/ui.v1.f6857351.js +995 -0
- package/dist/iife/ui.v1.fc52b520.js +895 -0
- package/dist/iife/ui.v1.js +145 -86
- package/dist/iife/widget-manifest.json +5 -3
- package/package.json +3 -1
package/dist/iife/engine.v1.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
var WidgetUIManager = runtime.WidgetUIManager, WidgetAudioManager = runtime.WidgetAudioManager;
|
|
11
11
|
var EventBus = runtime.EventBus, CONTAINER_ID = runtime.constants.CONTAINER_ID;
|
|
12
12
|
var MASCOT_SPECS = JSON.parse('[["mascotSecondaryColor","mascot_secondary_color","data-mascot-secondary-color","#68b1d6"],["mascotSecondaryDarkColor","mascot_secondary_dark_color","data-mascot-secondary-dark-color","#1472a8"],["mascotGoldColor","mascot_gold_color","data-mascot-gold-color","#ffd22e"],["mascotEyeColor","mascot_eye_color","data-mascot-eye-color","#040402"],["mascotBeakColor","mascot_beak_color","data-mascot-beak-color","#ab5f30"],["mascotClawColor","mascot_claw_color","data-mascot-claw-color","#ab5f30"],["mascotNeutralColor","mascot_neutral_color","data-mascot-neutral-color","#e6e6e6"],["mascotBrowColor","mascot_brow_color","data-mascot-brow-color","#3e3e3e"]]');
|
|
13
|
-
var CONFIG_STRING_ATTRS = JSON.parse('[["tenantId","data-tenant-id",""],["widgetKey","data-widget-key",""],["apiBaseUrl","data-api-base-url",""],["widgetOrigin","data-widget-origin",""],["bootstrapEndpoint","data-bootstrap-endpoint",""],["configEndpoint","data-config-endpoint",""],["sessionBootstrapToken","data-session-bootstrap-token",""],["sessionBootstrapTokenExpiresAt","data-session-bootstrap-token-expires-at",""],["chatSessionEndpoint","data-chat-session-endpoint","/v1/occe/chat/sessions"],["chatMessageTemplate","data-chat-message-template","/v1/occe/chat/sessions/{session_id}/messages"],["chatStreamTemplate","data-chat-stream-template","/v1/occe/chat/sessions/{session_id}/stream"],["chatAudioSessionTemplate","data-chat-audio-session-template","/v1/occe/chat/sessions/{session_id}/audio/session"],["chatAudioChunkTemplate","data-chat-audio-chunk-template","/v1/occe/chat/sessions/{session_id}/audio/chunk"],["chatAudioCloseTemplate","data-chat-audio-close-template","/v1/occe/chat/sessions/{session_id}/audio/close"],["chatAudioStreamTemplate","data-chat-audio-stream-template","/v1/occe/chat/sessions/{session_id}/audio/stream"],["panelWidth","data-panel-width","420"],["panelHeight","data-panel-height","640"],["panelMaxHeightVh","data-panel-max-height-vh","85"],["mascotUrl","data-mascot-url",""],["welcomeMessage","data-welcome-message","Bonjour ! Comment puis-je vous aider ?"],["disclaimerText","data-disclaimer-text","
|
|
13
|
+
var CONFIG_STRING_ATTRS = JSON.parse('[["tenantId","data-tenant-id",""],["widgetKey","data-widget-key",""],["apiBaseUrl","data-api-base-url",""],["widgetOrigin","data-widget-origin",""],["bootstrapEndpoint","data-bootstrap-endpoint",""],["configEndpoint","data-config-endpoint",""],["sessionBootstrapToken","data-session-bootstrap-token",""],["sessionBootstrapTokenExpiresAt","data-session-bootstrap-token-expires-at",""],["chatSessionEndpoint","data-chat-session-endpoint","/v1/occe/chat/sessions"],["chatMessageTemplate","data-chat-message-template","/v1/occe/chat/sessions/{session_id}/messages"],["chatStreamTemplate","data-chat-stream-template","/v1/occe/chat/sessions/{session_id}/stream"],["chatAudioSessionTemplate","data-chat-audio-session-template","/v1/occe/chat/sessions/{session_id}/audio/session"],["chatAudioChunkTemplate","data-chat-audio-chunk-template","/v1/occe/chat/sessions/{session_id}/audio/chunk"],["chatAudioCloseTemplate","data-chat-audio-close-template","/v1/occe/chat/sessions/{session_id}/audio/close"],["chatAudioStreamTemplate","data-chat-audio-stream-template","/v1/occe/chat/sessions/{session_id}/audio/stream"],["panelWidth","data-panel-width","420"],["panelHeight","data-panel-height","640"],["panelMaxHeightVh","data-panel-max-height-vh","85"],["mascotUrl","data-mascot-url",""],["welcomeMessage","data-welcome-message","Bonjour ! Comment puis-je vous aider ?"],["disclaimerText","data-disclaimer-text","Les r\u00e9ponses g\u00e9n\u00e9r\u00e9es par IA ne constituent pas une d\u00e9cision administrative officielle."],["transparencyText","data-transparency-text","Propuls\u00e9 par Ourlu \u00b7 IA locale et transparente."]]');
|
|
14
14
|
var RUNTIME_ENDPOINT_SPECS = JSON.parse('[["chatSessionEndpoint","chat_session_endpoint","/v1/occe/chat/sessions"],["chatMessageTemplate","chat_message_template","/v1/occe/chat/sessions/{session_id}/messages"],["chatStreamTemplate","chat_stream_template","/v1/occe/chat/sessions/{session_id}/stream"],["chatAudioSessionTemplate","chat_audio_session_template","/v1/occe/chat/sessions/{session_id}/audio/session"],["chatAudioChunkTemplate","chat_audio_chunk_template","/v1/occe/chat/sessions/{session_id}/audio/chunk"],["chatAudioCloseTemplate","chat_audio_close_template","/v1/occe/chat/sessions/{session_id}/audio/close"],["chatAudioStreamTemplate","chat_audio_stream_template","/v1/occe/chat/sessions/{session_id}/audio/stream"]]');
|
|
15
15
|
function applyMascotLabelColors(config, labels) {
|
|
16
16
|
MASCOT_SPECS.forEach(function(spec) {
|
|
@@ -51,6 +51,12 @@ function normalizeHexColor(rawValue, fallbackColor) {
|
|
|
51
51
|
var normalized = String(rawValue || "").trim().toLowerCase();
|
|
52
52
|
return /^#[0-9a-f]{6}$/.test(normalized) ? normalized : fallbackColor;
|
|
53
53
|
}
|
|
54
|
+
function normalizeLabelBool(rawValue, fallbackValue) {
|
|
55
|
+
var normalized = String(rawValue || "").trim().toLowerCase();
|
|
56
|
+
if (normalized === "true") return true;
|
|
57
|
+
if (normalized === "false") return false;
|
|
58
|
+
return Boolean(fallbackValue);
|
|
59
|
+
}
|
|
54
60
|
function normalizePosition(rawValue, fallbackValue) {
|
|
55
61
|
var normalized = String(rawValue || "").trim().toLowerCase();
|
|
56
62
|
return normalized === "bottom-left" || normalized === "bottom-right" ? normalized : fallbackValue;
|
|
@@ -129,6 +135,18 @@ function applyThemeConfigToRuntime(config, rawWidgetConfig) {
|
|
|
129
135
|
config.panelBackgroundColor = normalizeHexColor(labels.panel_background_color, config.panelBackgroundColor || "#ffffff");
|
|
130
136
|
config.panelBackgroundAlpha = clampNumericString(labels.panel_background_alpha, config.panelBackgroundAlpha || "1", 0, 1, false);
|
|
131
137
|
config.panelBorderRadius = clampNumericString(labels.panel_border_radius, config.panelBorderRadius || "16", 0, 32, true);
|
|
138
|
+
config.headerGradientEnabled = normalizeLabelBool(labels.header_gradient_enabled, config.headerGradientEnabled !== false);
|
|
139
|
+
config.headerGradientColor2Auto = normalizeLabelBool(labels.header_gradient_color2_auto, config.headerGradientColor2Auto !== false);
|
|
140
|
+
config.headerGradientColor2 = normalizeHexColor(labels.header_gradient_color2, config.headerGradientColor2 || "#0047b3");
|
|
141
|
+
config.userBubbleColor = normalizeHexColor(labels.user_bubble_color, config.userBubbleColor || "");
|
|
142
|
+
config.userBubbleGradientEnabled = normalizeLabelBool(labels.user_bubble_gradient_enabled, config.userBubbleGradientEnabled === true);
|
|
143
|
+
config.userBubbleGradientColor2Auto = normalizeLabelBool(labels.user_bubble_gradient_color2_auto, config.userBubbleGradientColor2Auto !== false);
|
|
144
|
+
config.userBubbleGradientColor2 = normalizeHexColor(labels.user_bubble_gradient_color2, config.userBubbleGradientColor2 || "");
|
|
145
|
+
config.assistantBubbleColor = normalizeHexColor(labels.assistant_bubble_color, config.assistantBubbleColor || "#f0f4f8");
|
|
146
|
+
config.assistantBubbleTextColor = normalizeHexColor(labels.assistant_bubble_text_color, config.assistantBubbleTextColor || "#1a1a2e");
|
|
147
|
+
config.assistantBubbleGradientEnabled = normalizeLabelBool(labels.assistant_bubble_gradient_enabled, config.assistantBubbleGradientEnabled === true);
|
|
148
|
+
config.assistantBubbleGradientColor2Auto = normalizeLabelBool(labels.assistant_bubble_gradient_color2_auto, config.assistantBubbleGradientColor2Auto !== false);
|
|
149
|
+
config.assistantBubbleGradientColor2 = normalizeHexColor(labels.assistant_bubble_gradient_color2, config.assistantBubbleGradientColor2 || "");
|
|
132
150
|
applyMascotLabelColors(config, labels);
|
|
133
151
|
var candidateVersion = normalizeThemeVersion(rawWidgetConfig.theme_updated_at);
|
|
134
152
|
if (candidateVersion > 0) config.themeVersion = candidateVersion;
|
|
@@ -147,9 +165,9 @@ function applyWidgetTextConfig(config, widgetConfig) {
|
|
|
147
165
|
}
|
|
148
166
|
var TURNSTILE_SCRIPT_URL = "https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit";
|
|
149
167
|
var TURNSTILE_CONTAINER_ID = "__ourlu_turnstile_container";
|
|
150
|
-
var TURNSTILE_LOAD_TIMEOUT_MS =
|
|
151
|
-
var TURNSTILE_CHALLENGE_TIMEOUT_MS =
|
|
152
|
-
var TURNSTILE_TOKEN_TTL_MS =
|
|
168
|
+
var TURNSTILE_LOAD_TIMEOUT_MS = 15000;
|
|
169
|
+
var TURNSTILE_CHALLENGE_TIMEOUT_MS = 120000;
|
|
170
|
+
var TURNSTILE_TOKEN_TTL_MS = 280000;
|
|
153
171
|
function TurnstileChallengeManager(siteKey) {
|
|
154
172
|
this.siteKey = String(siteKey || "").trim();
|
|
155
173
|
this.scriptLoaded = false;
|
|
@@ -159,7 +177,7 @@ function TurnstileChallengeManager(siteKey) {
|
|
|
159
177
|
this.cachedTokenTimestamp = 0;
|
|
160
178
|
}
|
|
161
179
|
Object.assign(TurnstileChallengeManager.prototype, {
|
|
162
|
-
isEnabled: function() { return
|
|
180
|
+
isEnabled: function() { return false; /* TURNSTILE_DISABLED_FOR_DEV */ },
|
|
163
181
|
loadScript: function() {
|
|
164
182
|
if (this.scriptLoaded) return Promise.resolve();
|
|
165
183
|
if (this.scriptLoadPromise) return this.scriptLoadPromise;
|
|
@@ -228,6 +246,7 @@ Object.assign(TurnstileChallengeManager.prototype, {
|
|
|
228
246
|
return Boolean(this.cachedToken) && (Date.now() - this.cachedTokenTimestamp) < TURNSTILE_TOKEN_TTL_MS;
|
|
229
247
|
},
|
|
230
248
|
execute: async function() {
|
|
249
|
+
return ""; /* TURNSTILE_DISABLED_FOR_DEV */
|
|
231
250
|
if (!this.isEnabled()) return "";
|
|
232
251
|
if (this.isCachedTokenValid()) return this.cachedToken;
|
|
233
252
|
await this.loadScript();
|
|
@@ -314,11 +333,7 @@ Object.assign(WidgetApiManager.prototype, {
|
|
|
314
333
|
applyRuntimeConfig: function(payload, sourceLabel) {
|
|
315
334
|
var runtimeConfig = payload && payload.runtime_config ? payload.runtime_config : {};
|
|
316
335
|
assignRuntimeEndpoints(this.config, runtimeConfig);
|
|
317
|
-
|
|
318
|
-
if (incomingTurnstileKey && !this.config.turnstileSiteKey) {
|
|
319
|
-
this.config.turnstileSiteKey = incomingTurnstileKey;
|
|
320
|
-
if (!this.turnstile) this.turnstile = new TurnstileChallengeManager(incomingTurnstileKey);
|
|
321
|
-
}
|
|
336
|
+
/* TURNSTILE_DISABLED_FOR_DEV — skip dynamic Turnstile instantiation */
|
|
322
337
|
var widgetConfig = payload && payload.widget_config ? payload.widget_config : null;
|
|
323
338
|
if (!widgetConfig) return;
|
|
324
339
|
var currentThemeVersion = normalizeThemeVersion(this.config.themeVersion);
|
|
@@ -463,7 +478,7 @@ Object.assign(WidgetApiManager.prototype, {
|
|
|
463
478
|
});
|
|
464
479
|
var payload = await response.json();
|
|
465
480
|
var sessionId = payload.session_id || payload.id || "";
|
|
466
|
-
if (!sessionId) throw new Error("
|
|
481
|
+
if (!sessionId) throw new Error("Identifiant de session introuvable.");
|
|
467
482
|
self.state.sessionId = sessionId;
|
|
468
483
|
self.state.sessionPromise = null;
|
|
469
484
|
self.events.emit("ready", payload || {});
|
|
@@ -542,6 +557,8 @@ Object.assign(WidgetApiManager.prototype, {
|
|
|
542
557
|
if (eventName === "final" && callbacks.onFinal) callbacks.onFinal(payload);
|
|
543
558
|
if (eventName === "done" && callbacks.onDone) callbacks.onDone(payload);
|
|
544
559
|
if (eventName === "error" && callbacks.onError) callbacks.onError(payload.message || "Erreur de streaming");
|
|
560
|
+
if (eventName === "module_signalement" && callbacks.onModuleSignalement) callbacks.onModuleSignalement(payload);
|
|
561
|
+
if (eventName === "module_plu" && callbacks.onModulePlu) callbacks.onModulePlu(payload);
|
|
545
562
|
if (eventName === "transcription_draft_delta" && callbacks.onDelta) callbacks.onDelta(payload);
|
|
546
563
|
if (eventName === "transcription_draft_complete" && callbacks.onComplete) callbacks.onComplete(payload);
|
|
547
564
|
if (eventName === "transcription_draft_error" && callbacks.onError) callbacks.onError(payload);
|
|
@@ -573,24 +590,22 @@ Object.assign(WidgetApiManager.prototype, {
|
|
|
573
590
|
if (requestOptions) Object.assign(options, requestOptions);
|
|
574
591
|
return options;
|
|
575
592
|
}, sessionId);
|
|
576
|
-
if (!response.body) throw new Error("
|
|
593
|
+
if (!response.body) throw new Error("Le flux de réponse est indisponible.");
|
|
577
594
|
return this.consumeSSE(response.body.getReader(), callbacks, allowedEvents);
|
|
578
595
|
},
|
|
579
596
|
streamSession: async function(sessionId, callbacks) {
|
|
580
|
-
return this.openEventStream("stream_session", this.config.chatStreamTemplate, sessionId, callbacks, ["token", "final", "error", "done"]);
|
|
597
|
+
return this.openEventStream("stream_session", this.config.chatStreamTemplate, sessionId, callbacks, ["token", "final", "error", "done", "module_signalement", "module_plu"]);
|
|
581
598
|
},
|
|
582
599
|
streamAudioDraft: async function(sessionId, callbacks) {
|
|
583
600
|
var self = this;
|
|
584
601
|
var controller = new AbortController();
|
|
585
|
-
var
|
|
586
|
-
"
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
["transcription_draft_delta", "transcription_draft_complete", "transcription_draft_error"]
|
|
591
|
-
|
|
592
|
-
);
|
|
593
|
-
streamPromise.catch(function(error) {
|
|
602
|
+
var response = await this.fetchWithBootstrapRetry("audio_stream", this.config.chatAudioStreamTemplate, function() {
|
|
603
|
+
return { method: "GET", headers: self.buildHeaders(), signal: controller.signal };
|
|
604
|
+
}, sessionId);
|
|
605
|
+
if (!response.body) throw new Error("Le flux de réponse est indisponible.");
|
|
606
|
+
var consumePromise = this.consumeSSE(response.body.getReader(), callbacks,
|
|
607
|
+
["transcription_draft_delta", "transcription_draft_complete", "transcription_draft_error"]);
|
|
608
|
+
consumePromise.catch(function(error) {
|
|
594
609
|
if (self.isExpectedStreamAbortError(error)) return;
|
|
595
610
|
if (callbacks.onTransportError) callbacks.onTransportError(error.message || "Erreur stream audio");
|
|
596
611
|
});
|
|
@@ -668,11 +683,24 @@ function mountFromScript(scriptTag) {
|
|
|
668
683
|
var state = { open: false, sessionId: "", token: config.sessionBootstrapToken || "", sending: false, listening: false, bootstrapPromise: null, sessionPromise: null };
|
|
669
684
|
var ui = new WidgetUIManager(config);
|
|
670
685
|
if (!ui.mount()) return;
|
|
671
|
-
var turnstile =
|
|
686
|
+
var turnstile = null; /* TURNSTILE_DISABLED_FOR_DEV */
|
|
672
687
|
var api = new WidgetApiManager(config, state, events, ui, turnstile);
|
|
673
688
|
var audio = new WidgetAudioManager(state, api, ui);
|
|
674
689
|
if (!audio.isSupported()) ui.micButton.style.display = "none";
|
|
675
690
|
api.hydrateTheme().catch(function() {});
|
|
691
|
+
|
|
692
|
+
var signalementModule = null;
|
|
693
|
+
var SignalementModuleManager = runtime.SignalementModuleManager;
|
|
694
|
+
if (SignalementModuleManager) {
|
|
695
|
+
signalementModule = new SignalementModuleManager(ui.getRoot(), events, api, ui);
|
|
696
|
+
signalementModule.mount(ui.getPanel(), ui.getHeader());
|
|
697
|
+
}
|
|
698
|
+
var pluModule = null;
|
|
699
|
+
var PluModuleManager = runtime.PluModuleManager;
|
|
700
|
+
if (PluModuleManager) {
|
|
701
|
+
pluModule = new PluModuleManager(ui.getRoot(), events, api, ui);
|
|
702
|
+
pluModule.mount();
|
|
703
|
+
}
|
|
676
704
|
var mediaQueryList = null;
|
|
677
705
|
var handleHostThemeChange = null;
|
|
678
706
|
if (typeof window.matchMedia === "function") {
|
|
@@ -686,9 +714,50 @@ function mountFromScript(scriptTag) {
|
|
|
686
714
|
if (typeof mediaQueryList.addEventListener === "function") mediaQueryList.addEventListener("change", handleHostThemeChange);
|
|
687
715
|
else if (typeof mediaQueryList.addListener === "function") mediaQueryList.addListener(handleHostThemeChange);
|
|
688
716
|
}
|
|
717
|
+
var signalementActive = false;
|
|
718
|
+
var pluActive = false;
|
|
719
|
+
|
|
720
|
+
if (signalementModule) {
|
|
721
|
+
events.on("module:signalement:open", function() { signalementActive = true; });
|
|
722
|
+
events.on("module:signalement:closed", function() { signalementActive = false; });
|
|
723
|
+
events.on("module:signalement:submitted", function(result) {
|
|
724
|
+
signalementActive = false;
|
|
725
|
+
ui.addMessage("assistant", "");
|
|
726
|
+
var lastMsg = ui.messages.lastElementChild;
|
|
727
|
+
if (lastMsg) ui.setAssistantFinalText(lastMsg, "Merci, votre signalement a été transmis. Référence : **" + (result.signalement_id || "N/A") + "**");
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
if (pluModule) {
|
|
732
|
+
events.on("module:plu:open", function() { pluActive = true; });
|
|
733
|
+
events.on("module:plu:closed", function() { pluActive = false; });
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
async function handleSignalementSubmit() {
|
|
737
|
+
if (!signalementModule || !signalementActive) return;
|
|
738
|
+
state.sending = true;
|
|
739
|
+
ui.setComposerDisabled(true);
|
|
740
|
+
ui.showError("");
|
|
741
|
+
try {
|
|
742
|
+
await api.ensureSession();
|
|
743
|
+
await signalementModule.submit();
|
|
744
|
+
} catch (error) {
|
|
745
|
+
ui.showError((error && error.message) || "Erreur lors de l'envoi du signalement.");
|
|
746
|
+
} finally {
|
|
747
|
+
state.sending = false;
|
|
748
|
+
ui.setComposerDisabled(false);
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
|
|
689
752
|
async function handleSend(event) {
|
|
690
753
|
event.preventDefault();
|
|
691
754
|
if (state.sending || state.listening) return;
|
|
755
|
+
|
|
756
|
+
if (signalementActive && signalementModule) {
|
|
757
|
+
await handleSignalementSubmit();
|
|
758
|
+
return;
|
|
759
|
+
}
|
|
760
|
+
|
|
692
761
|
var message = ui.pullInput();
|
|
693
762
|
if (!message) return;
|
|
694
763
|
state.sending = true;
|
|
@@ -699,9 +768,32 @@ function mountFromScript(scriptTag) {
|
|
|
699
768
|
try {
|
|
700
769
|
var sessionId = await api.postMessage(message);
|
|
701
770
|
ui.startAssistantStream();
|
|
771
|
+
var pendingSignalementData = null;
|
|
772
|
+
var pendingPluData = null;
|
|
702
773
|
await api.streamSession(sessionId, {
|
|
703
774
|
onToken: function(token) { ui.appendAssistantToken(token); },
|
|
704
|
-
|
|
775
|
+
onModuleSignalement: function(payload) {
|
|
776
|
+
pendingSignalementData = payload || {};
|
|
777
|
+
},
|
|
778
|
+
onModulePlu: function(payload) {
|
|
779
|
+
pendingPluData = payload || {};
|
|
780
|
+
},
|
|
781
|
+
onFinal: function(payload) {
|
|
782
|
+
ui.finalizeAssistantMessage(payload.content || "");
|
|
783
|
+
var streamEl = ui.messages.lastElementChild;
|
|
784
|
+
var sigData = pendingSignalementData || (payload.module_signalement ? payload.module_signalement : null);
|
|
785
|
+
if (signalementModule && sigData) {
|
|
786
|
+
ui.injectSignalementButton(streamEl, function() {
|
|
787
|
+
signalementModule.open(sigData);
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
var pluData = pendingPluData || (payload.module_plu ? payload.module_plu : null);
|
|
791
|
+
if (pluModule && pluData) {
|
|
792
|
+
ui.injectPluButton(streamEl, function() {
|
|
793
|
+
pluModule.open();
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
},
|
|
705
797
|
onError: function(errorText) { ui.showError(errorText || "Erreur de streaming."); },
|
|
706
798
|
onDone: function() {}
|
|
707
799
|
});
|
|
@@ -754,7 +846,6 @@ function mountFromScript(scriptTag) {
|
|
|
754
846
|
if (typeof mediaQueryList.removeEventListener === "function") mediaQueryList.removeEventListener("change", handleHostThemeChange);
|
|
755
847
|
else if (typeof mediaQueryList.removeListener === "function") mediaQueryList.removeListener(handleHostThemeChange);
|
|
756
848
|
}
|
|
757
|
-
if (audio.stopDraftStream) audio.stopDraftStream();
|
|
758
849
|
audio.cleanupMedia();
|
|
759
850
|
if (ui.host && ui.host.parentNode) ui.host.parentNode.removeChild(ui.host);
|
|
760
851
|
}, on: function(eventName, handler) { events.on(eventName, handler); } };
|
package/dist/iife/loader.v1.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
"use strict";
|
|
3
|
-
var __WIDGET_MANIFEST__ = {"ui.v1.js":"ui.v1.
|
|
3
|
+
var __WIDGET_MANIFEST__ = {"ui.v1.js":"ui.v1.0caedc90.js","audio.v1.js":"audio.v1.20858b08.js","signalement.v1.js":"signalement.v1.d321dfde.js","plu.v1.js":"plu.v1.cc853a2d.js","engine.v1.js":"engine.v1.19c589a2.js"};
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var RUNTIME_NS = "__OurluWidgetRuntimeV1";
|
|
@@ -45,14 +45,22 @@
|
|
|
45
45
|
if (!window[RUNTIME_FLAG]) {
|
|
46
46
|
var uiFileName = resolveManifestFileName("ui.v1.js");
|
|
47
47
|
var audioFileName = resolveManifestFileName("audio.v1.js");
|
|
48
|
+
var signalementFileName = resolveManifestFileName("signalement.v1.js");
|
|
49
|
+
var pluFileName = resolveManifestFileName("plu.v1.js");
|
|
48
50
|
var engineFileName = resolveManifestFileName("engine.v1.js");
|
|
49
51
|
|
|
50
52
|
var uiRuntimeUrl = scriptTag.getAttribute("data-runtime-ui-url") || buildApiRuntimeAssetUrl(scriptTag, uiFileName);
|
|
51
53
|
var audioRuntimeUrl = scriptTag.getAttribute("data-runtime-audio-url") || buildApiRuntimeAssetUrl(scriptTag, audioFileName);
|
|
54
|
+
var signalementRuntimeUrl = scriptTag.getAttribute("data-runtime-signalement-url") || buildApiRuntimeAssetUrl(scriptTag, signalementFileName);
|
|
55
|
+
var pluRuntimeUrl = scriptTag.getAttribute("data-runtime-plu-url") || buildApiRuntimeAssetUrl(scriptTag, pluFileName);
|
|
52
56
|
var engineRuntimeUrl = scriptTag.getAttribute("data-runtime-engine-url") || buildApiRuntimeAssetUrl(scriptTag, engineFileName);
|
|
53
57
|
|
|
54
58
|
window[RUNTIME_FLAG] = loadScript(uiRuntimeUrl).then(function() {
|
|
55
59
|
return loadScript(audioRuntimeUrl);
|
|
60
|
+
}).then(function() {
|
|
61
|
+
return loadScript(signalementRuntimeUrl);
|
|
62
|
+
}).then(function() {
|
|
63
|
+
return loadScript(pluRuntimeUrl);
|
|
56
64
|
}).then(function() {
|
|
57
65
|
return loadScript(engineRuntimeUrl);
|
|
58
66
|
});
|