@absolutejs/voice 0.0.22-beta.187 → 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.
@@ -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) => `<article class="absolute-voice-trace-timeline__session absolute-voice-trace-timeline__session--${escapeHtml12(session.status)}">
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
- <a href="${escapeHtml12(session.detailHref)}">Open timeline</a>
4368
- </article>`).join("")}</div>` : '<p class="absolute-voice-trace-timeline__empty">Run a voice session to see call timelines.</p>';
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;
@@ -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) => `<article class="absolute-voice-trace-timeline__session absolute-voice-trace-timeline__session--${escapeHtml9(session.status)}">
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
- <a href="${escapeHtml9(session.detailHref)}">Open timeline</a>
2634
- </article>`).join("")}</div>` : '<p class="absolute-voice-trace-timeline__empty">Run a voice session to see call timelines.</p>';
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("a", {
2766
- href: session.detailHref,
2767
- children: "Open timeline"
2768
- }, undefined, false, undefined, this)
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", {
@@ -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) => `<article class="absolute-voice-trace-timeline__session absolute-voice-trace-timeline__session--${escapeHtml9(session.status)}">
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
- <a href="${escapeHtml9(session.detailHref)}">Open timeline</a>
2706
- </article>`).join("")}</div>` : '<p class="absolute-voice-trace-timeline__empty">Run a voice session to see call timelines.</p>';
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.187",
3
+ "version": "0.0.22-beta.188",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",