@primexperts.co/pulse-agent 1.0.9 → 1.1.0

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
@@ -56,6 +56,7 @@ agent.open();
56
56
  Options:
57
57
  - `slug` (required): public organization slug.
58
58
  - `apiBaseUrl` (optional): defaults to `https://pulse.service.primexperts.co.za`.
59
+ - `followUpEmailTo` (optional): preferred destination for transcript follow-up emails.
59
60
  - `mount` (optional): container element or selector, defaults to `document.body`.
60
61
  - `autoOpen` (optional): open panel immediately.
61
62
  - `requireProfile` (optional): requires name/email before first message, default `true`.
@@ -76,3 +77,18 @@ Returns `PulseAgentHandle`:
76
77
  - `npm run build` now outputs:
77
78
  - ESM + type declarations in `dist/`
78
79
  - browser global bundle in `dist/browser/pulse-agent.global.js`
80
+
81
+ ## Versioning
82
+
83
+ Use the built-in version script instead of editing files manually:
84
+
85
+ ```bash
86
+ npm run version:patch
87
+ # or
88
+ npm run version:minor
89
+ npm run version:major
90
+ # or custom semver
91
+ npm run version:bump -- 1.2.3
92
+ ```
93
+
94
+ This updates both `package.json` and `package-lock.json`.
@@ -16,12 +16,28 @@ function createPulseAgent(options) {
16
16
  const closeBtn = root.querySelector('[data-role="close"]');
17
17
  const log = root.querySelector('[data-role="log"]');
18
18
  const prechat = root.querySelector('[data-role="prechat"]');
19
+ const convoMeta = root.querySelector('[data-role="conversation-meta"]');
20
+ const convoIdLabel = root.querySelector('[data-role="conversation-id"]');
19
21
  const nameInput = root.querySelector('[data-role="name"]');
20
22
  const emailInput = root.querySelector('[data-role="email"]');
21
23
  const continueBtn = root.querySelector('[data-role="continue"]');
22
24
  const textarea = root.querySelector('[data-role="message"]');
23
25
  const sendBtn = root.querySelector('[data-role="send"]');
24
- pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
26
+ const newConversationBtn = root.querySelector('[data-role="new-conversation"]');
27
+ const copyConversationBtn = root.querySelector('[data-role="copy-conversation"]');
28
+ const emailHistoryBtn = root.querySelector('[data-role="email-history"]');
29
+ if (state.profile) {
30
+ nameInput.value = state.profile.name;
31
+ emailInput.value = state.profile.email;
32
+ prechat.classList.add('hidden');
33
+ }
34
+ if (state.messages.length > 0) {
35
+ renderMessages(log, state.messages);
36
+ }
37
+ else {
38
+ pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
39
+ }
40
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
25
41
  button.addEventListener('click', () => toggle(panel, state));
26
42
  closeBtn.addEventListener('click', () => close(panel, state));
27
43
  continueBtn.addEventListener('click', () => {
@@ -35,6 +51,61 @@ function createPulseAgent(options) {
35
51
  persistSession(state);
36
52
  prechat.classList.add('hidden');
37
53
  });
54
+ newConversationBtn.addEventListener('click', () => {
55
+ resetConversation(state, log);
56
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
57
+ });
58
+ copyConversationBtn.addEventListener('click', async () => {
59
+ if (!state.conversationId) {
60
+ return;
61
+ }
62
+ try {
63
+ if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {
64
+ await navigator.clipboard.writeText(state.conversationId);
65
+ pushMessage(state, log, { role: 'system', content: `Conversation ID copied: ${state.conversationId}` });
66
+ }
67
+ else {
68
+ pushMessage(state, log, { role: 'system', content: `Conversation ID: ${state.conversationId}` });
69
+ }
70
+ }
71
+ catch {
72
+ pushMessage(state, log, { role: 'system', content: `Conversation ID: ${state.conversationId}` });
73
+ }
74
+ });
75
+ emailHistoryBtn.addEventListener('click', async () => {
76
+ if (!state.conversationId) {
77
+ pushMessage(state, log, { role: 'system', content: 'Send at least one message first to generate a conversation ID.' });
78
+ return;
79
+ }
80
+ if (state.widgetToken && state.options.followUpEmailTo) {
81
+ try {
82
+ const res = await fetch(`${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/transcript-email?conversationId=${encodeURIComponent(state.conversationId)}`, {
83
+ method: 'POST',
84
+ headers: { 'Content-Type': 'application/json' },
85
+ body: JSON.stringify({
86
+ toEmail: state.options.followUpEmailTo,
87
+ requesterName: state.profile?.name || null,
88
+ requesterEmail: state.profile?.email || null
89
+ })
90
+ });
91
+ if (res.ok) {
92
+ pushMessage(state, log, {
93
+ role: 'system',
94
+ content: `Conversation history emailed to ${state.options.followUpEmailTo}.`
95
+ });
96
+ return;
97
+ }
98
+ }
99
+ catch {
100
+ // Fallback to mail client compose below.
101
+ }
102
+ }
103
+ const body = buildTranscriptBody(state);
104
+ const to = (state.options.followUpEmailTo || '').trim();
105
+ const subject = `Follow-up: Conversation ${state.conversationId}`;
106
+ const mailto = `mailto:${encodeURIComponent(to)}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
107
+ window.location.href = mailto;
108
+ });
38
109
  sendBtn.addEventListener('click', async () => {
39
110
  const text = textarea.value.trim();
40
111
  if (!text || state.sending) {
@@ -76,6 +147,14 @@ function createPulseAgent(options) {
76
147
  state.conversationId = conversationId;
77
148
  persistSession(state);
78
149
  connectStream(state, log);
150
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
151
+ }
152
+ else if (state.conversationId !== conversationId) {
153
+ state.conversationId = conversationId;
154
+ pushMessage(state, log, { role: 'system', content: 'Previous conversation was closed. Started a new conversation.' });
155
+ persistSession(state);
156
+ connectStream(state, log);
157
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
79
158
  }
80
159
  }
81
160
  catch (error) {
@@ -87,14 +166,16 @@ function createPulseAgent(options) {
87
166
  sendBtn.disabled = false;
88
167
  }
89
168
  });
90
- resolveWidgetToken(state, log).then(() => {
169
+ resolveWidgetToken(state, log).then(async () => {
91
170
  if (state.conversationId) {
171
+ await syncConversationHistory(state, log);
92
172
  connectStream(state, log);
173
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
93
174
  }
94
175
  if (state.options.autoOpen) {
95
176
  open(panel, state);
96
177
  }
97
- if (state.options.requireProfile === false) {
178
+ if (state.options.requireProfile === false || !!state.profile) {
98
179
  prechat.classList.add('hidden');
99
180
  }
100
181
  });
@@ -107,6 +188,9 @@ function createPulseAgent(options) {
107
188
  }
108
189
  root.remove();
109
190
  },
191
+ resetConversation: () => {
192
+ resetConversation(state, log);
193
+ },
110
194
  update: (partial) => {
111
195
  state.options = normalizeOptions({ ...state.options, ...partial });
112
196
  if (partial.widgetToken) {
@@ -126,13 +210,27 @@ function template(title) {
126
210
  </header>
127
211
  <div class="pulse-agent-log" data-role="log"></div>
128
212
  <div class="pulse-agent-compose">
213
+ <div class="pulse-agent-conversation-meta hidden" data-role="conversation-meta">
214
+ <span class="pulse-agent-conversation-id" data-role="conversation-id"></span>
215
+ <div class="pulse-agent-conversation-actions">
216
+ <button class="pulse-agent-conversation-action" data-role="copy-conversation" type="button">Copy ID</button>
217
+ <button class="pulse-agent-conversation-action" data-role="email-history" type="button">Email History</button>
218
+ </div>
219
+ </div>
129
220
  <div class="pulse-agent-prechat" data-role="prechat">
130
221
  <input data-role="name" type="text" placeholder="Your name" />
131
222
  <input data-role="email" type="email" placeholder="Work email" />
132
223
  <button data-role="continue">Continue</button>
133
224
  </div>
134
- <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
135
- <button data-role="send">Send</button>
225
+ <button class="pulse-agent-new-conversation" data-role="new-conversation" type="button">Start new conversation</button>
226
+ <div class="pulse-agent-input-wrap">
227
+ <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
228
+ <button class="pulse-agent-send-icon" data-role="send" type="button" aria-label="Send message">
229
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
230
+ <path d="M4 20L21 12L4 4L4 10L16 12L4 14L4 20Z"></path>
231
+ </svg>
232
+ </button>
233
+ </div>
136
234
  </div>
137
235
  </div>`;
138
236
  }
@@ -143,28 +241,89 @@ function ensureStyle() {
143
241
  const style = document.createElement('style');
144
242
  style.id = STYLE_ID;
145
243
  style.textContent = `
146
- .pulse-agent-root { position: fixed; right: 16px; bottom: 16px; z-index: 9999; font-family: Arial, sans-serif; }
147
- .pulse-agent-fab { min-height: 52px; border-radius: 999px; border: 0; padding: 0 16px; background: #1d4ed8; color: #fff; font-weight: 700; cursor: pointer; box-shadow: 0 10px 26px rgba(30,64,175,.35); white-space: nowrap; }
244
+ .pulse-agent-root {
245
+ --pulse-brand-primary: #005bbb;
246
+ --pulse-brand-primary-strong: #004494;
247
+ --pulse-brand-ink: #0b1f3a;
248
+ --pulse-brand-soft: #eaf3ff;
249
+ --pulse-brand-focus: #8dc5ff;
250
+ --pulse-brand-shadow: rgba(0, 91, 187, 0.35);
251
+ position: fixed;
252
+ right: 16px;
253
+ bottom: 16px;
254
+ z-index: 9999;
255
+ font-family: Arial, sans-serif;
256
+ }
257
+ .pulse-agent-fab { min-height: 52px; border-radius: 999px; border: 0; padding: 0 16px; background: var(--pulse-brand-primary); color: #fff; font-weight: 700; cursor: pointer; box-shadow: 0 10px 26px var(--pulse-brand-shadow); white-space: nowrap; }
148
258
  .pulse-agent-panel { position: absolute; right: 0; bottom: 66px; width: min(380px, calc(100vw - 24px)); height: 540px; background: #fff; border: 1px solid #cbd5e1; border-radius: 14px; display: grid; grid-template-rows: auto 1fr auto; overflow: hidden; box-shadow: 0 18px 42px rgba(0,0,0,.2); }
149
259
  .pulse-agent-panel.hidden { display: none; }
150
- .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: #0f172a; color: #fff; padding: 10px 12px; }
260
+ .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: var(--pulse-brand-ink); color: #fff; padding: 10px 12px; }
151
261
  .pulse-agent-close { border: 0; border-radius: 6px; padding: 4px 8px; cursor: pointer; }
152
262
  .pulse-agent-log { padding: 12px; display: grid; align-content: start; gap: 8px; background: #f8fafc; overflow: auto; }
153
263
  .pulse-agent-bubble { max-width: 85%; padding: 8px 10px; border-radius: 10px; line-height: 1.35; white-space: pre-wrap; font-size: 14px; }
154
- .pulse-agent-bubble.visitor { justify-self: end; background: #dbeafe; color: #1e3a8a; }
264
+ .pulse-agent-bubble.visitor { justify-self: end; background: var(--pulse-brand-soft); color: var(--pulse-brand-ink); }
155
265
  .pulse-agent-bubble.agent { justify-self: start; background: #e2e8f0; color: #111827; }
156
266
  .pulse-agent-bubble.system { justify-self: center; background: #fef9c3; color: #854d0e; }
157
267
  .pulse-agent-compose { border-top: 1px solid #dbe2ea; padding: 10px; display: grid; gap: 8px; }
158
268
  .pulse-agent-prechat { display: grid; gap: 6px; }
159
269
  .pulse-agent-prechat.hidden { display: none; }
160
270
  .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; }
161
- .pulse-agent-compose button, .pulse-agent-prechat button { border: 0; border-radius: 8px; padding: 8px 10px; background: #1d4ed8; color: #fff; cursor: pointer; }
271
+ .pulse-agent-compose button, .pulse-agent-prechat button { border: 0; border-radius: 8px; padding: 8px 10px; background: var(--pulse-brand-primary); color: #fff; cursor: pointer; }
272
+ .pulse-agent-conversation-meta { border: 1px solid #dbeafe; background: #f8fbff; border-radius: 8px; padding: 6px 8px; display: grid; gap: 6px; }
273
+ .pulse-agent-conversation-meta.hidden { display: none; }
274
+ .pulse-agent-conversation-id { font-family: Consolas, 'Courier New', monospace; font-size: 12px; color: #1e3a8a; }
275
+ .pulse-agent-conversation-actions { display: flex; gap: 6px; }
276
+ .pulse-agent-conversation-action { background: #ffffff !important; color: #1d4ed8 !important; border: 1px solid #bfdbfe !important; padding: 4px 8px !important; font-size: 12px; }
277
+ .pulse-agent-conversation-action:hover { background: #eff6ff !important; }
278
+ .pulse-agent-new-conversation { justify-self: start; background: transparent !important; color: var(--pulse-brand-primary) !important; border: 1px solid #b8d7ff !important; padding: 4px 8px !important; font-size: 12px; }
279
+ .pulse-agent-new-conversation:hover { background: #f2f8ff !important; }
280
+ .pulse-agent-input-wrap { position: relative; }
281
+ .pulse-agent-input-wrap textarea { padding-right: 58px; min-height: 86px; resize: vertical; }
282
+ .pulse-agent-send-icon {
283
+ position: absolute;
284
+ right: 10px;
285
+ bottom: 10px;
286
+ width: 40px;
287
+ height: 40px;
288
+ border-radius: 999px !important;
289
+ display: grid;
290
+ place-items: center;
291
+ padding: 0 !important;
292
+ color: #ffffff !important;
293
+ background: linear-gradient(135deg, var(--pulse-brand-primary) 0%, var(--pulse-brand-primary-strong) 100%) !important;
294
+ box-shadow: 0 10px 24px var(--pulse-brand-shadow);
295
+ transition: transform 120ms ease, box-shadow 120ms ease, filter 120ms ease;
296
+ }
297
+ .pulse-agent-send-icon:hover {
298
+ transform: translateY(-1px);
299
+ box-shadow: 0 14px 30px rgba(0, 91, 187, 0.45);
300
+ filter: brightness(1.03);
301
+ }
302
+ .pulse-agent-send-icon:active {
303
+ transform: translateY(0);
304
+ box-shadow: 0 8px 18px var(--pulse-brand-shadow);
305
+ }
306
+ .pulse-agent-send-icon:focus-visible {
307
+ outline: 2px solid var(--pulse-brand-focus);
308
+ outline-offset: 2px;
309
+ }
310
+ .pulse-agent-send-icon:disabled {
311
+ cursor: not-allowed;
312
+ transform: none;
313
+ filter: grayscale(0.15);
314
+ background: linear-gradient(135deg, #93c5fd 0%, #60a5fa 100%) !important;
315
+ box-shadow: none;
316
+ }
317
+ .pulse-agent-send-icon svg { width: 19px; height: 19px; fill: currentColor; }
162
318
  `;
163
319
  document.head.appendChild(style);
164
320
  }
165
321
  function createState(options) {
166
322
  const normalized = normalizeOptions(options);
167
323
  const persisted = loadPersistedSession(normalized.slug);
324
+ const persistedMessages = Array.isArray(persisted.messages)
325
+ ? persisted.messages.filter((m) => !!m && (m.role === 'visitor' || m.role === 'agent' || m.role === 'system') && typeof m.content === 'string')
326
+ : [];
168
327
  return {
169
328
  options: normalized,
170
329
  widgetToken: normalized.widgetToken?.trim() || persisted.widgetToken?.trim() || null,
@@ -172,7 +331,7 @@ function createState(options) {
172
331
  conversationId: persisted.conversationId?.trim() || null,
173
332
  clientSessionId: persisted.clientSessionId?.trim() || null,
174
333
  stream: null,
175
- messages: [],
334
+ messages: persistedMessages,
176
335
  opened: false,
177
336
  sending: false
178
337
  };
@@ -185,6 +344,7 @@ function normalizeOptions(options) {
185
344
  ...options,
186
345
  slug: options.slug.trim(),
187
346
  apiBaseUrl: options.apiBaseUrl?.trim() || DEFAULT_API_BASE_URL,
347
+ followUpEmailTo: options.followUpEmailTo?.trim() || '',
188
348
  dashboardUrl: options.dashboardUrl?.trim() || DEFAULT_DASHBOARD_URL,
189
349
  dashboardSetupPath: options.dashboardSetupPath?.trim() || DEFAULT_DASHBOARD_SETUP_PATH,
190
350
  autoOpen: options.autoOpen === true,
@@ -230,6 +390,35 @@ async function resolveWidgetToken(state, log) {
230
390
  pushMessage(state, log, { role: 'system', content: message });
231
391
  }
232
392
  }
393
+ async function syncConversationHistory(state, log) {
394
+ if (!state.widgetToken || !state.conversationId) {
395
+ return;
396
+ }
397
+ try {
398
+ const historyUrl = `${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/messages?conversationId=${encodeURIComponent(state.conversationId)}`;
399
+ const res = await fetch(historyUrl);
400
+ if (!res.ok) {
401
+ return;
402
+ }
403
+ const rows = (await res.json());
404
+ if (!Array.isArray(rows) || rows.length === 0) {
405
+ return;
406
+ }
407
+ state.messages = rows
408
+ .filter((row) => typeof row.content === 'string' && row.content.trim().length > 0)
409
+ .map((row) => {
410
+ const sender = row.senderType?.trim().toUpperCase();
411
+ const role = sender === 'CLIENT' || sender === 'VISITOR' || sender === 'CUSTOMER' ? 'visitor' : 'agent';
412
+ return { role, content: String(row.content) };
413
+ });
414
+ log.innerHTML = '';
415
+ renderMessages(log, state.messages);
416
+ persistSession(state);
417
+ }
418
+ catch {
419
+ return;
420
+ }
421
+ }
233
422
  function connectStream(state, log) {
234
423
  if (!state.widgetToken || !state.conversationId) {
235
424
  return;
@@ -263,6 +452,16 @@ function pushMessage(state, log, message) {
263
452
  bubble.textContent = message.content;
264
453
  log.appendChild(bubble);
265
454
  log.scrollTop = log.scrollHeight;
455
+ persistSession(state);
456
+ }
457
+ function renderMessages(log, messages) {
458
+ for (const message of messages) {
459
+ const bubble = document.createElement('div');
460
+ bubble.className = `pulse-agent-bubble ${message.role}`;
461
+ bubble.textContent = message.content;
462
+ log.appendChild(bubble);
463
+ }
464
+ log.scrollTop = log.scrollHeight;
266
465
  }
267
466
  function toggle(panel, state) {
268
467
  if (state.opened) {
@@ -324,7 +523,8 @@ function persistSession(state) {
324
523
  widgetToken: state.widgetToken ?? undefined,
325
524
  conversationId: state.conversationId ?? undefined,
326
525
  clientSessionId: state.clientSessionId ?? undefined,
327
- profile: state.profile
526
+ profile: state.profile,
527
+ messages: state.messages.slice(-100)
328
528
  };
329
529
  localStorage.setItem(getStorageKey(state.options.slug), JSON.stringify(payload));
330
530
  }
@@ -339,6 +539,38 @@ function ensureClientSessionId(state) {
339
539
  }
340
540
  return state.clientSessionId;
341
541
  }
542
+ function resetConversation(state, log) {
543
+ state.stream?.close();
544
+ state.stream = null;
545
+ state.conversationId = null;
546
+ state.messages = [];
547
+ log.innerHTML = '';
548
+ pushMessage(state, log, { role: 'system', content: 'Started a new conversation. Send your message when ready.' });
549
+ persistSession(state);
550
+ }
551
+ function refreshConversationMeta(state, meta, label) {
552
+ if (!state.conversationId) {
553
+ meta.classList.add('hidden');
554
+ label.textContent = '';
555
+ return;
556
+ }
557
+ meta.classList.remove('hidden');
558
+ label.textContent = `Conversation ID: ${state.conversationId}`;
559
+ }
560
+ function buildTranscriptBody(state) {
561
+ const lines = [];
562
+ lines.push(`Conversation ID: ${state.conversationId ?? 'N/A'}`);
563
+ lines.push(`Organization slug: ${state.options.slug}`);
564
+ lines.push('');
565
+ lines.push('Conversation transcript:');
566
+ for (const message of state.messages) {
567
+ const who = message.role === 'visitor' ? 'Visitor' : message.role === 'agent' ? 'Agent' : 'System';
568
+ lines.push(`${who}: ${message.content}`);
569
+ }
570
+ lines.push('');
571
+ lines.push('Please follow up on this thread.');
572
+ return lines.join('\n');
573
+ }
342
574
  //# sourceMappingURL=pulse-agent.js.map
343
575
  window.PulseAgent = window.PulseAgent || {};
344
576
  window.PulseAgent.createPulseAgent = createPulseAgent;
@@ -1,6 +1,7 @@
1
1
  export interface PulseAgentOptions {
2
2
  slug: string;
3
3
  apiBaseUrl?: string;
4
+ followUpEmailTo?: string;
4
5
  dashboardUrl?: string;
5
6
  dashboardSetupPath?: string;
6
7
  mount?: HTMLElement | string;
@@ -13,6 +14,7 @@ export interface PulseAgentHandle {
13
14
  open(): void;
14
15
  close(): void;
15
16
  destroy(): void;
17
+ resetConversation(): void;
16
18
  update(partial: Partial<PulseAgentOptions>): void;
17
19
  }
18
20
  export declare function createPulseAgent(options: PulseAgentOptions): PulseAgentHandle;
@@ -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,CA4H7E"}
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,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,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,iBAAiB,IAAI,IAAI,CAAC;IAC1B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;CACnD;AA8BD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAkN7E"}
@@ -16,12 +16,28 @@ export function createPulseAgent(options) {
16
16
  const closeBtn = root.querySelector('[data-role="close"]');
17
17
  const log = root.querySelector('[data-role="log"]');
18
18
  const prechat = root.querySelector('[data-role="prechat"]');
19
+ const convoMeta = root.querySelector('[data-role="conversation-meta"]');
20
+ const convoIdLabel = root.querySelector('[data-role="conversation-id"]');
19
21
  const nameInput = root.querySelector('[data-role="name"]');
20
22
  const emailInput = root.querySelector('[data-role="email"]');
21
23
  const continueBtn = root.querySelector('[data-role="continue"]');
22
24
  const textarea = root.querySelector('[data-role="message"]');
23
25
  const sendBtn = root.querySelector('[data-role="send"]');
24
- pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
26
+ const newConversationBtn = root.querySelector('[data-role="new-conversation"]');
27
+ const copyConversationBtn = root.querySelector('[data-role="copy-conversation"]');
28
+ const emailHistoryBtn = root.querySelector('[data-role="email-history"]');
29
+ if (state.profile) {
30
+ nameInput.value = state.profile.name;
31
+ emailInput.value = state.profile.email;
32
+ prechat.classList.add('hidden');
33
+ }
34
+ if (state.messages.length > 0) {
35
+ renderMessages(log, state.messages);
36
+ }
37
+ else {
38
+ pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
39
+ }
40
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
25
41
  button.addEventListener('click', () => toggle(panel, state));
26
42
  closeBtn.addEventListener('click', () => close(panel, state));
27
43
  continueBtn.addEventListener('click', () => {
@@ -35,6 +51,61 @@ export function createPulseAgent(options) {
35
51
  persistSession(state);
36
52
  prechat.classList.add('hidden');
37
53
  });
54
+ newConversationBtn.addEventListener('click', () => {
55
+ resetConversation(state, log);
56
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
57
+ });
58
+ copyConversationBtn.addEventListener('click', async () => {
59
+ if (!state.conversationId) {
60
+ return;
61
+ }
62
+ try {
63
+ if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {
64
+ await navigator.clipboard.writeText(state.conversationId);
65
+ pushMessage(state, log, { role: 'system', content: `Conversation ID copied: ${state.conversationId}` });
66
+ }
67
+ else {
68
+ pushMessage(state, log, { role: 'system', content: `Conversation ID: ${state.conversationId}` });
69
+ }
70
+ }
71
+ catch {
72
+ pushMessage(state, log, { role: 'system', content: `Conversation ID: ${state.conversationId}` });
73
+ }
74
+ });
75
+ emailHistoryBtn.addEventListener('click', async () => {
76
+ if (!state.conversationId) {
77
+ pushMessage(state, log, { role: 'system', content: 'Send at least one message first to generate a conversation ID.' });
78
+ return;
79
+ }
80
+ if (state.widgetToken && state.options.followUpEmailTo) {
81
+ try {
82
+ const res = await fetch(`${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/transcript-email?conversationId=${encodeURIComponent(state.conversationId)}`, {
83
+ method: 'POST',
84
+ headers: { 'Content-Type': 'application/json' },
85
+ body: JSON.stringify({
86
+ toEmail: state.options.followUpEmailTo,
87
+ requesterName: state.profile?.name || null,
88
+ requesterEmail: state.profile?.email || null
89
+ })
90
+ });
91
+ if (res.ok) {
92
+ pushMessage(state, log, {
93
+ role: 'system',
94
+ content: `Conversation history emailed to ${state.options.followUpEmailTo}.`
95
+ });
96
+ return;
97
+ }
98
+ }
99
+ catch {
100
+ // Fallback to mail client compose below.
101
+ }
102
+ }
103
+ const body = buildTranscriptBody(state);
104
+ const to = (state.options.followUpEmailTo || '').trim();
105
+ const subject = `Follow-up: Conversation ${state.conversationId}`;
106
+ const mailto = `mailto:${encodeURIComponent(to)}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
107
+ window.location.href = mailto;
108
+ });
38
109
  sendBtn.addEventListener('click', async () => {
39
110
  const text = textarea.value.trim();
40
111
  if (!text || state.sending) {
@@ -76,6 +147,14 @@ export function createPulseAgent(options) {
76
147
  state.conversationId = conversationId;
77
148
  persistSession(state);
78
149
  connectStream(state, log);
150
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
151
+ }
152
+ else if (state.conversationId !== conversationId) {
153
+ state.conversationId = conversationId;
154
+ pushMessage(state, log, { role: 'system', content: 'Previous conversation was closed. Started a new conversation.' });
155
+ persistSession(state);
156
+ connectStream(state, log);
157
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
79
158
  }
80
159
  }
81
160
  catch (error) {
@@ -87,14 +166,16 @@ export function createPulseAgent(options) {
87
166
  sendBtn.disabled = false;
88
167
  }
89
168
  });
90
- resolveWidgetToken(state, log).then(() => {
169
+ resolveWidgetToken(state, log).then(async () => {
91
170
  if (state.conversationId) {
171
+ await syncConversationHistory(state, log);
92
172
  connectStream(state, log);
173
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
93
174
  }
94
175
  if (state.options.autoOpen) {
95
176
  open(panel, state);
96
177
  }
97
- if (state.options.requireProfile === false) {
178
+ if (state.options.requireProfile === false || !!state.profile) {
98
179
  prechat.classList.add('hidden');
99
180
  }
100
181
  });
@@ -107,6 +188,9 @@ export function createPulseAgent(options) {
107
188
  }
108
189
  root.remove();
109
190
  },
191
+ resetConversation: () => {
192
+ resetConversation(state, log);
193
+ },
110
194
  update: (partial) => {
111
195
  state.options = normalizeOptions({ ...state.options, ...partial });
112
196
  if (partial.widgetToken) {
@@ -126,13 +210,27 @@ function template(title) {
126
210
  </header>
127
211
  <div class="pulse-agent-log" data-role="log"></div>
128
212
  <div class="pulse-agent-compose">
213
+ <div class="pulse-agent-conversation-meta hidden" data-role="conversation-meta">
214
+ <span class="pulse-agent-conversation-id" data-role="conversation-id"></span>
215
+ <div class="pulse-agent-conversation-actions">
216
+ <button class="pulse-agent-conversation-action" data-role="copy-conversation" type="button">Copy ID</button>
217
+ <button class="pulse-agent-conversation-action" data-role="email-history" type="button">Email History</button>
218
+ </div>
219
+ </div>
129
220
  <div class="pulse-agent-prechat" data-role="prechat">
130
221
  <input data-role="name" type="text" placeholder="Your name" />
131
222
  <input data-role="email" type="email" placeholder="Work email" />
132
223
  <button data-role="continue">Continue</button>
133
224
  </div>
134
- <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
135
- <button data-role="send">Send</button>
225
+ <button class="pulse-agent-new-conversation" data-role="new-conversation" type="button">Start new conversation</button>
226
+ <div class="pulse-agent-input-wrap">
227
+ <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
228
+ <button class="pulse-agent-send-icon" data-role="send" type="button" aria-label="Send message">
229
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
230
+ <path d="M4 20L21 12L4 4L4 10L16 12L4 14L4 20Z"></path>
231
+ </svg>
232
+ </button>
233
+ </div>
136
234
  </div>
137
235
  </div>`;
138
236
  }
@@ -143,28 +241,89 @@ function ensureStyle() {
143
241
  const style = document.createElement('style');
144
242
  style.id = STYLE_ID;
145
243
  style.textContent = `
146
- .pulse-agent-root { position: fixed; right: 16px; bottom: 16px; z-index: 9999; font-family: Arial, sans-serif; }
147
- .pulse-agent-fab { min-height: 52px; border-radius: 999px; border: 0; padding: 0 16px; background: #1d4ed8; color: #fff; font-weight: 700; cursor: pointer; box-shadow: 0 10px 26px rgba(30,64,175,.35); white-space: nowrap; }
244
+ .pulse-agent-root {
245
+ --pulse-brand-primary: #005bbb;
246
+ --pulse-brand-primary-strong: #004494;
247
+ --pulse-brand-ink: #0b1f3a;
248
+ --pulse-brand-soft: #eaf3ff;
249
+ --pulse-brand-focus: #8dc5ff;
250
+ --pulse-brand-shadow: rgba(0, 91, 187, 0.35);
251
+ position: fixed;
252
+ right: 16px;
253
+ bottom: 16px;
254
+ z-index: 9999;
255
+ font-family: Arial, sans-serif;
256
+ }
257
+ .pulse-agent-fab { min-height: 52px; border-radius: 999px; border: 0; padding: 0 16px; background: var(--pulse-brand-primary); color: #fff; font-weight: 700; cursor: pointer; box-shadow: 0 10px 26px var(--pulse-brand-shadow); white-space: nowrap; }
148
258
  .pulse-agent-panel { position: absolute; right: 0; bottom: 66px; width: min(380px, calc(100vw - 24px)); height: 540px; background: #fff; border: 1px solid #cbd5e1; border-radius: 14px; display: grid; grid-template-rows: auto 1fr auto; overflow: hidden; box-shadow: 0 18px 42px rgba(0,0,0,.2); }
149
259
  .pulse-agent-panel.hidden { display: none; }
150
- .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: #0f172a; color: #fff; padding: 10px 12px; }
260
+ .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: var(--pulse-brand-ink); color: #fff; padding: 10px 12px; }
151
261
  .pulse-agent-close { border: 0; border-radius: 6px; padding: 4px 8px; cursor: pointer; }
152
262
  .pulse-agent-log { padding: 12px; display: grid; align-content: start; gap: 8px; background: #f8fafc; overflow: auto; }
153
263
  .pulse-agent-bubble { max-width: 85%; padding: 8px 10px; border-radius: 10px; line-height: 1.35; white-space: pre-wrap; font-size: 14px; }
154
- .pulse-agent-bubble.visitor { justify-self: end; background: #dbeafe; color: #1e3a8a; }
264
+ .pulse-agent-bubble.visitor { justify-self: end; background: var(--pulse-brand-soft); color: var(--pulse-brand-ink); }
155
265
  .pulse-agent-bubble.agent { justify-self: start; background: #e2e8f0; color: #111827; }
156
266
  .pulse-agent-bubble.system { justify-self: center; background: #fef9c3; color: #854d0e; }
157
267
  .pulse-agent-compose { border-top: 1px solid #dbe2ea; padding: 10px; display: grid; gap: 8px; }
158
268
  .pulse-agent-prechat { display: grid; gap: 6px; }
159
269
  .pulse-agent-prechat.hidden { display: none; }
160
270
  .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; }
161
- .pulse-agent-compose button, .pulse-agent-prechat button { border: 0; border-radius: 8px; padding: 8px 10px; background: #1d4ed8; color: #fff; cursor: pointer; }
271
+ .pulse-agent-compose button, .pulse-agent-prechat button { border: 0; border-radius: 8px; padding: 8px 10px; background: var(--pulse-brand-primary); color: #fff; cursor: pointer; }
272
+ .pulse-agent-conversation-meta { border: 1px solid #dbeafe; background: #f8fbff; border-radius: 8px; padding: 6px 8px; display: grid; gap: 6px; }
273
+ .pulse-agent-conversation-meta.hidden { display: none; }
274
+ .pulse-agent-conversation-id { font-family: Consolas, 'Courier New', monospace; font-size: 12px; color: #1e3a8a; }
275
+ .pulse-agent-conversation-actions { display: flex; gap: 6px; }
276
+ .pulse-agent-conversation-action { background: #ffffff !important; color: #1d4ed8 !important; border: 1px solid #bfdbfe !important; padding: 4px 8px !important; font-size: 12px; }
277
+ .pulse-agent-conversation-action:hover { background: #eff6ff !important; }
278
+ .pulse-agent-new-conversation { justify-self: start; background: transparent !important; color: var(--pulse-brand-primary) !important; border: 1px solid #b8d7ff !important; padding: 4px 8px !important; font-size: 12px; }
279
+ .pulse-agent-new-conversation:hover { background: #f2f8ff !important; }
280
+ .pulse-agent-input-wrap { position: relative; }
281
+ .pulse-agent-input-wrap textarea { padding-right: 58px; min-height: 86px; resize: vertical; }
282
+ .pulse-agent-send-icon {
283
+ position: absolute;
284
+ right: 10px;
285
+ bottom: 10px;
286
+ width: 40px;
287
+ height: 40px;
288
+ border-radius: 999px !important;
289
+ display: grid;
290
+ place-items: center;
291
+ padding: 0 !important;
292
+ color: #ffffff !important;
293
+ background: linear-gradient(135deg, var(--pulse-brand-primary) 0%, var(--pulse-brand-primary-strong) 100%) !important;
294
+ box-shadow: 0 10px 24px var(--pulse-brand-shadow);
295
+ transition: transform 120ms ease, box-shadow 120ms ease, filter 120ms ease;
296
+ }
297
+ .pulse-agent-send-icon:hover {
298
+ transform: translateY(-1px);
299
+ box-shadow: 0 14px 30px rgba(0, 91, 187, 0.45);
300
+ filter: brightness(1.03);
301
+ }
302
+ .pulse-agent-send-icon:active {
303
+ transform: translateY(0);
304
+ box-shadow: 0 8px 18px var(--pulse-brand-shadow);
305
+ }
306
+ .pulse-agent-send-icon:focus-visible {
307
+ outline: 2px solid var(--pulse-brand-focus);
308
+ outline-offset: 2px;
309
+ }
310
+ .pulse-agent-send-icon:disabled {
311
+ cursor: not-allowed;
312
+ transform: none;
313
+ filter: grayscale(0.15);
314
+ background: linear-gradient(135deg, #93c5fd 0%, #60a5fa 100%) !important;
315
+ box-shadow: none;
316
+ }
317
+ .pulse-agent-send-icon svg { width: 19px; height: 19px; fill: currentColor; }
162
318
  `;
163
319
  document.head.appendChild(style);
164
320
  }
165
321
  function createState(options) {
166
322
  const normalized = normalizeOptions(options);
167
323
  const persisted = loadPersistedSession(normalized.slug);
324
+ const persistedMessages = Array.isArray(persisted.messages)
325
+ ? persisted.messages.filter((m) => !!m && (m.role === 'visitor' || m.role === 'agent' || m.role === 'system') && typeof m.content === 'string')
326
+ : [];
168
327
  return {
169
328
  options: normalized,
170
329
  widgetToken: normalized.widgetToken?.trim() || persisted.widgetToken?.trim() || null,
@@ -172,7 +331,7 @@ function createState(options) {
172
331
  conversationId: persisted.conversationId?.trim() || null,
173
332
  clientSessionId: persisted.clientSessionId?.trim() || null,
174
333
  stream: null,
175
- messages: [],
334
+ messages: persistedMessages,
176
335
  opened: false,
177
336
  sending: false
178
337
  };
@@ -185,6 +344,7 @@ function normalizeOptions(options) {
185
344
  ...options,
186
345
  slug: options.slug.trim(),
187
346
  apiBaseUrl: options.apiBaseUrl?.trim() || DEFAULT_API_BASE_URL,
347
+ followUpEmailTo: options.followUpEmailTo?.trim() || '',
188
348
  dashboardUrl: options.dashboardUrl?.trim() || DEFAULT_DASHBOARD_URL,
189
349
  dashboardSetupPath: options.dashboardSetupPath?.trim() || DEFAULT_DASHBOARD_SETUP_PATH,
190
350
  autoOpen: options.autoOpen === true,
@@ -230,6 +390,35 @@ async function resolveWidgetToken(state, log) {
230
390
  pushMessage(state, log, { role: 'system', content: message });
231
391
  }
232
392
  }
393
+ async function syncConversationHistory(state, log) {
394
+ if (!state.widgetToken || !state.conversationId) {
395
+ return;
396
+ }
397
+ try {
398
+ const historyUrl = `${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/messages?conversationId=${encodeURIComponent(state.conversationId)}`;
399
+ const res = await fetch(historyUrl);
400
+ if (!res.ok) {
401
+ return;
402
+ }
403
+ const rows = (await res.json());
404
+ if (!Array.isArray(rows) || rows.length === 0) {
405
+ return;
406
+ }
407
+ state.messages = rows
408
+ .filter((row) => typeof row.content === 'string' && row.content.trim().length > 0)
409
+ .map((row) => {
410
+ const sender = row.senderType?.trim().toUpperCase();
411
+ const role = sender === 'CLIENT' || sender === 'VISITOR' || sender === 'CUSTOMER' ? 'visitor' : 'agent';
412
+ return { role, content: String(row.content) };
413
+ });
414
+ log.innerHTML = '';
415
+ renderMessages(log, state.messages);
416
+ persistSession(state);
417
+ }
418
+ catch {
419
+ return;
420
+ }
421
+ }
233
422
  function connectStream(state, log) {
234
423
  if (!state.widgetToken || !state.conversationId) {
235
424
  return;
@@ -263,6 +452,16 @@ function pushMessage(state, log, message) {
263
452
  bubble.textContent = message.content;
264
453
  log.appendChild(bubble);
265
454
  log.scrollTop = log.scrollHeight;
455
+ persistSession(state);
456
+ }
457
+ function renderMessages(log, messages) {
458
+ for (const message of messages) {
459
+ const bubble = document.createElement('div');
460
+ bubble.className = `pulse-agent-bubble ${message.role}`;
461
+ bubble.textContent = message.content;
462
+ log.appendChild(bubble);
463
+ }
464
+ log.scrollTop = log.scrollHeight;
266
465
  }
267
466
  function toggle(panel, state) {
268
467
  if (state.opened) {
@@ -324,7 +523,8 @@ function persistSession(state) {
324
523
  widgetToken: state.widgetToken ?? undefined,
325
524
  conversationId: state.conversationId ?? undefined,
326
525
  clientSessionId: state.clientSessionId ?? undefined,
327
- profile: state.profile
526
+ profile: state.profile,
527
+ messages: state.messages.slice(-100)
328
528
  };
329
529
  localStorage.setItem(getStorageKey(state.options.slug), JSON.stringify(payload));
330
530
  }
@@ -339,4 +539,36 @@ function ensureClientSessionId(state) {
339
539
  }
340
540
  return state.clientSessionId;
341
541
  }
542
+ function resetConversation(state, log) {
543
+ state.stream?.close();
544
+ state.stream = null;
545
+ state.conversationId = null;
546
+ state.messages = [];
547
+ log.innerHTML = '';
548
+ pushMessage(state, log, { role: 'system', content: 'Started a new conversation. Send your message when ready.' });
549
+ persistSession(state);
550
+ }
551
+ function refreshConversationMeta(state, meta, label) {
552
+ if (!state.conversationId) {
553
+ meta.classList.add('hidden');
554
+ label.textContent = '';
555
+ return;
556
+ }
557
+ meta.classList.remove('hidden');
558
+ label.textContent = `Conversation ID: ${state.conversationId}`;
559
+ }
560
+ function buildTranscriptBody(state) {
561
+ const lines = [];
562
+ lines.push(`Conversation ID: ${state.conversationId ?? 'N/A'}`);
563
+ lines.push(`Organization slug: ${state.options.slug}`);
564
+ lines.push('');
565
+ lines.push('Conversation transcript:');
566
+ for (const message of state.messages) {
567
+ const who = message.role === 'visitor' ? 'Visitor' : message.role === 'agent' ? 'Agent' : 'System';
568
+ lines.push(`${who}: ${message.content}`);
569
+ }
570
+ lines.push('');
571
+ lines.push('Please follow up on this thread.');
572
+ return lines.join('\n');
573
+ }
342
574
  //# 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.9",
3
+ "version": "1.1.0",
4
4
  "description": "Embeddable Pulse floating chat agent widget.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,6 +21,10 @@
21
21
  "build:types": "tsc -p tsconfig.build.json",
22
22
  "build:browser": "node scripts/build-browser-global.mjs",
23
23
  "build": "npm run clean && npm run build:types && npm run build:browser",
24
+ "version:bump": "node scripts/bump-version.mjs",
25
+ "version:patch": "node scripts/bump-version.mjs patch",
26
+ "version:minor": "node scripts/bump-version.mjs minor",
27
+ "version:major": "node scripts/bump-version.mjs major",
24
28
  "prepublishOnly": "npm run build"
25
29
  },
26
30
  "private": false,