@primexperts.co/pulse-agent 1.0.7 → 1.0.9
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
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Embeddable floating Pulse chat widget for client websites.
|
|
4
4
|
|
|
5
|
+
## Documentation
|
|
6
|
+
|
|
7
|
+
- Full implementation guide: `docs/IMPLEMENTATION-GUIDE.md`
|
|
8
|
+
- FAQ: `docs/FAQ.md`
|
|
9
|
+
- Troubleshooting: `docs/TROUBLESHOOTING.md`
|
|
10
|
+
- Changelog: `docs/CHANGELOG.md`
|
|
11
|
+
|
|
5
12
|
## Install
|
|
6
13
|
|
|
7
14
|
```bash
|
|
@@ -65,7 +72,7 @@ Returns `PulseAgentHandle`:
|
|
|
65
72
|
|
|
66
73
|
- This package is framework-agnostic and browser-only.
|
|
67
74
|
- No dashboard/auth code is included in this project.
|
|
68
|
-
- If widget keys
|
|
75
|
+
- If widget keys cannot be resolved, the chat shows an error message and retries resolution on the next send attempt.
|
|
69
76
|
- `npm run build` now outputs:
|
|
70
77
|
- ESM + type declarations in `dist/`
|
|
71
78
|
- browser global bundle in `dist/browser/pulse-agent.global.js`
|
|
@@ -15,10 +15,6 @@ function createPulseAgent(options) {
|
|
|
15
15
|
const panel = root.querySelector('[data-role="panel"]');
|
|
16
16
|
const closeBtn = root.querySelector('[data-role="close"]');
|
|
17
17
|
const log = root.querySelector('[data-role="log"]');
|
|
18
|
-
const setupGate = root.querySelector('[data-role="setup-gate"]');
|
|
19
|
-
const setupText = root.querySelector('[data-role="setup-text"]');
|
|
20
|
-
const setupKeyInput = root.querySelector('[data-role="setup-key"]');
|
|
21
|
-
const setupApplyBtn = root.querySelector('[data-role="setup-apply"]');
|
|
22
18
|
const prechat = root.querySelector('[data-role="prechat"]');
|
|
23
19
|
const nameInput = root.querySelector('[data-role="name"]');
|
|
24
20
|
const emailInput = root.querySelector('[data-role="email"]');
|
|
@@ -26,9 +22,6 @@ function createPulseAgent(options) {
|
|
|
26
22
|
const textarea = root.querySelector('[data-role="message"]');
|
|
27
23
|
const sendBtn = root.querySelector('[data-role="send"]');
|
|
28
24
|
pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
|
|
29
|
-
setupApplyBtn.addEventListener('click', () => {
|
|
30
|
-
applyManualWidgetToken(state, log, setupGate, textarea, sendBtn, setupKeyInput);
|
|
31
|
-
});
|
|
32
25
|
button.addEventListener('click', () => toggle(panel, state));
|
|
33
26
|
closeBtn.addEventListener('click', () => close(panel, state));
|
|
34
27
|
continueBtn.addEventListener('click', () => {
|
|
@@ -39,6 +32,7 @@ function createPulseAgent(options) {
|
|
|
39
32
|
return;
|
|
40
33
|
}
|
|
41
34
|
state.profile = { name, email };
|
|
35
|
+
persistSession(state);
|
|
42
36
|
prechat.classList.add('hidden');
|
|
43
37
|
});
|
|
44
38
|
sendBtn.addEventListener('click', async () => {
|
|
@@ -46,16 +40,12 @@ function createPulseAgent(options) {
|
|
|
46
40
|
if (!text || state.sending) {
|
|
47
41
|
return;
|
|
48
42
|
}
|
|
49
|
-
if (state.setupRequired) {
|
|
50
|
-
pushMessage(state, log, { role: 'system', content: state.setupMessage || 'Complete setup first.' });
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
43
|
if (state.options.requireProfile !== false && !state.profile) {
|
|
54
44
|
pushMessage(state, log, { role: 'system', content: 'Complete profile first.' });
|
|
55
45
|
return;
|
|
56
46
|
}
|
|
57
47
|
if (!state.widgetToken) {
|
|
58
|
-
await resolveWidgetToken(state, log
|
|
48
|
+
await resolveWidgetToken(state, log);
|
|
59
49
|
if (!state.widgetToken) {
|
|
60
50
|
return;
|
|
61
51
|
}
|
|
@@ -65,9 +55,10 @@ function createPulseAgent(options) {
|
|
|
65
55
|
pushMessage(state, log, { role: 'visitor', content: text });
|
|
66
56
|
textarea.value = '';
|
|
67
57
|
try {
|
|
58
|
+
const clientSessionId = ensureClientSessionId(state);
|
|
68
59
|
const payload = state.profile
|
|
69
|
-
? { message: text, name: state.profile.name, email: state.profile.email }
|
|
70
|
-
: { message: text };
|
|
60
|
+
? { message: text, name: state.profile.name, email: state.profile.email, conversationId: state.conversationId, clientSessionId }
|
|
61
|
+
: { message: text, conversationId: state.conversationId, clientSessionId };
|
|
71
62
|
const res = await fetch(`${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/message`, {
|
|
72
63
|
method: 'POST',
|
|
73
64
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -83,6 +74,7 @@ function createPulseAgent(options) {
|
|
|
83
74
|
}
|
|
84
75
|
else if (!state.conversationId) {
|
|
85
76
|
state.conversationId = conversationId;
|
|
77
|
+
persistSession(state);
|
|
86
78
|
connectStream(state, log);
|
|
87
79
|
}
|
|
88
80
|
}
|
|
@@ -95,7 +87,10 @@ function createPulseAgent(options) {
|
|
|
95
87
|
sendBtn.disabled = false;
|
|
96
88
|
}
|
|
97
89
|
});
|
|
98
|
-
resolveWidgetToken(state, log
|
|
90
|
+
resolveWidgetToken(state, log).then(() => {
|
|
91
|
+
if (state.conversationId) {
|
|
92
|
+
connectStream(state, log);
|
|
93
|
+
}
|
|
99
94
|
if (state.options.autoOpen) {
|
|
100
95
|
open(panel, state);
|
|
101
96
|
}
|
|
@@ -116,7 +111,7 @@ function createPulseAgent(options) {
|
|
|
116
111
|
state.options = normalizeOptions({ ...state.options, ...partial });
|
|
117
112
|
if (partial.widgetToken) {
|
|
118
113
|
state.widgetToken = partial.widgetToken.trim();
|
|
119
|
-
|
|
114
|
+
persistSession(state);
|
|
120
115
|
}
|
|
121
116
|
}
|
|
122
117
|
};
|
|
@@ -131,11 +126,6 @@ function template(title) {
|
|
|
131
126
|
</header>
|
|
132
127
|
<div class="pulse-agent-log" data-role="log"></div>
|
|
133
128
|
<div class="pulse-agent-compose">
|
|
134
|
-
<div class="pulse-agent-setup hidden" data-role="setup-gate">
|
|
135
|
-
<p data-role="setup-text">Setup is required before chat can start.</p>
|
|
136
|
-
<input data-role="setup-key" type="text" placeholder="Paste organization key" />
|
|
137
|
-
<button data-role="setup-apply" type="button">Use Organization Key</button>
|
|
138
|
-
</div>
|
|
139
129
|
<div class="pulse-agent-prechat" data-role="prechat">
|
|
140
130
|
<input data-role="name" type="text" placeholder="Your name" />
|
|
141
131
|
<input data-role="email" type="email" placeholder="Work email" />
|
|
@@ -165,9 +155,6 @@ function ensureStyle() {
|
|
|
165
155
|
.pulse-agent-bubble.agent { justify-self: start; background: #e2e8f0; color: #111827; }
|
|
166
156
|
.pulse-agent-bubble.system { justify-self: center; background: #fef9c3; color: #854d0e; }
|
|
167
157
|
.pulse-agent-compose { border-top: 1px solid #dbe2ea; padding: 10px; display: grid; gap: 8px; }
|
|
168
|
-
.pulse-agent-setup { display: grid; gap: 6px; border: 1px solid #facc15; border-radius: 10px; background: #fffbeb; padding: 10px; }
|
|
169
|
-
.pulse-agent-setup.hidden { display: none; }
|
|
170
|
-
.pulse-agent-setup p { margin: 0; color: #854d0e; font-size: 13px; }
|
|
171
158
|
.pulse-agent-prechat { display: grid; gap: 6px; }
|
|
172
159
|
.pulse-agent-prechat.hidden { display: none; }
|
|
173
160
|
.pulse-agent-compose textarea, .pulse-agent-prechat input { width: 100%; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 8px; padding: 8px; font: inherit; }
|
|
@@ -177,17 +164,17 @@ function ensureStyle() {
|
|
|
177
164
|
}
|
|
178
165
|
function createState(options) {
|
|
179
166
|
const normalized = normalizeOptions(options);
|
|
167
|
+
const persisted = loadPersistedSession(normalized.slug);
|
|
180
168
|
return {
|
|
181
169
|
options: normalized,
|
|
182
|
-
widgetToken: normalized.widgetToken?.trim() || null,
|
|
183
|
-
profile: null,
|
|
184
|
-
conversationId: null,
|
|
170
|
+
widgetToken: normalized.widgetToken?.trim() || persisted.widgetToken?.trim() || null,
|
|
171
|
+
profile: persisted.profile ?? null,
|
|
172
|
+
conversationId: persisted.conversationId?.trim() || null,
|
|
173
|
+
clientSessionId: persisted.clientSessionId?.trim() || null,
|
|
185
174
|
stream: null,
|
|
186
175
|
messages: [],
|
|
187
176
|
opened: false,
|
|
188
|
-
sending: false
|
|
189
|
-
setupRequired: false,
|
|
190
|
-
setupMessage: ''
|
|
177
|
+
sending: false
|
|
191
178
|
};
|
|
192
179
|
}
|
|
193
180
|
function normalizeOptions(options) {
|
|
@@ -217,9 +204,8 @@ function resolveMount(mount) {
|
|
|
217
204
|
}
|
|
218
205
|
return mount;
|
|
219
206
|
}
|
|
220
|
-
async function resolveWidgetToken(state, log
|
|
207
|
+
async function resolveWidgetToken(state, log) {
|
|
221
208
|
if (state.widgetToken) {
|
|
222
|
-
clearSetupRequired(state, setupGate, textarea, sendBtn);
|
|
223
209
|
return;
|
|
224
210
|
}
|
|
225
211
|
try {
|
|
@@ -236,41 +222,14 @@ async function resolveWidgetToken(state, log, setupGate, setupText, textarea, se
|
|
|
236
222
|
}
|
|
237
223
|
const body = (await res.json());
|
|
238
224
|
state.widgetToken = body.widgetToken;
|
|
239
|
-
|
|
225
|
+
persistSession(state);
|
|
240
226
|
pushMessage(state, log, { role: 'system', content: `Connected to ${body.organizationName}.` });
|
|
241
227
|
}
|
|
242
228
|
catch (error) {
|
|
243
229
|
const message = error instanceof Error ? error.message : 'Failed to resolve widget token.';
|
|
244
|
-
setSetupRequired(state, setupGate, setupText, textarea, sendBtn, message);
|
|
245
230
|
pushMessage(state, log, { role: 'system', content: message });
|
|
246
231
|
}
|
|
247
232
|
}
|
|
248
|
-
function setSetupRequired(state, setupGate, setupText, textarea, sendBtn, message) {
|
|
249
|
-
state.setupRequired = true;
|
|
250
|
-
state.setupMessage = message;
|
|
251
|
-
setupText.textContent = `${message} Paste your organization key to continue.`;
|
|
252
|
-
setupGate.classList.remove('hidden');
|
|
253
|
-
textarea.disabled = true;
|
|
254
|
-
sendBtn.disabled = true;
|
|
255
|
-
}
|
|
256
|
-
function clearSetupRequired(state, setupGate, textarea, sendBtn) {
|
|
257
|
-
state.setupRequired = false;
|
|
258
|
-
state.setupMessage = '';
|
|
259
|
-
setupGate.classList.add('hidden');
|
|
260
|
-
textarea.disabled = false;
|
|
261
|
-
sendBtn.disabled = false;
|
|
262
|
-
}
|
|
263
|
-
function applyManualWidgetToken(state, log, setupGate, textarea, sendBtn, setupKeyInput) {
|
|
264
|
-
const token = setupKeyInput.value.trim();
|
|
265
|
-
if (!token) {
|
|
266
|
-
pushMessage(state, log, { role: 'system', content: 'Enter organization key before continuing.' });
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
state.widgetToken = token;
|
|
270
|
-
clearSetupRequired(state, setupGate, textarea, sendBtn);
|
|
271
|
-
setupKeyInput.value = '';
|
|
272
|
-
pushMessage(state, log, { role: 'system', content: 'Organization key applied. You can send a message now.' });
|
|
273
|
-
}
|
|
274
233
|
function connectStream(state, log) {
|
|
275
234
|
if (!state.widgetToken || !state.conversationId) {
|
|
276
235
|
return;
|
|
@@ -282,7 +241,9 @@ function connectStream(state, log) {
|
|
|
282
241
|
stream.onmessage = (event) => {
|
|
283
242
|
try {
|
|
284
243
|
const payload = JSON.parse(event.data);
|
|
285
|
-
|
|
244
|
+
const sender = payload.senderType?.trim().toUpperCase();
|
|
245
|
+
const isVisitorMessage = sender === 'VISITOR' || sender === 'CUSTOMER' || sender === 'CLIENT';
|
|
246
|
+
if (!isVisitorMessage && payload.content?.trim()) {
|
|
286
247
|
pushMessage(state, log, { role: 'agent', content: payload.content });
|
|
287
248
|
}
|
|
288
249
|
}
|
|
@@ -335,6 +296,49 @@ function escapeHtml(input) {
|
|
|
335
296
|
.replace(/"/g, '"')
|
|
336
297
|
.replace(/'/g, ''');
|
|
337
298
|
}
|
|
299
|
+
function getStorageKey(slug) {
|
|
300
|
+
return `pulse-agent-session:${slug.toLowerCase()}`;
|
|
301
|
+
}
|
|
302
|
+
function loadPersistedSession(slug) {
|
|
303
|
+
try {
|
|
304
|
+
if (typeof localStorage === 'undefined') {
|
|
305
|
+
return {};
|
|
306
|
+
}
|
|
307
|
+
const raw = localStorage.getItem(getStorageKey(slug));
|
|
308
|
+
if (!raw) {
|
|
309
|
+
return {};
|
|
310
|
+
}
|
|
311
|
+
const parsed = JSON.parse(raw);
|
|
312
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return {};
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
function persistSession(state) {
|
|
319
|
+
try {
|
|
320
|
+
if (typeof localStorage === 'undefined') {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const payload = {
|
|
324
|
+
widgetToken: state.widgetToken ?? undefined,
|
|
325
|
+
conversationId: state.conversationId ?? undefined,
|
|
326
|
+
clientSessionId: state.clientSessionId ?? undefined,
|
|
327
|
+
profile: state.profile
|
|
328
|
+
};
|
|
329
|
+
localStorage.setItem(getStorageKey(state.options.slug), JSON.stringify(payload));
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function ensureClientSessionId(state) {
|
|
336
|
+
if (!state.clientSessionId) {
|
|
337
|
+
state.clientSessionId = `${Date.now()}-${Math.random().toString(36).slice(2, 12)}`;
|
|
338
|
+
persistSession(state);
|
|
339
|
+
}
|
|
340
|
+
return state.clientSessionId;
|
|
341
|
+
}
|
|
338
342
|
//# sourceMappingURL=pulse-agent.js.map
|
|
339
343
|
window.PulseAgent = window.PulseAgent || {};
|
|
340
344
|
window.PulseAgent.createPulseAgent = createPulseAgent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pulse-agent.d.ts","sourceRoot":"","sources":["../../src/widget/pulse-agent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;CACnD;AAyBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"pulse-agent.d.ts","sourceRoot":"","sources":["../../src/widget/pulse-agent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;CACnD;AAyBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CA4H7E"}
|
|
@@ -15,10 +15,6 @@ export function createPulseAgent(options) {
|
|
|
15
15
|
const panel = root.querySelector('[data-role="panel"]');
|
|
16
16
|
const closeBtn = root.querySelector('[data-role="close"]');
|
|
17
17
|
const log = root.querySelector('[data-role="log"]');
|
|
18
|
-
const setupGate = root.querySelector('[data-role="setup-gate"]');
|
|
19
|
-
const setupText = root.querySelector('[data-role="setup-text"]');
|
|
20
|
-
const setupKeyInput = root.querySelector('[data-role="setup-key"]');
|
|
21
|
-
const setupApplyBtn = root.querySelector('[data-role="setup-apply"]');
|
|
22
18
|
const prechat = root.querySelector('[data-role="prechat"]');
|
|
23
19
|
const nameInput = root.querySelector('[data-role="name"]');
|
|
24
20
|
const emailInput = root.querySelector('[data-role="email"]');
|
|
@@ -26,9 +22,6 @@ export function createPulseAgent(options) {
|
|
|
26
22
|
const textarea = root.querySelector('[data-role="message"]');
|
|
27
23
|
const sendBtn = root.querySelector('[data-role="send"]');
|
|
28
24
|
pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
|
|
29
|
-
setupApplyBtn.addEventListener('click', () => {
|
|
30
|
-
applyManualWidgetToken(state, log, setupGate, textarea, sendBtn, setupKeyInput);
|
|
31
|
-
});
|
|
32
25
|
button.addEventListener('click', () => toggle(panel, state));
|
|
33
26
|
closeBtn.addEventListener('click', () => close(panel, state));
|
|
34
27
|
continueBtn.addEventListener('click', () => {
|
|
@@ -39,6 +32,7 @@ export function createPulseAgent(options) {
|
|
|
39
32
|
return;
|
|
40
33
|
}
|
|
41
34
|
state.profile = { name, email };
|
|
35
|
+
persistSession(state);
|
|
42
36
|
prechat.classList.add('hidden');
|
|
43
37
|
});
|
|
44
38
|
sendBtn.addEventListener('click', async () => {
|
|
@@ -46,16 +40,12 @@ export function createPulseAgent(options) {
|
|
|
46
40
|
if (!text || state.sending) {
|
|
47
41
|
return;
|
|
48
42
|
}
|
|
49
|
-
if (state.setupRequired) {
|
|
50
|
-
pushMessage(state, log, { role: 'system', content: state.setupMessage || 'Complete setup first.' });
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
43
|
if (state.options.requireProfile !== false && !state.profile) {
|
|
54
44
|
pushMessage(state, log, { role: 'system', content: 'Complete profile first.' });
|
|
55
45
|
return;
|
|
56
46
|
}
|
|
57
47
|
if (!state.widgetToken) {
|
|
58
|
-
await resolveWidgetToken(state, log
|
|
48
|
+
await resolveWidgetToken(state, log);
|
|
59
49
|
if (!state.widgetToken) {
|
|
60
50
|
return;
|
|
61
51
|
}
|
|
@@ -65,9 +55,10 @@ export function createPulseAgent(options) {
|
|
|
65
55
|
pushMessage(state, log, { role: 'visitor', content: text });
|
|
66
56
|
textarea.value = '';
|
|
67
57
|
try {
|
|
58
|
+
const clientSessionId = ensureClientSessionId(state);
|
|
68
59
|
const payload = state.profile
|
|
69
|
-
? { message: text, name: state.profile.name, email: state.profile.email }
|
|
70
|
-
: { message: text };
|
|
60
|
+
? { message: text, name: state.profile.name, email: state.profile.email, conversationId: state.conversationId, clientSessionId }
|
|
61
|
+
: { message: text, conversationId: state.conversationId, clientSessionId };
|
|
71
62
|
const res = await fetch(`${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/message`, {
|
|
72
63
|
method: 'POST',
|
|
73
64
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -83,6 +74,7 @@ export function createPulseAgent(options) {
|
|
|
83
74
|
}
|
|
84
75
|
else if (!state.conversationId) {
|
|
85
76
|
state.conversationId = conversationId;
|
|
77
|
+
persistSession(state);
|
|
86
78
|
connectStream(state, log);
|
|
87
79
|
}
|
|
88
80
|
}
|
|
@@ -95,7 +87,10 @@ export function createPulseAgent(options) {
|
|
|
95
87
|
sendBtn.disabled = false;
|
|
96
88
|
}
|
|
97
89
|
});
|
|
98
|
-
resolveWidgetToken(state, log
|
|
90
|
+
resolveWidgetToken(state, log).then(() => {
|
|
91
|
+
if (state.conversationId) {
|
|
92
|
+
connectStream(state, log);
|
|
93
|
+
}
|
|
99
94
|
if (state.options.autoOpen) {
|
|
100
95
|
open(panel, state);
|
|
101
96
|
}
|
|
@@ -116,7 +111,7 @@ export function createPulseAgent(options) {
|
|
|
116
111
|
state.options = normalizeOptions({ ...state.options, ...partial });
|
|
117
112
|
if (partial.widgetToken) {
|
|
118
113
|
state.widgetToken = partial.widgetToken.trim();
|
|
119
|
-
|
|
114
|
+
persistSession(state);
|
|
120
115
|
}
|
|
121
116
|
}
|
|
122
117
|
};
|
|
@@ -131,11 +126,6 @@ function template(title) {
|
|
|
131
126
|
</header>
|
|
132
127
|
<div class="pulse-agent-log" data-role="log"></div>
|
|
133
128
|
<div class="pulse-agent-compose">
|
|
134
|
-
<div class="pulse-agent-setup hidden" data-role="setup-gate">
|
|
135
|
-
<p data-role="setup-text">Setup is required before chat can start.</p>
|
|
136
|
-
<input data-role="setup-key" type="text" placeholder="Paste organization key" />
|
|
137
|
-
<button data-role="setup-apply" type="button">Use Organization Key</button>
|
|
138
|
-
</div>
|
|
139
129
|
<div class="pulse-agent-prechat" data-role="prechat">
|
|
140
130
|
<input data-role="name" type="text" placeholder="Your name" />
|
|
141
131
|
<input data-role="email" type="email" placeholder="Work email" />
|
|
@@ -165,9 +155,6 @@ function ensureStyle() {
|
|
|
165
155
|
.pulse-agent-bubble.agent { justify-self: start; background: #e2e8f0; color: #111827; }
|
|
166
156
|
.pulse-agent-bubble.system { justify-self: center; background: #fef9c3; color: #854d0e; }
|
|
167
157
|
.pulse-agent-compose { border-top: 1px solid #dbe2ea; padding: 10px; display: grid; gap: 8px; }
|
|
168
|
-
.pulse-agent-setup { display: grid; gap: 6px; border: 1px solid #facc15; border-radius: 10px; background: #fffbeb; padding: 10px; }
|
|
169
|
-
.pulse-agent-setup.hidden { display: none; }
|
|
170
|
-
.pulse-agent-setup p { margin: 0; color: #854d0e; font-size: 13px; }
|
|
171
158
|
.pulse-agent-prechat { display: grid; gap: 6px; }
|
|
172
159
|
.pulse-agent-prechat.hidden { display: none; }
|
|
173
160
|
.pulse-agent-compose textarea, .pulse-agent-prechat input { width: 100%; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 8px; padding: 8px; font: inherit; }
|
|
@@ -177,17 +164,17 @@ function ensureStyle() {
|
|
|
177
164
|
}
|
|
178
165
|
function createState(options) {
|
|
179
166
|
const normalized = normalizeOptions(options);
|
|
167
|
+
const persisted = loadPersistedSession(normalized.slug);
|
|
180
168
|
return {
|
|
181
169
|
options: normalized,
|
|
182
|
-
widgetToken: normalized.widgetToken?.trim() || null,
|
|
183
|
-
profile: null,
|
|
184
|
-
conversationId: null,
|
|
170
|
+
widgetToken: normalized.widgetToken?.trim() || persisted.widgetToken?.trim() || null,
|
|
171
|
+
profile: persisted.profile ?? null,
|
|
172
|
+
conversationId: persisted.conversationId?.trim() || null,
|
|
173
|
+
clientSessionId: persisted.clientSessionId?.trim() || null,
|
|
185
174
|
stream: null,
|
|
186
175
|
messages: [],
|
|
187
176
|
opened: false,
|
|
188
|
-
sending: false
|
|
189
|
-
setupRequired: false,
|
|
190
|
-
setupMessage: ''
|
|
177
|
+
sending: false
|
|
191
178
|
};
|
|
192
179
|
}
|
|
193
180
|
function normalizeOptions(options) {
|
|
@@ -217,9 +204,8 @@ function resolveMount(mount) {
|
|
|
217
204
|
}
|
|
218
205
|
return mount;
|
|
219
206
|
}
|
|
220
|
-
async function resolveWidgetToken(state, log
|
|
207
|
+
async function resolveWidgetToken(state, log) {
|
|
221
208
|
if (state.widgetToken) {
|
|
222
|
-
clearSetupRequired(state, setupGate, textarea, sendBtn);
|
|
223
209
|
return;
|
|
224
210
|
}
|
|
225
211
|
try {
|
|
@@ -236,41 +222,14 @@ async function resolveWidgetToken(state, log, setupGate, setupText, textarea, se
|
|
|
236
222
|
}
|
|
237
223
|
const body = (await res.json());
|
|
238
224
|
state.widgetToken = body.widgetToken;
|
|
239
|
-
|
|
225
|
+
persistSession(state);
|
|
240
226
|
pushMessage(state, log, { role: 'system', content: `Connected to ${body.organizationName}.` });
|
|
241
227
|
}
|
|
242
228
|
catch (error) {
|
|
243
229
|
const message = error instanceof Error ? error.message : 'Failed to resolve widget token.';
|
|
244
|
-
setSetupRequired(state, setupGate, setupText, textarea, sendBtn, message);
|
|
245
230
|
pushMessage(state, log, { role: 'system', content: message });
|
|
246
231
|
}
|
|
247
232
|
}
|
|
248
|
-
function setSetupRequired(state, setupGate, setupText, textarea, sendBtn, message) {
|
|
249
|
-
state.setupRequired = true;
|
|
250
|
-
state.setupMessage = message;
|
|
251
|
-
setupText.textContent = `${message} Paste your organization key to continue.`;
|
|
252
|
-
setupGate.classList.remove('hidden');
|
|
253
|
-
textarea.disabled = true;
|
|
254
|
-
sendBtn.disabled = true;
|
|
255
|
-
}
|
|
256
|
-
function clearSetupRequired(state, setupGate, textarea, sendBtn) {
|
|
257
|
-
state.setupRequired = false;
|
|
258
|
-
state.setupMessage = '';
|
|
259
|
-
setupGate.classList.add('hidden');
|
|
260
|
-
textarea.disabled = false;
|
|
261
|
-
sendBtn.disabled = false;
|
|
262
|
-
}
|
|
263
|
-
function applyManualWidgetToken(state, log, setupGate, textarea, sendBtn, setupKeyInput) {
|
|
264
|
-
const token = setupKeyInput.value.trim();
|
|
265
|
-
if (!token) {
|
|
266
|
-
pushMessage(state, log, { role: 'system', content: 'Enter organization key before continuing.' });
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
state.widgetToken = token;
|
|
270
|
-
clearSetupRequired(state, setupGate, textarea, sendBtn);
|
|
271
|
-
setupKeyInput.value = '';
|
|
272
|
-
pushMessage(state, log, { role: 'system', content: 'Organization key applied. You can send a message now.' });
|
|
273
|
-
}
|
|
274
233
|
function connectStream(state, log) {
|
|
275
234
|
if (!state.widgetToken || !state.conversationId) {
|
|
276
235
|
return;
|
|
@@ -282,7 +241,9 @@ function connectStream(state, log) {
|
|
|
282
241
|
stream.onmessage = (event) => {
|
|
283
242
|
try {
|
|
284
243
|
const payload = JSON.parse(event.data);
|
|
285
|
-
|
|
244
|
+
const sender = payload.senderType?.trim().toUpperCase();
|
|
245
|
+
const isVisitorMessage = sender === 'VISITOR' || sender === 'CUSTOMER' || sender === 'CLIENT';
|
|
246
|
+
if (!isVisitorMessage && payload.content?.trim()) {
|
|
286
247
|
pushMessage(state, log, { role: 'agent', content: payload.content });
|
|
287
248
|
}
|
|
288
249
|
}
|
|
@@ -335,4 +296,47 @@ function escapeHtml(input) {
|
|
|
335
296
|
.replace(/"/g, '"')
|
|
336
297
|
.replace(/'/g, ''');
|
|
337
298
|
}
|
|
299
|
+
function getStorageKey(slug) {
|
|
300
|
+
return `pulse-agent-session:${slug.toLowerCase()}`;
|
|
301
|
+
}
|
|
302
|
+
function loadPersistedSession(slug) {
|
|
303
|
+
try {
|
|
304
|
+
if (typeof localStorage === 'undefined') {
|
|
305
|
+
return {};
|
|
306
|
+
}
|
|
307
|
+
const raw = localStorage.getItem(getStorageKey(slug));
|
|
308
|
+
if (!raw) {
|
|
309
|
+
return {};
|
|
310
|
+
}
|
|
311
|
+
const parsed = JSON.parse(raw);
|
|
312
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return {};
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
function persistSession(state) {
|
|
319
|
+
try {
|
|
320
|
+
if (typeof localStorage === 'undefined') {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const payload = {
|
|
324
|
+
widgetToken: state.widgetToken ?? undefined,
|
|
325
|
+
conversationId: state.conversationId ?? undefined,
|
|
326
|
+
clientSessionId: state.clientSessionId ?? undefined,
|
|
327
|
+
profile: state.profile
|
|
328
|
+
};
|
|
329
|
+
localStorage.setItem(getStorageKey(state.options.slug), JSON.stringify(payload));
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function ensureClientSessionId(state) {
|
|
336
|
+
if (!state.clientSessionId) {
|
|
337
|
+
state.clientSessionId = `${Date.now()}-${Math.random().toString(36).slice(2, 12)}`;
|
|
338
|
+
persistSession(state);
|
|
339
|
+
}
|
|
340
|
+
return state.clientSessionId;
|
|
341
|
+
}
|
|
338
342
|
//# sourceMappingURL=pulse-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pulse-agent.js","sourceRoot":"","sources":["../../src/widget/pulse-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pulse-agent.js","sourceRoot":"","sources":["../../src/widget/pulse-agent.ts"],"names":[],"mappings":"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"}
|