@primexperts.co/pulse-agent 1.0.10 → 1.1.1

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,11 +16,16 @@ 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"]');
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"]');
24
29
  if (state.profile) {
25
30
  nameInput.value = state.profile.name;
26
31
  emailInput.value = state.profile.email;
@@ -32,6 +37,7 @@ function createPulseAgent(options) {
32
37
  else {
33
38
  pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
34
39
  }
40
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
35
41
  button.addEventListener('click', () => toggle(panel, state));
36
42
  closeBtn.addEventListener('click', () => close(panel, state));
37
43
  continueBtn.addEventListener('click', () => {
@@ -45,6 +51,61 @@ function createPulseAgent(options) {
45
51
  persistSession(state);
46
52
  prechat.classList.add('hidden');
47
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
+ });
48
109
  sendBtn.addEventListener('click', async () => {
49
110
  const text = textarea.value.trim();
50
111
  if (!text || state.sending) {
@@ -86,6 +147,14 @@ function createPulseAgent(options) {
86
147
  state.conversationId = conversationId;
87
148
  persistSession(state);
88
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);
89
158
  }
90
159
  }
91
160
  catch (error) {
@@ -101,6 +170,7 @@ function createPulseAgent(options) {
101
170
  if (state.conversationId) {
102
171
  await syncConversationHistory(state, log);
103
172
  connectStream(state, log);
173
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
104
174
  }
105
175
  if (state.options.autoOpen) {
106
176
  open(panel, state);
@@ -116,8 +186,15 @@ function createPulseAgent(options) {
116
186
  if (state.stream) {
117
187
  state.stream.close();
118
188
  }
189
+ if (state.reconnectTimer != null) {
190
+ window.clearTimeout(state.reconnectTimer);
191
+ state.reconnectTimer = null;
192
+ }
119
193
  root.remove();
120
194
  },
195
+ resetConversation: () => {
196
+ resetConversation(state, log);
197
+ },
121
198
  update: (partial) => {
122
199
  state.options = normalizeOptions({ ...state.options, ...partial });
123
200
  if (partial.widgetToken) {
@@ -137,13 +214,27 @@ function template(title) {
137
214
  </header>
138
215
  <div class="pulse-agent-log" data-role="log"></div>
139
216
  <div class="pulse-agent-compose">
217
+ <div class="pulse-agent-conversation-meta hidden" data-role="conversation-meta">
218
+ <span class="pulse-agent-conversation-id" data-role="conversation-id"></span>
219
+ <div class="pulse-agent-conversation-actions">
220
+ <button class="pulse-agent-conversation-action" data-role="copy-conversation" type="button">Copy ID</button>
221
+ <button class="pulse-agent-conversation-action" data-role="email-history" type="button">Email History</button>
222
+ </div>
223
+ </div>
140
224
  <div class="pulse-agent-prechat" data-role="prechat">
141
225
  <input data-role="name" type="text" placeholder="Your name" />
142
226
  <input data-role="email" type="email" placeholder="Work email" />
143
227
  <button data-role="continue">Continue</button>
144
228
  </div>
145
- <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
146
- <button data-role="send">Send</button>
229
+ <button class="pulse-agent-new-conversation" data-role="new-conversation" type="button">Start new conversation</button>
230
+ <div class="pulse-agent-input-wrap">
231
+ <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
232
+ <button class="pulse-agent-send-icon" data-role="send" type="button" aria-label="Send message">
233
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
234
+ <path d="M4 20L21 12L4 4L4 10L16 12L4 14L4 20Z"></path>
235
+ </svg>
236
+ </button>
237
+ </div>
147
238
  </div>
148
239
  </div>`;
149
240
  }
@@ -154,22 +245,80 @@ function ensureStyle() {
154
245
  const style = document.createElement('style');
155
246
  style.id = STYLE_ID;
156
247
  style.textContent = `
157
- .pulse-agent-root { position: fixed; right: 16px; bottom: 16px; z-index: 9999; font-family: Arial, sans-serif; }
158
- .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; }
248
+ .pulse-agent-root {
249
+ --pulse-brand-primary: #005bbb;
250
+ --pulse-brand-primary-strong: #004494;
251
+ --pulse-brand-ink: #0b1f3a;
252
+ --pulse-brand-soft: #eaf3ff;
253
+ --pulse-brand-focus: #8dc5ff;
254
+ --pulse-brand-shadow: rgba(0, 91, 187, 0.35);
255
+ position: fixed;
256
+ right: 16px;
257
+ bottom: 16px;
258
+ z-index: 9999;
259
+ font-family: Arial, sans-serif;
260
+ }
261
+ .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; }
159
262
  .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); }
160
263
  .pulse-agent-panel.hidden { display: none; }
161
- .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: #0f172a; color: #fff; padding: 10px 12px; }
264
+ .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: var(--pulse-brand-ink); color: #fff; padding: 10px 12px; }
162
265
  .pulse-agent-close { border: 0; border-radius: 6px; padding: 4px 8px; cursor: pointer; }
163
266
  .pulse-agent-log { padding: 12px; display: grid; align-content: start; gap: 8px; background: #f8fafc; overflow: auto; }
164
267
  .pulse-agent-bubble { max-width: 85%; padding: 8px 10px; border-radius: 10px; line-height: 1.35; white-space: pre-wrap; font-size: 14px; }
165
- .pulse-agent-bubble.visitor { justify-self: end; background: #dbeafe; color: #1e3a8a; }
268
+ .pulse-agent-bubble.visitor { justify-self: end; background: var(--pulse-brand-soft); color: var(--pulse-brand-ink); }
166
269
  .pulse-agent-bubble.agent { justify-self: start; background: #e2e8f0; color: #111827; }
167
270
  .pulse-agent-bubble.system { justify-self: center; background: #fef9c3; color: #854d0e; }
168
271
  .pulse-agent-compose { border-top: 1px solid #dbe2ea; padding: 10px; display: grid; gap: 8px; }
169
272
  .pulse-agent-prechat { display: grid; gap: 6px; }
170
273
  .pulse-agent-prechat.hidden { display: none; }
171
274
  .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; }
172
- .pulse-agent-compose button, .pulse-agent-prechat button { border: 0; border-radius: 8px; padding: 8px 10px; background: #1d4ed8; color: #fff; cursor: pointer; }
275
+ .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; }
276
+ .pulse-agent-conversation-meta { border: 1px solid #dbeafe; background: #f8fbff; border-radius: 8px; padding: 6px 8px; display: grid; gap: 6px; }
277
+ .pulse-agent-conversation-meta.hidden { display: none; }
278
+ .pulse-agent-conversation-id { font-family: Consolas, 'Courier New', monospace; font-size: 12px; color: #1e3a8a; }
279
+ .pulse-agent-conversation-actions { display: flex; gap: 6px; }
280
+ .pulse-agent-conversation-action { background: #ffffff !important; color: #1d4ed8 !important; border: 1px solid #bfdbfe !important; padding: 4px 8px !important; font-size: 12px; }
281
+ .pulse-agent-conversation-action:hover { background: #eff6ff !important; }
282
+ .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; }
283
+ .pulse-agent-new-conversation:hover { background: #f2f8ff !important; }
284
+ .pulse-agent-input-wrap { position: relative; }
285
+ .pulse-agent-input-wrap textarea { padding-right: 58px; min-height: 86px; resize: vertical; }
286
+ .pulse-agent-send-icon {
287
+ position: absolute;
288
+ right: 10px;
289
+ bottom: 10px;
290
+ width: 40px;
291
+ height: 40px;
292
+ border-radius: 999px !important;
293
+ display: grid;
294
+ place-items: center;
295
+ padding: 0 !important;
296
+ color: #ffffff !important;
297
+ background: linear-gradient(135deg, var(--pulse-brand-primary) 0%, var(--pulse-brand-primary-strong) 100%) !important;
298
+ box-shadow: 0 10px 24px var(--pulse-brand-shadow);
299
+ transition: transform 120ms ease, box-shadow 120ms ease, filter 120ms ease;
300
+ }
301
+ .pulse-agent-send-icon:hover {
302
+ transform: translateY(-1px);
303
+ box-shadow: 0 14px 30px rgba(0, 91, 187, 0.45);
304
+ filter: brightness(1.03);
305
+ }
306
+ .pulse-agent-send-icon:active {
307
+ transform: translateY(0);
308
+ box-shadow: 0 8px 18px var(--pulse-brand-shadow);
309
+ }
310
+ .pulse-agent-send-icon:focus-visible {
311
+ outline: 2px solid var(--pulse-brand-focus);
312
+ outline-offset: 2px;
313
+ }
314
+ .pulse-agent-send-icon:disabled {
315
+ cursor: not-allowed;
316
+ transform: none;
317
+ filter: grayscale(0.15);
318
+ background: linear-gradient(135deg, #93c5fd 0%, #60a5fa 100%) !important;
319
+ box-shadow: none;
320
+ }
321
+ .pulse-agent-send-icon svg { width: 19px; height: 19px; fill: currentColor; }
173
322
  `;
174
323
  document.head.appendChild(style);
175
324
  }
@@ -186,6 +335,7 @@ function createState(options) {
186
335
  conversationId: persisted.conversationId?.trim() || null,
187
336
  clientSessionId: persisted.clientSessionId?.trim() || null,
188
337
  stream: null,
338
+ reconnectTimer: null,
189
339
  messages: persistedMessages,
190
340
  opened: false,
191
341
  sending: false
@@ -199,6 +349,7 @@ function normalizeOptions(options) {
199
349
  ...options,
200
350
  slug: options.slug.trim(),
201
351
  apiBaseUrl: options.apiBaseUrl?.trim() || DEFAULT_API_BASE_URL,
352
+ followUpEmailTo: options.followUpEmailTo?.trim() || '',
202
353
  dashboardUrl: options.dashboardUrl?.trim() || DEFAULT_DASHBOARD_URL,
203
354
  dashboardSetupPath: options.dashboardSetupPath?.trim() || DEFAULT_DASHBOARD_SETUP_PATH,
204
355
  autoOpen: options.autoOpen === true,
@@ -277,6 +428,10 @@ function connectStream(state, log) {
277
428
  if (!state.widgetToken || !state.conversationId) {
278
429
  return;
279
430
  }
431
+ if (state.reconnectTimer != null) {
432
+ window.clearTimeout(state.reconnectTimer);
433
+ state.reconnectTimer = null;
434
+ }
280
435
  state.stream?.close();
281
436
  const streamUrl = `${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/stream?conversationId=${encodeURIComponent(state.conversationId)}`;
282
437
  const stream = new EventSource(streamUrl);
@@ -297,6 +452,12 @@ function connectStream(state, log) {
297
452
  stream.onerror = () => {
298
453
  stream.close();
299
454
  state.stream = null;
455
+ if (state.conversationId && state.reconnectTimer == null) {
456
+ state.reconnectTimer = window.setTimeout(() => {
457
+ state.reconnectTimer = null;
458
+ connectStream(state, log);
459
+ }, 1500);
460
+ }
300
461
  };
301
462
  }
302
463
  function pushMessage(state, log, message) {
@@ -393,6 +554,42 @@ function ensureClientSessionId(state) {
393
554
  }
394
555
  return state.clientSessionId;
395
556
  }
557
+ function resetConversation(state, log) {
558
+ state.stream?.close();
559
+ state.stream = null;
560
+ if (state.reconnectTimer != null) {
561
+ window.clearTimeout(state.reconnectTimer);
562
+ state.reconnectTimer = null;
563
+ }
564
+ state.conversationId = null;
565
+ state.messages = [];
566
+ log.innerHTML = '';
567
+ pushMessage(state, log, { role: 'system', content: 'Started a new conversation. Send your message when ready.' });
568
+ persistSession(state);
569
+ }
570
+ function refreshConversationMeta(state, meta, label) {
571
+ if (!state.conversationId) {
572
+ meta.classList.add('hidden');
573
+ label.textContent = '';
574
+ return;
575
+ }
576
+ meta.classList.remove('hidden');
577
+ label.textContent = `Conversation ID: ${state.conversationId}`;
578
+ }
579
+ function buildTranscriptBody(state) {
580
+ const lines = [];
581
+ lines.push(`Conversation ID: ${state.conversationId ?? 'N/A'}`);
582
+ lines.push(`Organization slug: ${state.options.slug}`);
583
+ lines.push('');
584
+ lines.push('Conversation transcript:');
585
+ for (const message of state.messages) {
586
+ const who = message.role === 'visitor' ? 'Visitor' : message.role === 'agent' ? 'Agent' : 'System';
587
+ lines.push(`${who}: ${message.content}`);
588
+ }
589
+ lines.push('');
590
+ lines.push('Please follow up on this thread.');
591
+ return lines.join('\n');
592
+ }
396
593
  //# sourceMappingURL=pulse-agent.js.map
397
594
  window.PulseAgent = window.PulseAgent || {};
398
595
  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;AA8BD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAuI7E"}
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,CAsN7E"}
@@ -16,11 +16,16 @@ 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"]');
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"]');
24
29
  if (state.profile) {
25
30
  nameInput.value = state.profile.name;
26
31
  emailInput.value = state.profile.email;
@@ -32,6 +37,7 @@ export function createPulseAgent(options) {
32
37
  else {
33
38
  pushMessage(state, log, { role: 'system', content: 'Welcome to Pulse. Send us a message.' });
34
39
  }
40
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
35
41
  button.addEventListener('click', () => toggle(panel, state));
36
42
  closeBtn.addEventListener('click', () => close(panel, state));
37
43
  continueBtn.addEventListener('click', () => {
@@ -45,6 +51,61 @@ export function createPulseAgent(options) {
45
51
  persistSession(state);
46
52
  prechat.classList.add('hidden');
47
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
+ });
48
109
  sendBtn.addEventListener('click', async () => {
49
110
  const text = textarea.value.trim();
50
111
  if (!text || state.sending) {
@@ -86,6 +147,14 @@ export function createPulseAgent(options) {
86
147
  state.conversationId = conversationId;
87
148
  persistSession(state);
88
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);
89
158
  }
90
159
  }
91
160
  catch (error) {
@@ -101,6 +170,7 @@ export function createPulseAgent(options) {
101
170
  if (state.conversationId) {
102
171
  await syncConversationHistory(state, log);
103
172
  connectStream(state, log);
173
+ refreshConversationMeta(state, convoMeta, convoIdLabel);
104
174
  }
105
175
  if (state.options.autoOpen) {
106
176
  open(panel, state);
@@ -116,8 +186,15 @@ export function createPulseAgent(options) {
116
186
  if (state.stream) {
117
187
  state.stream.close();
118
188
  }
189
+ if (state.reconnectTimer != null) {
190
+ window.clearTimeout(state.reconnectTimer);
191
+ state.reconnectTimer = null;
192
+ }
119
193
  root.remove();
120
194
  },
195
+ resetConversation: () => {
196
+ resetConversation(state, log);
197
+ },
121
198
  update: (partial) => {
122
199
  state.options = normalizeOptions({ ...state.options, ...partial });
123
200
  if (partial.widgetToken) {
@@ -137,13 +214,27 @@ function template(title) {
137
214
  </header>
138
215
  <div class="pulse-agent-log" data-role="log"></div>
139
216
  <div class="pulse-agent-compose">
217
+ <div class="pulse-agent-conversation-meta hidden" data-role="conversation-meta">
218
+ <span class="pulse-agent-conversation-id" data-role="conversation-id"></span>
219
+ <div class="pulse-agent-conversation-actions">
220
+ <button class="pulse-agent-conversation-action" data-role="copy-conversation" type="button">Copy ID</button>
221
+ <button class="pulse-agent-conversation-action" data-role="email-history" type="button">Email History</button>
222
+ </div>
223
+ </div>
140
224
  <div class="pulse-agent-prechat" data-role="prechat">
141
225
  <input data-role="name" type="text" placeholder="Your name" />
142
226
  <input data-role="email" type="email" placeholder="Work email" />
143
227
  <button data-role="continue">Continue</button>
144
228
  </div>
145
- <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
146
- <button data-role="send">Send</button>
229
+ <button class="pulse-agent-new-conversation" data-role="new-conversation" type="button">Start new conversation</button>
230
+ <div class="pulse-agent-input-wrap">
231
+ <textarea data-role="message" rows="3" placeholder="How can we help?"></textarea>
232
+ <button class="pulse-agent-send-icon" data-role="send" type="button" aria-label="Send message">
233
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
234
+ <path d="M4 20L21 12L4 4L4 10L16 12L4 14L4 20Z"></path>
235
+ </svg>
236
+ </button>
237
+ </div>
147
238
  </div>
148
239
  </div>`;
149
240
  }
@@ -154,22 +245,80 @@ function ensureStyle() {
154
245
  const style = document.createElement('style');
155
246
  style.id = STYLE_ID;
156
247
  style.textContent = `
157
- .pulse-agent-root { position: fixed; right: 16px; bottom: 16px; z-index: 9999; font-family: Arial, sans-serif; }
158
- .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; }
248
+ .pulse-agent-root {
249
+ --pulse-brand-primary: #005bbb;
250
+ --pulse-brand-primary-strong: #004494;
251
+ --pulse-brand-ink: #0b1f3a;
252
+ --pulse-brand-soft: #eaf3ff;
253
+ --pulse-brand-focus: #8dc5ff;
254
+ --pulse-brand-shadow: rgba(0, 91, 187, 0.35);
255
+ position: fixed;
256
+ right: 16px;
257
+ bottom: 16px;
258
+ z-index: 9999;
259
+ font-family: Arial, sans-serif;
260
+ }
261
+ .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; }
159
262
  .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); }
160
263
  .pulse-agent-panel.hidden { display: none; }
161
- .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: #0f172a; color: #fff; padding: 10px 12px; }
264
+ .pulse-agent-header { display: flex; justify-content: space-between; align-items: center; background: var(--pulse-brand-ink); color: #fff; padding: 10px 12px; }
162
265
  .pulse-agent-close { border: 0; border-radius: 6px; padding: 4px 8px; cursor: pointer; }
163
266
  .pulse-agent-log { padding: 12px; display: grid; align-content: start; gap: 8px; background: #f8fafc; overflow: auto; }
164
267
  .pulse-agent-bubble { max-width: 85%; padding: 8px 10px; border-radius: 10px; line-height: 1.35; white-space: pre-wrap; font-size: 14px; }
165
- .pulse-agent-bubble.visitor { justify-self: end; background: #dbeafe; color: #1e3a8a; }
268
+ .pulse-agent-bubble.visitor { justify-self: end; background: var(--pulse-brand-soft); color: var(--pulse-brand-ink); }
166
269
  .pulse-agent-bubble.agent { justify-self: start; background: #e2e8f0; color: #111827; }
167
270
  .pulse-agent-bubble.system { justify-self: center; background: #fef9c3; color: #854d0e; }
168
271
  .pulse-agent-compose { border-top: 1px solid #dbe2ea; padding: 10px; display: grid; gap: 8px; }
169
272
  .pulse-agent-prechat { display: grid; gap: 6px; }
170
273
  .pulse-agent-prechat.hidden { display: none; }
171
274
  .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; }
172
- .pulse-agent-compose button, .pulse-agent-prechat button { border: 0; border-radius: 8px; padding: 8px 10px; background: #1d4ed8; color: #fff; cursor: pointer; }
275
+ .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; }
276
+ .pulse-agent-conversation-meta { border: 1px solid #dbeafe; background: #f8fbff; border-radius: 8px; padding: 6px 8px; display: grid; gap: 6px; }
277
+ .pulse-agent-conversation-meta.hidden { display: none; }
278
+ .pulse-agent-conversation-id { font-family: Consolas, 'Courier New', monospace; font-size: 12px; color: #1e3a8a; }
279
+ .pulse-agent-conversation-actions { display: flex; gap: 6px; }
280
+ .pulse-agent-conversation-action { background: #ffffff !important; color: #1d4ed8 !important; border: 1px solid #bfdbfe !important; padding: 4px 8px !important; font-size: 12px; }
281
+ .pulse-agent-conversation-action:hover { background: #eff6ff !important; }
282
+ .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; }
283
+ .pulse-agent-new-conversation:hover { background: #f2f8ff !important; }
284
+ .pulse-agent-input-wrap { position: relative; }
285
+ .pulse-agent-input-wrap textarea { padding-right: 58px; min-height: 86px; resize: vertical; }
286
+ .pulse-agent-send-icon {
287
+ position: absolute;
288
+ right: 10px;
289
+ bottom: 10px;
290
+ width: 40px;
291
+ height: 40px;
292
+ border-radius: 999px !important;
293
+ display: grid;
294
+ place-items: center;
295
+ padding: 0 !important;
296
+ color: #ffffff !important;
297
+ background: linear-gradient(135deg, var(--pulse-brand-primary) 0%, var(--pulse-brand-primary-strong) 100%) !important;
298
+ box-shadow: 0 10px 24px var(--pulse-brand-shadow);
299
+ transition: transform 120ms ease, box-shadow 120ms ease, filter 120ms ease;
300
+ }
301
+ .pulse-agent-send-icon:hover {
302
+ transform: translateY(-1px);
303
+ box-shadow: 0 14px 30px rgba(0, 91, 187, 0.45);
304
+ filter: brightness(1.03);
305
+ }
306
+ .pulse-agent-send-icon:active {
307
+ transform: translateY(0);
308
+ box-shadow: 0 8px 18px var(--pulse-brand-shadow);
309
+ }
310
+ .pulse-agent-send-icon:focus-visible {
311
+ outline: 2px solid var(--pulse-brand-focus);
312
+ outline-offset: 2px;
313
+ }
314
+ .pulse-agent-send-icon:disabled {
315
+ cursor: not-allowed;
316
+ transform: none;
317
+ filter: grayscale(0.15);
318
+ background: linear-gradient(135deg, #93c5fd 0%, #60a5fa 100%) !important;
319
+ box-shadow: none;
320
+ }
321
+ .pulse-agent-send-icon svg { width: 19px; height: 19px; fill: currentColor; }
173
322
  `;
174
323
  document.head.appendChild(style);
175
324
  }
@@ -186,6 +335,7 @@ function createState(options) {
186
335
  conversationId: persisted.conversationId?.trim() || null,
187
336
  clientSessionId: persisted.clientSessionId?.trim() || null,
188
337
  stream: null,
338
+ reconnectTimer: null,
189
339
  messages: persistedMessages,
190
340
  opened: false,
191
341
  sending: false
@@ -199,6 +349,7 @@ function normalizeOptions(options) {
199
349
  ...options,
200
350
  slug: options.slug.trim(),
201
351
  apiBaseUrl: options.apiBaseUrl?.trim() || DEFAULT_API_BASE_URL,
352
+ followUpEmailTo: options.followUpEmailTo?.trim() || '',
202
353
  dashboardUrl: options.dashboardUrl?.trim() || DEFAULT_DASHBOARD_URL,
203
354
  dashboardSetupPath: options.dashboardSetupPath?.trim() || DEFAULT_DASHBOARD_SETUP_PATH,
204
355
  autoOpen: options.autoOpen === true,
@@ -277,6 +428,10 @@ function connectStream(state, log) {
277
428
  if (!state.widgetToken || !state.conversationId) {
278
429
  return;
279
430
  }
431
+ if (state.reconnectTimer != null) {
432
+ window.clearTimeout(state.reconnectTimer);
433
+ state.reconnectTimer = null;
434
+ }
280
435
  state.stream?.close();
281
436
  const streamUrl = `${trimSlash(state.options.apiBaseUrl)}/api/pulse/public/webchat/${state.widgetToken}/stream?conversationId=${encodeURIComponent(state.conversationId)}`;
282
437
  const stream = new EventSource(streamUrl);
@@ -297,6 +452,12 @@ function connectStream(state, log) {
297
452
  stream.onerror = () => {
298
453
  stream.close();
299
454
  state.stream = null;
455
+ if (state.conversationId && state.reconnectTimer == null) {
456
+ state.reconnectTimer = window.setTimeout(() => {
457
+ state.reconnectTimer = null;
458
+ connectStream(state, log);
459
+ }, 1500);
460
+ }
300
461
  };
301
462
  }
302
463
  function pushMessage(state, log, message) {
@@ -393,4 +554,40 @@ function ensureClientSessionId(state) {
393
554
  }
394
555
  return state.clientSessionId;
395
556
  }
557
+ function resetConversation(state, log) {
558
+ state.stream?.close();
559
+ state.stream = null;
560
+ if (state.reconnectTimer != null) {
561
+ window.clearTimeout(state.reconnectTimer);
562
+ state.reconnectTimer = null;
563
+ }
564
+ state.conversationId = null;
565
+ state.messages = [];
566
+ log.innerHTML = '';
567
+ pushMessage(state, log, { role: 'system', content: 'Started a new conversation. Send your message when ready.' });
568
+ persistSession(state);
569
+ }
570
+ function refreshConversationMeta(state, meta, label) {
571
+ if (!state.conversationId) {
572
+ meta.classList.add('hidden');
573
+ label.textContent = '';
574
+ return;
575
+ }
576
+ meta.classList.remove('hidden');
577
+ label.textContent = `Conversation ID: ${state.conversationId}`;
578
+ }
579
+ function buildTranscriptBody(state) {
580
+ const lines = [];
581
+ lines.push(`Conversation ID: ${state.conversationId ?? 'N/A'}`);
582
+ lines.push(`Organization slug: ${state.options.slug}`);
583
+ lines.push('');
584
+ lines.push('Conversation transcript:');
585
+ for (const message of state.messages) {
586
+ const who = message.role === 'visitor' ? 'Visitor' : message.role === 'agent' ? 'Agent' : 'System';
587
+ lines.push(`${who}: ${message.content}`);
588
+ }
589
+ lines.push('');
590
+ lines.push('Please follow up on this thread.');
591
+ return lines.join('\n');
592
+ }
396
593
  //# 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.10",
3
+ "version": "1.1.1",
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,