@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 are missing or auth is required, the chat shows a setup gate where users can paste the organization key directly.
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, setupGate, setupText, textarea, sendBtn);
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, setupGate, setupText, textarea, sendBtn).then(() => {
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
- clearSetupRequired(state, setupGate, textarea, sendBtn);
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, setupGate, setupText, textarea, sendBtn) {
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
- clearSetupRequired(state, setupGate, textarea, sendBtn);
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
- if (payload.senderType === 'USER' && payload.content?.trim()) {
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, '&quot;')
336
297
  .replace(/'/g, '&#39;');
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,CAmI7E"}
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, setupGate, setupText, textarea, sendBtn);
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, setupGate, setupText, textarea, sendBtn).then(() => {
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
- clearSetupRequired(state, setupGate, textarea, sendBtn);
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, setupGate, setupText, textarea, sendBtn) {
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
- clearSetupRequired(state, setupGate, textarea, sendBtn);
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
- if (payload.senderType === 'USER' && payload.content?.trim()) {
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, '&quot;')
336
297
  .replace(/'/g, '&#39;');
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primexperts.co/pulse-agent",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Embeddable Pulse floating chat agent widget.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",