@absolutejs/voice 0.0.22-beta.186 → 0.0.22-beta.188
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.js +15 -4
- package/dist/client/traceTimelineWidget.d.ts +4 -0
- package/dist/index.js +5 -5
- package/dist/react/index.js +32 -8
- package/dist/svelte/index.js +15 -4
- package/package.json +1 -1
package/dist/client/index.js
CHANGED
|
@@ -4340,7 +4340,9 @@ var createVoiceTraceTimelineViewModel = (snapshot, options = {}) => {
|
|
|
4340
4340
|
...session,
|
|
4341
4341
|
detailHref: `${options.detailBasePath ?? "/traces"}/${encodeURIComponent(session.sessionId)}`,
|
|
4342
4342
|
durationLabel: formatMs2(session.summary.callDurationMs),
|
|
4343
|
+
incidentBundleHref: options.incidentBundleBasePath === false ? undefined : `${options.incidentBundleBasePath ?? "/voice-incidents"}/${encodeURIComponent(session.sessionId)}/markdown`,
|
|
4343
4344
|
label: `${session.summary.eventCount} events / ${session.summary.turnCount} turns`,
|
|
4345
|
+
operationsRecordHref: options.operationsRecordBasePath === false ? undefined : `${options.operationsRecordBasePath ?? "/voice-operations"}/${encodeURIComponent(session.sessionId)}`,
|
|
4344
4346
|
providerLabel: formatProviders(session)
|
|
4345
4347
|
}));
|
|
4346
4348
|
const failed = sessions.filter((session) => session.status === "failed").length;
|
|
@@ -4358,14 +4360,21 @@ var createVoiceTraceTimelineViewModel = (snapshot, options = {}) => {
|
|
|
4358
4360
|
};
|
|
4359
4361
|
var renderVoiceTraceTimelineWidgetHTML = (snapshot, options = {}) => {
|
|
4360
4362
|
const model = createVoiceTraceTimelineViewModel(snapshot, options);
|
|
4361
|
-
const sessions = model.sessions.length ? `<div class="absolute-voice-trace-timeline__sessions">${model.sessions.map((session) =>
|
|
4363
|
+
const sessions = model.sessions.length ? `<div class="absolute-voice-trace-timeline__sessions">${model.sessions.map((session) => {
|
|
4364
|
+
const supportLinks = [
|
|
4365
|
+
`<a href="${escapeHtml12(session.detailHref)}">Open timeline</a>`,
|
|
4366
|
+
session.operationsRecordHref ? `<a href="${escapeHtml12(session.operationsRecordHref)}">Open operations record</a>` : undefined,
|
|
4367
|
+
session.incidentBundleHref ? `<a href="${escapeHtml12(session.incidentBundleHref)}">Export incident bundle</a>` : undefined
|
|
4368
|
+
].filter(Boolean).join("");
|
|
4369
|
+
return `<article class="absolute-voice-trace-timeline__session absolute-voice-trace-timeline__session--${escapeHtml12(session.status)}">
|
|
4362
4370
|
<header>
|
|
4363
4371
|
<strong>${escapeHtml12(session.sessionId)}</strong>
|
|
4364
4372
|
<span>${escapeHtml12(session.status)}</span>
|
|
4365
4373
|
</header>
|
|
4366
4374
|
<p>${escapeHtml12(session.label)} \xB7 ${escapeHtml12(session.durationLabel)} \xB7 ${escapeHtml12(session.providerLabel)}</p>
|
|
4367
|
-
<
|
|
4368
|
-
</article
|
|
4375
|
+
<p class="absolute-voice-trace-timeline__actions">${supportLinks}</p>
|
|
4376
|
+
</article>`;
|
|
4377
|
+
}).join("")}</div>` : '<p class="absolute-voice-trace-timeline__empty">Run a voice session to see call timelines.</p>';
|
|
4369
4378
|
return `<section class="absolute-voice-trace-timeline absolute-voice-trace-timeline--${escapeHtml12(model.status)}">
|
|
4370
4379
|
<header class="absolute-voice-trace-timeline__header">
|
|
4371
4380
|
<span class="absolute-voice-trace-timeline__eyebrow">${escapeHtml12(model.title)}</span>
|
|
@@ -4376,7 +4385,7 @@ var renderVoiceTraceTimelineWidgetHTML = (snapshot, options = {}) => {
|
|
|
4376
4385
|
${model.error ? `<p class="absolute-voice-trace-timeline__error">${escapeHtml12(model.error)}</p>` : ""}
|
|
4377
4386
|
</section>`;
|
|
4378
4387
|
};
|
|
4379
|
-
var getVoiceTraceTimelineCSS = () => `.absolute-voice-trace-timeline{border:1px solid #bad7d3;border-radius:20px;background:#f3fffb;color:#09201c;padding:18px;box-shadow:0 18px 40px rgba(9,32,28,.12);font-family:inherit}.absolute-voice-trace-timeline--error,.absolute-voice-trace-timeline--failed{border-color:#f2a7a7;background:#fff5f3}.absolute-voice-trace-timeline--warning{border-color:#fbbf24;background:#fffaf0}.absolute-voice-trace-timeline__header,.absolute-voice-trace-timeline__session header{align-items:start;display:flex;gap:12px;justify-content:space-between}.absolute-voice-trace-timeline__eyebrow{color:#17665b;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.absolute-voice-trace-timeline__label{font-size:24px;line-height:1}.absolute-voice-trace-timeline__description,.absolute-voice-trace-timeline__session p,.absolute-voice-trace-timeline__empty{color:#35544f}.absolute-voice-trace-timeline__sessions{display:grid;gap:12px;margin-top:14px}.absolute-voice-trace-timeline__session{background:#fff;border:1px solid #cfe7e2;border-radius:16px;padding:14px}.absolute-voice-trace-timeline__session--failed{border-color:#f2a7a7}.absolute-voice-trace-timeline__session--warning{border-color:#fbbf24}.absolute-voice-trace-timeline__session p{margin:10px 0}.absolute-voice-trace-timeline__session a{color:#0f766e;font-weight:800}.absolute-voice-trace-timeline__empty{margin:14px 0 0}.absolute-voice-trace-timeline__error{color:#9f1239;font-weight:700}`;
|
|
4388
|
+
var getVoiceTraceTimelineCSS = () => `.absolute-voice-trace-timeline{border:1px solid #bad7d3;border-radius:20px;background:#f3fffb;color:#09201c;padding:18px;box-shadow:0 18px 40px rgba(9,32,28,.12);font-family:inherit}.absolute-voice-trace-timeline--error,.absolute-voice-trace-timeline--failed{border-color:#f2a7a7;background:#fff5f3}.absolute-voice-trace-timeline--warning{border-color:#fbbf24;background:#fffaf0}.absolute-voice-trace-timeline__header,.absolute-voice-trace-timeline__session header{align-items:start;display:flex;gap:12px;justify-content:space-between}.absolute-voice-trace-timeline__eyebrow{color:#17665b;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.absolute-voice-trace-timeline__label{font-size:24px;line-height:1}.absolute-voice-trace-timeline__description,.absolute-voice-trace-timeline__session p,.absolute-voice-trace-timeline__empty{color:#35544f}.absolute-voice-trace-timeline__sessions{display:grid;gap:12px;margin-top:14px}.absolute-voice-trace-timeline__session{background:#fff;border:1px solid #cfe7e2;border-radius:16px;padding:14px}.absolute-voice-trace-timeline__session--failed{border-color:#f2a7a7}.absolute-voice-trace-timeline__session--warning{border-color:#fbbf24}.absolute-voice-trace-timeline__session p{margin:10px 0}.absolute-voice-trace-timeline__actions{display:flex;flex-wrap:wrap;gap:10px}.absolute-voice-trace-timeline__session a{color:#0f766e;font-weight:800}.absolute-voice-trace-timeline__empty{margin:14px 0 0}.absolute-voice-trace-timeline__error{color:#9f1239;font-weight:700}`;
|
|
4380
4389
|
var mountVoiceTraceTimeline = (element, path = "/api/voice-traces", options = {}) => {
|
|
4381
4390
|
const store = createVoiceTraceTimelineStore(path, options);
|
|
4382
4391
|
const render = () => {
|
|
@@ -4405,8 +4414,10 @@ var defineVoiceTraceTimelineElement = (tagName = "absolute-voice-trace-timeline"
|
|
|
4405
4414
|
this.mounted = mountVoiceTraceTimeline(this, this.getAttribute("path") ?? "/api/voice-traces", {
|
|
4406
4415
|
description: this.getAttribute("description") ?? undefined,
|
|
4407
4416
|
detailBasePath: this.getAttribute("detail-base-path") ?? undefined,
|
|
4417
|
+
incidentBundleBasePath: this.getAttribute("incident-bundle-base-path") ?? undefined,
|
|
4408
4418
|
intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
|
|
4409
4419
|
limit: Number.isFinite(limit) ? limit : 3,
|
|
4420
|
+
operationsRecordBasePath: this.getAttribute("operations-record-base-path") ?? undefined,
|
|
4410
4421
|
title: this.getAttribute("title") ?? undefined
|
|
4411
4422
|
});
|
|
4412
4423
|
}
|
|
@@ -3,7 +3,9 @@ import { type VoiceTraceTimelineClientOptions, type VoiceTraceTimelineSnapshot }
|
|
|
3
3
|
export type VoiceTraceTimelineSessionView = VoiceTraceTimelineSession & {
|
|
4
4
|
detailHref: string;
|
|
5
5
|
durationLabel: string;
|
|
6
|
+
incidentBundleHref?: string;
|
|
6
7
|
label: string;
|
|
8
|
+
operationsRecordHref?: string;
|
|
7
9
|
providerLabel: string;
|
|
8
10
|
};
|
|
9
11
|
export type VoiceTraceTimelineViewModel = {
|
|
@@ -19,7 +21,9 @@ export type VoiceTraceTimelineViewModel = {
|
|
|
19
21
|
export type VoiceTraceTimelineWidgetOptions = VoiceTraceTimelineClientOptions & {
|
|
20
22
|
description?: string;
|
|
21
23
|
detailBasePath?: string;
|
|
24
|
+
incidentBundleBasePath?: false | string;
|
|
22
25
|
limit?: number;
|
|
26
|
+
operationsRecordBasePath?: false | string;
|
|
23
27
|
title?: string;
|
|
24
28
|
};
|
|
25
29
|
export declare const createVoiceTraceTimelineViewModel: (snapshot: VoiceTraceTimelineSnapshot, options?: VoiceTraceTimelineWidgetOptions) => VoiceTraceTimelineViewModel;
|
package/dist/index.js
CHANGED
|
@@ -22610,22 +22610,22 @@ var resolveOutcome4 = (events) => {
|
|
|
22610
22610
|
};
|
|
22611
22611
|
var buildVoiceOperationsRecord = async (options) => {
|
|
22612
22612
|
const sourceEvents = options.events ?? await options.store?.list({ sessionId: options.sessionId }) ?? [];
|
|
22613
|
-
const
|
|
22613
|
+
const rawTraceEvents = filterVoiceTraceEvents(sourceEvents, {
|
|
22614
22614
|
sessionId: options.sessionId
|
|
22615
22615
|
});
|
|
22616
|
+
const traceEvents = options.redact ? redactVoiceTraceEvents(rawTraceEvents, options.redact) : rawTraceEvents;
|
|
22616
22617
|
const timelineReport = summarizeVoiceTraceTimeline(traceEvents, {
|
|
22617
22618
|
evaluation: options.evaluation,
|
|
22618
|
-
limit: 1
|
|
22619
|
-
redact: options.redact
|
|
22619
|
+
limit: 1
|
|
22620
22620
|
});
|
|
22621
22621
|
const timelineSession = timelineReport.sessions[0];
|
|
22622
22622
|
const replay = await summarizeVoiceSessionReplay({
|
|
22623
22623
|
evaluation: options.evaluation,
|
|
22624
22624
|
events: traceEvents,
|
|
22625
|
-
redact: options.redact,
|
|
22626
22625
|
sessionId: options.sessionId
|
|
22627
22626
|
});
|
|
22628
|
-
const
|
|
22627
|
+
const rawAuditEvents = options.audit ? filterVoiceAuditEvents(await options.audit.list({ sessionId: options.sessionId })) : undefined;
|
|
22628
|
+
const auditEvents = options.redact && rawAuditEvents ? redactVoiceAuditEvents(rawAuditEvents, options.redact) : rawAuditEvents;
|
|
22629
22629
|
return {
|
|
22630
22630
|
audit: auditEvents ? {
|
|
22631
22631
|
error: countOutcome(auditEvents, "error"),
|
package/dist/react/index.js
CHANGED
|
@@ -2606,7 +2606,9 @@ var createVoiceTraceTimelineViewModel = (snapshot, options = {}) => {
|
|
|
2606
2606
|
...session,
|
|
2607
2607
|
detailHref: `${options.detailBasePath ?? "/traces"}/${encodeURIComponent(session.sessionId)}`,
|
|
2608
2608
|
durationLabel: formatMs(session.summary.callDurationMs),
|
|
2609
|
+
incidentBundleHref: options.incidentBundleBasePath === false ? undefined : `${options.incidentBundleBasePath ?? "/voice-incidents"}/${encodeURIComponent(session.sessionId)}/markdown`,
|
|
2609
2610
|
label: `${session.summary.eventCount} events / ${session.summary.turnCount} turns`,
|
|
2611
|
+
operationsRecordHref: options.operationsRecordBasePath === false ? undefined : `${options.operationsRecordBasePath ?? "/voice-operations"}/${encodeURIComponent(session.sessionId)}`,
|
|
2610
2612
|
providerLabel: formatProviders(session)
|
|
2611
2613
|
}));
|
|
2612
2614
|
const failed = sessions.filter((session) => session.status === "failed").length;
|
|
@@ -2624,14 +2626,21 @@ var createVoiceTraceTimelineViewModel = (snapshot, options = {}) => {
|
|
|
2624
2626
|
};
|
|
2625
2627
|
var renderVoiceTraceTimelineWidgetHTML = (snapshot, options = {}) => {
|
|
2626
2628
|
const model = createVoiceTraceTimelineViewModel(snapshot, options);
|
|
2627
|
-
const sessions = model.sessions.length ? `<div class="absolute-voice-trace-timeline__sessions">${model.sessions.map((session) =>
|
|
2629
|
+
const sessions = model.sessions.length ? `<div class="absolute-voice-trace-timeline__sessions">${model.sessions.map((session) => {
|
|
2630
|
+
const supportLinks = [
|
|
2631
|
+
`<a href="${escapeHtml9(session.detailHref)}">Open timeline</a>`,
|
|
2632
|
+
session.operationsRecordHref ? `<a href="${escapeHtml9(session.operationsRecordHref)}">Open operations record</a>` : undefined,
|
|
2633
|
+
session.incidentBundleHref ? `<a href="${escapeHtml9(session.incidentBundleHref)}">Export incident bundle</a>` : undefined
|
|
2634
|
+
].filter(Boolean).join("");
|
|
2635
|
+
return `<article class="absolute-voice-trace-timeline__session absolute-voice-trace-timeline__session--${escapeHtml9(session.status)}">
|
|
2628
2636
|
<header>
|
|
2629
2637
|
<strong>${escapeHtml9(session.sessionId)}</strong>
|
|
2630
2638
|
<span>${escapeHtml9(session.status)}</span>
|
|
2631
2639
|
</header>
|
|
2632
2640
|
<p>${escapeHtml9(session.label)} \xB7 ${escapeHtml9(session.durationLabel)} \xB7 ${escapeHtml9(session.providerLabel)}</p>
|
|
2633
|
-
<
|
|
2634
|
-
</article
|
|
2641
|
+
<p class="absolute-voice-trace-timeline__actions">${supportLinks}</p>
|
|
2642
|
+
</article>`;
|
|
2643
|
+
}).join("")}</div>` : '<p class="absolute-voice-trace-timeline__empty">Run a voice session to see call timelines.</p>';
|
|
2635
2644
|
return `<section class="absolute-voice-trace-timeline absolute-voice-trace-timeline--${escapeHtml9(model.status)}">
|
|
2636
2645
|
<header class="absolute-voice-trace-timeline__header">
|
|
2637
2646
|
<span class="absolute-voice-trace-timeline__eyebrow">${escapeHtml9(model.title)}</span>
|
|
@@ -2642,7 +2651,7 @@ var renderVoiceTraceTimelineWidgetHTML = (snapshot, options = {}) => {
|
|
|
2642
2651
|
${model.error ? `<p class="absolute-voice-trace-timeline__error">${escapeHtml9(model.error)}</p>` : ""}
|
|
2643
2652
|
</section>`;
|
|
2644
2653
|
};
|
|
2645
|
-
var getVoiceTraceTimelineCSS = () => `.absolute-voice-trace-timeline{border:1px solid #bad7d3;border-radius:20px;background:#f3fffb;color:#09201c;padding:18px;box-shadow:0 18px 40px rgba(9,32,28,.12);font-family:inherit}.absolute-voice-trace-timeline--error,.absolute-voice-trace-timeline--failed{border-color:#f2a7a7;background:#fff5f3}.absolute-voice-trace-timeline--warning{border-color:#fbbf24;background:#fffaf0}.absolute-voice-trace-timeline__header,.absolute-voice-trace-timeline__session header{align-items:start;display:flex;gap:12px;justify-content:space-between}.absolute-voice-trace-timeline__eyebrow{color:#17665b;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.absolute-voice-trace-timeline__label{font-size:24px;line-height:1}.absolute-voice-trace-timeline__description,.absolute-voice-trace-timeline__session p,.absolute-voice-trace-timeline__empty{color:#35544f}.absolute-voice-trace-timeline__sessions{display:grid;gap:12px;margin-top:14px}.absolute-voice-trace-timeline__session{background:#fff;border:1px solid #cfe7e2;border-radius:16px;padding:14px}.absolute-voice-trace-timeline__session--failed{border-color:#f2a7a7}.absolute-voice-trace-timeline__session--warning{border-color:#fbbf24}.absolute-voice-trace-timeline__session p{margin:10px 0}.absolute-voice-trace-timeline__session a{color:#0f766e;font-weight:800}.absolute-voice-trace-timeline__empty{margin:14px 0 0}.absolute-voice-trace-timeline__error{color:#9f1239;font-weight:700}`;
|
|
2654
|
+
var getVoiceTraceTimelineCSS = () => `.absolute-voice-trace-timeline{border:1px solid #bad7d3;border-radius:20px;background:#f3fffb;color:#09201c;padding:18px;box-shadow:0 18px 40px rgba(9,32,28,.12);font-family:inherit}.absolute-voice-trace-timeline--error,.absolute-voice-trace-timeline--failed{border-color:#f2a7a7;background:#fff5f3}.absolute-voice-trace-timeline--warning{border-color:#fbbf24;background:#fffaf0}.absolute-voice-trace-timeline__header,.absolute-voice-trace-timeline__session header{align-items:start;display:flex;gap:12px;justify-content:space-between}.absolute-voice-trace-timeline__eyebrow{color:#17665b;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.absolute-voice-trace-timeline__label{font-size:24px;line-height:1}.absolute-voice-trace-timeline__description,.absolute-voice-trace-timeline__session p,.absolute-voice-trace-timeline__empty{color:#35544f}.absolute-voice-trace-timeline__sessions{display:grid;gap:12px;margin-top:14px}.absolute-voice-trace-timeline__session{background:#fff;border:1px solid #cfe7e2;border-radius:16px;padding:14px}.absolute-voice-trace-timeline__session--failed{border-color:#f2a7a7}.absolute-voice-trace-timeline__session--warning{border-color:#fbbf24}.absolute-voice-trace-timeline__session p{margin:10px 0}.absolute-voice-trace-timeline__actions{display:flex;flex-wrap:wrap;gap:10px}.absolute-voice-trace-timeline__session a{color:#0f766e;font-weight:800}.absolute-voice-trace-timeline__empty{margin:14px 0 0}.absolute-voice-trace-timeline__error{color:#9f1239;font-weight:700}`;
|
|
2646
2655
|
var mountVoiceTraceTimeline = (element, path = "/api/voice-traces", options = {}) => {
|
|
2647
2656
|
const store = createVoiceTraceTimelineStore(path, options);
|
|
2648
2657
|
const render = () => {
|
|
@@ -2671,8 +2680,10 @@ var defineVoiceTraceTimelineElement = (tagName = "absolute-voice-trace-timeline"
|
|
|
2671
2680
|
this.mounted = mountVoiceTraceTimeline(this, this.getAttribute("path") ?? "/api/voice-traces", {
|
|
2672
2681
|
description: this.getAttribute("description") ?? undefined,
|
|
2673
2682
|
detailBasePath: this.getAttribute("detail-base-path") ?? undefined,
|
|
2683
|
+
incidentBundleBasePath: this.getAttribute("incident-bundle-base-path") ?? undefined,
|
|
2674
2684
|
intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
|
|
2675
2685
|
limit: Number.isFinite(limit) ? limit : 3,
|
|
2686
|
+
operationsRecordBasePath: this.getAttribute("operations-record-base-path") ?? undefined,
|
|
2676
2687
|
title: this.getAttribute("title") ?? undefined
|
|
2677
2688
|
});
|
|
2678
2689
|
}
|
|
@@ -2762,10 +2773,23 @@ var VoiceTraceTimeline = ({
|
|
|
2762
2773
|
session.providerLabel
|
|
2763
2774
|
]
|
|
2764
2775
|
}, undefined, true, undefined, this),
|
|
2765
|
-
/* @__PURE__ */ jsxDEV9("
|
|
2766
|
-
|
|
2767
|
-
children:
|
|
2768
|
-
|
|
2776
|
+
/* @__PURE__ */ jsxDEV9("p", {
|
|
2777
|
+
className: "absolute-voice-trace-timeline__actions",
|
|
2778
|
+
children: [
|
|
2779
|
+
/* @__PURE__ */ jsxDEV9("a", {
|
|
2780
|
+
href: session.detailHref,
|
|
2781
|
+
children: "Open timeline"
|
|
2782
|
+
}, undefined, false, undefined, this),
|
|
2783
|
+
session.operationsRecordHref ? /* @__PURE__ */ jsxDEV9("a", {
|
|
2784
|
+
href: session.operationsRecordHref,
|
|
2785
|
+
children: "Open operations record"
|
|
2786
|
+
}, undefined, false, undefined, this) : null,
|
|
2787
|
+
session.incidentBundleHref ? /* @__PURE__ */ jsxDEV9("a", {
|
|
2788
|
+
href: session.incidentBundleHref,
|
|
2789
|
+
children: "Export incident bundle"
|
|
2790
|
+
}, undefined, false, undefined, this) : null
|
|
2791
|
+
]
|
|
2792
|
+
}, undefined, true, undefined, this)
|
|
2769
2793
|
]
|
|
2770
2794
|
}, session.sessionId, true, undefined, this))
|
|
2771
2795
|
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV9("p", {
|
package/dist/svelte/index.js
CHANGED
|
@@ -2678,7 +2678,9 @@ var createVoiceTraceTimelineViewModel = (snapshot, options = {}) => {
|
|
|
2678
2678
|
...session,
|
|
2679
2679
|
detailHref: `${options.detailBasePath ?? "/traces"}/${encodeURIComponent(session.sessionId)}`,
|
|
2680
2680
|
durationLabel: formatMs(session.summary.callDurationMs),
|
|
2681
|
+
incidentBundleHref: options.incidentBundleBasePath === false ? undefined : `${options.incidentBundleBasePath ?? "/voice-incidents"}/${encodeURIComponent(session.sessionId)}/markdown`,
|
|
2681
2682
|
label: `${session.summary.eventCount} events / ${session.summary.turnCount} turns`,
|
|
2683
|
+
operationsRecordHref: options.operationsRecordBasePath === false ? undefined : `${options.operationsRecordBasePath ?? "/voice-operations"}/${encodeURIComponent(session.sessionId)}`,
|
|
2682
2684
|
providerLabel: formatProviders(session)
|
|
2683
2685
|
}));
|
|
2684
2686
|
const failed = sessions.filter((session) => session.status === "failed").length;
|
|
@@ -2696,14 +2698,21 @@ var createVoiceTraceTimelineViewModel = (snapshot, options = {}) => {
|
|
|
2696
2698
|
};
|
|
2697
2699
|
var renderVoiceTraceTimelineWidgetHTML = (snapshot, options = {}) => {
|
|
2698
2700
|
const model = createVoiceTraceTimelineViewModel(snapshot, options);
|
|
2699
|
-
const sessions = model.sessions.length ? `<div class="absolute-voice-trace-timeline__sessions">${model.sessions.map((session) =>
|
|
2701
|
+
const sessions = model.sessions.length ? `<div class="absolute-voice-trace-timeline__sessions">${model.sessions.map((session) => {
|
|
2702
|
+
const supportLinks = [
|
|
2703
|
+
`<a href="${escapeHtml9(session.detailHref)}">Open timeline</a>`,
|
|
2704
|
+
session.operationsRecordHref ? `<a href="${escapeHtml9(session.operationsRecordHref)}">Open operations record</a>` : undefined,
|
|
2705
|
+
session.incidentBundleHref ? `<a href="${escapeHtml9(session.incidentBundleHref)}">Export incident bundle</a>` : undefined
|
|
2706
|
+
].filter(Boolean).join("");
|
|
2707
|
+
return `<article class="absolute-voice-trace-timeline__session absolute-voice-trace-timeline__session--${escapeHtml9(session.status)}">
|
|
2700
2708
|
<header>
|
|
2701
2709
|
<strong>${escapeHtml9(session.sessionId)}</strong>
|
|
2702
2710
|
<span>${escapeHtml9(session.status)}</span>
|
|
2703
2711
|
</header>
|
|
2704
2712
|
<p>${escapeHtml9(session.label)} \xB7 ${escapeHtml9(session.durationLabel)} \xB7 ${escapeHtml9(session.providerLabel)}</p>
|
|
2705
|
-
<
|
|
2706
|
-
</article
|
|
2713
|
+
<p class="absolute-voice-trace-timeline__actions">${supportLinks}</p>
|
|
2714
|
+
</article>`;
|
|
2715
|
+
}).join("")}</div>` : '<p class="absolute-voice-trace-timeline__empty">Run a voice session to see call timelines.</p>';
|
|
2707
2716
|
return `<section class="absolute-voice-trace-timeline absolute-voice-trace-timeline--${escapeHtml9(model.status)}">
|
|
2708
2717
|
<header class="absolute-voice-trace-timeline__header">
|
|
2709
2718
|
<span class="absolute-voice-trace-timeline__eyebrow">${escapeHtml9(model.title)}</span>
|
|
@@ -2714,7 +2723,7 @@ var renderVoiceTraceTimelineWidgetHTML = (snapshot, options = {}) => {
|
|
|
2714
2723
|
${model.error ? `<p class="absolute-voice-trace-timeline__error">${escapeHtml9(model.error)}</p>` : ""}
|
|
2715
2724
|
</section>`;
|
|
2716
2725
|
};
|
|
2717
|
-
var getVoiceTraceTimelineCSS = () => `.absolute-voice-trace-timeline{border:1px solid #bad7d3;border-radius:20px;background:#f3fffb;color:#09201c;padding:18px;box-shadow:0 18px 40px rgba(9,32,28,.12);font-family:inherit}.absolute-voice-trace-timeline--error,.absolute-voice-trace-timeline--failed{border-color:#f2a7a7;background:#fff5f3}.absolute-voice-trace-timeline--warning{border-color:#fbbf24;background:#fffaf0}.absolute-voice-trace-timeline__header,.absolute-voice-trace-timeline__session header{align-items:start;display:flex;gap:12px;justify-content:space-between}.absolute-voice-trace-timeline__eyebrow{color:#17665b;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.absolute-voice-trace-timeline__label{font-size:24px;line-height:1}.absolute-voice-trace-timeline__description,.absolute-voice-trace-timeline__session p,.absolute-voice-trace-timeline__empty{color:#35544f}.absolute-voice-trace-timeline__sessions{display:grid;gap:12px;margin-top:14px}.absolute-voice-trace-timeline__session{background:#fff;border:1px solid #cfe7e2;border-radius:16px;padding:14px}.absolute-voice-trace-timeline__session--failed{border-color:#f2a7a7}.absolute-voice-trace-timeline__session--warning{border-color:#fbbf24}.absolute-voice-trace-timeline__session p{margin:10px 0}.absolute-voice-trace-timeline__session a{color:#0f766e;font-weight:800}.absolute-voice-trace-timeline__empty{margin:14px 0 0}.absolute-voice-trace-timeline__error{color:#9f1239;font-weight:700}`;
|
|
2726
|
+
var getVoiceTraceTimelineCSS = () => `.absolute-voice-trace-timeline{border:1px solid #bad7d3;border-radius:20px;background:#f3fffb;color:#09201c;padding:18px;box-shadow:0 18px 40px rgba(9,32,28,.12);font-family:inherit}.absolute-voice-trace-timeline--error,.absolute-voice-trace-timeline--failed{border-color:#f2a7a7;background:#fff5f3}.absolute-voice-trace-timeline--warning{border-color:#fbbf24;background:#fffaf0}.absolute-voice-trace-timeline__header,.absolute-voice-trace-timeline__session header{align-items:start;display:flex;gap:12px;justify-content:space-between}.absolute-voice-trace-timeline__eyebrow{color:#17665b;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.absolute-voice-trace-timeline__label{font-size:24px;line-height:1}.absolute-voice-trace-timeline__description,.absolute-voice-trace-timeline__session p,.absolute-voice-trace-timeline__empty{color:#35544f}.absolute-voice-trace-timeline__sessions{display:grid;gap:12px;margin-top:14px}.absolute-voice-trace-timeline__session{background:#fff;border:1px solid #cfe7e2;border-radius:16px;padding:14px}.absolute-voice-trace-timeline__session--failed{border-color:#f2a7a7}.absolute-voice-trace-timeline__session--warning{border-color:#fbbf24}.absolute-voice-trace-timeline__session p{margin:10px 0}.absolute-voice-trace-timeline__actions{display:flex;flex-wrap:wrap;gap:10px}.absolute-voice-trace-timeline__session a{color:#0f766e;font-weight:800}.absolute-voice-trace-timeline__empty{margin:14px 0 0}.absolute-voice-trace-timeline__error{color:#9f1239;font-weight:700}`;
|
|
2718
2727
|
var mountVoiceTraceTimeline = (element, path = "/api/voice-traces", options = {}) => {
|
|
2719
2728
|
const store = createVoiceTraceTimelineStore(path, options);
|
|
2720
2729
|
const render = () => {
|
|
@@ -2743,8 +2752,10 @@ var defineVoiceTraceTimelineElement = (tagName = "absolute-voice-trace-timeline"
|
|
|
2743
2752
|
this.mounted = mountVoiceTraceTimeline(this, this.getAttribute("path") ?? "/api/voice-traces", {
|
|
2744
2753
|
description: this.getAttribute("description") ?? undefined,
|
|
2745
2754
|
detailBasePath: this.getAttribute("detail-base-path") ?? undefined,
|
|
2755
|
+
incidentBundleBasePath: this.getAttribute("incident-bundle-base-path") ?? undefined,
|
|
2746
2756
|
intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
|
|
2747
2757
|
limit: Number.isFinite(limit) ? limit : 3,
|
|
2758
|
+
operationsRecordBasePath: this.getAttribute("operations-record-base-path") ?? undefined,
|
|
2748
2759
|
title: this.getAttribute("title") ?? undefined
|
|
2749
2760
|
});
|
|
2750
2761
|
}
|