@flamingo-stack/openframe-frontend-core 0.0.850 → 0.0.851
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/chat-protocol/events.d.ts +4 -1
- package/dist/chat-protocol/events.d.ts.map +1 -1
- package/dist/chat-protocol/index.cjs +90 -40
- package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
- package/dist/chat-protocol/nats-decoder.js +5 -1
- package/dist/chat-protocol/policy-review.d.ts +18 -0
- package/dist/chat-protocol/policy-review.d.ts.map +1 -0
- package/dist/chat-protocol/policy-review.js +55 -0
- package/dist/{chunk-ZDSC3GFX.cjs → chunk-2NGW73T2.cjs} +3 -3
- package/dist/{chunk-2QZUTNL3.cjs → chunk-2WZHNMQY.cjs} +67 -67
- package/dist/{chunk-R5JPZ6TY.cjs → chunk-5SEJEBAB.cjs} +8 -8
- package/dist/{chunk-TX4NTH22.cjs → chunk-B6D4WWKD.cjs} +36 -36
- package/dist/{chunk-FXLROQUT.cjs → chunk-CDW6JTAQ.cjs} +442 -459
- package/dist/{chunk-5PIR77V5.cjs → chunk-DN227KZH.cjs} +4 -4
- package/dist/{chunk-QJER2ZNA.cjs → chunk-FGSN5UNY.cjs} +3 -3
- package/dist/{chunk-ZGEWT3SF.cjs → chunk-HXURNKXI.cjs} +3 -3
- package/dist/{chunk-FRG724DU.cjs → chunk-KRTTH3ET.cjs} +4 -4
- package/dist/{chunk-YJZ7R3W5.cjs → chunk-KXFIYO4O.cjs} +8 -8
- package/dist/{chunk-4YBS4HIO.cjs → chunk-LM7EL3UQ.cjs} +444 -27
- package/dist/{chunk-LGYPCUHO.cjs → chunk-NQEPLUUW.cjs} +21 -21
- package/dist/{chunk-OHHDX3Z4.cjs → chunk-ODMZSAIY.cjs} +36 -36
- package/dist/{chunk-VRWBJL7B.cjs → chunk-OUP7L3U5.cjs} +50 -50
- package/dist/{chunk-5CBI2ZYV.cjs → chunk-PJNEBSP5.cjs} +5 -5
- package/dist/{chunk-6AJYGXXS.cjs → chunk-PPCRLSVR.cjs} +11 -11
- package/dist/{chunk-SA2NNWIJ.cjs → chunk-QCSA7GIX.cjs} +17 -62
- package/dist/{chunk-JWIITCVB.cjs → chunk-SPKAXETT.cjs} +42 -42
- package/dist/{chunk-CAGNWDVJ.cjs → chunk-U4RTWH5D.cjs} +42 -42
- package/dist/{chunk-IHY7E4EX.cjs → chunk-UFGPLXH6.cjs} +4 -4
- package/dist/{chunk-7ICHJVAT.cjs → chunk-UQK6J3ZS.cjs} +13 -13
- package/dist/{chunk-S3QXLD4X.cjs → chunk-VCFQHPOO.cjs} +37 -3
- package/dist/{chunk-IPGGSFR7.cjs → chunk-VU6N3NZS.cjs} +6 -6
- package/dist/{chunk-GAYLAA3L.cjs → chunk-VXIZCUNZ.cjs} +61 -61
- package/dist/{chunk-3W4ASAXN.cjs → chunk-WYROOMUZ.cjs} +2 -2
- package/dist/{chunk-XKOL5CNU.cjs → chunk-ZEPEFKHA.cjs} +811 -932
- package/dist/{cloud-tenants-TVB3DT3J.cjs → cloud-tenants-XH6GV4EI.cjs} +12 -13
- package/dist/components/case-studies/index.cjs +24 -25
- package/dist/components/chat/approval-batch-message.d.ts +5 -0
- package/dist/components/chat/approval-batch-message.d.ts.map +1 -1
- package/dist/components/chat/approval-batch-message.js +36 -10
- package/dist/components/chat/index.cjs +8 -9
- package/dist/components/chat/policy-review.d.ts +27 -0
- package/dist/components/chat/policy-review.d.ts.map +1 -0
- package/dist/components/chat/policy-review.js +67 -0
- package/dist/components/chat/stream/message-mutations.d.ts.map +1 -1
- package/dist/components/chat/stream/message-mutations.js +4 -1
- package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
- package/dist/components/chat/tool-execution-display.js +16 -5
- package/dist/components/chat/types/message.types.d.ts +40 -2
- package/dist/components/chat/types/message.types.d.ts.map +1 -1
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
- package/dist/components/chat/utils/extract-incomplete-message-state.js +2 -0
- package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
- package/dist/components/chat/utils/message-segment-accumulator.js +3 -0
- package/dist/components/chat/utils/process-historical-messages.d.ts +2 -2
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.js +7 -1
- package/dist/components/contact/index.cjs +13 -14
- package/dist/components/docs/index.cjs +16 -17
- package/dist/components/embeds/index.cjs +13 -14
- package/dist/components/faq/index.cjs +14 -15
- package/dist/components/features/approval-level.d.ts +6 -12
- package/dist/components/features/approval-level.d.ts.map +1 -1
- package/dist/components/features/approval-level.js +45 -55
- package/dist/components/features/index.cjs +16 -16
- package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/approval-request-notification-tile.js +71 -48
- package/dist/components/features/notifications/types.d.ts +2 -0
- package/dist/components/features/notifications/types.d.ts.map +1 -1
- package/dist/components/features/notifications/types.js +3 -1
- package/dist/components/features/policy-configuration-panel.d.ts.map +1 -1
- package/dist/components/features/policy-configuration-panel.js +75 -64
- package/dist/components/help-center-pages/index.cjs +78 -79
- package/dist/components/index.cjs +57 -59
- package/dist/components/meeting-scheduler/index.cjs +61 -61
- package/dist/components/navigation/index.cjs +15 -16
- package/dist/components/onboarding-guides/index.cjs +14 -15
- package/dist/components/product-demo/index.cjs +23 -24
- package/dist/components/tickets/index.cjs +17 -18
- package/dist/components/ui/file-manager/index.cjs +8 -9
- package/dist/components/ui/index.cjs +16 -18
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +8 -2
- package/dist/components/ui/tab-selector.d.ts +7 -1
- package/dist/components/ui/tab-selector.d.ts.map +1 -1
- package/dist/components/ui/tab-selector.js +22 -3
- package/dist/{devices-NGCTSXIU.cjs → devices-7PT6MPJI.cjs} +13 -14
- package/dist/{embeddable-chat-322NDFP5.cjs → embeddable-chat-5NY76K7K.cjs} +84 -85
- package/dist/index.cjs +23 -25
- package/dist/{knowledge-75PO5DYS.cjs → knowledge-J6N7IEVI.cjs} +13 -14
- package/dist/{logs-PZESOAIG.cjs → logs-D6KQP2BX.cjs} +19 -20
- package/dist/{policies-6XNMBFWO.cjs → policies-J7MCOL3C.cjs} +16 -17
- package/dist/{remote-session-Q2FIBCGT.cjs → remote-session-PXHA5KFK.cjs} +8 -9
- package/dist/{scripts-B3JW6TPF.cjs → scripts-VURXIHVS.cjs} +19 -20
- package/dist/{software-update-NWP542J7.cjs → software-update-6SHUBDIE.cjs} +16 -17
- package/dist/{tickets-board-7FLGQEHF.cjs → tickets-board-NLCN7WNX.cjs} +9 -9
- package/package.json +1 -1
- package/src/chat-protocol/events.ts +4 -1
- package/src/chat-protocol/nats-decoder.ts +4 -0
- package/src/chat-protocol/policy-review.ts +71 -0
- package/src/components/chat/approval-batch-message.tsx +47 -10
- package/src/components/chat/policy-review.tsx +90 -0
- package/src/components/chat/stream/message-mutations.ts +4 -0
- package/src/components/chat/tool-execution-display.tsx +23 -4
- package/src/components/chat/types/message.types.ts +42 -2
- package/src/components/chat/utils/extract-incomplete-message-state.ts +2 -0
- package/src/components/chat/utils/message-segment-accumulator.ts +3 -0
- package/src/components/chat/utils/process-historical-messages.ts +14 -3
- package/src/components/features/approval-level.tsx +74 -78
- package/src/components/features/notifications/approval-request-notification-tile.tsx +75 -50
- package/src/components/features/notifications/types.ts +4 -0
- package/src/components/features/policy-configuration-panel.tsx +100 -83
- package/src/components/ui/radio-group.tsx +20 -2
- package/src/components/ui/tab-selector.tsx +26 -3
- package/dist/chunk-N3MBQRCQ.cjs +0 -41
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunkWYROOMUZcjs = require('./chunk-WYROOMUZ.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
|
|
@@ -36,16 +36,21 @@ var _chunk3W4ASAXNcjs = require('./chunk-3W4ASAXN.cjs');
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
var _chunk4YBS4HIOcjs = require('./chunk-4YBS4HIO.cjs');
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
|
|
43
42
|
|
|
44
43
|
|
|
45
44
|
|
|
45
|
+
var _chunkLM7EL3UQcjs = require('./chunk-LM7EL3UQ.cjs');
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
var _chunkKXFIYO4Ocjs = require('./chunk-KXFIYO4O.cjs');
|
|
49
54
|
|
|
50
55
|
|
|
51
56
|
var _chunkPGAMWM6Ccjs = require('./chunk-PGAMWM6C.cjs');
|
|
@@ -406,10 +411,8 @@ var _chunkGG466XFQcjs = require('./chunk-GG466XFQ.cjs');
|
|
|
406
411
|
var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
|
|
407
412
|
|
|
408
413
|
|
|
409
|
-
var _chunkN3MBQRCQcjs = require('./chunk-N3MBQRCQ.cjs');
|
|
410
|
-
|
|
411
414
|
|
|
412
|
-
var
|
|
415
|
+
var _chunkVCFQHPOOcjs = require('./chunk-VCFQHPOO.cjs');
|
|
413
416
|
|
|
414
417
|
|
|
415
418
|
var _chunkZ74QE57Tcjs = require('./chunk-Z74QE57T.cjs');
|
|
@@ -521,37 +524,6 @@ var TabsContent = _react.forwardRef.call(void 0, ({ className, ...props }, ref)
|
|
|
521
524
|
));
|
|
522
525
|
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
523
526
|
|
|
524
|
-
// src/components/ui/layout-hold.tsx
|
|
525
|
-
|
|
526
|
-
var ROUNDED_BAR = `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='6'/%3E%3C/svg%3E")`;
|
|
527
|
-
var BAR_MASK = `${ROUNDED_BAR} center / 100% min(1em, calc(1lh - 6px)) no-repeat`;
|
|
528
|
-
var BAR_STYLE = { mask: BAR_MASK, WebkitMask: BAR_MASK };
|
|
529
|
-
function TextHold({ children, variant = "bar", className }) {
|
|
530
|
-
const bar = variant === "bar";
|
|
531
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
532
|
-
"span",
|
|
533
|
-
{
|
|
534
|
-
"aria-hidden": true,
|
|
535
|
-
className: _chunk63A4GZMBcjs.cn.call(void 0,
|
|
536
|
-
// `bar`: the words themselves, unseen, on the skeleton's surface. The span stays INLINE, so the
|
|
537
|
-
// browser paints one bar per line the words take, each exactly as wide as that line, and
|
|
538
|
-
// `box-decoration-clone` gives every line its own bar (and its own mask, `BAR_STYLE`). Pure CSS: it
|
|
539
|
-
// is drawn in the server's HTML, before any script runs (a loading state streamed by the server
|
|
540
|
-
// is often replaced before it hydrates).
|
|
541
|
-
bar ? _chunk63A4GZMBcjs.cn.call(void 0, _chunkPMUCEUFQcjs.SKELETON_SURFACE_CLASS, "rounded-md box-decoration-clone text-transparent") : "invisible",
|
|
542
|
-
// A hold is never selectable or clickable, whatever it wraps.
|
|
543
|
-
"pointer-events-none select-none",
|
|
544
|
-
className
|
|
545
|
-
),
|
|
546
|
-
style: bar ? BAR_STYLE : void 0,
|
|
547
|
-
children
|
|
548
|
-
}
|
|
549
|
-
);
|
|
550
|
-
}
|
|
551
|
-
function LayoutHold({ children, className }) {
|
|
552
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": true, inert: true, className: _chunk63A4GZMBcjs.cn.call(void 0, "invisible", className), children });
|
|
553
|
-
}
|
|
554
|
-
|
|
555
527
|
// src/utils/markdown-link.ts
|
|
556
528
|
var AUTHORED_LINK_REL_TOKENS = ["nofollow", "ugc", "sponsored"];
|
|
557
529
|
var NEW_TAB_REL = "noopener noreferrer";
|
|
@@ -595,11 +567,11 @@ function unescapeMarkdownLinkText(value) {
|
|
|
595
567
|
function encodeMarkdownUrl(url) {
|
|
596
568
|
return url.replace(/\s/g, (match) => encodeURIComponent(match)).replace(/[()]/g, (match) => encodeURIComponent(match));
|
|
597
569
|
}
|
|
598
|
-
function findMarkdownLinkAt(
|
|
570
|
+
function findMarkdownLinkAt(text3, selectionStart, selectionEnd = selectionStart) {
|
|
599
571
|
const from = Math.min(selectionStart, selectionEnd);
|
|
600
572
|
const to = Math.max(selectionStart, selectionEnd);
|
|
601
573
|
const contains = (start, end) => start <= from && to <= end;
|
|
602
|
-
for (const match of
|
|
574
|
+
for (const match of text3.matchAll(HTML_LINK_RE)) {
|
|
603
575
|
const start = _nullishCoalesce(match.index, () => ( 0));
|
|
604
576
|
const end = start + match[0].length;
|
|
605
577
|
if (!contains(start, end)) continue;
|
|
@@ -612,7 +584,7 @@ function findMarkdownLinkAt(text2, selectionStart, selectionEnd = selectionStart
|
|
|
612
584
|
rel: authoredRelTokens(htmlAttribute(attributes, "rel"))
|
|
613
585
|
};
|
|
614
586
|
}
|
|
615
|
-
for (const match of
|
|
587
|
+
for (const match of text3.matchAll(MARKDOWN_LINK_RE)) {
|
|
616
588
|
const start = _nullishCoalesce(match.index, () => ( 0));
|
|
617
589
|
const end = start + match[0].length;
|
|
618
590
|
if (!contains(start, end)) continue;
|
|
@@ -620,8 +592,8 @@ function findMarkdownLinkAt(text2, selectionStart, selectionEnd = selectionStart
|
|
|
620
592
|
}
|
|
621
593
|
return null;
|
|
622
594
|
}
|
|
623
|
-
function formatMarkdownLink({ text:
|
|
624
|
-
const label =
|
|
595
|
+
function formatMarkdownLink({ text: text3, url, rel }) {
|
|
596
|
+
const label = text3.length > 0 ? text3 : url;
|
|
625
597
|
const tokens = authoredRelTokens(rel);
|
|
626
598
|
if (tokens.length > 0) {
|
|
627
599
|
return `<a href="${escapeHtmlAttribute(url)}" rel="${tokens.join(" ")}">${escapeHtmlText(label)}</a>`;
|
|
@@ -652,7 +624,7 @@ var element = (tagName, children) => ({
|
|
|
652
624
|
var sectionsBreak;
|
|
653
625
|
function toTextBreaksBetweenSections() {
|
|
654
626
|
if (sectionsBreak === void 0) {
|
|
655
|
-
const row = (
|
|
627
|
+
const row = (text3) => element("tr", [element("td", [{ type: "text", value: text3 }])]);
|
|
656
628
|
const table = element("table", [element("thead", [row("a")]), element("tbody", [row("b")])]);
|
|
657
629
|
sectionsBreak = _hastutiltotext.toText.call(void 0, { type: "root", children: [table] }).includes("\n");
|
|
658
630
|
}
|
|
@@ -723,17 +695,17 @@ function buildHeadingIdMap(content, sectionIds) {
|
|
|
723
695
|
const map = /* @__PURE__ */ new Map();
|
|
724
696
|
let sectionOrdinal = 0;
|
|
725
697
|
let headingOrdinal = 0;
|
|
726
|
-
for (const { line, level, text: rawText } of _chunkGRCOEICKcjs.scanHeadings.call(void 0, content)) {
|
|
727
|
-
const
|
|
698
|
+
for (const { line, level: level2, text: rawText } of _chunkGRCOEICKcjs.scanHeadings.call(void 0, content)) {
|
|
699
|
+
const text3 = stripInlineMarkdown(rawText).trim();
|
|
728
700
|
headingOrdinal++;
|
|
729
|
-
if (
|
|
701
|
+
if (level2 <= EXTRACTOR_MAX_LEVEL) sectionOrdinal++;
|
|
730
702
|
let assigned;
|
|
731
|
-
if (sectionIds &&
|
|
703
|
+
if (sectionIds && level2 <= EXTRACTOR_MAX_LEVEL) {
|
|
732
704
|
for (const variation of [
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
_chunkGRCOEICKcjs.stripHeadingEmojis.call(void 0,
|
|
736
|
-
_chunkGRCOEICKcjs.stripHeadingEmojis.call(void 0,
|
|
705
|
+
text3,
|
|
706
|
+
text3.toLowerCase(),
|
|
707
|
+
_chunkGRCOEICKcjs.stripHeadingEmojis.call(void 0, text3),
|
|
708
|
+
_chunkGRCOEICKcjs.stripHeadingEmojis.call(void 0, text3).toLowerCase()
|
|
737
709
|
]) {
|
|
738
710
|
const id = sectionIdMap.get(variation);
|
|
739
711
|
if (id) {
|
|
@@ -743,9 +715,9 @@ function buildHeadingIdMap(content, sectionIds) {
|
|
|
743
715
|
}
|
|
744
716
|
}
|
|
745
717
|
if (assigned === void 0) {
|
|
746
|
-
const baseId = _chunkGRCOEICKcjs.slugifyHeadingText.call(void 0,
|
|
718
|
+
const baseId = _chunkGRCOEICKcjs.slugifyHeadingText.call(void 0, text3);
|
|
747
719
|
assigned = dedupe(
|
|
748
|
-
baseId || (
|
|
720
|
+
baseId || (level2 <= EXTRACTOR_MAX_LEVEL ? `section-${sectionOrdinal}` : `heading-${headingOrdinal}`)
|
|
749
721
|
);
|
|
750
722
|
}
|
|
751
723
|
map.set(line, assigned);
|
|
@@ -2100,8 +2072,8 @@ function findInlineCodeRanges(source) {
|
|
|
2100
2072
|
}
|
|
2101
2073
|
return ranges;
|
|
2102
2074
|
}
|
|
2103
|
-
function foldAsciiCase(
|
|
2104
|
-
return
|
|
2075
|
+
function foldAsciiCase(text3) {
|
|
2076
|
+
return text3.replace(/[A-Z]/g, (c) => String.fromCharCode(c.charCodeAt(0) + 32));
|
|
2105
2077
|
}
|
|
2106
2078
|
function blankRanges(masked, ranges) {
|
|
2107
2079
|
if (ranges.length === 0) return masked;
|
|
@@ -2343,13 +2315,13 @@ function footnoteLabelEnd(c, open) {
|
|
|
2343
2315
|
}
|
|
2344
2316
|
function blankUnreferencedFootnotes(masked, lines, folded) {
|
|
2345
2317
|
if (masked.indexOf("[^") === -1) return masked;
|
|
2346
|
-
const
|
|
2318
|
+
const text3 = (line) => stripCr(masked.slice(line.contentStart, line.contentStart + line.content.length));
|
|
2347
2319
|
const refMask = footnoteReferenceMask(masked, folded);
|
|
2348
2320
|
const refText2 = (line) => stripCr(refMask.slice(line.contentStart, line.contentStart + line.content.length));
|
|
2349
2321
|
const referenced = /* @__PURE__ */ new Set();
|
|
2350
2322
|
const defAt = [];
|
|
2351
2323
|
for (const line of lines) {
|
|
2352
|
-
const c =
|
|
2324
|
+
const c = text3(line);
|
|
2353
2325
|
let isDef = null;
|
|
2354
2326
|
if (c.indexOf("[^") !== -1) {
|
|
2355
2327
|
const open = FOOTNOTE_DEF_OPEN_RE.exec(c);
|
|
@@ -2378,13 +2350,13 @@ function blankUnreferencedFootnotes(masked, lines, folded) {
|
|
|
2378
2350
|
for (let i = 0; i < lines.length; i++) {
|
|
2379
2351
|
const at = defAt[i];
|
|
2380
2352
|
if (at === null) continue;
|
|
2381
|
-
const head =
|
|
2353
|
+
const head = text3(lines[i]);
|
|
2382
2354
|
const end = footnoteLabelEnd(head, at);
|
|
2383
2355
|
if (referenced.has(normalizeFootnoteLabel(head.slice(at + 2, end)))) continue;
|
|
2384
2356
|
let j = i;
|
|
2385
2357
|
let sawBlank = false;
|
|
2386
2358
|
for (let k = i + 1; k < lines.length; k++) {
|
|
2387
|
-
const c =
|
|
2359
|
+
const c = text3(lines[k]);
|
|
2388
2360
|
if (_chunkGRCOEICKcjs.isBlankLine.call(void 0, c)) {
|
|
2389
2361
|
sawBlank = true;
|
|
2390
2362
|
continue;
|
|
@@ -2567,9 +2539,9 @@ function spliceWindows(masked, edits) {
|
|
|
2567
2539
|
if (edits.length === 0) return masked;
|
|
2568
2540
|
const parts = [];
|
|
2569
2541
|
let cursor = 0;
|
|
2570
|
-
for (const [from, to,
|
|
2542
|
+
for (const [from, to, text3] of edits) {
|
|
2571
2543
|
if (from > cursor) parts.push(masked.slice(cursor, from));
|
|
2572
|
-
parts.push(
|
|
2544
|
+
parts.push(text3);
|
|
2573
2545
|
cursor = to;
|
|
2574
2546
|
}
|
|
2575
2547
|
parts.push(masked.slice(cursor));
|
|
@@ -2673,8 +2645,8 @@ function blankListItemCode(masked, lines, depth = 0) {
|
|
|
2673
2645
|
flush();
|
|
2674
2646
|
return spliceWindows(masked, edits);
|
|
2675
2647
|
}
|
|
2676
|
-
function buildCloserHaystack(
|
|
2677
|
-
const folded = foldAsciiCase(
|
|
2648
|
+
function buildCloserHaystack(text3) {
|
|
2649
|
+
const folded = foldAsciiCase(text3);
|
|
2678
2650
|
const lines = toMaskLines(folded);
|
|
2679
2651
|
let masked = blankRanges(folded, findInlineCodeRanges(folded));
|
|
2680
2652
|
masked = blankFencedRegions(masked, lines);
|
|
@@ -2861,8 +2833,8 @@ function htmlBlockStartKind(line, inParagraph) {
|
|
|
2861
2833
|
if (!inParagraph && HTML_BLOCK_START_7.test(line)) return 7;
|
|
2862
2834
|
return null;
|
|
2863
2835
|
}
|
|
2864
|
-
function computeHtmlBlockRanges(
|
|
2865
|
-
if (
|
|
2836
|
+
function computeHtmlBlockRanges(text3) {
|
|
2837
|
+
if (text3.indexOf("<") === -1) return [];
|
|
2866
2838
|
const ranges = [];
|
|
2867
2839
|
const fences = _chunkGRCOEICKcjs.createFenceTracker.call(void 0, );
|
|
2868
2840
|
let kind = null;
|
|
@@ -2872,7 +2844,7 @@ function computeHtmlBlockRanges(text2) {
|
|
|
2872
2844
|
let offset = 0;
|
|
2873
2845
|
let listContentCol = 0;
|
|
2874
2846
|
let openPrefixLen = 0;
|
|
2875
|
-
for (const line of
|
|
2847
|
+
for (const line of text3.split("\n")) {
|
|
2876
2848
|
const lineStart = offset;
|
|
2877
2849
|
const lineEnd = offset + line.length;
|
|
2878
2850
|
offset = lineEnd + 1;
|
|
@@ -2934,21 +2906,21 @@ function escapeLeftoverTagStarts(gap, lowerSource, gapOffset) {
|
|
|
2934
2906
|
(m, slash, tag, at) => isMaskedBlank(lowerSource, gapOffset + at, gapOffset + at + m.length) ? m : `<${slash}${tag}`
|
|
2935
2907
|
);
|
|
2936
2908
|
}
|
|
2937
|
-
function escapeUnknownHtmlTags(
|
|
2938
|
-
if (!
|
|
2939
|
-
const lowerSource = buildCloserHaystack(
|
|
2909
|
+
function escapeUnknownHtmlTags(text3, allowedTags = SAFE_HTML_TAGS) {
|
|
2910
|
+
if (!text3 || text3.indexOf("<") === -1) return text3;
|
|
2911
|
+
const lowerSource = buildCloserHaystack(text3);
|
|
2940
2912
|
let htmlBlocks = null;
|
|
2941
2913
|
const spanInsideHtmlBlock = (from, to) => {
|
|
2942
|
-
_nullishCoalesce(htmlBlocks, () => ( (htmlBlocks = computeHtmlBlockRanges(
|
|
2914
|
+
_nullishCoalesce(htmlBlocks, () => ( (htmlBlocks = computeHtmlBlockRanges(text3))));
|
|
2943
2915
|
return htmlBlocks.some((r) => r.start < to && r.end > from);
|
|
2944
2916
|
};
|
|
2945
2917
|
const parts = [];
|
|
2946
2918
|
let cursor = 0;
|
|
2947
2919
|
PROTECTED_SPAN_RE.lastIndex = 0;
|
|
2948
2920
|
let span;
|
|
2949
|
-
while ((span = PROTECTED_SPAN_RE.exec(
|
|
2921
|
+
while ((span = PROTECTED_SPAN_RE.exec(text3)) !== null) {
|
|
2950
2922
|
if (span.index > cursor) {
|
|
2951
|
-
parts.push(escapeOutsideFences(
|
|
2923
|
+
parts.push(escapeOutsideFences(text3.slice(cursor, span.index), allowedTags, lowerSource, cursor));
|
|
2952
2924
|
}
|
|
2953
2925
|
const isFence = span[1] !== void 0;
|
|
2954
2926
|
const spanEnd = span.index + span[0].length;
|
|
@@ -2957,8 +2929,8 @@ function escapeUnknownHtmlTags(text2, allowedTags = SAFE_HTML_TAGS) {
|
|
|
2957
2929
|
);
|
|
2958
2930
|
cursor = span.index + span[0].length;
|
|
2959
2931
|
}
|
|
2960
|
-
if (cursor <
|
|
2961
|
-
parts.push(escapeOutsideFences(
|
|
2932
|
+
if (cursor < text3.length) {
|
|
2933
|
+
parts.push(escapeOutsideFences(text3.slice(cursor), allowedTags, lowerSource, cursor));
|
|
2962
2934
|
}
|
|
2963
2935
|
return parts.join("");
|
|
2964
2936
|
}
|
|
@@ -3141,12 +3113,12 @@ function splitStreamingBlocks(content) {
|
|
|
3141
3113
|
}
|
|
3142
3114
|
let cursorLine = 1;
|
|
3143
3115
|
return units.map((unitLines, idx) => {
|
|
3144
|
-
const
|
|
3116
|
+
const text3 = unitLines.join("\n");
|
|
3145
3117
|
const isTail = idx === units.length - 1;
|
|
3146
3118
|
const startLine = cursorLine;
|
|
3147
3119
|
cursorLine += unitLines.length;
|
|
3148
3120
|
return {
|
|
3149
|
-
text:
|
|
3121
|
+
text: text3,
|
|
3150
3122
|
index: idx,
|
|
3151
3123
|
startLine,
|
|
3152
3124
|
// Units carrying UNBALANCED raw HTML are never cached: an open
|
|
@@ -3156,7 +3128,7 @@ function splitStreamingBlocks(content) {
|
|
|
3156
3128
|
// opens AND closes within the unit (`<div>x</div>`) leaves the
|
|
3157
3129
|
// scanner's depth unchanged, so it stays memoizable — correctly: its
|
|
3158
3130
|
// parse cannot be invalidated by later tokens.
|
|
3159
|
-
memoizable: !isTail && !unitTouchedHtml[idx] && !NON_MEMOIZABLE_RE.test(
|
|
3131
|
+
memoizable: !isTail && !unitTouchedHtml[idx] && !NON_MEMOIZABLE_RE.test(text3)
|
|
3160
3132
|
};
|
|
3161
3133
|
});
|
|
3162
3134
|
}
|
|
@@ -3311,7 +3283,7 @@ var RENDERER_CLASS = MARKDOWN_RENDERER_CLASS;
|
|
|
3311
3283
|
var CONTENT_WRAPPER_CLASS = "max-w-none";
|
|
3312
3284
|
var ARTICLE_CLASS = "max-w-none [&>*:last-child]:mb-0";
|
|
3313
3285
|
var StreamingBlockRenderer = _react.memo.call(void 0, function StreamingBlockRendererImpl({
|
|
3314
|
-
text:
|
|
3286
|
+
text: text3,
|
|
3315
3287
|
remarkPlugins,
|
|
3316
3288
|
rehypePlugins,
|
|
3317
3289
|
components
|
|
@@ -3323,7 +3295,7 @@ var StreamingBlockRenderer = _react.memo.call(void 0, function StreamingBlockRen
|
|
|
3323
3295
|
rehypePlugins,
|
|
3324
3296
|
urlTransform: cardAwareUrlTransform,
|
|
3325
3297
|
components,
|
|
3326
|
-
children:
|
|
3298
|
+
children: text3
|
|
3327
3299
|
}
|
|
3328
3300
|
);
|
|
3329
3301
|
});
|
|
@@ -3539,7 +3511,7 @@ function onAskAiIntent(run) {
|
|
|
3539
3511
|
|
|
3540
3512
|
// src/components/chat/chat-appearance-context.tsx
|
|
3541
3513
|
|
|
3542
|
-
var ChatAppearanceContext = _react.createContext.call(void 0,
|
|
3514
|
+
var ChatAppearanceContext = _react.createContext.call(void 0, _chunkWYROOMUZcjs.CHAT_APPEARANCE.CLASSIC);
|
|
3543
3515
|
function useChatAppearance() {
|
|
3544
3516
|
return _react.useContext.call(void 0, ChatAppearanceContext);
|
|
3545
3517
|
}
|
|
@@ -3578,7 +3550,7 @@ var ApprovalRequestMessage = _react.forwardRef.call(void 0,
|
|
|
3578
3550
|
...props
|
|
3579
3551
|
}, ref) => {
|
|
3580
3552
|
const [isProcessing, setIsProcessing] = _react.useState.call(void 0, false);
|
|
3581
|
-
const isV2 = useChatAppearance() ===
|
|
3553
|
+
const isV2 = useChatAppearance() === _chunkWYROOMUZcjs.CHAT_APPEARANCE.V2;
|
|
3582
3554
|
const handleApprove = async () => {
|
|
3583
3555
|
setIsProcessing(true);
|
|
3584
3556
|
try {
|
|
@@ -3601,7 +3573,7 @@ var ApprovalRequestMessage = _react.forwardRef.call(void 0,
|
|
|
3601
3573
|
{
|
|
3602
3574
|
ref,
|
|
3603
3575
|
className: _chunk63A4GZMBcjs.cn.call(void 0,
|
|
3604
|
-
|
|
3576
|
+
_chunkLM7EL3UQcjs.CHAT_BLOCK_CLASS,
|
|
3605
3577
|
// v2: the thread owns the space below the card.
|
|
3606
3578
|
!isV2 && "mb-[var(--spacing-system-xsf)]",
|
|
3607
3579
|
className
|
|
@@ -3609,7 +3581,7 @@ var ApprovalRequestMessage = _react.forwardRef.call(void 0,
|
|
|
3609
3581
|
...props,
|
|
3610
3582
|
children: [
|
|
3611
3583
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "w-full whitespace-pre-line break-words text-ods-text-primary text-h4", children: _optionalChain([data, 'access', _51 => _51.explanation, 'optionalAccess', _52 => _52.trim, 'call', _53 => _53()]) || "Approval required" }),
|
|
3612
|
-
showFooterActions && status === "pending" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3584
|
+
showFooterActions && status === "pending" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ApprovalWaitingLine, {}),
|
|
3613
3585
|
!showFooterActions ? null : status === "pending" ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
3614
3586
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3615
3587
|
_chunkFCZAUK4Dcjs.Button,
|
|
@@ -3641,14 +3613,14 @@ var ApprovalRequestMessage = _react.forwardRef.call(void 0,
|
|
|
3641
3613
|
children: "Reject"
|
|
3642
3614
|
}
|
|
3643
3615
|
)
|
|
3644
|
-
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3616
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ApprovalStatusTag, { status, resolvedByName, inlineResolver: true }) })
|
|
3645
3617
|
]
|
|
3646
3618
|
}
|
|
3647
3619
|
);
|
|
3648
3620
|
}
|
|
3649
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunk63A4GZMBcjs.cn.call(void 0, "mb-[var(--spacing-system-xsf)]",
|
|
3621
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunk63A4GZMBcjs.cn.call(void 0, "mb-[var(--spacing-system-xsf)]", _chunkLM7EL3UQcjs.CHAT_BLOCK_CLASS, className), ...props, children: [
|
|
3650
3622
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ApprovalCardBody, { data }),
|
|
3651
|
-
showFooterActions && status === "pending" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3623
|
+
showFooterActions && status === "pending" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ApprovalWaitingLine, {}),
|
|
3652
3624
|
!showFooterActions ? null : status === "pending" ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
3653
3625
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3654
3626
|
_chunkFCZAUK4Dcjs.Button,
|
|
@@ -3680,7 +3652,7 @@ var ApprovalRequestMessage = _react.forwardRef.call(void 0,
|
|
|
3680
3652
|
children: "Reject"
|
|
3681
3653
|
}
|
|
3682
3654
|
)
|
|
3683
|
-
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3655
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ApprovalStatusTag, { status, resolvedByName, inlineResolver: true }) })
|
|
3684
3656
|
] });
|
|
3685
3657
|
}
|
|
3686
3658
|
);
|
|
@@ -3710,7 +3682,7 @@ EscalationOfferMessage.displayName = "EscalationOfferMessage";
|
|
|
3710
3682
|
|
|
3711
3683
|
var AiAssistantInfo = _react.forwardRef.call(void 0,
|
|
3712
3684
|
({ className, icon, leading, title, body, timestamp, ...props }, ref) => {
|
|
3713
|
-
const isV2 = useChatAppearance() ===
|
|
3685
|
+
const isV2 = useChatAppearance() === _chunkWYROOMUZcjs.CHAT_APPEARANCE.V2;
|
|
3714
3686
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
3715
3687
|
"div",
|
|
3716
3688
|
{
|
|
@@ -3726,7 +3698,7 @@ var AiAssistantInfo = _react.forwardRef.call(void 0,
|
|
|
3726
3698
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
3727
3699
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-start", children: [
|
|
3728
3700
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h4", title, children: title }),
|
|
3729
|
-
timestamp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-right text-ods-text-secondary text-h6", children:
|
|
3701
|
+
timestamp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-right text-ods-text-secondary text-h6", children: _chunkWYROOMUZcjs.formatTime.call(void 0, timestamp) })
|
|
3730
3702
|
] }),
|
|
3731
3703
|
body != null && body !== "" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "w-full break-words text-ods-text-secondary text-h4", children: body })
|
|
3732
3704
|
] })
|
|
@@ -3834,8 +3806,8 @@ TicketEventMessage.displayName = "TicketEventMessage";
|
|
|
3834
3806
|
|
|
3835
3807
|
var JOINED = /^(.+) joined the chat$/;
|
|
3836
3808
|
var LEFT = /^(.+) left the chat$/;
|
|
3837
|
-
var SystemEventMessage = _react.forwardRef.call(void 0, ({ text:
|
|
3838
|
-
const joined = _optionalChain([JOINED, 'access', _57 => _57.exec, 'call', _58 => _58(
|
|
3809
|
+
var SystemEventMessage = _react.forwardRef.call(void 0, ({ text: text3, timestamp, ...props }, ref) => {
|
|
3810
|
+
const joined = _optionalChain([JOINED, 'access', _57 => _57.exec, 'call', _58 => _58(text3), 'optionalAccess', _59 => _59[1]]);
|
|
3839
3811
|
if (joined) {
|
|
3840
3812
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3841
3813
|
AiAssistantInfo,
|
|
@@ -3849,13 +3821,13 @@ var SystemEventMessage = _react.forwardRef.call(void 0, ({ text: text2, timestam
|
|
|
3849
3821
|
}
|
|
3850
3822
|
);
|
|
3851
3823
|
}
|
|
3852
|
-
const left = _optionalChain([LEFT, 'access', _60 => _60.exec, 'call', _61 => _61(
|
|
3824
|
+
const left = _optionalChain([LEFT, 'access', _60 => _60.exec, 'call', _61 => _61(text3), 'optionalAccess', _62 => _62[1]]);
|
|
3853
3825
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3854
3826
|
AiAssistantInfo,
|
|
3855
3827
|
{
|
|
3856
3828
|
ref,
|
|
3857
3829
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRHC2FRVEcjs.InfoCircleIcon, { className: "size-6 text-ods-accent" }),
|
|
3858
|
-
title: left ? "Technician Left" :
|
|
3830
|
+
title: left ? "Technician Left" : text3,
|
|
3859
3831
|
body: left ? `${left} left the conversation.` : void 0,
|
|
3860
3832
|
timestamp,
|
|
3861
3833
|
...props
|
|
@@ -3925,6 +3897,65 @@ function errorDetailsMessage(details) {
|
|
|
3925
3897
|
}
|
|
3926
3898
|
var CHAT_OWNER_ADMIN = "ADMIN";
|
|
3927
3899
|
|
|
3900
|
+
// src/chat-protocol/wire-narrow.ts
|
|
3901
|
+
function isRecord(value) {
|
|
3902
|
+
return typeof value === "object" && value !== null;
|
|
3903
|
+
}
|
|
3904
|
+
function unwrapEnvelope(payload) {
|
|
3905
|
+
return isRecord(payload) && "data" in payload ? payload.data : payload;
|
|
3906
|
+
}
|
|
3907
|
+
|
|
3908
|
+
// src/chat-protocol/policy-review.ts
|
|
3909
|
+
var APPROVAL_LEVELS = /* @__PURE__ */ new Set(["ALLOW", "ASK_USER", "ASK_TECHNICIAN", "DENY"]);
|
|
3910
|
+
function text(value) {
|
|
3911
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
3912
|
+
}
|
|
3913
|
+
function level(value) {
|
|
3914
|
+
return typeof value === "string" && APPROVAL_LEVELS.has(value) ? value : void 0;
|
|
3915
|
+
}
|
|
3916
|
+
function rules(raw2) {
|
|
3917
|
+
if (!Array.isArray(raw2)) return [];
|
|
3918
|
+
return raw2.filter(isRecord).flatMap((rule) => {
|
|
3919
|
+
const code = text(rule.code);
|
|
3920
|
+
const label = _nullishCoalesce(text(rule.label), () => ( code));
|
|
3921
|
+
return label ? [{ code: _nullishCoalesce(code, () => ( label)), label }] : [];
|
|
3922
|
+
});
|
|
3923
|
+
}
|
|
3924
|
+
function codes(raw2) {
|
|
3925
|
+
if (!Array.isArray(raw2)) return [];
|
|
3926
|
+
return raw2.map(text).filter((code) => !!code);
|
|
3927
|
+
}
|
|
3928
|
+
function policyReviewField(raw2) {
|
|
3929
|
+
const policyReview = normalizePolicyReview(raw2);
|
|
3930
|
+
return policyReview ? { policyReview } : {};
|
|
3931
|
+
}
|
|
3932
|
+
function keptPolicyReview(...reviews) {
|
|
3933
|
+
const policyReview = reviews.find((review) => review !== void 0);
|
|
3934
|
+
return policyReview ? { policyReview } : {};
|
|
3935
|
+
}
|
|
3936
|
+
function normalizePolicyReview(raw2) {
|
|
3937
|
+
if (!isRecord(raw2)) return void 0;
|
|
3938
|
+
const source = text(raw2.source);
|
|
3939
|
+
const decision = text(raw2.decision);
|
|
3940
|
+
const approvalLevel = level(raw2.approvalLevel);
|
|
3941
|
+
const policyLevel = level(raw2.policyLevel);
|
|
3942
|
+
const reason = text(raw2.reason);
|
|
3943
|
+
const operationCodes = codes(raw2.operationCodes);
|
|
3944
|
+
const matchedRules = rules(raw2.matchedRules);
|
|
3945
|
+
if (!decision && !approvalLevel && !policyLevel && !reason && !operationCodes.length && !matchedRules.length) {
|
|
3946
|
+
return void 0;
|
|
3947
|
+
}
|
|
3948
|
+
return {
|
|
3949
|
+
...source ? { source } : {},
|
|
3950
|
+
...decision ? { decision } : {},
|
|
3951
|
+
...approvalLevel ? { approvalLevel } : {},
|
|
3952
|
+
...policyLevel ? { policyLevel } : {},
|
|
3953
|
+
operationCodes,
|
|
3954
|
+
matchedRules,
|
|
3955
|
+
...reason ? { reason } : {}
|
|
3956
|
+
};
|
|
3957
|
+
}
|
|
3958
|
+
|
|
3928
3959
|
// src/chat-protocol/card-marker.ts
|
|
3929
3960
|
var CARD_TYPE = "[a-zA-Z0-9_-]+";
|
|
3930
3961
|
var CARD_ID = "[^\\]\\r\\n)]+";
|
|
@@ -3932,10 +3963,10 @@ var CARD_REFERENCE = new RegExp(`^\\[card://(${CARD_TYPE}):(${CARD_ID})\\]$`);
|
|
|
3932
3963
|
function createCardMarkerScanner() {
|
|
3933
3964
|
return new RegExp(`\\[card://(${CARD_TYPE}):(${CARD_ID})[\\])]`, "g");
|
|
3934
3965
|
}
|
|
3935
|
-
function extractCardReferences(
|
|
3966
|
+
function extractCardReferences(text3) {
|
|
3936
3967
|
const seen = /* @__PURE__ */ new Set();
|
|
3937
3968
|
const out = [];
|
|
3938
|
-
for (const match of
|
|
3969
|
+
for (const match of text3.matchAll(createCardMarkerScanner())) {
|
|
3939
3970
|
const key = `${match[1]}:${match[2]}`;
|
|
3940
3971
|
if (seen.has(key)) continue;
|
|
3941
3972
|
seen.add(key);
|
|
@@ -3944,27 +3975,19 @@ function extractCardReferences(text2) {
|
|
|
3944
3975
|
return out;
|
|
3945
3976
|
}
|
|
3946
3977
|
|
|
3947
|
-
// src/chat-protocol/wire-narrow.ts
|
|
3948
|
-
function isRecord(value) {
|
|
3949
|
-
return typeof value === "object" && value !== null;
|
|
3950
|
-
}
|
|
3951
|
-
function unwrapEnvelope(payload) {
|
|
3952
|
-
return isRecord(payload) && "data" in payload ? payload.data : payload;
|
|
3953
|
-
}
|
|
3954
|
-
|
|
3955
3978
|
// src/chat-protocol/source-metadata.ts
|
|
3956
3979
|
var YOUTUBE_ID = /^[A-Za-z0-9_-]{11}$/;
|
|
3957
3980
|
var VIDEO_URL_KEYS = ["videoUrl", "highlightVideoUrl", "videoPoster", "highlightVideoPoster"];
|
|
3958
|
-
function
|
|
3981
|
+
function text2(value) {
|
|
3959
3982
|
if (typeof value !== "string") return void 0;
|
|
3960
3983
|
const trimmed = value.trim();
|
|
3961
3984
|
return trimmed || void 0;
|
|
3962
3985
|
}
|
|
3963
3986
|
function nullableText(value) {
|
|
3964
|
-
return value === null ? null :
|
|
3987
|
+
return value === null ? null : text2(value);
|
|
3965
3988
|
}
|
|
3966
3989
|
function httpsUrl(value) {
|
|
3967
|
-
const candidate =
|
|
3990
|
+
const candidate = text2(value);
|
|
3968
3991
|
if (!candidate || _chunkMDLT6D46cjs.UNSAFE_URL_CHARS.test(candidate)) return void 0;
|
|
3969
3992
|
try {
|
|
3970
3993
|
return new URL(candidate).protocol === "https:" ? candidate : void 0;
|
|
@@ -3973,7 +3996,7 @@ function httpsUrl(value) {
|
|
|
3973
3996
|
}
|
|
3974
3997
|
}
|
|
3975
3998
|
function youtubeVideoId(value) {
|
|
3976
|
-
const candidate =
|
|
3999
|
+
const candidate = text2(value);
|
|
3977
4000
|
if (!candidate) return void 0;
|
|
3978
4001
|
if (YOUTUBE_ID.test(candidate)) return candidate;
|
|
3979
4002
|
const url = httpsUrl(candidate);
|
|
@@ -3989,11 +4012,11 @@ function youtubeVideoId(value) {
|
|
|
3989
4012
|
function sourceItems(value) {
|
|
3990
4013
|
if (!Array.isArray(value)) return void 0;
|
|
3991
4014
|
const items = value.filter(isRecord).flatMap((item) => {
|
|
3992
|
-
const id =
|
|
3993
|
-
const documentType =
|
|
3994
|
-
const name =
|
|
4015
|
+
const id = text2(item.id);
|
|
4016
|
+
const documentType = text2(item.documentType);
|
|
4017
|
+
const name = text2(item.name);
|
|
3995
4018
|
if (!id || !documentType || !name) return [];
|
|
3996
|
-
const externalUrl =
|
|
4019
|
+
const externalUrl = text2(item.externalUrl);
|
|
3997
4020
|
const targetPlatform = nullableText(item.targetPlatform);
|
|
3998
4021
|
const path = nullableText(item.path);
|
|
3999
4022
|
return [
|
|
@@ -4016,17 +4039,17 @@ function sources(value) {
|
|
|
4016
4039
|
for (const candidate of value) {
|
|
4017
4040
|
if (!isRecord(candidate)) continue;
|
|
4018
4041
|
const index = candidate.index;
|
|
4019
|
-
const name =
|
|
4042
|
+
const name = text2(candidate.name);
|
|
4020
4043
|
const isUsableIndex = typeof index === "number" && Number.isInteger(index) && index > 0 && !claimed.has(index);
|
|
4021
4044
|
if (!isUsableIndex || !name) continue;
|
|
4022
4045
|
claimed.add(index);
|
|
4023
|
-
const path =
|
|
4024
|
-
const documentType =
|
|
4025
|
-
const externalUrl =
|
|
4046
|
+
const path = text2(candidate.path);
|
|
4047
|
+
const documentType = text2(candidate.documentType);
|
|
4048
|
+
const externalUrl = text2(candidate.externalUrl);
|
|
4026
4049
|
const targetPlatform = nullableText(candidate.targetPlatform);
|
|
4027
|
-
const id =
|
|
4028
|
-
const sourceRepo =
|
|
4029
|
-
const label =
|
|
4050
|
+
const id = text2(candidate.id);
|
|
4051
|
+
const sourceRepo = text2(candidate.sourceRepo);
|
|
4052
|
+
const label = text2(candidate.label);
|
|
4030
4053
|
const items = sourceItems(candidate.items);
|
|
4031
4054
|
decoded.push({
|
|
4032
4055
|
index,
|
|
@@ -4074,13 +4097,13 @@ function videos(value) {
|
|
|
4074
4097
|
if (!match || match[1] !== "video") return [];
|
|
4075
4098
|
const id = match[2];
|
|
4076
4099
|
const url = _nullishCoalesce(httpsUrl(video.url), () => ( null));
|
|
4077
|
-
const sourceRepo =
|
|
4100
|
+
const sourceRepo = text2(video.sourceRepo);
|
|
4078
4101
|
const metadata = videoMetadata(video.metadata, url);
|
|
4079
4102
|
return [
|
|
4080
4103
|
{
|
|
4081
4104
|
type: "video",
|
|
4082
4105
|
id,
|
|
4083
|
-
title: _nullishCoalesce(
|
|
4106
|
+
title: _nullishCoalesce(text2(video.title), () => ( id)),
|
|
4084
4107
|
url,
|
|
4085
4108
|
...sourceRepo ? { sourceRepo } : {},
|
|
4086
4109
|
...Object.keys(metadata).length > 0 ? { metadata } : {}
|
|
@@ -4093,8 +4116,8 @@ function cards(value, decodedSources) {
|
|
|
4093
4116
|
return value.filter(isRecord).flatMap((card) => {
|
|
4094
4117
|
const match = typeof card.ref === "string" ? CARD_REFERENCE.exec(card.ref) : null;
|
|
4095
4118
|
if (!match || match[1] === "video") return [];
|
|
4096
|
-
const type =
|
|
4097
|
-
const id =
|
|
4119
|
+
const type = text2(card.entityType);
|
|
4120
|
+
const id = text2(card.entityId);
|
|
4098
4121
|
if (!type || !id || type !== match[1] || id !== match[2]) return [];
|
|
4099
4122
|
const source = decodedSources.find((candidate) => candidate.id === id && candidate.documentType === type);
|
|
4100
4123
|
return [
|
|
@@ -4176,7 +4199,8 @@ function normalizeToolCalls(raw2) {
|
|
|
4176
4199
|
toolType: typeof item.toolType === "string" ? item.toolType : void 0,
|
|
4177
4200
|
requiresApproval: item.requiresApproval === true,
|
|
4178
4201
|
approvalType: typeof item.approvalType === "string" ? item.approvalType : null,
|
|
4179
|
-
toolCallArguments: isRecord(item.toolCallArguments) ? item.toolCallArguments : null
|
|
4202
|
+
toolCallArguments: isRecord(item.toolCallArguments) ? item.toolCallArguments : null,
|
|
4203
|
+
...policyReviewField(item.policyReview)
|
|
4180
4204
|
}));
|
|
4181
4205
|
}
|
|
4182
4206
|
function normalizeAskOptions(raw2) {
|
|
@@ -4261,6 +4285,8 @@ function decodeNatsChunk(chunk) {
|
|
|
4261
4285
|
// the EXECUTING segment held. Dropping it here therefore blanks the
|
|
4262
4286
|
// card for the whole lifetime of the run.
|
|
4263
4287
|
toolExplanation: typeof data.toolExplanation === "string" ? data.toolExplanation : void 0,
|
|
4288
|
+
// Rides the EXECUTING chunk only, like the explanation: the merge keeps it on the EXECUTED row.
|
|
4289
|
+
...policyReviewField(data.policyReview),
|
|
4264
4290
|
parameters: isRecord(data.parameters) ? data.parameters : void 0,
|
|
4265
4291
|
toolExecutionRequestId: typeof data.toolExecutionRequestId === "string" ? data.toolExecutionRequestId : void 0
|
|
4266
4292
|
},
|
|
@@ -4426,8 +4452,8 @@ function decodeNatsChunk(chunk) {
|
|
|
4426
4452
|
}
|
|
4427
4453
|
|
|
4428
4454
|
// src/chat-protocol/leading-frames.ts
|
|
4429
|
-
function escapeThinkingTags(
|
|
4430
|
-
return
|
|
4455
|
+
function escapeThinkingTags(text3) {
|
|
4456
|
+
return text3.replace(/</g, "<");
|
|
4431
4457
|
}
|
|
4432
4458
|
function frameStr(value) {
|
|
4433
4459
|
return typeof value === "string" ? value : void 0;
|
|
@@ -4570,9 +4596,9 @@ var thoughtMdClasses = [
|
|
|
4570
4596
|
"[&_.code-block-container_>div:last-child]:!p-3"
|
|
4571
4597
|
].join(" ");
|
|
4572
4598
|
var ThinkingDisplay = _react.forwardRef.call(void 0,
|
|
4573
|
-
({ className, text:
|
|
4599
|
+
({ className, text: text3, isStreaming = false, ...props }, ref) => {
|
|
4574
4600
|
const [expanded, setExpanded] = _react.useState.call(void 0, false);
|
|
4575
|
-
const { innerRef, isOverflowing, containerStyle } =
|
|
4601
|
+
const { innerRef, isOverflowing, containerStyle } = _chunkLM7EL3UQcjs.useCollapsible.call(void 0, {
|
|
4576
4602
|
expanded,
|
|
4577
4603
|
collapsedHeight: 19,
|
|
4578
4604
|
disableTransition: isStreaming
|
|
@@ -4587,7 +4613,7 @@ var ThinkingDisplay = _react.forwardRef.call(void 0,
|
|
|
4587
4613
|
setExpanded(!expanded);
|
|
4588
4614
|
}
|
|
4589
4615
|
};
|
|
4590
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk63A4GZMBcjs.cn.call(void 0,
|
|
4616
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk63A4GZMBcjs.cn.call(void 0, _chunkLM7EL3UQcjs.CHAT_BLOCK_FRAME_CLASS, "p-1.5", className), ...props, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
4591
4617
|
"div",
|
|
4592
4618
|
{
|
|
4593
4619
|
role: "button",
|
|
@@ -4604,8 +4630,8 @@ var ThinkingDisplay = _react.forwardRef.call(void 0,
|
|
|
4604
4630
|
] }),
|
|
4605
4631
|
isStreaming && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOEP5KAT6cjs.DotsLoaderIcon, { size: 16, className: "text-ods-text-secondary" })
|
|
4606
4632
|
] }),
|
|
4607
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1", style: containerStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, className: _chunk63A4GZMBcjs.cn.call(void 0, "text-sm leading-snug text-ods-text-secondary", thoughtMdClasses), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SimpleMarkdownRenderer, { content: escapeThinkingTags(
|
|
4608
|
-
canToggle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[19px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4633
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1", style: containerStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, className: _chunk63A4GZMBcjs.cn.call(void 0, "text-sm leading-snug text-ods-text-secondary", thoughtMdClasses), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SimpleMarkdownRenderer, { content: escapeThinkingTags(text3), textSize: "compact" }) }) }),
|
|
4634
|
+
canToggle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[19px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ExpandChevron, { expanded }) })
|
|
4609
4635
|
]
|
|
4610
4636
|
}
|
|
4611
4637
|
) });
|
|
@@ -4956,9 +4982,9 @@ var iconTint = {
|
|
|
4956
4982
|
var ErrorMessageDisplay = _react.forwardRef.call(void 0,
|
|
4957
4983
|
({ className, title, details, type = "error", ...props }, ref) => {
|
|
4958
4984
|
const [expanded, setExpanded] = _react.useState.call(void 0, false);
|
|
4959
|
-
const { innerRef, containerStyle } =
|
|
4985
|
+
const { innerRef, containerStyle } = _chunkLM7EL3UQcjs.useCollapsible.call(void 0, { expanded });
|
|
4960
4986
|
const hasDetails = Boolean(details);
|
|
4961
|
-
const isV2 = useChatAppearance() ===
|
|
4987
|
+
const isV2 = useChatAppearance() === _chunkWYROOMUZcjs.CHAT_APPEARANCE.V2;
|
|
4962
4988
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
4963
4989
|
"div",
|
|
4964
4990
|
{
|
|
@@ -4992,7 +5018,7 @@ var ErrorMessageDisplay = _react.forwardRef.call(void 0,
|
|
|
4992
5018
|
children: title
|
|
4993
5019
|
}
|
|
4994
5020
|
),
|
|
4995
|
-
hasDetails && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5021
|
+
hasDetails && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ExpandChevron, { expanded })
|
|
4996
5022
|
]
|
|
4997
5023
|
}
|
|
4998
5024
|
),
|
|
@@ -5241,9 +5267,9 @@ var ChatHeader = _react.forwardRef.call(void 0,
|
|
|
5241
5267
|
)
|
|
5242
5268
|
] }),
|
|
5243
5269
|
(ticketInfo.status || ticketInfo.statusName) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5244
|
-
|
|
5270
|
+
_chunkLM7EL3UQcjs.TicketStatusTag,
|
|
5245
5271
|
{
|
|
5246
|
-
...
|
|
5272
|
+
..._chunkLM7EL3UQcjs.resolveStatusTagProps.call(void 0, {
|
|
5247
5273
|
status: ticketInfo.status,
|
|
5248
5274
|
statusKind: ticketInfo.statusKind,
|
|
5249
5275
|
statusName: ticketInfo.statusName,
|
|
@@ -5806,16 +5832,16 @@ var remarkCardLinks = () => {
|
|
|
5806
5832
|
return (tree) => {
|
|
5807
5833
|
_unistutilvisit.visit.call(void 0, tree, "text", (node, index, parent) => {
|
|
5808
5834
|
if (!parent || typeof index !== "number") return void 0;
|
|
5809
|
-
const
|
|
5810
|
-
if (!
|
|
5835
|
+
const text3 = node.value;
|
|
5836
|
+
if (!text3 || !text3.includes("[card://")) return void 0;
|
|
5811
5837
|
const parts = [];
|
|
5812
5838
|
let lastIndex = 0;
|
|
5813
5839
|
CARD_REGEX.lastIndex = 0;
|
|
5814
5840
|
let match;
|
|
5815
|
-
while ((match = CARD_REGEX.exec(
|
|
5841
|
+
while ((match = CARD_REGEX.exec(text3)) !== null) {
|
|
5816
5842
|
const matchStart = match.index;
|
|
5817
5843
|
if (matchStart > lastIndex) {
|
|
5818
|
-
parts.push({ type: "text", value:
|
|
5844
|
+
parts.push({ type: "text", value: text3.slice(lastIndex, matchStart) });
|
|
5819
5845
|
}
|
|
5820
5846
|
const cardType = match[1];
|
|
5821
5847
|
const cardId = match[2];
|
|
@@ -5830,8 +5856,8 @@ var remarkCardLinks = () => {
|
|
|
5830
5856
|
lastIndex = matchStart + match[0].length;
|
|
5831
5857
|
}
|
|
5832
5858
|
if (lastIndex === 0) return void 0;
|
|
5833
|
-
if (lastIndex <
|
|
5834
|
-
parts.push({ type: "text", value:
|
|
5859
|
+
if (lastIndex < text3.length) {
|
|
5860
|
+
parts.push({ type: "text", value: text3.slice(lastIndex) });
|
|
5835
5861
|
}
|
|
5836
5862
|
parent.children.splice(index, 1, ...parts);
|
|
5837
5863
|
return [_unistutilvisit.SKIP, index + parts.length];
|
|
@@ -5846,19 +5872,19 @@ var remarkMentionChips = () => {
|
|
|
5846
5872
|
return (tree) => {
|
|
5847
5873
|
_unistutilvisit.visit.call(void 0, tree, "text", (node, index, parent) => {
|
|
5848
5874
|
if (!parent || typeof index !== "number") return void 0;
|
|
5849
|
-
const
|
|
5850
|
-
if (!
|
|
5875
|
+
const text3 = node.value;
|
|
5876
|
+
if (!text3 || !text3.includes("@")) return void 0;
|
|
5851
5877
|
const parts = [];
|
|
5852
5878
|
let lastIndex = 0;
|
|
5853
5879
|
MENTION_REGEX.lastIndex = 0;
|
|
5854
5880
|
let match;
|
|
5855
|
-
while ((match = MENTION_REGEX.exec(
|
|
5881
|
+
while ((match = MENTION_REGEX.exec(text3)) !== null) {
|
|
5856
5882
|
const lead = match[1];
|
|
5857
5883
|
const marker = match[2];
|
|
5858
5884
|
const id = match[3];
|
|
5859
5885
|
const tokenStart = match.index + lead.length;
|
|
5860
5886
|
if (tokenStart > lastIndex) {
|
|
5861
|
-
parts.push({ type: "text", value:
|
|
5887
|
+
parts.push({ type: "text", value: text3.slice(lastIndex, tokenStart) });
|
|
5862
5888
|
}
|
|
5863
5889
|
parts.push({
|
|
5864
5890
|
type: "link",
|
|
@@ -5870,8 +5896,8 @@ var remarkMentionChips = () => {
|
|
|
5870
5896
|
lastIndex = match.index + match[0].length;
|
|
5871
5897
|
}
|
|
5872
5898
|
if (lastIndex === 0) return void 0;
|
|
5873
|
-
if (lastIndex <
|
|
5874
|
-
parts.push({ type: "text", value:
|
|
5899
|
+
if (lastIndex < text3.length) {
|
|
5900
|
+
parts.push({ type: "text", value: text3.slice(lastIndex) });
|
|
5875
5901
|
}
|
|
5876
5902
|
parent.children.splice(index, 1, ...parts);
|
|
5877
5903
|
return [_unistutilvisit.SKIP, index + parts.length];
|
|
@@ -5882,11 +5908,11 @@ var remarkMentionChips = () => {
|
|
|
5882
5908
|
// src/components/chat/tool-execution-display.tsx
|
|
5883
5909
|
|
|
5884
5910
|
|
|
5885
|
-
var COMMAND_BODY_KEYS = new Set(
|
|
5911
|
+
var COMMAND_BODY_KEYS = new Set(_chunkLM7EL3UQcjs.COMMAND_BODY_ARG_KEYS);
|
|
5886
5912
|
var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
5887
5913
|
({ className, message, assistantType, variant = "admin", ...props }, ref) => {
|
|
5888
5914
|
const [expanded, setExpanded] = _react.useState.call(void 0, false);
|
|
5889
|
-
const { innerRef, containerStyle } =
|
|
5915
|
+
const { innerRef, containerStyle } = _chunkLM7EL3UQcjs.useCollapsible.call(void 0, { expanded });
|
|
5890
5916
|
const isClient = assistantType === "fae";
|
|
5891
5917
|
const isClientView = variant === "client";
|
|
5892
5918
|
const isExecuting = message.type === "EXECUTING_TOOL";
|
|
@@ -5904,9 +5930,11 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5904
5930
|
return [...commandEntries, ...otherEntries];
|
|
5905
5931
|
}, [message.parameters, variant]);
|
|
5906
5932
|
const hasResult = isExecuted && typeof message.result === "string" && message.result.length > 0;
|
|
5907
|
-
const
|
|
5933
|
+
const review = message.policyReview;
|
|
5934
|
+
const reviewRows = _chunkLM7EL3UQcjs.hasPolicyReviewRows.call(void 0, review);
|
|
5935
|
+
const isConciseRemoteRead = !message.integratedToolType && !!previewText && argEntries.length === 0 && !hasResult && !reviewRows && !_chunkLM7EL3UQcjs.isPolicyEscalated.call(void 0, review);
|
|
5908
5936
|
const isStaticRow = isClientView || isConciseRemoteRead;
|
|
5909
|
-
const hasBody = argEntries.length > 0 || hasResult || isExecuting;
|
|
5937
|
+
const hasBody = argEntries.length > 0 || reviewRows || hasResult || isExecuting;
|
|
5910
5938
|
const isExpanded = expanded && hasBody;
|
|
5911
5939
|
const renderStatusIcon = () => {
|
|
5912
5940
|
if (isExecuting) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOEP5KAT6cjs.DotsLoaderIcon, { size: 16, className: "text-ods-text-secondary" });
|
|
@@ -5929,7 +5957,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5929
5957
|
}
|
|
5930
5958
|
),
|
|
5931
5959
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: renderStatusIcon() }),
|
|
5932
|
-
!isStaticRow && hasBody && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5960
|
+
!isStaticRow && hasBody && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ExpandChevron, { expanded: isExpanded }) })
|
|
5933
5961
|
] });
|
|
5934
5962
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5935
5963
|
"div",
|
|
@@ -5939,7 +5967,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5939
5967
|
// The command running block keeps its bordered box in both chats
|
|
5940
5968
|
// (Figma 1972-6109). CLIENT (Fae) only drops the tool icon below.
|
|
5941
5969
|
"flex w-full flex-col overflow-hidden",
|
|
5942
|
-
|
|
5970
|
+
_chunkLM7EL3UQcjs.CHAT_BLOCK_FRAME_CLASS,
|
|
5943
5971
|
className
|
|
5944
5972
|
),
|
|
5945
5973
|
...props,
|
|
@@ -5950,7 +5978,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5950
5978
|
// It reads as a card: what was done, then one status line under it.
|
|
5951
5979
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[var(--spacing-system-xsf)] p-[var(--spacing-system-sf)] text-left", children: [
|
|
5952
5980
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 whitespace-pre-wrap break-words text-ods-text-primary text-h4", children: previewText }),
|
|
5953
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5981
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.StatusLine, { tone: statusTone, label: statusLabel })
|
|
5954
5982
|
] })
|
|
5955
5983
|
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
5956
5984
|
hasBody ? (
|
|
@@ -5969,12 +5997,19 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5969
5997
|
)
|
|
5970
5998
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full items-start gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)] text-left", children: headerContent }),
|
|
5971
5999
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", style: containerStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, children: hasBody && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col items-start gap-0 border-t border-ods-border p-[var(--spacing-system-sf)] text-h6", children: [
|
|
5972
|
-
argEntries.map(([key, value]) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
6000
|
+
argEntries.map(([key, value]) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ArgRow, { argKey: key, value }, key)),
|
|
6001
|
+
reviewRows && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
6002
|
+
_chunkLM7EL3UQcjs.PolicyReviewRows,
|
|
6003
|
+
{
|
|
6004
|
+
review,
|
|
6005
|
+
className: argEntries.length > 0 ? "mt-[var(--spacing-system-xsf)]" : void 0
|
|
6006
|
+
}
|
|
6007
|
+
),
|
|
5973
6008
|
hasResult && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5974
|
-
|
|
6009
|
+
_chunkLM7EL3UQcjs.ResultBlock,
|
|
5975
6010
|
{
|
|
5976
6011
|
result: message.result,
|
|
5977
|
-
className: argEntries.length > 0 ? "mt-[var(--spacing-system-xsf)]" : void 0
|
|
6012
|
+
className: argEntries.length > 0 || reviewRows ? "mt-[var(--spacing-system-xsf)]" : void 0
|
|
5978
6013
|
}
|
|
5979
6014
|
),
|
|
5980
6015
|
isExecuting && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -5982,7 +6017,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5982
6017
|
{
|
|
5983
6018
|
className: _chunk63A4GZMBcjs.cn.call(void 0,
|
|
5984
6019
|
"flex w-full flex-col items-start gap-[var(--spacing-system-xxs)]",
|
|
5985
|
-
argEntries.length > 0 && "mt-[var(--spacing-system-xsf)]"
|
|
6020
|
+
(argEntries.length > 0 || reviewRows) && "mt-[var(--spacing-system-xsf)]"
|
|
5986
6021
|
),
|
|
5987
6022
|
children: [
|
|
5988
6023
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary", children: "Result:" }),
|
|
@@ -5990,7 +6025,8 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5990
6025
|
]
|
|
5991
6026
|
}
|
|
5992
6027
|
)
|
|
5993
|
-
] }) }) })
|
|
6028
|
+
] }) }) }),
|
|
6029
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.PolicyEscalationAlert, { review, className: "border-t border-ods-border" })
|
|
5994
6030
|
] })
|
|
5995
6031
|
}
|
|
5996
6032
|
);
|
|
@@ -6019,8 +6055,8 @@ function ChatMarkdownLink({
|
|
|
6019
6055
|
|
|
6020
6056
|
// src/components/chat/chat-message-layout.ts
|
|
6021
6057
|
var CHAT_MESSAGE_ROW_PADDING_CLASS = {
|
|
6022
|
-
[
|
|
6023
|
-
[
|
|
6058
|
+
[_chunkWYROOMUZcjs.CHAT_APPEARANCE.CLASSIC]: "py-[var(--spacing-system-s)]",
|
|
6059
|
+
[_chunkWYROOMUZcjs.CHAT_APPEARANCE.V2]: "py-[calc(var(--spacing-system-m)/2)]"
|
|
6024
6060
|
};
|
|
6025
6061
|
var CHAT_MESSAGE_STACK_CLASS = "grid min-w-0 grid-cols-1 gap-[var(--spacing-system-xxs)]";
|
|
6026
6062
|
var CHAT_MESSAGE_HEADER_CLASS = "flex items-center gap-[var(--spacing-system-xs)]";
|
|
@@ -6045,12 +6081,12 @@ var CHIP = "\\[\\d{1,2}(?:\\s*,\\s*\\d{1,2})*\\]";
|
|
|
6045
6081
|
function chipRunScanner() {
|
|
6046
6082
|
return new RegExp(`(^|\\s)(?:${CHIP})+(?=[\\s.,;:!?)\\]]|$)`, "g");
|
|
6047
6083
|
}
|
|
6048
|
-
function stripCitationChips(
|
|
6049
|
-
return
|
|
6084
|
+
function stripCitationChips(text3) {
|
|
6085
|
+
return text3.replace(chipRunScanner(), (_run, lead) => lead === " " || lead === " " ? "" : lead);
|
|
6050
6086
|
}
|
|
6051
|
-
function citedSourceNumbers(
|
|
6087
|
+
function citedSourceNumbers(text3) {
|
|
6052
6088
|
const numbers = [];
|
|
6053
|
-
for (const run of
|
|
6089
|
+
for (const run of text3.matchAll(chipRunScanner())) {
|
|
6054
6090
|
for (const digits of run[0].matchAll(/\d+/g)) {
|
|
6055
6091
|
const n = Number.parseInt(digits[0], 10);
|
|
6056
6092
|
if (!numbers.includes(n)) numbers.push(n);
|
|
@@ -6077,8 +6113,8 @@ var remarkStripCitations = () => {
|
|
|
6077
6113
|
var MENTION_MARKER_REGEX = /(^|[^\w@])@[a-zA-Z]+:([A-Za-z0-9_.+/=-]*[A-Za-z0-9_+/=])/g;
|
|
6078
6114
|
var CARD_MARKER_REGEX = createCardMarkerScanner();
|
|
6079
6115
|
function formatMessageTimestamp(timestamp) {
|
|
6080
|
-
const time =
|
|
6081
|
-
return
|
|
6116
|
+
const time = _chunkWYROOMUZcjs.formatTime.call(void 0, timestamp);
|
|
6117
|
+
return _chunkLM7EL3UQcjs.isToday.call(void 0, timestamp) ? time : `${_chunkWYROOMUZcjs.formatDate.call(void 0, timestamp)} ${time}`;
|
|
6082
6118
|
}
|
|
6083
6119
|
function normalizeContent(content) {
|
|
6084
6120
|
if (typeof content === "string") {
|
|
@@ -6134,7 +6170,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6134
6170
|
const isError = role === "error";
|
|
6135
6171
|
const inheritedAppearance = useChatAppearance();
|
|
6136
6172
|
const appearance = _nullishCoalesce(appearanceProp, () => ( inheritedAppearance));
|
|
6137
|
-
const isV2 = appearance ===
|
|
6173
|
+
const isV2 = appearance === _chunkWYROOMUZcjs.CHAT_APPEARANCE.V2;
|
|
6138
6174
|
const authorType = _nullishCoalesce(authorTypeProp, () => ( (isHuman ? "user" : assistantType === "mingo" ? "mingo" : "fae")));
|
|
6139
6175
|
const isOtherPerson = isHuman && selfAuthorType !== void 0 && authorType !== "system" && authorType !== selfAuthorType;
|
|
6140
6176
|
const isUser = isHuman && !isOtherPerson;
|
|
@@ -6181,12 +6217,12 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6181
6217
|
const emittedBlockKeys = /* @__PURE__ */ new Set();
|
|
6182
6218
|
segments.forEach((segment, segIdx) => {
|
|
6183
6219
|
if (segment.type !== "text") return;
|
|
6184
|
-
const
|
|
6220
|
+
const text3 = segment.text;
|
|
6185
6221
|
const parts = [];
|
|
6186
6222
|
let cursor = 0;
|
|
6187
6223
|
CARD_MARKER_REGEX.lastIndex = 0;
|
|
6188
6224
|
let match;
|
|
6189
|
-
while ((match = CARD_MARKER_REGEX.exec(
|
|
6225
|
+
while ((match = CARD_MARKER_REGEX.exec(text3)) !== null) {
|
|
6190
6226
|
const cardType = match[1];
|
|
6191
6227
|
const cardId = match[2];
|
|
6192
6228
|
const key = `${cardType}:${cardId}`;
|
|
@@ -6207,7 +6243,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6207
6243
|
if (_react2.default.isValidElement(rendered) && rendered.type === BlockCard) {
|
|
6208
6244
|
const cardProps = rendered.props;
|
|
6209
6245
|
const markerEnd = match.index + match[0].length;
|
|
6210
|
-
parts.push({ kind: "text", text:
|
|
6246
|
+
parts.push({ kind: "text", text: text3.slice(cursor, markerEnd) });
|
|
6211
6247
|
if (!emittedBlockKeys.has(key)) {
|
|
6212
6248
|
emittedBlockKeys.add(key);
|
|
6213
6249
|
parts.push({ kind: "block", key, node: cardProps.children });
|
|
@@ -6218,7 +6254,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6218
6254
|
cardProps.inline != null ? cardProps.inline : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-medium text-ods-text-primary", children: cardId })
|
|
6219
6255
|
);
|
|
6220
6256
|
} else if (rendered != null) {
|
|
6221
|
-
parts.push({ kind: "text", text:
|
|
6257
|
+
parts.push({ kind: "text", text: text3.slice(cursor, match.index) });
|
|
6222
6258
|
if (!emittedBlockKeys.has(key)) {
|
|
6223
6259
|
emittedBlockKeys.add(key);
|
|
6224
6260
|
parts.push({ kind: "block", key, node: rendered });
|
|
@@ -6226,8 +6262,8 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6226
6262
|
cursor = match.index + match[0].length;
|
|
6227
6263
|
}
|
|
6228
6264
|
}
|
|
6229
|
-
if (cursor <
|
|
6230
|
-
parts.push({ kind: "text", text:
|
|
6265
|
+
if (cursor < text3.length) {
|
|
6266
|
+
parts.push({ kind: "text", text: text3.slice(cursor) });
|
|
6231
6267
|
}
|
|
6232
6268
|
if (parts.some((p) => p.kind === "block")) {
|
|
6233
6269
|
partsBySegment.set(segIdx, parts);
|
|
@@ -6283,13 +6319,13 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6283
6319
|
}
|
|
6284
6320
|
};
|
|
6285
6321
|
}, [hasMarkerSupport, hasMentionSupport, renderMention, NavLinkAnchor]);
|
|
6286
|
-
const renderSegmentBody = (segIndex,
|
|
6322
|
+
const renderSegmentBody = (segIndex, text3, isStreaming) => {
|
|
6287
6323
|
const parts = _optionalChain([renderingPlan, 'optionalAccess', _111 => _111.partsBySegment, 'access', _112 => _112.get, 'call', _113 => _113(segIndex)]);
|
|
6288
6324
|
if (!parts || parts.length === 0) {
|
|
6289
6325
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
6290
6326
|
SimpleMarkdownRenderer,
|
|
6291
6327
|
{
|
|
6292
|
-
content:
|
|
6328
|
+
content: text3,
|
|
6293
6329
|
textSize: "compact",
|
|
6294
6330
|
additionalRemarkPlugins: cardRemarkPlugins,
|
|
6295
6331
|
componentOverrides: cardComponentOverrides,
|
|
@@ -6322,7 +6358,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6322
6358
|
const faceBox = "h-5 w-5 flex-shrink-0";
|
|
6323
6359
|
const face = !showAvatar || isSystem ? null : !isHuman && !avatar && assistantIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { title: displayName, className: _chunk63A4GZMBcjs.cn.call(void 0, "flex items-center justify-center", faceBox), children: assistantIcon }) : !isHuman && !avatar && assistantType ? (
|
|
6324
6360
|
// An agent with no picture shows its packaged mark, never initials.
|
|
6325
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "img", "aria-label": displayName, title: displayName, className: _chunk63A4GZMBcjs.cn.call(void 0, "inline-flex", faceBox), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
6361
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "img", "aria-label": displayName, title: displayName, className: _chunk63A4GZMBcjs.cn.call(void 0, "inline-flex", faceBox), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.AgentMark, { agent: assistantType, className: "h-full w-full rounded-full" }) })
|
|
6326
6362
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { title: displayName, className: "inline-flex flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
6327
6363
|
_chunkW7OFAROYcjs.SquareAvatar,
|
|
6328
6364
|
{
|
|
@@ -6340,7 +6376,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6340
6376
|
"div",
|
|
6341
6377
|
{
|
|
6342
6378
|
ref,
|
|
6343
|
-
className: _chunk63A4GZMBcjs.cn.call(void 0, "relative", CHAT_MESSAGE_ROW_PADDING_CLASS[
|
|
6379
|
+
className: _chunk63A4GZMBcjs.cn.call(void 0, "relative", CHAT_MESSAGE_ROW_PADDING_CLASS[_chunkWYROOMUZcjs.CHAT_APPEARANCE.V2], className),
|
|
6344
6380
|
...props,
|
|
6345
6381
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatAppearanceContext.Provider, { value: appearance, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SystemEventMessage, { text: name, timestamp }) })
|
|
6346
6382
|
}
|
|
@@ -6352,7 +6388,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6352
6388
|
ref,
|
|
6353
6389
|
className: _chunk63A4GZMBcjs.cn.call(void 0,
|
|
6354
6390
|
"relative",
|
|
6355
|
-
CHAT_MESSAGE_ROW_PADDING_CLASS[isV2 ?
|
|
6391
|
+
CHAT_MESSAGE_ROW_PADDING_CLASS[isV2 ? _chunkWYROOMUZcjs.CHAT_APPEARANCE.V2 : _chunkWYROOMUZcjs.CHAT_APPEARANCE.CLASSIC],
|
|
6356
6392
|
className
|
|
6357
6393
|
),
|
|
6358
6394
|
...props,
|
|
@@ -6409,7 +6445,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
|
|
|
6409
6445
|
);
|
|
6410
6446
|
} else if (segment.type === "approval_batch") {
|
|
6411
6447
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
6412
|
-
|
|
6448
|
+
_chunkLM7EL3UQcjs.ApprovalBatchMessage,
|
|
6413
6449
|
{
|
|
6414
6450
|
data: segment.data,
|
|
6415
6451
|
status: segment.status,
|
|
@@ -6573,11 +6609,11 @@ var _usesticktobottom = require('use-stick-to-bottom');
|
|
|
6573
6609
|
|
|
6574
6610
|
function CyclingPhrase({ words, className, charMs = 60, holdMs = 4500 }) {
|
|
6575
6611
|
const [wordIndex, setWordIndex] = _react.useState.call(void 0, 0);
|
|
6576
|
-
const [
|
|
6612
|
+
const [text3, setText] = _react.useState.call(void 0, "");
|
|
6577
6613
|
const [cursor, setCursor] = _react.useState.call(void 0, 0);
|
|
6578
6614
|
const target = _nullishCoalesce(words[wordIndex], () => ( ""));
|
|
6579
|
-
const holding2 = words.length > 0 && cursor >= Math.max(
|
|
6580
|
-
const shownText = holding2 ? target :
|
|
6615
|
+
const holding2 = words.length > 0 && cursor >= Math.max(text3.length, target.length);
|
|
6616
|
+
const shownText = holding2 ? target : text3;
|
|
6581
6617
|
const placeholder = _react.useMemo.call(void 0,
|
|
6582
6618
|
() => words.reduce((longest, w) => w.length > longest.length ? w : longest, ""),
|
|
6583
6619
|
[words]
|
|
@@ -6603,7 +6639,7 @@ function CyclingPhrase({ words, className, charMs = 60, holdMs = 4500 }) {
|
|
|
6603
6639
|
setCursor((c) => c + 1);
|
|
6604
6640
|
}, charMs);
|
|
6605
6641
|
return () => clearTimeout(timeoutId);
|
|
6606
|
-
}, [wordIndex, cursor,
|
|
6642
|
+
}, [wordIndex, cursor, text3, holding2, target, words, charMs, holdMs]);
|
|
6607
6643
|
if (words.length === 0) return null;
|
|
6608
6644
|
const before = shownText.slice(0, cursor);
|
|
6609
6645
|
const after = shownText.slice(cursor);
|
|
@@ -6683,7 +6719,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
|
|
|
6683
6719
|
approvalVariant,
|
|
6684
6720
|
selfAuthorType,
|
|
6685
6721
|
nameEveryTurn,
|
|
6686
|
-
appearance =
|
|
6722
|
+
appearance = _chunkWYROOMUZcjs.CHAT_APPEARANCE.CLASSIC,
|
|
6687
6723
|
assistantIcon,
|
|
6688
6724
|
pendingApprovals,
|
|
6689
6725
|
hasNextPage,
|
|
@@ -7037,7 +7073,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
|
|
|
7037
7073
|
const lastSegment = _optionalChain([lastSegments, 'optionalAccess', _135 => _135[lastSegments.length - 1]]);
|
|
7038
7074
|
const isPausedOnApproval = !!lastSegment && (lastSegment.type === "approval_request" || lastSegment.type === "approval_batch" || lastSegment.type === "escalation_offer") && (lastSegment.status === void 0 || lastSegment.status === "pending");
|
|
7039
7075
|
const showStreamingLoader = isTyping && !isPausedOnApproval && !(pendingApprovals && pendingApprovals.length > 0);
|
|
7040
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatAppearanceContext.Provider, { value: appearance, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
7076
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatAppearanceContext.Provider, { value: appearance, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.OverlayOpenRegistryProvider, { onOpenChange: handleOverlayOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-0 flex-1 flex-col", children: [
|
|
7041
7077
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex min-h-0 flex-1 flex-col", children: [
|
|
7042
7078
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
7043
7079
|
"div",
|
|
@@ -7526,8 +7562,8 @@ var ANTHROPIC_SUPPORTED_IMAGE_MIME = ["image/jpeg", "image/png", "image/webp", "
|
|
|
7526
7562
|
function buildChatAttachmentViewUrl(viewUrlPrefix, storagePath, viewToken) {
|
|
7527
7563
|
return `${viewUrlPrefix}${storagePath}?${CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM}=${encodeURIComponent(viewToken)}`;
|
|
7528
7564
|
}
|
|
7529
|
-
function escapeMarkdownInline(
|
|
7530
|
-
return
|
|
7565
|
+
function escapeMarkdownInline(text3) {
|
|
7566
|
+
return text3.replace(/[[\]()\\\n\r<>"]/g, (ch) => {
|
|
7531
7567
|
switch (ch) {
|
|
7532
7568
|
case "\n":
|
|
7533
7569
|
return " ";
|
|
@@ -7553,10 +7589,10 @@ var CHAT_ATTACHMENT_MARKDOWN_PATTERN = new RegExp(
|
|
|
7553
7589
|
`^\\s*!?\\[[^\\]]*\\]\\(${CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED}[^)]+\\)\\s*$`,
|
|
7554
7590
|
"gm"
|
|
7555
7591
|
);
|
|
7556
|
-
function stripChatAttachmentMarkdown(
|
|
7592
|
+
function stripChatAttachmentMarkdown(text3) {
|
|
7557
7593
|
const storagePaths = [];
|
|
7558
7594
|
const pathExtract = new RegExp(`\\(${CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED}([^?)]+)`);
|
|
7559
|
-
const stripped =
|
|
7595
|
+
const stripped = text3.replace(CHAT_ATTACHMENT_MARKDOWN_PATTERN, (match) => {
|
|
7560
7596
|
const m = match.match(pathExtract);
|
|
7561
7597
|
if (m && m[1]) storagePaths.push(m[1]);
|
|
7562
7598
|
return "";
|
|
@@ -8308,7 +8344,7 @@ function QuickActionSet({
|
|
|
8308
8344
|
) }) }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
8309
8345
|
shown.map((chip) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Slot, { "data-loading-item": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, QuickActionChipFromData, { chip, defaultTheme: theme, fill: true }) }, chip.id)),
|
|
8310
8346
|
overflows && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Slot, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8311
|
-
|
|
8347
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
8312
8348
|
{
|
|
8313
8349
|
groups: [{ items: moreItems }],
|
|
8314
8350
|
align: "end",
|
|
@@ -8654,7 +8690,7 @@ function MingoChatHistoryRow({
|
|
|
8654
8690
|
!loading && "cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent"
|
|
8655
8691
|
),
|
|
8656
8692
|
children: [
|
|
8657
|
-
loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPMUCEUFQcjs.TextLineSkeleton, { type: "h4", className:
|
|
8693
|
+
loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPMUCEUFQcjs.TextLineSkeleton, { type: "h4", className: _chunkWYROOMUZcjs.SKELETON_TITLE_WIDTHS[skeletonIndex % _chunkWYROOMUZcjs.SKELETON_TITLE_WIDTHS.length] }) : null,
|
|
8658
8694
|
!loading && unread > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-8 min-w-8 shrink-0 items-center justify-center rounded-md bg-ods-accent px-[var(--spacing-system-xsf)] text-ods-text-on-accent text-h5", children: unread > 99 ? "99+" : unread }) : null,
|
|
8659
8695
|
loading ? null : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8660
8696
|
"span",
|
|
@@ -8688,7 +8724,7 @@ function MingoChatHistoryRow({
|
|
|
8688
8724
|
menuOpen ? "opacity-100" : "opacity-0 focus-within:opacity-100 group-hover/row:opacity-100"
|
|
8689
8725
|
),
|
|
8690
8726
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8691
|
-
|
|
8727
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
8692
8728
|
{
|
|
8693
8729
|
triggerAriaLabel: "Chat actions",
|
|
8694
8730
|
groups: [{ items: menuItems }],
|
|
@@ -8781,7 +8817,7 @@ function MingoChatHistory({
|
|
|
8781
8817
|
const isLoading = _chunk63A4GZMBcjs.useLoadingScope.call(void 0, ) || loading;
|
|
8782
8818
|
const groups = _react.useMemo.call(void 0, () => groupDialogs(dialogs), [dialogs]);
|
|
8783
8819
|
const noSearchResults = groups.length === 0 && !!_optionalChain([searchQuery, 'optionalAccess', _171 => _171.trim, 'call', _172 => _172()]);
|
|
8784
|
-
const { scrollRef, fadeTop, fadeBottom, update: updateFade } =
|
|
8820
|
+
const { scrollRef, fadeTop, fadeBottom, update: updateFade } = _chunkWYROOMUZcjs.useScrollFade.call(void 0, );
|
|
8785
8821
|
const onScroll = loadMore === "scroll";
|
|
8786
8822
|
const sentinelRef = useLoadMoreSentinel({
|
|
8787
8823
|
hasMore: hasMore && onScroll,
|
|
@@ -8844,8 +8880,8 @@ function MingoChatHistory({
|
|
|
8844
8880
|
]
|
|
8845
8881
|
}
|
|
8846
8882
|
),
|
|
8847
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8848
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8883
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ScrollFadeOverlay, { edge: "top", visible: fadeTop, color: "var(--color-bg-card)", className: "h-12" }),
|
|
8884
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ScrollFadeOverlay, { edge: "bottom", visible: fadeBottom, color: "var(--color-bg-card)", className: "h-12" })
|
|
8849
8885
|
] }) });
|
|
8850
8886
|
}
|
|
8851
8887
|
|
|
@@ -8899,7 +8935,7 @@ function MingoWelcome({
|
|
|
8899
8935
|
} catch (e8) {
|
|
8900
8936
|
}
|
|
8901
8937
|
}, [promoStorage, promoStorageKey]);
|
|
8902
|
-
const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } =
|
|
8938
|
+
const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } = _chunkWYROOMUZcjs.useScrollFade.call(void 0, );
|
|
8903
8939
|
const showPinnedRegion = !!dialogHistory || !historyLoading && !loadError;
|
|
8904
8940
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
8905
8941
|
"div",
|
|
@@ -8931,7 +8967,7 @@ function MingoWelcome({
|
|
|
8931
8967
|
onScroll: updateScrollFade,
|
|
8932
8968
|
className: "flex min-h-0 flex-1 flex-col gap-[var(--spacing-system-m)] overflow-y-auto overscroll-contain",
|
|
8933
8969
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-l)] px-[var(--spacing-system-l)] py-[var(--spacing-system-xxl)] text-center", children: [
|
|
8934
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8970
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.AgentMark, { agent: "mingo", className: "h-12 w-12" }),
|
|
8935
8971
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[var(--spacing-system-l)]", children: [
|
|
8936
8972
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h2", children: heading }),
|
|
8937
8973
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h4", children: subtitle })
|
|
@@ -8939,8 +8975,8 @@ function MingoWelcome({
|
|
|
8939
8975
|
] })
|
|
8940
8976
|
}
|
|
8941
8977
|
),
|
|
8942
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8943
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
8978
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ScrollFadeOverlay, { edge: "top", visible: fadeTop, className: "h-12" }),
|
|
8979
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ScrollFadeOverlay, { edge: "bottom", visible: fadeBottom, className: "h-12" })
|
|
8944
8980
|
] }) })))),
|
|
8945
8981
|
showPinnedRegion && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-m)]", children: [
|
|
8946
8982
|
resolvedPromo && !promoDismissed && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex shrink-0 items-center gap-[var(--spacing-system-m)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-m)] pr-[var(--spacing-system-xl)]", children: [
|
|
@@ -9003,7 +9039,7 @@ function GuideWelcome({
|
|
|
9003
9039
|
children,
|
|
9004
9040
|
className
|
|
9005
9041
|
}) {
|
|
9006
|
-
const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } =
|
|
9042
|
+
const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } = _chunkWYROOMUZcjs.useScrollFade.call(void 0, );
|
|
9007
9043
|
const inLoadingScope = _chunk63A4GZMBcjs.useLoadingScope.call(void 0, );
|
|
9008
9044
|
const subtitleIsLoading = inLoadingScope || subtitleLoading && !subtitle;
|
|
9009
9045
|
const chipsAreLoading = inLoadingScope || quickActionsLoading && quickActions.length === 0;
|
|
@@ -9040,7 +9076,7 @@ function GuideWelcome({
|
|
|
9040
9076
|
// Agent-mode identity glyph (chat-config Identity tab). Sized to
|
|
9041
9077
|
// match the default Mingo mark (48px).
|
|
9042
9078
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMDLT6D46cjs.EntityIcon, { icon: { name: icon.name, url: icon.url, props: icon.props }, size: 48 })
|
|
9043
|
-
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9079
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.AgentMark, { agent: "mingo", className: "h-12 w-12" }),
|
|
9044
9080
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[var(--spacing-system-l)]", children: [
|
|
9045
9081
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h2", children: title }),
|
|
9046
9082
|
subtitleIsLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPMUCEUFQcjs.TextLineSkeleton, { type: "h4", className: "w-3/4 max-w-80" }) }) : subtitle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h4", children: subtitle }) : null
|
|
@@ -9050,8 +9086,8 @@ function GuideWelcome({
|
|
|
9050
9086
|
]
|
|
9051
9087
|
}
|
|
9052
9088
|
),
|
|
9053
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9054
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9089
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ScrollFadeOverlay, { edge: "top", visible: fadeTop, className: "h-12" }),
|
|
9090
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ScrollFadeOverlay, { edge: "bottom", visible: fadeBottom, className: "h-12" })
|
|
9055
9091
|
] }),
|
|
9056
9092
|
(quickActions.length > 0 || chipsAreLoading) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, QuickActionSet, { chips: chipItems, loading: chipsAreLoading, showTopic: showTopicProp })
|
|
9057
9093
|
] });
|
|
@@ -9072,9 +9108,9 @@ function GuideModeBanner({ label = DEFAULT_LABEL, tooltip = DEFAULT_TOOLTIP, cla
|
|
|
9072
9108
|
children: [
|
|
9073
9109
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZFJDLJSIcjs.CompassIcon, { size: 16, className: "shrink-0 text-ods-text-on-accent" }),
|
|
9074
9110
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "flex-1 truncate uppercase text-ods-text-on-accent text-h5", children: label }),
|
|
9075
|
-
tooltip != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9076
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9077
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9111
|
+
tooltip != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.Tooltip, { children: [
|
|
9112
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "bare", size: "icon-inline", type: "button", "aria-label": "About Guide Mode", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFO6DOP6Mcjs.QuestionCircleIcon, { size: 16, className: "text-ods-text-on-accent" }) }) }),
|
|
9113
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipContent, { side: "bottom", align: "end", className: "max-w-[280px] normal-case text-h6", children: tooltip })
|
|
9078
9114
|
] }) })
|
|
9079
9115
|
]
|
|
9080
9116
|
}
|
|
@@ -9121,15 +9157,15 @@ function MingoArchiveList({
|
|
|
9121
9157
|
className: "flex min-h-0 flex-1 flex-col gap-[var(--spacing-system-xxs)] px-[var(--spacing-system-xs)] pt-[var(--spacing-system-mf)]",
|
|
9122
9158
|
children: [
|
|
9123
9159
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "shrink-0 px-[var(--spacing-system-xs)] pt-[var(--spacing-system-xs)] text-ods-text-secondary text-h5", children: "Archived Chats" }),
|
|
9124
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-0 flex-1 flex-col gap-[var(--spacing-system-xxs)] overflow-y-auto overscroll-contain pb-[var(--spacing-system-mf)]", children: loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9160
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-0 flex-1 flex-col gap-[var(--spacing-system-xxs)] overflow-y-auto overscroll-contain pb-[var(--spacing-system-mf)]", children: loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ChatListItemLoadingPage, { count: pageSize, trailing: true }) : dialogs.length > 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
9125
9161
|
dialogs.map((dialog) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9126
|
-
|
|
9162
|
+
_chunkWYROOMUZcjs.ChatListItem,
|
|
9127
9163
|
{
|
|
9128
9164
|
"data-loading-item": true,
|
|
9129
9165
|
title: dialog.title || "Untitled Chat",
|
|
9130
9166
|
onClick: () => _optionalChain([onSelectDialog, 'optionalCall', _178 => _178(dialog.id)]),
|
|
9131
9167
|
trailing: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
9132
|
-
dialog.timestamp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "whitespace-nowrap text-ods-text-secondary text-h6", children:
|
|
9168
|
+
dialog.timestamp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "whitespace-nowrap text-ods-text-secondary text-h6", children: _chunkLM7EL3UQcjs.formatRelativeTime.call(void 0, dialog.timestamp) }),
|
|
9133
9169
|
dialog.owner && (dialog.owner.name || dialog.owner.avatarUrl) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9134
9170
|
_chunkW7OFAROYcjs.SquareAvatar,
|
|
9135
9171
|
{
|
|
@@ -9277,7 +9313,7 @@ function MingoChatHeader({
|
|
|
9277
9313
|
] }),
|
|
9278
9314
|
onRestore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "cell", className: "w-14", onClick: onRestore, "aria-label": "Unarchive chat", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPX2JK6Pcjs.Refresh01LeftIcon, { size: 24 }) }),
|
|
9279
9315
|
menuGroups.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9280
|
-
|
|
9316
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
9281
9317
|
{
|
|
9282
9318
|
triggerAriaLabel: "Chat actions",
|
|
9283
9319
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
@@ -9773,7 +9809,7 @@ function SearchInput({
|
|
|
9773
9809
|
)
|
|
9774
9810
|
] }),
|
|
9775
9811
|
showHiddenTags && hiddenCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
9776
|
-
|
|
9812
|
+
_chunkWYROOMUZcjs.HiddenTagsPopup,
|
|
9777
9813
|
{
|
|
9778
9814
|
ref: hiddenTagsPopupRef,
|
|
9779
9815
|
items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
|
|
@@ -10000,7 +10036,7 @@ function MingoChatHistorySection({
|
|
|
10000
10036
|
onClick: () => onScopeChange("all")
|
|
10001
10037
|
}
|
|
10002
10038
|
] : [];
|
|
10003
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10039
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.TooltipProvider, { delayDuration: 300, children: [
|
|
10004
10040
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10005
10041
|
"section",
|
|
10006
10042
|
{
|
|
@@ -10009,8 +10045,8 @@ function MingoChatHistorySection({
|
|
|
10009
10045
|
children: [
|
|
10010
10046
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 items-center gap-[var(--spacing-system-xs)] px-[var(--spacing-system-xs)]", children: [
|
|
10011
10047
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { id: captionId, className: "min-w-0 flex-1 truncate text-ods-text-secondary text-h5", children: "Chat history" }),
|
|
10012
|
-
onSearchChange && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10013
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10048
|
+
onSearchChange && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.Tooltip, { children: [
|
|
10049
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10014
10050
|
_chunkFCZAUK4Dcjs.Button,
|
|
10015
10051
|
{
|
|
10016
10052
|
variant: "transparent",
|
|
@@ -10022,16 +10058,16 @@ function MingoChatHistorySection({
|
|
|
10022
10058
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ74QE57Tcjs.SearchIcon, { size: 20 })
|
|
10023
10059
|
}
|
|
10024
10060
|
) }),
|
|
10025
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10061
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipContent, { side: "bottom", children: shortcut ? `Search chats \xB7 ${shortcut}` : "Search chats" })
|
|
10026
10062
|
] }),
|
|
10027
|
-
scopeMenu.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10063
|
+
scopeMenu.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.Tooltip, { children: [
|
|
10028
10064
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10029
|
-
|
|
10065
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10030
10066
|
{
|
|
10031
10067
|
triggerAriaLabel: "Filter chats",
|
|
10032
10068
|
groups: [{ items: scopeMenu }],
|
|
10033
10069
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
10034
|
-
customTrigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10070
|
+
customTrigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10035
10071
|
_chunkFCZAUK4Dcjs.Button,
|
|
10036
10072
|
{
|
|
10037
10073
|
variant: "transparent",
|
|
@@ -10043,19 +10079,19 @@ function MingoChatHistorySection({
|
|
|
10043
10079
|
) })
|
|
10044
10080
|
}
|
|
10045
10081
|
),
|
|
10046
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10082
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipContent, { side: "bottom", children: scope === "all" ? "Showing all chats" : "Showing my chats" })
|
|
10047
10083
|
] }),
|
|
10048
|
-
moreMenu.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10084
|
+
moreMenu.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.Tooltip, { children: [
|
|
10049
10085
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10050
|
-
|
|
10086
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10051
10087
|
{
|
|
10052
10088
|
triggerAriaLabel: "More",
|
|
10053
10089
|
groups: [{ items: moreMenu }],
|
|
10054
10090
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
10055
|
-
customTrigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10091
|
+
customTrigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "transparent", size: "icon", "aria-label": "More", className: ICON_BUTTON_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSWHUL32Wcjs.Ellipsis01Icon, { size: 20 }) }) })
|
|
10056
10092
|
}
|
|
10057
10093
|
),
|
|
10058
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10094
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipContent, { side: "bottom", children: "More" })
|
|
10059
10095
|
] })
|
|
10060
10096
|
] }),
|
|
10061
10097
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -10138,8 +10174,8 @@ function SearchModalContent({ initialValue, onSearchChange, onClose, children })
|
|
|
10138
10174
|
send("");
|
|
10139
10175
|
onClose();
|
|
10140
10176
|
};
|
|
10141
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10142
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10177
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.Modal, { isOpen: true, onClose: close, className: "md:max-w-[600px]", children: [
|
|
10178
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalTitle, { children: "Search chats" }) }),
|
|
10143
10179
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: fieldRef, role: "search", "aria-label": "Search chats", className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10144
10180
|
SearchInput,
|
|
10145
10181
|
{
|
|
@@ -10195,7 +10231,7 @@ function SectionRow({
|
|
|
10195
10231
|
// A row that lands in a day already on screen (the next page) fades in too.
|
|
10196
10232
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "group/row relative shrink-0 duration-300 animate-in fade-in motion-reduce:animate-none", children: [
|
|
10197
10233
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10198
|
-
|
|
10234
|
+
_chunkWYROOMUZcjs.ChatListItem,
|
|
10199
10235
|
{
|
|
10200
10236
|
active,
|
|
10201
10237
|
title,
|
|
@@ -10245,7 +10281,7 @@ function SectionRow({
|
|
|
10245
10281
|
menuOpen ? "opacity-100" : "opacity-0 group-hover/row:opacity-100 group-has-[:focus-visible]/row:opacity-100"
|
|
10246
10282
|
),
|
|
10247
10283
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10248
|
-
|
|
10284
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10249
10285
|
{
|
|
10250
10286
|
triggerAriaLabel: `Actions for ${title}`,
|
|
10251
10287
|
groups: [{ items: menuItems }],
|
|
@@ -10362,7 +10398,7 @@ function MingoChatRailPanel({
|
|
|
10362
10398
|
if (loadError) {
|
|
10363
10399
|
list = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatListLoadError, { onRetry, className: "px-[var(--spacing-system-xs)] py-[var(--spacing-system-l)]" });
|
|
10364
10400
|
} else if (loading) {
|
|
10365
|
-
list = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10401
|
+
list = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ChatListItemLoadingPage, { count: pageSize });
|
|
10366
10402
|
} else if (dialogs.length === 0 && !draftTitle) {
|
|
10367
10403
|
list = hasSearch ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "px-[var(--spacing-system-xs)] py-[var(--spacing-system-s)] text-ods-text-secondary text-h6", children: "No chats found" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10368
10404
|
ChatListEmptyState,
|
|
@@ -10374,7 +10410,7 @@ function MingoChatRailPanel({
|
|
|
10374
10410
|
);
|
|
10375
10411
|
} else {
|
|
10376
10412
|
list = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
10377
|
-
draftTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10413
|
+
draftTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ChatListItem, { active: true, title: draftTitle, tabIndex: -1, className: "cursor-default" }),
|
|
10378
10414
|
dialogs.map((dialog) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10379
10415
|
MingoChatRailRow,
|
|
10380
10416
|
{
|
|
@@ -10396,13 +10432,13 @@ function MingoChatRailPanel({
|
|
|
10396
10432
|
] });
|
|
10397
10433
|
}
|
|
10398
10434
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10399
|
-
|
|
10435
|
+
_chunkWYROOMUZcjs.ChatNavSidebar,
|
|
10400
10436
|
{
|
|
10401
10437
|
className,
|
|
10402
10438
|
"data-accent": "mingo",
|
|
10403
10439
|
"aria-label": "Mingo chats",
|
|
10404
10440
|
logo: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 items-center justify-between", children: [
|
|
10405
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10441
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.AgentMark, { agent: "mingo", className: "size-6 text-ods-text-primary" }),
|
|
10406
10442
|
onExpand && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10407
10443
|
_chunkFCZAUK4Dcjs.Button,
|
|
10408
10444
|
{
|
|
@@ -10418,7 +10454,7 @@ function MingoChatRailPanel({
|
|
|
10418
10454
|
items,
|
|
10419
10455
|
sectionLabel: "Your Current Chats",
|
|
10420
10456
|
sectionActions: listMenu.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10421
|
-
|
|
10457
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10422
10458
|
{
|
|
10423
10459
|
triggerAriaLabel: "Chat list options",
|
|
10424
10460
|
groups: [{ items: listMenu }],
|
|
@@ -10455,7 +10491,7 @@ function MingoChatRailRow({ dialog, active, status, onSelect, menuItems, ...prop
|
|
|
10455
10491
|
const title = dialog.title || "Untitled Chat";
|
|
10456
10492
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ..._chunk63A4GZMBcjs.loadingItemProps.call(void 0, props), className: "group/row relative shrink-0", children: [
|
|
10457
10493
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10458
|
-
|
|
10494
|
+
_chunkWYROOMUZcjs.ChatListItem,
|
|
10459
10495
|
{
|
|
10460
10496
|
active,
|
|
10461
10497
|
title,
|
|
@@ -10481,7 +10517,7 @@ function MingoChatRailRow({ dialog, active, status, onSelect, menuItems, ...prop
|
|
|
10481
10517
|
menuOpen ? "opacity-100" : "opacity-0 focus-within:opacity-100 group-hover/row:opacity-100"
|
|
10482
10518
|
),
|
|
10483
10519
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10484
|
-
|
|
10520
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10485
10521
|
{
|
|
10486
10522
|
triggerAriaLabel: `Actions for ${title}`,
|
|
10487
10523
|
groups: [{ items: menuItems }],
|
|
@@ -10505,67 +10541,6 @@ function MingoChatRailRow({ dialog, active, status, onSelect, menuItems, ...prop
|
|
|
10505
10541
|
] });
|
|
10506
10542
|
}
|
|
10507
10543
|
|
|
10508
|
-
// src/components/ui/tab-selector.tsx
|
|
10509
|
-
|
|
10510
|
-
function TabSelector({
|
|
10511
|
-
value,
|
|
10512
|
-
onValueChange,
|
|
10513
|
-
items,
|
|
10514
|
-
variant = "primary",
|
|
10515
|
-
label,
|
|
10516
|
-
disabled,
|
|
10517
|
-
scrollable = false,
|
|
10518
|
-
className
|
|
10519
|
-
}) {
|
|
10520
|
-
const flush = _chunkYJZ7R3W5cjs.useIsInActionsMenuHeader.call(void 0, );
|
|
10521
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10522
|
-
"div",
|
|
10523
|
-
{
|
|
10524
|
-
className: _chunk63A4GZMBcjs.cn.call(void 0, "flex flex-col gap-[var(--spacing-system-xxs)]", disabled && "opacity-50", className),
|
|
10525
|
-
"aria-disabled": disabled || void 0,
|
|
10526
|
-
children: [
|
|
10527
|
-
label && // Label for family/color; 'large' (text-h4) is this component's
|
|
10528
|
-
// long-standing label scale — neighbours opt into the same scale via
|
|
10529
|
-
// their `labelVariant="large"` when a design puts them side by side.
|
|
10530
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3MBQRCQcjs.Label, { variant: "large", children: label }),
|
|
10531
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10532
|
-
"div",
|
|
10533
|
-
{
|
|
10534
|
-
className: _chunk63A4GZMBcjs.cn.call(void 0,
|
|
10535
|
-
"flex gap-[var(--spacing-system-xxs)] bg-ods-bg p-[var(--spacing-system-xxs)]",
|
|
10536
|
-
flush ? "h-10 w-full" : _chunk63A4GZMBcjs.cn.call(void 0, "h-11 rounded-md border border-ods-border content-md:h-12", scrollable ? "overflow-x-auto" : "w-full")
|
|
10537
|
-
),
|
|
10538
|
-
children: items.map((item) => {
|
|
10539
|
-
const isActive = value === item.id;
|
|
10540
|
-
const isDisabled = disabled || item.disabled;
|
|
10541
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10542
|
-
_chunkFCZAUK4Dcjs.Button,
|
|
10543
|
-
{
|
|
10544
|
-
variant: "segment",
|
|
10545
|
-
type: "button",
|
|
10546
|
-
disabled: isDisabled,
|
|
10547
|
-
onClick: () => onValueChange(item.id),
|
|
10548
|
-
"aria-label": !item.label ? item.ariaLabel : void 0,
|
|
10549
|
-
"aria-pressed": isActive,
|
|
10550
|
-
"data-state": isActive ? "active" : void 0,
|
|
10551
|
-
"data-tone": variant === "primary" ? "accent" : void 0,
|
|
10552
|
-
className: _chunk63A4GZMBcjs.cn.call(void 0, "h-full", scrollable ? "flex-none shrink-0 basis-auto" : "flex-1"),
|
|
10553
|
-
children: [
|
|
10554
|
-
item.icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex size-4 shrink-0 items-center justify-center content-md:size-6", children: item.icon }),
|
|
10555
|
-
item.label,
|
|
10556
|
-
item.badge && item.badge
|
|
10557
|
-
]
|
|
10558
|
-
},
|
|
10559
|
-
item.id
|
|
10560
|
-
);
|
|
10561
|
-
})
|
|
10562
|
-
}
|
|
10563
|
-
)
|
|
10564
|
-
]
|
|
10565
|
-
}
|
|
10566
|
-
);
|
|
10567
|
-
}
|
|
10568
|
-
|
|
10569
10544
|
// src/components/chat/mingo-history-rail.tsx
|
|
10570
10545
|
|
|
10571
10546
|
function MingoHistoryRail({
|
|
@@ -10613,7 +10588,7 @@ function MingoHistoryRail({
|
|
|
10613
10588
|
}
|
|
10614
10589
|
),
|
|
10615
10590
|
scope && onScopeChange && !loadError ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10616
|
-
TabSelector,
|
|
10591
|
+
_chunkLM7EL3UQcjs.TabSelector,
|
|
10617
10592
|
{
|
|
10618
10593
|
className: "shrink-0",
|
|
10619
10594
|
value: scope,
|
|
@@ -10673,10 +10648,10 @@ function RenameChatModal({ isOpen, initialName = "", onClose, onSave }) {
|
|
|
10673
10648
|
const save = () => {
|
|
10674
10649
|
if (canSave) onSave(name.trim());
|
|
10675
10650
|
};
|
|
10676
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10677
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10651
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.Modal, { isOpen, onClose, className: "md:max-w-[600px]", children: [
|
|
10652
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalTitle, { children: "Rename Chat" }) }),
|
|
10678
10653
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
10679
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10654
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVCFQHPOOcjs.Label, { htmlFor: "rename-chat-input", variant: "large", children: "Chat Name" }),
|
|
10680
10655
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10681
10656
|
"input",
|
|
10682
10657
|
{
|
|
@@ -10691,27 +10666,27 @@ function RenameChatModal({ isOpen, initialName = "", onClose, onSave }) {
|
|
|
10691
10666
|
}
|
|
10692
10667
|
)
|
|
10693
10668
|
] }),
|
|
10694
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10669
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.ModalFooter, { children: [
|
|
10695
10670
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "outline", type: "button", onClick: onClose, className: footerBtn, children: "Cancel" }),
|
|
10696
10671
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "accent", type: "button", onClick: save, disabled: !canSave, className: footerBtn, children: "Save" })
|
|
10697
10672
|
] })
|
|
10698
10673
|
] });
|
|
10699
10674
|
}
|
|
10700
10675
|
function ArchiveChatModal({ isOpen, onClose, onConfirm }) {
|
|
10701
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10702
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10676
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.Modal, { isOpen, onClose, className: "md:max-w-[600px]", children: [
|
|
10677
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalTitle, { children: "Archive Chat" }) }),
|
|
10703
10678
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "w-full text-ods-text-primary text-h4", children: "This chat will be hidden from your current chats." }),
|
|
10704
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10679
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.ModalFooter, { children: [
|
|
10705
10680
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "outline", type: "button", onClick: onClose, className: footerBtn, children: "Cancel" }),
|
|
10706
10681
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "destructive", type: "button", onClick: onConfirm, className: footerBtn, children: "Archive Chat" })
|
|
10707
10682
|
] })
|
|
10708
10683
|
] });
|
|
10709
10684
|
}
|
|
10710
10685
|
function UnarchiveChatModal({ isOpen, onClose, onConfirm }) {
|
|
10711
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10712
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10686
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.Modal, { isOpen, onClose, className: "md:max-w-[600px]", children: [
|
|
10687
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWYROOMUZcjs.ModalTitle, { children: "Unarchive Chat" }) }),
|
|
10713
10688
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "w-full text-ods-text-primary text-h4", children: "This chat will be moved back to your current chats." }),
|
|
10714
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
10689
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWYROOMUZcjs.ModalFooter, { children: [
|
|
10715
10690
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "outline", type: "button", onClick: onClose, className: footerBtn, children: "Cancel" }),
|
|
10716
10691
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "accent", type: "button", onClick: onConfirm, className: footerBtn, children: "Unarchive Chat" })
|
|
10717
10692
|
] })
|
|
@@ -10797,7 +10772,7 @@ function ChatPanelHeaderMobile({
|
|
|
10797
10772
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-end gap-[var(--spacing-system-m)] pt-[var(--spacing-system-xl)]", children: [
|
|
10798
10773
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xs)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "min-w-0 truncate text-ods-text-primary text-h2", title, children: title }) }),
|
|
10799
10774
|
menuItems.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10800
|
-
|
|
10775
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10801
10776
|
{
|
|
10802
10777
|
groups: [{ items: menuItems }],
|
|
10803
10778
|
triggerAriaLabel: "Chat actions",
|
|
@@ -10900,7 +10875,7 @@ function ChatPanelHeader({
|
|
|
10900
10875
|
] }),
|
|
10901
10876
|
isArchivedView && onRestore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "cell", className: "w-14", onClick: onRestore, "aria-label": "Unarchive chat", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPX2JK6Pcjs.Refresh01LeftIcon, { size: 24 }) }),
|
|
10902
10877
|
showBack && !isArchivedView && menuItems.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10903
|
-
|
|
10878
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
10904
10879
|
{
|
|
10905
10880
|
triggerAriaLabel: "Chat actions",
|
|
10906
10881
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
@@ -11234,7 +11209,7 @@ var HoverCardContent = _react.forwardRef.call(void 0,
|
|
|
11234
11209
|
}, ref) => (
|
|
11235
11210
|
// Portalled so an `overflow: hidden` ancestor (a table cell, a card) cannot
|
|
11236
11211
|
// clip it.
|
|
11237
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HoverCardPrimitive.Portal, { container:
|
|
11212
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HoverCardPrimitive.Portal, { container: _chunkVCFQHPOOcjs.usePortalContainer.call(void 0, ), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11238
11213
|
HoverCardPrimitive.Content,
|
|
11239
11214
|
{
|
|
11240
11215
|
ref,
|
|
@@ -11316,7 +11291,7 @@ var ModelDisplay = _react2.default.forwardRef(
|
|
|
11316
11291
|
const isLoading = _chunk63A4GZMBcjs.useLoadingScope.call(void 0, ) || loading;
|
|
11317
11292
|
const icon = getProviderIcon(provider);
|
|
11318
11293
|
const name = displayName || modelName;
|
|
11319
|
-
const isV2 = useChatAppearance() ===
|
|
11294
|
+
const isV2 = useChatAppearance() === _chunkWYROOMUZcjs.CHAT_APPEARANCE.V2;
|
|
11320
11295
|
const formatCount = (count) => isV2 ? count.toLocaleString("en-US") : formatTokenCount(count);
|
|
11321
11296
|
if (isLoading) {
|
|
11322
11297
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, "aria-hidden": true, className: _chunk63A4GZMBcjs.cn.call(void 0, MODEL_DISPLAY_ROW_CLASS, className), ...props, children: [
|
|
@@ -11344,20 +11319,20 @@ var ModelDisplay = _react2.default.forwardRef(
|
|
|
11344
11319
|
// Neither: the same two spans the row always had.
|
|
11345
11320
|
labelContent
|
|
11346
11321
|
);
|
|
11347
|
-
const labelWithTooltip = modelTooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11348
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11349
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11322
|
+
const labelWithTooltip = modelTooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.Tooltip, { children: [
|
|
11323
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipTrigger, { asChild: true, children: label }),
|
|
11324
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipContent, { side: "top", align: "start", children: modelTooltip })
|
|
11350
11325
|
] }) }) : label;
|
|
11351
11326
|
const inline = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunk63A4GZMBcjs.cn.call(void 0, MODEL_DISPLAY_ROW_CLASS, "text-ods-text-secondary", className), ...props, children: [
|
|
11352
11327
|
labelWithTooltip,
|
|
11353
|
-
contextWindow != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11354
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11328
|
+
contextWindow != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKXFIYO4Ocjs.Tooltip, { children: [
|
|
11329
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "ml-auto opacity-70 text-h6", children: [
|
|
11355
11330
|
usedTokens != null ? formatCount(usedTokens) : "\u2014",
|
|
11356
11331
|
isV2 ? " / " : "/",
|
|
11357
11332
|
formatCount(contextWindow),
|
|
11358
11333
|
" context budget"
|
|
11359
11334
|
] }) }),
|
|
11360
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11335
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKXFIYO4Ocjs.TooltipContent, { side: "top", align: "end", children: CONTEXT_BUDGET_HINT })
|
|
11361
11336
|
] }) })
|
|
11362
11337
|
] });
|
|
11363
11338
|
if (!hasAnyBreakdownRow(breakdown)) return inline;
|
|
@@ -11476,7 +11451,7 @@ function ChatComposer({
|
|
|
11476
11451
|
}, [entityTypes]);
|
|
11477
11452
|
const resolveContextIcon = _react.useCallback.call(void 0, (item) => iconByType.get(item.type), [iconByType]);
|
|
11478
11453
|
const menu = menuItems && menuItems.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11479
|
-
|
|
11454
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
11480
11455
|
{
|
|
11481
11456
|
triggerAriaLabel: "Composer actions",
|
|
11482
11457
|
side: "top",
|
|
@@ -11502,7 +11477,7 @@ function ChatComposer({
|
|
|
11502
11477
|
const showLegacyAttach = !contextEnabled && showAttachmentButton && !!onAddFiles;
|
|
11503
11478
|
const showFooterRow = showLegacyAttach || !!model || !!footerActions;
|
|
11504
11479
|
const inputNode = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11505
|
-
|
|
11480
|
+
_chunkWYROOMUZcjs.ChatInput,
|
|
11506
11481
|
{
|
|
11507
11482
|
ref: inputRef,
|
|
11508
11483
|
onSend,
|
|
@@ -11790,7 +11765,7 @@ function FooterAction({
|
|
|
11790
11765
|
leftIcon: showLabel ? mark : void 0,
|
|
11791
11766
|
rightIcon: trailingIcon ? mark : void 0,
|
|
11792
11767
|
className: _chunk63A4GZMBcjs.cn.call(void 0, className, "pointer-events-none"),
|
|
11793
|
-
children: showLabel ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TextHold, { children: label }) : mark
|
|
11768
|
+
children: showLabel ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.TextHold, { children: label }) : mark
|
|
11794
11769
|
}
|
|
11795
11770
|
) });
|
|
11796
11771
|
}
|
|
@@ -13080,7 +13055,7 @@ function ChatCardDisclosureButton({
|
|
|
13080
13055
|
{
|
|
13081
13056
|
label,
|
|
13082
13057
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, { className: "!h-3 !w-3" }),
|
|
13083
|
-
trailingIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13058
|
+
trailingIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.ExpandChevron, { expanded: open, className: "!h-3 !w-3" }),
|
|
13084
13059
|
onClick: (e) => {
|
|
13085
13060
|
e.preventDefault();
|
|
13086
13061
|
e.stopPropagation();
|
|
@@ -13094,7 +13069,7 @@ function ChatCardDisclosureButton({
|
|
|
13094
13069
|
);
|
|
13095
13070
|
}
|
|
13096
13071
|
function DisclosurePanel({ open, children }) {
|
|
13097
|
-
const { innerRef, containerStyle } =
|
|
13072
|
+
const { innerRef, containerStyle } = _chunkLM7EL3UQcjs.useCollapsible.call(void 0, { expanded: open });
|
|
13098
13073
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: containerStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, children }) });
|
|
13099
13074
|
}
|
|
13100
13075
|
function useChatCardDisclosure(kind, chatRef, { reserve = false } = {}) {
|
|
@@ -13607,7 +13582,7 @@ function MingoInfoCard({
|
|
|
13607
13582
|
}
|
|
13608
13583
|
),
|
|
13609
13584
|
hasMenu && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13610
|
-
|
|
13585
|
+
_chunkKXFIYO4Ocjs.ActionsMenuDropdown,
|
|
13611
13586
|
{
|
|
13612
13587
|
groups: menuGroups,
|
|
13613
13588
|
triggerAriaLabel: menuAriaLabel,
|
|
@@ -14978,7 +14953,7 @@ function ChatCardLoader({ chatRef, onDiscuss, onDisplay, extras }) {
|
|
|
14978
14953
|
const discussFn = useDisplay ? onDisplay : onDiscuss;
|
|
14979
14954
|
const discuss = discussFn ? {
|
|
14980
14955
|
label: useDisplay ? "Display" : "Ask Mingo",
|
|
14981
|
-
icon: useDisplay ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU4USZF42cjs.FileContentIcon, { size: 20 }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
14956
|
+
icon: useDisplay ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU4USZF42cjs.FileContentIcon, { size: 20 }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7EL3UQcjs.AgentMark, { agent: "mingo", className: "size-5" }),
|
|
14982
14957
|
run: () => discussFn(finalChatRef)
|
|
14983
14958
|
} : void 0;
|
|
14984
14959
|
const renderOpts = {
|
|
@@ -15077,19 +15052,19 @@ function makeSeqKey(messageType, chunkType, sequenceId) {
|
|
|
15077
15052
|
function makeBatchDedupKey(item) {
|
|
15078
15053
|
const seq = _nullishCoalesce(item.chunk.sequenceId, () => ( "na"));
|
|
15079
15054
|
const type = typeof item.chunk.type === "string" ? item.chunk.type : "na";
|
|
15080
|
-
const
|
|
15055
|
+
const text3 = typeof item.chunk.text === "string" ? item.chunk.text : "";
|
|
15081
15056
|
const integratedToolType = typeof item.chunk.integratedToolType === "string" ? item.chunk.integratedToolType : "";
|
|
15082
15057
|
const toolFunction = typeof item.chunk.toolFunction === "string" ? item.chunk.toolFunction : "";
|
|
15083
15058
|
const approvalRequestId = typeof item.chunk.approvalRequestId === "string" ? item.chunk.approvalRequestId : typeof item.chunk.approval_request_id === "string" ? item.chunk.approval_request_id : "";
|
|
15084
|
-
return `${item.messageType}:${seq}:${type}:${
|
|
15059
|
+
return `${item.messageType}:${seq}:${type}:${text3}:${integratedToolType}:${toolFunction}:${approvalRequestId}`;
|
|
15085
15060
|
}
|
|
15086
15061
|
function getChatTypeMessageType(chatType) {
|
|
15087
|
-
return chatType ===
|
|
15062
|
+
return chatType === _chunkWYROOMUZcjs.CHAT_TYPE.ADMIN ? "admin-message" : "message";
|
|
15088
15063
|
}
|
|
15089
15064
|
function useChunkCatchup({
|
|
15090
15065
|
dialogId,
|
|
15091
15066
|
onChunkReceived,
|
|
15092
|
-
chatTypes = [
|
|
15067
|
+
chatTypes = [_chunkWYROOMUZcjs.CHAT_TYPE.CLIENT],
|
|
15093
15068
|
fetchChunks
|
|
15094
15069
|
}) {
|
|
15095
15070
|
const processedSequenceKeys = _react.useRef.call(void 0, /* @__PURE__ */ new Set());
|
|
@@ -16431,7 +16406,7 @@ function upsertTrailingCompaction(prev, segments) {
|
|
|
16431
16406
|
return [...prev.slice(0, -1), { ...last, segments: merged }];
|
|
16432
16407
|
}
|
|
16433
16408
|
function sameToolData(a, b) {
|
|
16434
|
-
return a.type === b.type && a.integratedToolType === b.integratedToolType && a.toolFunction === b.toolFunction && a.toolTitle === b.toolTitle && a.result === b.result && a.success === b.success && a.toolExecutionRequestId === b.toolExecutionRequestId && (a.parameters === b.parameters || JSON.stringify(_nullishCoalesce(a.parameters, () => ( null))) === JSON.stringify(_nullishCoalesce(b.parameters, () => ( null))));
|
|
16409
|
+
return a.type === b.type && a.integratedToolType === b.integratedToolType && a.toolFunction === b.toolFunction && a.toolTitle === b.toolTitle && (a.policyReview === b.policyReview || JSON.stringify(a.policyReview) === JSON.stringify(b.policyReview)) && a.result === b.result && a.success === b.success && a.toolExecutionRequestId === b.toolExecutionRequestId && (a.parameters === b.parameters || JSON.stringify(_nullishCoalesce(a.parameters, () => ( null))) === JSON.stringify(_nullishCoalesce(b.parameters, () => ( null))));
|
|
16435
16410
|
}
|
|
16436
16411
|
function sameExecutionState(a, b) {
|
|
16437
16412
|
return !!a && a.status === b.status && a.result === b.result && a.success === b.success;
|
|
@@ -16469,6 +16444,8 @@ function mergeToolExecutionIfPresent(prev, segment) {
|
|
|
16469
16444
|
const mergedData = {
|
|
16470
16445
|
...toolData,
|
|
16471
16446
|
toolTitle: _nullishCoalesce(toolData.toolTitle, () => ( seg.data.toolTitle)),
|
|
16447
|
+
// The review rides the EXECUTING chunk only: the EXECUTED one keeps it.
|
|
16448
|
+
...keptPolicyReview(toolData.policyReview, seg.data.policyReview),
|
|
16472
16449
|
parameters: toolData.parameters || seg.data.parameters
|
|
16473
16450
|
};
|
|
16474
16451
|
if (sameToolData(seg.data, mergedData)) return prev;
|
|
@@ -16552,12 +16529,12 @@ var MessageSegmentAccumulator = class {
|
|
|
16552
16529
|
* Append text to the current message
|
|
16553
16530
|
* If the last segment is text, append to it; otherwise create a new text segment
|
|
16554
16531
|
*/
|
|
16555
|
-
appendText(
|
|
16532
|
+
appendText(text3) {
|
|
16556
16533
|
const lastSegment = this.segments[this.segments.length - 1];
|
|
16557
16534
|
if (lastSegment && lastSegment.type === "text") {
|
|
16558
|
-
this.segments[this.segments.length - 1] = { type: "text", text: lastSegment.text +
|
|
16535
|
+
this.segments[this.segments.length - 1] = { type: "text", text: lastSegment.text + text3 };
|
|
16559
16536
|
} else {
|
|
16560
|
-
this.segments.push({ type: "text", text:
|
|
16537
|
+
this.segments.push({ type: "text", text: text3 });
|
|
16561
16538
|
}
|
|
16562
16539
|
return this.getSegments();
|
|
16563
16540
|
}
|
|
@@ -16565,12 +16542,12 @@ var MessageSegmentAccumulator = class {
|
|
|
16565
16542
|
* Append thinking text to the current message.
|
|
16566
16543
|
* If the last segment is thinking, append to it; otherwise start a new thinking segment.
|
|
16567
16544
|
*/
|
|
16568
|
-
appendThinking(
|
|
16545
|
+
appendThinking(text3) {
|
|
16569
16546
|
const lastSegment = this.segments[this.segments.length - 1];
|
|
16570
16547
|
if (lastSegment && lastSegment.type === "thinking") {
|
|
16571
|
-
this.segments[this.segments.length - 1] = { type: "thinking", text: lastSegment.text +
|
|
16548
|
+
this.segments[this.segments.length - 1] = { type: "thinking", text: lastSegment.text + text3 };
|
|
16572
16549
|
} else {
|
|
16573
|
-
this.segments.push({ type: "thinking", text:
|
|
16550
|
+
this.segments.push({ type: "thinking", text: text3 });
|
|
16574
16551
|
}
|
|
16575
16552
|
return this.getSegments();
|
|
16576
16553
|
}
|
|
@@ -16610,6 +16587,7 @@ var MessageSegmentAccumulator = class {
|
|
|
16610
16587
|
toolFunction: toolData.toolFunction,
|
|
16611
16588
|
toolTitle: toolData.toolTitle,
|
|
16612
16589
|
toolExplanation: toolData.toolExplanation,
|
|
16590
|
+
...keptPolicyReview(toolData.policyReview),
|
|
16613
16591
|
parameters: toolData.parameters
|
|
16614
16592
|
});
|
|
16615
16593
|
this.segments.push(segment);
|
|
@@ -16625,7 +16603,8 @@ var MessageSegmentAccumulator = class {
|
|
|
16625
16603
|
...toolData,
|
|
16626
16604
|
toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _539 => _539.data, 'access', _540 => _540.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _541 => _541.toolTitle]))),
|
|
16627
16605
|
toolExplanation: _nullishCoalesce(_nullishCoalesce(toolData.toolExplanation, () => ( _optionalChain([existingExecuting, 'optionalAccess', _542 => _542.data, 'access', _543 => _543.toolExplanation]))), () => ( _optionalChain([executingTool, 'optionalAccess', _544 => _544.toolExplanation]))),
|
|
16628
|
-
|
|
16606
|
+
...keptPolicyReview(toolData.policyReview, _optionalChain([existingExecuting, 'optionalAccess', _545 => _545.data, 'access', _546 => _546.policyReview]), _optionalChain([executingTool, 'optionalAccess', _547 => _547.policyReview])),
|
|
16607
|
+
parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _548 => _548.parameters])
|
|
16629
16608
|
}
|
|
16630
16609
|
};
|
|
16631
16610
|
if (existingIndex !== -1) {
|
|
@@ -16649,7 +16628,7 @@ var MessageSegmentAccumulator = class {
|
|
|
16649
16628
|
if (seg.type !== "approval_batch") return seg;
|
|
16650
16629
|
const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
|
|
16651
16630
|
if (!hasCall) return seg;
|
|
16652
|
-
const prev = _optionalChain([seg, 'access',
|
|
16631
|
+
const prev = _optionalChain([seg, 'access', _549 => _549.data, 'access', _550 => _550.executions, 'optionalAccess', _551 => _551[execId]]);
|
|
16653
16632
|
const next = nextBatchExecution(prev, toolData);
|
|
16654
16633
|
matched = true;
|
|
16655
16634
|
if (next === null) return seg;
|
|
@@ -16783,8 +16762,8 @@ var MessageSegmentAccumulator = class {
|
|
|
16783
16762
|
requestId,
|
|
16784
16763
|
{
|
|
16785
16764
|
...pendingApproval,
|
|
16786
|
-
command: _optionalChain([pendingApproval, 'optionalAccess',
|
|
16787
|
-
approvalType: _optionalChain([pendingApproval, 'optionalAccess',
|
|
16765
|
+
command: _optionalChain([pendingApproval, 'optionalAccess', _552 => _552.command]) || "",
|
|
16766
|
+
approvalType: _optionalChain([pendingApproval, 'optionalAccess', _553 => _553.approvalType]) || approvalType
|
|
16788
16767
|
},
|
|
16789
16768
|
status
|
|
16790
16769
|
);
|
|
@@ -16800,7 +16779,7 @@ var MessageSegmentAccumulator = class {
|
|
|
16800
16779
|
* `[existing..., new...]` back through `replaySegments`, which would
|
|
16801
16780
|
* otherwise yield two cards for one offer.
|
|
16802
16781
|
*/
|
|
16803
|
-
addEscalationOffer(offerId,
|
|
16782
|
+
addEscalationOffer(offerId, text3, origin, status = "pending", resolvedByName) {
|
|
16804
16783
|
const existingIndex = this.segments.findIndex(
|
|
16805
16784
|
(s) => s.type === "escalation_offer" && s.data.offerId === offerId
|
|
16806
16785
|
);
|
|
@@ -16809,9 +16788,9 @@ var MessageSegmentAccumulator = class {
|
|
|
16809
16788
|
type: "escalation_offer",
|
|
16810
16789
|
// The resolved chunk carries no text/origin — a redelivered offer must
|
|
16811
16790
|
// not blank the card the PENDING chunk already painted.
|
|
16812
|
-
data: { offerId, text:
|
|
16791
|
+
data: { offerId, text: text3 || _optionalChain([existing, 'optionalAccess', _554 => _554.data, 'access', _555 => _555.text]) || "", origin: _nullishCoalesce(origin, () => ( _optionalChain([existing, 'optionalAccess', _556 => _556.data, 'access', _557 => _557.origin]))) },
|
|
16813
16792
|
status,
|
|
16814
|
-
resolvedByName: _nullishCoalesce(resolvedByName, () => ( _optionalChain([existing, 'optionalAccess',
|
|
16793
|
+
resolvedByName: _nullishCoalesce(resolvedByName, () => ( _optionalChain([existing, 'optionalAccess', _558 => _558.resolvedByName]))),
|
|
16815
16794
|
onApprove: this.callbacks.onEscalationApprove,
|
|
16816
16795
|
onReject: this.callbacks.onEscalationReject
|
|
16817
16796
|
};
|
|
@@ -17097,12 +17076,12 @@ function createChatStreamReducer(options = {}) {
|
|
|
17097
17076
|
let lastAppliedSeq = Number.NEGATIVE_INFINITY;
|
|
17098
17077
|
let pendingEchoTexts = [];
|
|
17099
17078
|
let turnStartedAt = 0;
|
|
17100
|
-
function consumeOwnEcho(
|
|
17079
|
+
function consumeOwnEcho(text3, authorMatched = false) {
|
|
17101
17080
|
if (pendingEchoTexts.length === 0) return false;
|
|
17102
17081
|
const now = Date.now();
|
|
17103
17082
|
pendingEchoTexts = pendingEchoTexts.filter((e) => now - e.at < OWN_ECHO_AUTHOR_TTL_MS);
|
|
17104
17083
|
const ttl = authorMatched ? OWN_ECHO_AUTHOR_TTL_MS : OWN_ECHO_TTL_MS;
|
|
17105
|
-
const idx = pendingEchoTexts.findIndex((e) => e.text ===
|
|
17084
|
+
const idx = pendingEchoTexts.findIndex((e) => e.text === text3 && now - e.at < ttl);
|
|
17106
17085
|
if (idx === -1) return false;
|
|
17107
17086
|
pendingEchoTexts.splice(idx, 1);
|
|
17108
17087
|
return true;
|
|
@@ -17133,7 +17112,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17133
17112
|
let stateCache = null;
|
|
17134
17113
|
function invalidate() {
|
|
17135
17114
|
stateCache = null;
|
|
17136
|
-
_optionalChain([onChange, 'optionalCall',
|
|
17115
|
+
_optionalChain([onChange, 'optionalCall', _559 => _559()]);
|
|
17137
17116
|
}
|
|
17138
17117
|
function getState() {
|
|
17139
17118
|
if (!stateCache) {
|
|
@@ -17149,7 +17128,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17149
17128
|
return stateCache;
|
|
17150
17129
|
}
|
|
17151
17130
|
function emit(name, ...args) {
|
|
17152
|
-
_optionalChain([onEffect, 'optionalCall',
|
|
17131
|
+
_optionalChain([onEffect, 'optionalCall', _560 => _560({ name, args })]);
|
|
17153
17132
|
}
|
|
17154
17133
|
function setMessagesInternal(next) {
|
|
17155
17134
|
if (next !== messages) {
|
|
@@ -17192,12 +17171,12 @@ function createChatStreamReducer(options = {}) {
|
|
|
17192
17171
|
return stampTrailingAssistantSourceMetadata(stampTrailingAssistantSeq(next, seq));
|
|
17193
17172
|
}
|
|
17194
17173
|
function applySegmentsToState(segments, meta) {
|
|
17195
|
-
const seq = _optionalChain([meta, 'optionalAccess',
|
|
17196
|
-
if (_optionalChain([meta, 'optionalAccess',
|
|
17174
|
+
const seq = _optionalChain([meta, 'optionalAccess', _561 => _561.streamSeq]);
|
|
17175
|
+
if (_optionalChain([meta, 'optionalAccess', _562 => _562.append]) && meta.isCompacting) {
|
|
17197
17176
|
setMessagesInternal(commitTrailingAssistant(upsertTrailingCompaction(messages, segments), seq));
|
|
17198
17177
|
return;
|
|
17199
17178
|
}
|
|
17200
|
-
if (_optionalChain([meta, 'optionalAccess',
|
|
17179
|
+
if (_optionalChain([meta, 'optionalAccess', _563 => _563.append])) {
|
|
17201
17180
|
setMessagesInternal(commitTrailingAssistant(appendToTrailingAssistant(messages, segments), seq));
|
|
17202
17181
|
return;
|
|
17203
17182
|
}
|
|
@@ -17209,13 +17188,13 @@ function createChatStreamReducer(options = {}) {
|
|
|
17209
17188
|
adoptTrailingAssistant = false;
|
|
17210
17189
|
const last = messages[messages.length - 1];
|
|
17211
17190
|
if (!last || last.role !== "assistant" || adoptTail) return;
|
|
17212
|
-
const hasContent = (_nullishCoalesce(_optionalChain([last, 'access',
|
|
17191
|
+
const hasContent = (_nullishCoalesce(_optionalChain([last, 'access', _564 => _564.segments, 'optionalAccess', _565 => _565.length]), () => ( 0))) > 0 || last.content !== "";
|
|
17213
17192
|
if (!hasContent) return;
|
|
17214
17193
|
setMessagesInternal([...messages, { id: nextId("assistant"), role: "assistant", content: "", segments: [] }]);
|
|
17215
17194
|
}
|
|
17216
17195
|
function applyUserMessageToState(ev) {
|
|
17217
|
-
const
|
|
17218
|
-
if (!
|
|
17196
|
+
const text3 = ev.text;
|
|
17197
|
+
if (!text3) return;
|
|
17219
17198
|
const seq = ev.seq;
|
|
17220
17199
|
const adminEchoAllowed = ev.ownerType !== CHAT_OWNER_ADMIN || options.ownEchoIncludesAdmin === true;
|
|
17221
17200
|
const selfUserId = resolveSelfUserId();
|
|
@@ -17223,11 +17202,11 @@ function createChatStreamReducer(options = {}) {
|
|
|
17223
17202
|
if (selfUserId !== void 0 && !authorDeclared) warnIdLessAuthor();
|
|
17224
17203
|
const authorMatched = selfUserId !== void 0 && authorDeclared && ev.userId === selfUserId;
|
|
17225
17204
|
const authorEchoAllowed = selfUserId === void 0 || !authorDeclared || authorMatched;
|
|
17226
|
-
if (adminEchoAllowed && authorEchoAllowed && consumeOwnEcho(
|
|
17205
|
+
if (adminEchoAllowed && authorEchoAllowed && consumeOwnEcho(text3, authorMatched)) return;
|
|
17227
17206
|
const authorType = ev.ownerType === CHAT_OWNER_ADMIN ? "admin" : "user";
|
|
17228
17207
|
if (typeof seq !== "number" && hasRecentMessage(
|
|
17229
17208
|
messages,
|
|
17230
|
-
(m) => m.role === "user" && (_nullishCoalesce(m.authorType, () => ( "user"))) === authorType && m.content ===
|
|
17209
|
+
(m) => m.role === "user" && (_nullishCoalesce(m.authorType, () => ( "user"))) === authorType && m.content === text3,
|
|
17231
17210
|
CONTENT_DEDUP_WINDOW
|
|
17232
17211
|
)) {
|
|
17233
17212
|
return;
|
|
@@ -17237,7 +17216,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17237
17216
|
{
|
|
17238
17217
|
id: nextId("user"),
|
|
17239
17218
|
role: "user",
|
|
17240
|
-
content:
|
|
17219
|
+
content: text3,
|
|
17241
17220
|
// Coverage signal for the history merge — see `streamSeq` on
|
|
17242
17221
|
// `UnifiedChatMessage`. For `user-` rows it is also what tells a
|
|
17243
17222
|
// REPLAYED echo (history already has its row) apart from a genuine new
|
|
@@ -17250,12 +17229,12 @@ function createChatStreamReducer(options = {}) {
|
|
|
17250
17229
|
]);
|
|
17251
17230
|
}
|
|
17252
17231
|
function applyDirectMessageToState(ev) {
|
|
17253
|
-
const
|
|
17254
|
-
if (!
|
|
17232
|
+
const text3 = ev.text;
|
|
17233
|
+
if (!text3) return;
|
|
17255
17234
|
const seq = ev.seq;
|
|
17256
17235
|
if (typeof seq !== "number" && hasRecentMessage(
|
|
17257
17236
|
messages,
|
|
17258
|
-
(m) => m.role === "user" && m.authorType === "admin" && m.content ===
|
|
17237
|
+
(m) => m.role === "user" && m.authorType === "admin" && m.content === text3,
|
|
17259
17238
|
CONTENT_DEDUP_WINDOW
|
|
17260
17239
|
)) {
|
|
17261
17240
|
return;
|
|
@@ -17265,7 +17244,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17265
17244
|
{
|
|
17266
17245
|
id: `direct-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,
|
|
17267
17246
|
role: "user",
|
|
17268
|
-
content:
|
|
17247
|
+
content: text3,
|
|
17269
17248
|
...typeof seq === "number" ? { streamSeq: seq } : {},
|
|
17270
17249
|
name: _nullishCoalesce(ev.displayName, () => ( "Admin")),
|
|
17271
17250
|
authorType: "admin"
|
|
@@ -17273,10 +17252,10 @@ function createChatStreamReducer(options = {}) {
|
|
|
17273
17252
|
]);
|
|
17274
17253
|
}
|
|
17275
17254
|
function applySystemMessageToState(ev) {
|
|
17276
|
-
const
|
|
17277
|
-
if (!
|
|
17255
|
+
const text3 = ev.text;
|
|
17256
|
+
if (!text3) return;
|
|
17278
17257
|
const seq = ev.seq;
|
|
17279
|
-
if (typeof seq !== "number" && hasRecentMessage(messages, (m) => m.authorType === "system" && m.name ===
|
|
17258
|
+
if (typeof seq !== "number" && hasRecentMessage(messages, (m) => m.authorType === "system" && m.name === text3, SYSTEM_DEDUP_WINDOW)) {
|
|
17280
17259
|
return;
|
|
17281
17260
|
}
|
|
17282
17261
|
setMessagesInternal([
|
|
@@ -17286,7 +17265,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17286
17265
|
role: "user",
|
|
17287
17266
|
content: "",
|
|
17288
17267
|
...typeof seq === "number" ? { streamSeq: seq } : {},
|
|
17289
|
-
name:
|
|
17268
|
+
name: text3,
|
|
17290
17269
|
authorType: "system"
|
|
17291
17270
|
}
|
|
17292
17271
|
]);
|
|
@@ -17425,16 +17404,16 @@ function createChatStreamReducer(options = {}) {
|
|
|
17425
17404
|
const status = approvalStatuses[requestId] || "pending";
|
|
17426
17405
|
if (!displayInline(approvalType)) {
|
|
17427
17406
|
const required = _nullishCoalesce(toolCalls.find((c) => c.requiresApproval), () => ( toolCalls[0]));
|
|
17428
|
-
const summary = required ?
|
|
17407
|
+
const summary = required ? _chunkLM7EL3UQcjs.getCommandText.call(void 0, required) : `Batch of ${toolCalls.length} tool calls`;
|
|
17429
17408
|
pendingEscalated.set(requestId, {
|
|
17430
17409
|
command: summary,
|
|
17431
|
-
explanation: _optionalChain([required, 'optionalAccess',
|
|
17410
|
+
explanation: _optionalChain([required, 'optionalAccess', _566 => _566.toolExplanation]),
|
|
17432
17411
|
approvalType,
|
|
17433
17412
|
toolCalls
|
|
17434
17413
|
});
|
|
17435
17414
|
emit("onEscalatedApproval", requestId, {
|
|
17436
17415
|
command: summary,
|
|
17437
|
-
explanation: _optionalChain([required, 'optionalAccess',
|
|
17416
|
+
explanation: _optionalChain([required, 'optionalAccess', _567 => _567.toolExplanation]),
|
|
17438
17417
|
approvalType
|
|
17439
17418
|
});
|
|
17440
17419
|
break;
|
|
@@ -17458,7 +17437,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17458
17437
|
if (!call.requiresApproval) continue;
|
|
17459
17438
|
segments = accumulator.addApprovalRequest(
|
|
17460
17439
|
requestId,
|
|
17461
|
-
|
|
17440
|
+
_chunkLM7EL3UQcjs.getCommandText.call(void 0, call),
|
|
17462
17441
|
call.toolExplanation,
|
|
17463
17442
|
approvalType,
|
|
17464
17443
|
status,
|
|
@@ -17537,7 +17516,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17537
17516
|
if (!call.requiresApproval) continue;
|
|
17538
17517
|
segments = accumulator.addApprovalRequest(
|
|
17539
17518
|
requestId,
|
|
17540
|
-
|
|
17519
|
+
_chunkLM7EL3UQcjs.getCommandText.call(void 0, call),
|
|
17541
17520
|
call.toolExplanation,
|
|
17542
17521
|
escalatedData.approvalType,
|
|
17543
17522
|
status
|
|
@@ -17667,20 +17646,20 @@ function createChatStreamReducer(options = {}) {
|
|
|
17667
17646
|
break;
|
|
17668
17647
|
}
|
|
17669
17648
|
}
|
|
17670
|
-
function sseWriteTrailingText(
|
|
17649
|
+
function sseWriteTrailingText(text3) {
|
|
17671
17650
|
const last = messages[messages.length - 1];
|
|
17672
17651
|
if (!last || last.role !== "assistant") return;
|
|
17673
17652
|
const segments = [..._nullishCoalesce(last.segments, () => ( []))];
|
|
17674
17653
|
const tail = segments[segments.length - 1];
|
|
17675
17654
|
if (tail && tail.type === "text") {
|
|
17676
|
-
segments[segments.length - 1] = { type: "text", text:
|
|
17655
|
+
segments[segments.length - 1] = { type: "text", text: text3 };
|
|
17677
17656
|
} else {
|
|
17678
|
-
segments.push({ type: "text", text:
|
|
17657
|
+
segments.push({ type: "text", text: text3 });
|
|
17679
17658
|
}
|
|
17680
17659
|
setMessagesInternal([...messages.slice(0, -1), { ...last, segments }]);
|
|
17681
17660
|
}
|
|
17682
|
-
function sseAppendText(
|
|
17683
|
-
sseCurrentText +=
|
|
17661
|
+
function sseAppendText(text3) {
|
|
17662
|
+
sseCurrentText += text3;
|
|
17684
17663
|
sseWriteTrailingText(sseCurrentText);
|
|
17685
17664
|
}
|
|
17686
17665
|
function mergeTurnMeta(sendIdx, partial) {
|
|
@@ -17806,7 +17785,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17806
17785
|
const resolveBatch = (status, confirm) => async () => {
|
|
17807
17786
|
setMessagesInternal(projectBatchStatusToMessages(messages, anchorId, status));
|
|
17808
17787
|
for (const id of ids) {
|
|
17809
|
-
const ok = await _optionalChain([confirm, 'optionalCall',
|
|
17788
|
+
const ok = await _optionalChain([confirm, 'optionalCall', _568 => _568(id)]);
|
|
17810
17789
|
if (ok === false) {
|
|
17811
17790
|
setMessagesInternal(projectBatchRowFailureToMessages(messages, id));
|
|
17812
17791
|
}
|
|
@@ -17944,8 +17923,8 @@ function createChatStreamReducer(options = {}) {
|
|
|
17944
17923
|
}
|
|
17945
17924
|
}
|
|
17946
17925
|
}
|
|
17947
|
-
hasEverStreamed = hasEverStreamed || (_nullishCoalesce(_optionalChain([extras, 'optionalAccess',
|
|
17948
|
-
if (_optionalChain([extras, 'optionalAccess',
|
|
17926
|
+
hasEverStreamed = hasEverStreamed || (_nullishCoalesce(_optionalChain([extras, 'optionalAccess', _569 => _569.resumed]), () => ( messages.length > 0)));
|
|
17927
|
+
if (_optionalChain([extras, 'optionalAccess', _570 => _570.agentBusy])) agentBusyState();
|
|
17949
17928
|
invalidate();
|
|
17950
17929
|
}
|
|
17951
17930
|
return {
|
|
@@ -17963,19 +17942,19 @@ function createChatStreamReducer(options = {}) {
|
|
|
17963
17942
|
messages = [...older, ...messages];
|
|
17964
17943
|
invalidate();
|
|
17965
17944
|
},
|
|
17966
|
-
pushOptimisticSend(
|
|
17967
|
-
pendingEchoTexts.push({ text:
|
|
17945
|
+
pushOptimisticSend(text3, hidden = false) {
|
|
17946
|
+
pendingEchoTexts.push({ text: text3, at: Date.now() });
|
|
17968
17947
|
if (pendingEchoTexts.length > MAX_PENDING_ECHOES) pendingEchoTexts.shift();
|
|
17969
17948
|
messages = [
|
|
17970
17949
|
...messages,
|
|
17971
17950
|
// An EMPTY-text send is out-of-band metadata (an approval decision),
|
|
17972
17951
|
// not something the user said — see `beginSseSend` for the full
|
|
17973
17952
|
// rationale. Never materialize a row for it.
|
|
17974
|
-
...
|
|
17953
|
+
...text3.length > 0 ? [
|
|
17975
17954
|
{
|
|
17976
17955
|
id: nextId("user"),
|
|
17977
17956
|
role: "user",
|
|
17978
|
-
content:
|
|
17957
|
+
content: text3,
|
|
17979
17958
|
...hidden ? { hidden: true } : {}
|
|
17980
17959
|
}
|
|
17981
17960
|
] : [],
|
|
@@ -17991,7 +17970,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
17991
17970
|
invalidate();
|
|
17992
17971
|
},
|
|
17993
17972
|
resetForDialogSwitch,
|
|
17994
|
-
beginSseSend({ text:
|
|
17973
|
+
beginSseSend({ text: text3, hidden, userName = "You", assistantName, assistantAvatar }) {
|
|
17995
17974
|
const now = Date.now();
|
|
17996
17975
|
messages = [
|
|
17997
17976
|
...messages,
|
|
@@ -18003,12 +17982,12 @@ function createChatStreamReducer(options = {}) {
|
|
|
18003
17982
|
// label with no body). So we never mint it. Hidden sends that DO carry
|
|
18004
17983
|
// text (e.g. an auto-continuation directive) still become real state:
|
|
18005
17984
|
// the LLM must see them, `Message.hidden` keeps them off screen.
|
|
18006
|
-
...
|
|
17985
|
+
...text3.length > 0 ? [
|
|
18007
17986
|
{
|
|
18008
17987
|
id: `user-${now}`,
|
|
18009
17988
|
role: "user",
|
|
18010
17989
|
name: userName,
|
|
18011
|
-
content:
|
|
17990
|
+
content: text3,
|
|
18012
17991
|
timestamp: new Date(now),
|
|
18013
17992
|
...hidden ? { hidden: true } : {}
|
|
18014
17993
|
}
|
|
@@ -18030,7 +18009,7 @@ function createChatStreamReducer(options = {}) {
|
|
|
18030
18009
|
},
|
|
18031
18010
|
endSseTurn() {
|
|
18032
18011
|
const last = messages[messages.length - 1];
|
|
18033
|
-
if (last && last.role === "assistant" && (_nullishCoalesce(_optionalChain([last, 'access',
|
|
18012
|
+
if (last && last.role === "assistant" && (_nullishCoalesce(_optionalChain([last, 'access', _571 => _571.segments, 'optionalAccess', _572 => _572.length]), () => ( 0))) === 0 && last.content === "") {
|
|
18034
18013
|
messages = messages.slice(0, -1);
|
|
18035
18014
|
}
|
|
18036
18015
|
sseCurrentText = "";
|
|
@@ -18183,10 +18162,10 @@ function createChatDialogStore(options = {}) {
|
|
|
18183
18162
|
if (onEvict) {
|
|
18184
18163
|
const sep = key.indexOf(KEY_SEP);
|
|
18185
18164
|
onEvict(key.slice(0, sep), key.slice(sep + 1), {
|
|
18186
|
-
messages: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess',
|
|
18187
|
-
approvalStatuses: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess',
|
|
18188
|
-
lastAppliedSeq: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess',
|
|
18189
|
-
pendingEchoes: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess',
|
|
18165
|
+
messages: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _573 => _573.state, 'access', _574 => _574.messages]), () => ( EMPTY_STATE.messages)),
|
|
18166
|
+
approvalStatuses: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _575 => _575.state, 'access', _576 => _576.approvalStatuses]), () => ( EMPTY_STATE.approvalStatuses)),
|
|
18167
|
+
lastAppliedSeq: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _577 => _577.getLastAppliedSeq, 'call', _578 => _578()]), () => ( Number.NEGATIVE_INFINITY)),
|
|
18168
|
+
pendingEchoes: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _579 => _579.getPendingEchoes, 'call', _580 => _580()]), () => ( EMPTY_PENDING_ECHOES))
|
|
18190
18169
|
});
|
|
18191
18170
|
}
|
|
18192
18171
|
}
|
|
@@ -18196,12 +18175,12 @@ function createChatDialogStore(options = {}) {
|
|
|
18196
18175
|
const key = keyOf(dialogId, side);
|
|
18197
18176
|
let reducer = reducers.get(key);
|
|
18198
18177
|
if (!reducer) {
|
|
18199
|
-
const base = _nullishCoalesce(_optionalChain([(_nullishCoalesce(createOptions, () => ( defaultCreateOptions))), 'optionalCall',
|
|
18178
|
+
const base = _nullishCoalesce(_optionalChain([(_nullishCoalesce(createOptions, () => ( defaultCreateOptions))), 'optionalCall', _581 => _581(dialogId, side)]), () => ( {}));
|
|
18200
18179
|
const userOnChange = base.onChange;
|
|
18201
18180
|
reducer = createChatStreamReducer({
|
|
18202
18181
|
...base,
|
|
18203
18182
|
onChange: () => {
|
|
18204
|
-
_optionalChain([userOnChange, 'optionalCall',
|
|
18183
|
+
_optionalChain([userOnChange, 'optionalCall', _582 => _582()]);
|
|
18205
18184
|
notify();
|
|
18206
18185
|
}
|
|
18207
18186
|
});
|
|
@@ -18246,7 +18225,7 @@ function createChatDialogStore(options = {}) {
|
|
|
18246
18225
|
};
|
|
18247
18226
|
}
|
|
18248
18227
|
function getSnapshot2(dialogId, side = DEFAULT_DIALOG_SIDE) {
|
|
18249
|
-
return _nullishCoalesce(_optionalChain([reducers, 'access',
|
|
18228
|
+
return _nullishCoalesce(_optionalChain([reducers, 'access', _583 => _583.get, 'call', _584 => _584(keyOf(dialogId, side)), 'optionalAccess', _585 => _585.state]), () => ( EMPTY_STATE));
|
|
18250
18229
|
}
|
|
18251
18230
|
function getServerSnapshot2() {
|
|
18252
18231
|
return EMPTY_STATE;
|
|
@@ -18335,7 +18314,7 @@ function createDeltaBatcher({
|
|
|
18335
18314
|
pending = [];
|
|
18336
18315
|
const key = pendingKey;
|
|
18337
18316
|
for (const delta of batch) applyOne(delta, key);
|
|
18338
|
-
_optionalChain([onFlushed, 'optionalCall',
|
|
18317
|
+
_optionalChain([onFlushed, 'optionalCall', _586 => _586(batch.length)]);
|
|
18339
18318
|
}
|
|
18340
18319
|
function schedule() {
|
|
18341
18320
|
if (raf !== null || timer !== null) return;
|
|
@@ -18359,7 +18338,7 @@ function createDeltaBatcher({
|
|
|
18359
18338
|
}
|
|
18360
18339
|
if (!isDeltaEvent(event)) return false;
|
|
18361
18340
|
const tail = pending[pending.length - 1];
|
|
18362
|
-
const seqAdvances = _optionalChain([tail, 'optionalAccess',
|
|
18341
|
+
const seqAdvances = _optionalChain([tail, 'optionalAccess', _587 => _587.seq]) == null ? event.seq == null : event.seq != null && event.seq > tail.seq;
|
|
18363
18342
|
if (tail && seqAdvances && tail.type === event.type && (tail.type !== "text-delta" || tail.leading === event.leading)) {
|
|
18364
18343
|
pending[pending.length - 1] = {
|
|
18365
18344
|
...tail,
|
|
@@ -18391,7 +18370,7 @@ function useChatStreamReducer({
|
|
|
18391
18370
|
side = DEFAULT_DIALOG_SIDE,
|
|
18392
18371
|
createReducerOptions
|
|
18393
18372
|
}) {
|
|
18394
|
-
const reducer = store.getReducer(dialogId, side, () => _nullishCoalesce(_optionalChain([createReducerOptions, 'optionalCall',
|
|
18373
|
+
const reducer = store.getReducer(dialogId, side, () => _nullishCoalesce(_optionalChain([createReducerOptions, 'optionalCall', _588 => _588()]), () => ( {})));
|
|
18395
18374
|
const getSnapshot2 = _react.useCallback.call(void 0, () => store.getSnapshot(dialogId, side), [store, dialogId, side]);
|
|
18396
18375
|
const getServerSnapshot2 = _react.useCallback.call(void 0, () => store.getServerSnapshot(), [store]);
|
|
18397
18376
|
const subscribe2 = _react.useCallback.call(void 0, (listener) => store.subscribe(listener), [store]);
|
|
@@ -18436,7 +18415,7 @@ function buildConfirmToolBody(request) {
|
|
|
18436
18415
|
async function readServerErrorMessage(response) {
|
|
18437
18416
|
try {
|
|
18438
18417
|
const body = await response.json();
|
|
18439
|
-
if (typeof _optionalChain([body, 'optionalAccess',
|
|
18418
|
+
if (typeof _optionalChain([body, 'optionalAccess', _589 => _589.error]) === "string" && body.error.length > 0) return body.error;
|
|
18440
18419
|
} catch (e17) {
|
|
18441
18420
|
}
|
|
18442
18421
|
return null;
|
|
@@ -18599,7 +18578,7 @@ function useManagedDialogList({
|
|
|
18599
18578
|
try {
|
|
18600
18579
|
await deleteDialogCallback(id);
|
|
18601
18580
|
removeLocal(id);
|
|
18602
|
-
_optionalChain([onDialogRemovedRef, 'access',
|
|
18581
|
+
_optionalChain([onDialogRemovedRef, 'access', _590 => _590.current, 'optionalCall', _591 => _591(id, "deleted")]);
|
|
18603
18582
|
} catch (err) {
|
|
18604
18583
|
console.error(`${logTag} deleteDialog failed:`, err);
|
|
18605
18584
|
throw err;
|
|
@@ -18610,7 +18589,7 @@ function useManagedDialogList({
|
|
|
18610
18589
|
const renameDialog = _react.useCallback.call(void 0,
|
|
18611
18590
|
async (id, title) => {
|
|
18612
18591
|
if (!renameDialogCallback) return;
|
|
18613
|
-
const previous = _optionalChain([dialogsRef, 'access',
|
|
18592
|
+
const previous = _optionalChain([dialogsRef, 'access', _592 => _592.current, 'access', _593 => _593.find, 'call', _594 => _594((d) => d.id === id), 'optionalAccess', _595 => _595.title]);
|
|
18614
18593
|
setDialogs((prev) => prev.map((d) => d.id === id ? { ...d, title } : d));
|
|
18615
18594
|
try {
|
|
18616
18595
|
await renameDialogCallback(id, title);
|
|
@@ -18629,7 +18608,7 @@ function useManagedDialogList({
|
|
|
18629
18608
|
try {
|
|
18630
18609
|
await archiveDialogCallback(id);
|
|
18631
18610
|
removeLocal(id);
|
|
18632
|
-
_optionalChain([onDialogRemovedRef, 'access',
|
|
18611
|
+
_optionalChain([onDialogRemovedRef, 'access', _596 => _596.current, 'optionalCall', _597 => _597(id, "archived")]);
|
|
18633
18612
|
} catch (err) {
|
|
18634
18613
|
console.error(`${logTag} archiveDialog failed:`, err);
|
|
18635
18614
|
throw err;
|
|
@@ -18818,7 +18797,7 @@ var STORAGE_KEY = "conversation";
|
|
|
18818
18797
|
var namespaceFor = (source) => {
|
|
18819
18798
|
const base = `mingo-chat-${source}`;
|
|
18820
18799
|
const auth = _chunkGI3MMBP3cjs.getEmbedProxyAuth.call(void 0, );
|
|
18821
|
-
return _optionalChain([auth, 'optionalAccess',
|
|
18800
|
+
return _optionalChain([auth, 'optionalAccess', _598 => _598.email]) ? `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}` : base;
|
|
18822
18801
|
};
|
|
18823
18802
|
function createChatConversationStorage(source) {
|
|
18824
18803
|
return _chunkGI3MMBP3cjs.createLocalStorageAdapter.call(void 0, {
|
|
@@ -18891,7 +18870,7 @@ function useChatHistoryHydration({
|
|
|
18891
18870
|
if (cancelled) return;
|
|
18892
18871
|
if (rows.length === 0) {
|
|
18893
18872
|
const found = isRecord(body) ? body.found : void 0;
|
|
18894
|
-
if (found === false) _optionalChain([onOrphanedConversation, 'optionalCall',
|
|
18873
|
+
if (found === false) _optionalChain([onOrphanedConversation, 'optionalCall', _599 => _599(conversationId)]);
|
|
18895
18874
|
return;
|
|
18896
18875
|
}
|
|
18897
18876
|
const hydrated = [];
|
|
@@ -18968,7 +18947,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
18968
18947
|
const { active = true } = runtimeOptions;
|
|
18969
18948
|
const runtime = _chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, );
|
|
18970
18949
|
const source = runtime.source || DEFAULT_CHAT_SOURCE;
|
|
18971
|
-
const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
18950
|
+
const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _600 => _600.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
|
|
18972
18951
|
const sendMessageRef = _react.useRef.call(void 0,
|
|
18973
18952
|
() => Promise.resolve(true)
|
|
18974
18953
|
);
|
|
@@ -19004,7 +18983,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19004
18983
|
if (!restoredConversationRef.current) {
|
|
19005
18984
|
restoredConversationRef.current = true;
|
|
19006
18985
|
pruneStaleChatConversationStorage(source);
|
|
19007
|
-
conversationIdRef.current = _nullishCoalesce(_optionalChain([conversationStorage, 'access',
|
|
18986
|
+
conversationIdRef.current = _nullishCoalesce(_optionalChain([conversationStorage, 'access', _601 => _601.load, 'call', _602 => _602(), 'optionalAccess', _603 => _603.conversationId]), () => ( null));
|
|
19008
18987
|
}
|
|
19009
18988
|
const [conversationId, setConversationId] = _react.useState.call(void 0, () => conversationIdRef.current);
|
|
19010
18989
|
const commitConversationId = _react.useCallback.call(void 0,
|
|
@@ -19095,7 +19074,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19095
19074
|
const abortControllerRef = _react.useRef.call(void 0, null);
|
|
19096
19075
|
const switchConversation = _react.useCallback.call(void 0,
|
|
19097
19076
|
(id) => {
|
|
19098
|
-
_optionalChain([abortControllerRef, 'access',
|
|
19077
|
+
_optionalChain([abortControllerRef, 'access', _604 => _604.current, 'optionalAccess', _605 => _605.abort, 'call', _606 => _606()]);
|
|
19099
19078
|
flushDeltas();
|
|
19100
19079
|
mutate((r) => r.reset());
|
|
19101
19080
|
hydrationSendCountRef.current = 0;
|
|
@@ -19132,8 +19111,8 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19132
19111
|
} = useManagedDialogList({
|
|
19133
19112
|
autoLoad: active,
|
|
19134
19113
|
fetchDialogs: fetchActiveDialogs,
|
|
19135
|
-
renameDialog: _optionalChain([conversationsApi, 'optionalAccess',
|
|
19136
|
-
archiveDialog: _optionalChain([conversationsApi, 'optionalAccess',
|
|
19114
|
+
renameDialog: _optionalChain([conversationsApi, 'optionalAccess', _607 => _607.renameDialog]),
|
|
19115
|
+
archiveDialog: _optionalChain([conversationsApi, 'optionalAccess', _608 => _608.archiveDialog]),
|
|
19137
19116
|
pageSize: CHAT_HISTORY_PAGE_SIZE,
|
|
19138
19117
|
search: conversationsApi ? dialogSearch : void 0,
|
|
19139
19118
|
logTag: "[useSseChatAdapter]",
|
|
@@ -19167,7 +19146,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19167
19146
|
const sendMessage = _react.useCallback.call(void 0,
|
|
19168
19147
|
// Resolves `true` on a clean turn, `false` when the request failed
|
|
19169
19148
|
// (surfaced to batch approve-all loops via the card callbacks).
|
|
19170
|
-
async (
|
|
19149
|
+
async (text3, sendOptions) => {
|
|
19171
19150
|
const { hidden, attachments, commandOverride, approvalAction } = _nullishCoalesce(sendOptions, () => ( {}));
|
|
19172
19151
|
const echoedConversationId = conversationIdRef.current;
|
|
19173
19152
|
const targetPath = approvalAction ? endpointsRef.current.approvalToolUrl : endpointsRef.current.chatStreamUrl;
|
|
@@ -19178,12 +19157,12 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19178
19157
|
// established conversation (the proposal turn captured the id).
|
|
19179
19158
|
buildConfirmToolBody({ ...approvalAction, conversationId: echoedConversationId })
|
|
19180
19159
|
) : {
|
|
19181
|
-
messages: [{ role: "user", content:
|
|
19160
|
+
messages: [{ role: "user", content: text3 }],
|
|
19182
19161
|
...commandOverride ? { commandOverride } : {},
|
|
19183
19162
|
...attachments && attachments.length > 0 ? { pendingAttachments: attachments } : {},
|
|
19184
19163
|
...echoedConversationId ? { conversationId: echoedConversationId } : {}
|
|
19185
19164
|
};
|
|
19186
|
-
mutate((r) => r.beginSseSend({ text:
|
|
19165
|
+
mutate((r) => r.beginSseSend({ text: text3, hidden, userName: "You", assistantName: "Mingo AI" }));
|
|
19187
19166
|
const ctrl = new AbortController();
|
|
19188
19167
|
abortControllerRef.current = ctrl;
|
|
19189
19168
|
let mintedThisTurn = false;
|
|
@@ -19197,7 +19176,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19197
19176
|
const serverMessage = await readServerErrorMessage(response);
|
|
19198
19177
|
throw new Error(_nullishCoalesce(serverMessage, () => ( `Chat request failed: ${response.status}`)));
|
|
19199
19178
|
}
|
|
19200
|
-
const reader = _optionalChain([response, 'access',
|
|
19179
|
+
const reader = _optionalChain([response, 'access', _609 => _609.body, 'optionalAccess', _610 => _610.getReader, 'call', _611 => _611()]);
|
|
19201
19180
|
if (!reader) throw new Error("No response body");
|
|
19202
19181
|
const frameDecoder = createSseFrameDecoder();
|
|
19203
19182
|
let finished = false;
|
|
@@ -19226,7 +19205,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19226
19205
|
}
|
|
19227
19206
|
return true;
|
|
19228
19207
|
} catch (err) {
|
|
19229
|
-
if (_optionalChain([err, 'optionalAccess',
|
|
19208
|
+
if (_optionalChain([err, 'optionalAccess', _612 => _612.name]) === "AbortError" || ctrl.signal.aborted) {
|
|
19230
19209
|
return true;
|
|
19231
19210
|
}
|
|
19232
19211
|
flushDeltas();
|
|
@@ -19262,7 +19241,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19262
19241
|
);
|
|
19263
19242
|
sendMessageRef.current = sendMessage;
|
|
19264
19243
|
const stopMessage = _react.useCallback.call(void 0, () => {
|
|
19265
|
-
_optionalChain([abortControllerRef, 'access',
|
|
19244
|
+
_optionalChain([abortControllerRef, 'access', _613 => _613.current, 'optionalAccess', _614 => _614.abort, 'call', _615 => _615()]);
|
|
19266
19245
|
flushDeltas();
|
|
19267
19246
|
mutate((r) => r.setPhase("idle"));
|
|
19268
19247
|
}, [mutate, flushDeltas]);
|
|
@@ -19298,7 +19277,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19298
19277
|
let sendIdx = -1;
|
|
19299
19278
|
return state.messages.map((m) => {
|
|
19300
19279
|
const segments = m.segments;
|
|
19301
|
-
const content = typeof m.content === "string" && !segments ? m.content : _nullishCoalesce(_optionalChain([segments, 'optionalAccess',
|
|
19280
|
+
const content = typeof m.content === "string" && !segments ? m.content : _nullishCoalesce(_optionalChain([segments, 'optionalAccess', _616 => _616.filter, 'call', _617 => _617((s) => s.type === "text"), 'access', _618 => _618.map, 'call', _619 => _619((s) => s.text), 'access', _620 => _620.join, 'call', _621 => _621("")]), () => ( ""));
|
|
19302
19281
|
let sources2;
|
|
19303
19282
|
let scrollAnchor;
|
|
19304
19283
|
if (m.role === "user" && !m.hidden) {
|
|
@@ -19307,7 +19286,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19307
19286
|
if (m.role === "assistant") {
|
|
19308
19287
|
const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
|
|
19309
19288
|
sources2 = sourcesMap.get(lookupIdx);
|
|
19310
|
-
scrollAnchor = _nullishCoalesce(_optionalChain([meta, 'access',
|
|
19289
|
+
scrollAnchor = _nullishCoalesce(_optionalChain([meta, 'access', _622 => _622.get, 'call', _623 => _623(lookupIdx), 'optionalAccess', _624 => _624.scrollAnchor]), () => ( void 0));
|
|
19311
19290
|
}
|
|
19312
19291
|
return {
|
|
19313
19292
|
id: m.id,
|
|
@@ -19334,11 +19313,11 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19334
19313
|
);
|
|
19335
19314
|
return;
|
|
19336
19315
|
}
|
|
19337
|
-
const refSlug = typeof _optionalChain([reference, 'access',
|
|
19316
|
+
const refSlug = typeof _optionalChain([reference, 'access', _625 => _625.metadata, 'optionalAccess', _626 => _626.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
|
|
19338
19317
|
const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
|
|
19339
19318
|
const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
19340
|
-
const
|
|
19341
|
-
void sendMessage(
|
|
19319
|
+
const text3 = `/${cmdId} display "${escaped}"`;
|
|
19320
|
+
void sendMessage(text3);
|
|
19342
19321
|
},
|
|
19343
19322
|
[sendMessage, source, cmdIdByTableId, tableIdForDocumentType]
|
|
19344
19323
|
);
|
|
@@ -19380,18 +19359,18 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
19380
19359
|
/** True while the mount-time rebuild from the server transcript runs. */
|
|
19381
19360
|
isHydratingHistory,
|
|
19382
19361
|
/** Provider key for the lib's `<ModelDisplay>` icon. */
|
|
19383
|
-
currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19384
|
-
currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19385
|
-
currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19362
|
+
currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _627 => _627.provider]), () => ( null)),
|
|
19363
|
+
currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _628 => _628.modelLabel]), () => ( null)),
|
|
19364
|
+
currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _629 => _629.contextWindowMaxTokens]), () => ( null)),
|
|
19386
19365
|
/** Input tokens (known after server's message_start frame; null until). */
|
|
19387
|
-
currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19366
|
+
currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _630 => _630.inputTokens]), () => ( null)),
|
|
19388
19367
|
/** Output tokens (known only after server's trailing usage frame). */
|
|
19389
|
-
currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19368
|
+
currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _631 => _631.outputTokens]), () => ( null)),
|
|
19390
19369
|
/** Cache hit % (read / total-input × 100). null during streaming. */
|
|
19391
|
-
currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19370
|
+
currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _632 => _632.cacheHitRatePct]), () => ( null)),
|
|
19392
19371
|
/** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
|
|
19393
19372
|
* token counts). null until the trailing usage frame lands. */
|
|
19394
|
-
currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess',
|
|
19373
|
+
currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _633 => _633.breakdown]), () => ( null)),
|
|
19395
19374
|
// ─── Dialog management ───────────────────────────────────────────────
|
|
19396
19375
|
// With `chatConversationsUrl` the server transcript store IS the dialog
|
|
19397
19376
|
// list (shared `useManagedDialogList`); selecting a row re-hydrates through
|
|
@@ -19445,6 +19424,7 @@ function extractIncompleteMessageState(lastMessage) {
|
|
|
19445
19424
|
toolFunction: segment.data.toolFunction,
|
|
19446
19425
|
toolTitle: segment.data.toolTitle,
|
|
19447
19426
|
toolExplanation: segment.data.toolExplanation,
|
|
19427
|
+
...keptPolicyReview(segment.data.policyReview),
|
|
19448
19428
|
parameters: segment.data.parameters
|
|
19449
19429
|
});
|
|
19450
19430
|
hasIncompleteState = true;
|
|
@@ -19465,7 +19445,7 @@ function extractIncompleteMessageState(lastMessage) {
|
|
|
19465
19445
|
}
|
|
19466
19446
|
break;
|
|
19467
19447
|
case "approval_batch": {
|
|
19468
|
-
const allDone = !!segment.data.executions && segment.data.toolCalls.every((c) => _optionalChain([segment, 'access',
|
|
19448
|
+
const allDone = !!segment.data.executions && segment.data.toolCalls.every((c) => _optionalChain([segment, 'access', _634 => _634.data, 'access', _635 => _635.executions, 'optionalAccess', _636 => _636[c.toolExecutionRequestId], 'optionalAccess', _637 => _637.status]) === "done");
|
|
19469
19449
|
if (segment.status !== "rejected" && !allDone) {
|
|
19470
19450
|
hasIncompleteState = true;
|
|
19471
19451
|
}
|
|
@@ -19529,11 +19509,11 @@ function extractIncompleteMessageState(lastMessage) {
|
|
|
19529
19509
|
function extractIncompleteTailState(messages) {
|
|
19530
19510
|
if (!messages || messages.length === 0) return void 0;
|
|
19531
19511
|
let start = messages.length;
|
|
19532
|
-
while (start > 0 && _optionalChain([messages, 'access',
|
|
19512
|
+
while (start > 0 && _optionalChain([messages, 'access', _638 => _638[start - 1], 'optionalAccess', _639 => _639.role]) === "assistant") start -= 1;
|
|
19533
19513
|
if (start === messages.length) return void 0;
|
|
19534
19514
|
const segments = [];
|
|
19535
19515
|
for (let i = start; i < messages.length; i += 1) {
|
|
19536
|
-
const content = _optionalChain([messages, 'access',
|
|
19516
|
+
const content = _optionalChain([messages, 'access', _640 => _640[i], 'optionalAccess', _641 => _641.content]);
|
|
19537
19517
|
if (Array.isArray(content)) segments.push(...content);
|
|
19538
19518
|
}
|
|
19539
19519
|
if (segments.length === 0) return void 0;
|
|
@@ -19545,16 +19525,20 @@ function extractIncompleteTailState(messages) {
|
|
|
19545
19525
|
}
|
|
19546
19526
|
|
|
19547
19527
|
// src/components/chat/utils/process-historical-messages.ts
|
|
19528
|
+
function withNormalizedReview(call) {
|
|
19529
|
+
const { policyReview: raw2, ...rest } = call;
|
|
19530
|
+
return { ...rest, ...policyReviewField(raw2) };
|
|
19531
|
+
}
|
|
19548
19532
|
function getOwnerDisplayName(owner) {
|
|
19549
|
-
if (_optionalChain([owner, 'optionalAccess',
|
|
19533
|
+
if (_optionalChain([owner, 'optionalAccess', _642 => _642.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.ADMIN && owner.user) {
|
|
19550
19534
|
const { firstName, lastName } = owner.user;
|
|
19551
19535
|
const name = [firstName, lastName].filter(Boolean).join(" ");
|
|
19552
19536
|
if (name) return name;
|
|
19553
19537
|
}
|
|
19554
|
-
return _optionalChain([owner, 'optionalAccess',
|
|
19538
|
+
return _optionalChain([owner, 'optionalAccess', _643 => _643.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.ADMIN ? "Admin" : "You";
|
|
19555
19539
|
}
|
|
19556
19540
|
function getOwnerAvatar(owner) {
|
|
19557
|
-
return _nullishCoalesce(_optionalChain([owner, 'optionalAccess',
|
|
19541
|
+
return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _644 => _644.user, 'optionalAccess', _645 => _645.image, 'optionalAccess', _646 => _646.imageUrl]), () => ( void 0));
|
|
19558
19542
|
}
|
|
19559
19543
|
function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
|
|
19560
19544
|
messageDataArray.forEach((data) => {
|
|
@@ -19619,6 +19603,7 @@ function decodeHistoricalMessageData(data) {
|
|
|
19619
19603
|
// EXECUTING chunk only, so a history replay that drops it renders
|
|
19620
19604
|
// an empty tool card even though the live stream showed one.
|
|
19621
19605
|
toolExplanation: typeof data.toolExplanation === "string" ? data.toolExplanation : void 0,
|
|
19606
|
+
...policyReviewField(data.policyReview),
|
|
19622
19607
|
parameters: data.parameters,
|
|
19623
19608
|
toolExecutionRequestId: data.toolExecutionRequestId
|
|
19624
19609
|
}
|
|
@@ -19650,7 +19635,7 @@ function decodeHistoricalMessageData(data) {
|
|
|
19650
19635
|
approvalType: data.approvalType || "CLIENT",
|
|
19651
19636
|
command: data.command || "",
|
|
19652
19637
|
explanation: data.explanation,
|
|
19653
|
-
...Array.isArray(data.toolCalls) ? { toolCalls: data.toolCalls } : {}
|
|
19638
|
+
...Array.isArray(data.toolCalls) ? { toolCalls: data.toolCalls.map(withNormalizedReview) } : {}
|
|
19654
19639
|
};
|
|
19655
19640
|
}
|
|
19656
19641
|
return null;
|
|
@@ -19746,7 +19731,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19746
19731
|
event.offerId,
|
|
19747
19732
|
event.text,
|
|
19748
19733
|
event.origin,
|
|
19749
|
-
_nullishCoalesce(_optionalChain([escalationOfferStates, 'optionalAccess',
|
|
19734
|
+
_nullishCoalesce(_optionalChain([escalationOfferStates, 'optionalAccess', _647 => _647[event.offerId]]), () => ( "pending"))
|
|
19750
19735
|
);
|
|
19751
19736
|
break;
|
|
19752
19737
|
case "ticket-escalated":
|
|
@@ -19780,7 +19765,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19780
19765
|
);
|
|
19781
19766
|
break;
|
|
19782
19767
|
case "escalation-offer-resolved":
|
|
19783
|
-
_optionalChain([offerResolutions, 'optionalAccess',
|
|
19768
|
+
_optionalChain([offerResolutions, 'optionalAccess', _648 => _648.set, 'call', _649 => _649(event.offerId, {
|
|
19784
19769
|
status: event.status,
|
|
19785
19770
|
resolvedByName: event.resolvedByName
|
|
19786
19771
|
})]);
|
|
@@ -19814,7 +19799,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19814
19799
|
if (!call.requiresApproval) continue;
|
|
19815
19800
|
accumulator.addApprovalRequest(
|
|
19816
19801
|
event.requestId,
|
|
19817
|
-
|
|
19802
|
+
_chunkLM7EL3UQcjs.getCommandText.call(void 0, call),
|
|
19818
19803
|
call.toolExplanation,
|
|
19819
19804
|
approvalType,
|
|
19820
19805
|
status,
|
|
@@ -19844,7 +19829,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19844
19829
|
}
|
|
19845
19830
|
}
|
|
19846
19831
|
} else {
|
|
19847
|
-
_optionalChain([escalatedApprovals, 'optionalAccess',
|
|
19832
|
+
_optionalChain([escalatedApprovals, 'optionalAccess', _650 => _650.set, 'call', _651 => _651(event.requestId, {
|
|
19848
19833
|
command: event.command || "",
|
|
19849
19834
|
explanation: event.explanation,
|
|
19850
19835
|
approvalType,
|
|
@@ -19859,8 +19844,8 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19859
19844
|
const existingStatus = approvalStatuses[requestId];
|
|
19860
19845
|
const status = existingStatus || event.status;
|
|
19861
19846
|
const resolvedByName = event.resolvedByName;
|
|
19862
|
-
const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess',
|
|
19863
|
-
if (_optionalChain([escalatedData, 'optionalAccess',
|
|
19847
|
+
const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _652 => _652.get, 'call', _653 => _653(requestId)]);
|
|
19848
|
+
if (_optionalChain([escalatedData, 'optionalAccess', _654 => _654.toolCalls]) && escalatedData.toolCalls.length > 0) {
|
|
19864
19849
|
if (batchApprovalsEnabled) {
|
|
19865
19850
|
accumulator.addApprovalBatch(
|
|
19866
19851
|
requestId,
|
|
@@ -19875,14 +19860,14 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19875
19860
|
if (!call.requiresApproval) continue;
|
|
19876
19861
|
accumulator.addApprovalRequest(
|
|
19877
19862
|
requestId,
|
|
19878
|
-
|
|
19863
|
+
_chunkLM7EL3UQcjs.getCommandText.call(void 0, call),
|
|
19879
19864
|
call.toolExplanation,
|
|
19880
19865
|
escalatedData.approvalType,
|
|
19881
19866
|
status
|
|
19882
19867
|
);
|
|
19883
19868
|
}
|
|
19884
19869
|
}
|
|
19885
|
-
_optionalChain([escalatedApprovals, 'optionalAccess',
|
|
19870
|
+
_optionalChain([escalatedApprovals, 'optionalAccess', _655 => _655.delete, 'call', _656 => _656(requestId)]);
|
|
19886
19871
|
break;
|
|
19887
19872
|
}
|
|
19888
19873
|
if (escalatedData) {
|
|
@@ -19891,7 +19876,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
|
|
|
19891
19876
|
explanation: escalatedData.explanation,
|
|
19892
19877
|
approvalType: escalatedData.approvalType
|
|
19893
19878
|
});
|
|
19894
|
-
_optionalChain([escalatedApprovals, 'optionalAccess',
|
|
19879
|
+
_optionalChain([escalatedApprovals, 'optionalAccess', _657 => _657.delete, 'call', _658 => _658(requestId)]);
|
|
19895
19880
|
}
|
|
19896
19881
|
const before = accumulator.getSegments();
|
|
19897
19882
|
const after = accumulator.updateApprovalStatus(requestId, status, resolvedByName);
|
|
@@ -19983,14 +19968,14 @@ function processHistoricalMessages(messages, options = {}) {
|
|
|
19983
19968
|
pushStandaloneMessages(processedMessages, msg, messageDataArray);
|
|
19984
19969
|
return;
|
|
19985
19970
|
}
|
|
19986
|
-
const isUserMessage = _optionalChain([msg, 'access',
|
|
19971
|
+
const isUserMessage = _optionalChain([msg, 'access', _659 => _659.owner, 'optionalAccess', _660 => _660.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _661 => _661.owner, 'optionalAccess', _662 => _662.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.ADMIN;
|
|
19987
19972
|
if (isUserMessage) {
|
|
19988
19973
|
flushAssistantMessage();
|
|
19989
|
-
const userAuthorType = _optionalChain([msg, 'access',
|
|
19974
|
+
const userAuthorType = _optionalChain([msg, 'access', _663 => _663.owner, 'optionalAccess', _664 => _664.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.ADMIN ? "admin" : "user";
|
|
19990
19975
|
messageDataArray.forEach((data) => {
|
|
19991
19976
|
if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
|
|
19992
19977
|
const rawContext = data.contextItems;
|
|
19993
|
-
const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess',
|
|
19978
|
+
const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _665 => _665.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _666 => _666.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
|
|
19994
19979
|
processedMessages.push({
|
|
19995
19980
|
id: msg.id,
|
|
19996
19981
|
role: "user",
|
|
@@ -20037,7 +20022,7 @@ function processHistoricalMessages(messages, options = {}) {
|
|
|
20037
20022
|
});
|
|
20038
20023
|
const nextMsg = messages[index + 1];
|
|
20039
20024
|
const isLastMessage = index === messages.length - 1;
|
|
20040
|
-
const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access',
|
|
20025
|
+
const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _667 => _667.owner, 'optionalAccess', _668 => _668.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _669 => _669.owner, 'optionalAccess', _670 => _670.type]) === _chunkWYROOMUZcjs.OWNER_TYPE.ADMIN);
|
|
20041
20026
|
if (isLastMessage || nextIsFromUser) {
|
|
20042
20027
|
flushAssistantMessage();
|
|
20043
20028
|
}
|
|
@@ -20420,10 +20405,10 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
20420
20405
|
});
|
|
20421
20406
|
const connectionState = !active || !dialogId ? "connected" : connectedForDialog === dialogId ? "connected" : "connecting";
|
|
20422
20407
|
const sendMessage = _react.useCallback.call(void 0,
|
|
20423
|
-
async (
|
|
20424
|
-
const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess',
|
|
20425
|
-
mutate((r) => r.pushOptimisticSend(
|
|
20426
|
-
await publishUserMessage(
|
|
20408
|
+
async (text3, sendOptions) => {
|
|
20409
|
+
const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _671 => _671.hidden]), () => ( false));
|
|
20410
|
+
mutate((r) => r.pushOptimisticSend(text3, hidden));
|
|
20411
|
+
await publishUserMessage(text3, { hidden, dialogId });
|
|
20427
20412
|
},
|
|
20428
20413
|
[mutate, publishUserMessage, dialogId]
|
|
20429
20414
|
);
|
|
@@ -20514,11 +20499,11 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
20514
20499
|
// Tokens: live `token_usage` frame / dialog snapshot (`dialogTokenUsage`).
|
|
20515
20500
|
// contextWindow uses the dialog's `contextSize` (the "X / Y" denominator,
|
|
20516
20501
|
// matching the /mingo page). cacheHitRate/breakdown are SSE-only → null.
|
|
20517
|
-
currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess',
|
|
20518
|
-
currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess',
|
|
20519
|
-
currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess',
|
|
20520
|
-
currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess',
|
|
20521
|
-
currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess',
|
|
20502
|
+
currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _672 => _672.provider]), () => ( modelProvider)), () => ( null)),
|
|
20503
|
+
currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _673 => _673.modelLabel]), () => ( modelLabel)), () => ( null)),
|
|
20504
|
+
currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _674 => _674.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _675 => _675.contextWindowMaxTokens]))), () => ( null)),
|
|
20505
|
+
currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _676 => _676.inputTokensSize]), () => ( null)),
|
|
20506
|
+
currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _677 => _677.outputTokensSize]), () => ( null)),
|
|
20522
20507
|
currentCacheHitRatePct: null,
|
|
20523
20508
|
currentUsageBreakdown: null,
|
|
20524
20509
|
// Dialog management
|
|
@@ -20632,7 +20617,7 @@ function useUnifiedChat(options) {
|
|
|
20632
20617
|
const stopMessage = _react.useCallback.call(void 0, () => activeStateRef.current.stopMessage(), []);
|
|
20633
20618
|
const clearMessages = _react.useCallback.call(void 0, () => activeStateRef.current.clearMessages(), []);
|
|
20634
20619
|
const sendMessage = _react.useCallback.call(void 0,
|
|
20635
|
-
(
|
|
20620
|
+
(text3, opts) => activeStateRef.current.sendMessage(text3, opts),
|
|
20636
20621
|
[]
|
|
20637
20622
|
);
|
|
20638
20623
|
const discussRef = _react.useCallback.call(void 0,
|
|
@@ -20640,7 +20625,7 @@ function useUnifiedChat(options) {
|
|
|
20640
20625
|
[]
|
|
20641
20626
|
);
|
|
20642
20627
|
const displayRefForward = _react.useCallback.call(void 0,
|
|
20643
|
-
(ref) => _optionalChain([activeStateRef, 'access',
|
|
20628
|
+
(ref) => _optionalChain([activeStateRef, 'access', _678 => _678.current, 'access', _679 => _679.displayRef, 'optionalCall', _680 => _680(ref)]),
|
|
20644
20629
|
[]
|
|
20645
20630
|
);
|
|
20646
20631
|
const displayRef = activeState.displayRef ? displayRefForward : void 0;
|
|
@@ -20650,7 +20635,7 @@ function useUnifiedChat(options) {
|
|
|
20650
20635
|
const renameDialog = _react.useCallback.call(void 0, (id, title) => activeStateRef.current.renameDialog(id, title), []);
|
|
20651
20636
|
const archiveDialog = _react.useCallback.call(void 0, (id) => activeStateRef.current.archiveDialog(id), []);
|
|
20652
20637
|
const loadMoreDialogs = _react.useCallback.call(void 0, () => activeStateRef.current.loadMoreDialogs(), []);
|
|
20653
|
-
const setDialogScope = _react.useCallback.call(void 0, (scope) => _optionalChain([activeStateRef, 'access',
|
|
20638
|
+
const setDialogScope = _react.useCallback.call(void 0, (scope) => _optionalChain([activeStateRef, 'access', _681 => _681.current, 'access', _682 => _682.setDialogScope, 'optionalCall', _683 => _683(scope)]), []);
|
|
20654
20639
|
const reloadDialogs = _react.useCallback.call(void 0, () => activeStateRef.current.reloadDialogs(), []);
|
|
20655
20640
|
const loadMoreMessages = _react.useCallback.call(void 0, () => activeStateRef.current.loadMoreMessages(), []);
|
|
20656
20641
|
const approveRequest = _react.useCallback.call(void 0, (requestId) => activeStateRef.current.approveRequest(requestId), []);
|
|
@@ -20803,7 +20788,7 @@ function PanelResizeHandle({
|
|
|
20803
20788
|
const handlePointerMove = (e) => {
|
|
20804
20789
|
const start = startRef.current;
|
|
20805
20790
|
if (!start) return;
|
|
20806
|
-
if (!onDrag && !_optionalChain([panelRef, 'optionalAccess',
|
|
20791
|
+
if (!onDrag && !_optionalChain([panelRef, 'optionalAccess', _684 => _684.current])) return;
|
|
20807
20792
|
const delta = isHorizontal ? e.clientX - start.x : e.clientY - start.y;
|
|
20808
20793
|
const next = clampSize(start.size + delta * direction);
|
|
20809
20794
|
dragSizeRef.current = next;
|
|
@@ -21179,6 +21164,4 @@ function PanelResizeHandle({
|
|
|
21179
21164
|
|
|
21180
21165
|
|
|
21181
21166
|
|
|
21182
|
-
|
|
21183
|
-
|
|
21184
|
-
exports.PanelResizeGrip = PanelResizeGrip; exports.PanelResizeHandle = PanelResizeHandle; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.TextHold = TextHold; exports.LayoutHold = LayoutHold; exports.AUTHORED_LINK_REL_TOKENS = AUTHORED_LINK_REL_TOKENS; exports.authoredRelTokens = authoredRelTokens; exports.isNofollowRel = isNofollowRel; exports.renderedLinkRel = renderedLinkRel; exports.findMarkdownLinkAt = findMarkdownLinkAt; exports.formatMarkdownLink = formatMarkdownLink; exports.stripInlineMarkdown = stripInlineMarkdown; exports.markdownToPlainText = markdownToPlainText; exports.buildHeadingIdMap = buildHeadingIdMap; exports.useHeadingIdMap = useHeadingIdMap; exports.extractText = extractText; exports.useIsHydrated = useIsHydrated; exports.MermaidDiagram = MermaidDiagram; exports.MARKDOWN_H1_CLASS = MARKDOWN_H1_CLASS; exports.MARKDOWN_H2_CLASS = MARKDOWN_H2_CLASS; exports.MARKDOWN_PARAGRAPH_CLASS = MARKDOWN_PARAGRAPH_CLASS; exports.hasRenderableSrc = hasRenderableSrc; exports.buildStandardLeafRenderers = buildStandardLeafRenderers; exports.SAFE_HTML_TAGS = SAFE_HTML_TAGS; exports.SVG_TAGS = SVG_TAGS; exports.buildEffectiveTagSet = buildEffectiveTagSet; exports.buildSanitizeSchema = buildSanitizeSchema; exports.rehypeStripUnsafe = rehypeStripUnsafe; exports.escapeUnknownHtmlTags = escapeUnknownHtmlTags; exports.cardAwareUrlTransform = cardAwareUrlTransform; exports.splitStreamingBlocks = splitStreamingBlocks; exports.completeStreamingTail = completeStreamingTail; exports.TEXT_SIZE_PRESETS = TEXT_SIZE_PRESETS; exports.resolveTextSizeConfig = resolveTextSizeConfig; exports.NO_BROKEN_LINKS = NO_BROKEN_LINKS; exports.MARKDOWN_SKELETON_LINES = MARKDOWN_SKELETON_LINES; exports.MarkdownEngine = MarkdownEngine; exports.MarkdownEngineSkeleton = MarkdownEngineSkeleton; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ASK_AI_OPEN_EVENT = ASK_AI_OPEN_EVENT; exports.ASK_AI_OPEN_WITH_REF_EVENT = ASK_AI_OPEN_WITH_REF_EVENT; exports.ASK_AI_OPEN_EVENTS = ASK_AI_OPEN_EVENTS; exports.holdAskAiOpens = holdAskAiOpens; exports.askAiOpenIsHeld = askAiOpenIsHeld; exports.chatListensForAskAiOpens = chatListensForAskAiOpens; exports.ASK_AI_TRIGGER_ATTRIBUTE = ASK_AI_TRIGGER_ATTRIBUTE; exports.onAskAiIntent = onAskAiIntent; exports.ChatAppearanceContext = ChatAppearanceContext; exports.useChatAppearance = useChatAppearance; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.EscalationOfferMessage = EscalationOfferMessage; exports.AiAssistantInfo = AiAssistantInfo; exports.TicketEscalatedMessage = TicketEscalatedMessage; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.TICKET_EVENT_KIND = TICKET_EVENT_KIND; exports.TicketEventMessage = TicketEventMessage; exports.SystemEventMessage = SystemEventMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.extractCardReferences = extractCardReferences; exports.ThinkingDisplay = ThinkingDisplay; exports.AskDisplay = AskDisplay; exports.ChatPanelContext = ChatPanelContext; exports.getAgentAccent = getAgentAccent; exports.accentFromIdentityIcon = accentFromIdentityIcon; exports.isQuickActionIconSpec = isQuickActionIconSpec; exports.renderQuickActionIcon = renderQuickActionIcon; exports.QuickActionChipButton = QuickActionChipButton; exports.QuickActionChipFromData = QuickActionChipFromData; exports.SuggestionsDisplay = SuggestionsDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.MspOrganizationCard = MspOrganizationCard; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.LoadingFallback = LoadingFallback; exports.LoadingSuspense = LoadingSuspense; exports.CONTEXT_ROW_CLASS = CONTEXT_ROW_CLASS; exports.CONTEXT_ICON_CLASS = CONTEXT_ICON_CLASS; exports.CONTEXT_LABEL_CLASS = CONTEXT_LABEL_CLASS; exports.CONTEXT_BACK_BAR_CLASS = CONTEXT_BACK_BAR_CLASS; exports.CONTEXT_STATE_CLASS = CONTEXT_STATE_CLASS; exports.ContextMenuRow = ContextMenuRow; exports.ContextItemsList = ContextItemsList; exports.ContextErrorBoundary = ContextErrorBoundary; exports.CHAT_CONTEXT_ITEMS_DEFAULT_MAX = CHAT_CONTEXT_ITEMS_DEFAULT_MAX; exports.ChatComposerPlusMenu = ChatComposerPlusMenu; exports.ChatContextPicker = ChatContextPicker; exports.ChatContextChipStrip = ChatContextChipStrip; exports.InlineChip = InlineChip; exports.BlockCard = BlockCard; exports.remarkCardLinks = remarkCardLinks; exports.remarkMentionChips = remarkMentionChips; exports.citedSourceNumbers = citedSourceNumbers; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.CHAT_MESSAGE_LIST_SKELETON_MESSAGES = CHAT_MESSAGE_LIST_SKELETON_MESSAGES; exports.ChatMessageList = ChatMessageList; exports.designDocStatusDisplay = designDocStatusDisplay; exports.formatCompletionLabel = formatCompletionLabel; exports.formatCompletionLabelWithBlockers = formatCompletionLabelWithBlockers; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.DOC_TABLE_TYPES = DOC_TABLE_TYPES; exports.groupsByTable = groupsByTable; exports.recordCountLabel = recordCountLabel; exports.buildGroupedSource = buildGroupedSource; exports.groupSourcesByTable = groupSourcesByTable; exports.formatCitationIndices = formatCitationIndices; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.clickupTaskUrl = clickupTaskUrl; exports.faqSectionSlug = faqSectionSlug; exports.faqItemAnchor = faqItemAnchor; exports.parseFaqHash = parseFaqHash; exports.MingoEdgeLight = MingoEdgeLight; exports.useMarqueeSync = useMarqueeSync; exports.getMarqueeTrackOffset = getMarqueeTrackOffset; exports.getMarqueeAppliedOffset = getMarqueeAppliedOffset; exports.getMarqueeCloneTwin = getMarqueeCloneTwin; exports.MarqueeWallFades = MarqueeWallFades; exports.MarqueeWall = MarqueeWall; exports.WALL_SKELETON_LABEL_CH = WALL_SKELETON_LABEL_CH; exports.interleave = interleave; exports.QuickActionWall = QuickActionWall; exports.PageTopicLabel = PageTopicLabel; exports.QUICK_ACTION_SET_SLOTS = QUICK_ACTION_SET_SLOTS; exports.QuickActionSet = QuickActionSet; exports.MingoQuickActionWall = MingoQuickActionWall; exports.chatDialogMenuItems = chatDialogMenuItems; exports.ChatListEmptyState = ChatListEmptyState; exports.chatDayLabel = chatDayLabel; exports.ChatListLoadError = ChatListLoadError; exports.CHAT_HISTORY_PAGE_SIZE = CHAT_HISTORY_PAGE_SIZE; exports.MingoChatHistory = MingoChatHistory; exports.MingoWelcome = MingoWelcome; exports.GuideWelcome = GuideWelcome; exports.GuideModeBanner = GuideModeBanner; exports.MingoArchiveList = MingoArchiveList; exports.MingoChatHeader = MingoChatHeader; exports.ChatHeaderSearchField = ChatHeaderSearchField; exports.SearchInput = SearchInput; exports.MingoChatSearchModal = MingoChatSearchModal; exports.MingoChatRail = MingoChatRail; exports.TabSelector = TabSelector; exports.MingoHistoryRail = MingoHistoryRail; exports.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatPanelHeader = ChatPanelHeader; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.ChatContextMemoryBar = ChatContextMemoryBar; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.ChatComposer = ChatComposer; exports.ChatArchivePage = ChatArchivePage; exports.useNavLinkViaRuntime = useNavLinkViaRuntime; exports.useNavigateViaRuntime = useNavigateViaRuntime; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.getCaptionsUrl = getCaptionsUrl; exports.rebaseCaptionsUrl = rebaseCaptionsUrl; exports.buildCaptionsUrl = buildCaptionsUrl; exports.getEntityCaptionUrls = getEntityCaptionUrls; exports.getEntityCaptionUrlsById = getEntityCaptionUrlsById; exports.captionsEntityTypeForDocType = captionsEntityTypeForDocType; exports.useCaptions = useCaptions; exports.UserDisplay = UserDisplay; exports.CardHitLayer = CardHitLayer; exports.STRIP_CELL_MAX_WIDTH = STRIP_CELL_MAX_WIDTH; exports.CardsStrip = CardsStrip; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_TO_CSS_ASPECT = RATIO_TO_CSS_ASPECT; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VIDEO_BITES_CARD_HEIGHT_DESKTOP_PX = VIDEO_BITES_CARD_HEIGHT_DESKTOP_PX; exports.VIDEO_BITES_CARD_HEIGHT_MOBILE_PX = VIDEO_BITES_CARD_HEIGHT_MOBILE_PX; exports.STRIP_LINE_MAX_PX = STRIP_LINE_MAX_PX; exports.VIDEO_BITES_SKELETON_COUNT = VIDEO_BITES_SKELETON_COUNT; exports.VideoBitesStrip = VideoBitesStrip; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.CHAT_CARD_DISCLOSURE = CHAT_CARD_DISCLOSURE; exports.CHAT_CARD_DISCLOSURES = CHAT_CARD_DISCLOSURES; exports.chatCardDisclosureOf = chatCardDisclosureOf; exports.ChatCardDisclosureButton = ChatCardDisclosureButton; exports.useChatCardDisclosure = useChatCardDisclosure; exports.ChatCardDisclosureRow = ChatCardDisclosureRow; exports.designDocPeople = designDocPeople; exports.designDocMetaLine = designDocMetaLine; exports.DesignDocCard = DesignDocCard; exports.GitHubActivityCard = GitHubActivityCard; exports.getVendorLogo = getVendorLogo; exports.VendorIcon = VendorIcon; exports.useChatCardItem = useChatCardItem; exports.MingoInfoCardActionProvider = MingoInfoCardActionProvider; exports.readFetchedCardTitle = readFetchedCardTitle; exports.readFetchedCardPath = readFetchedCardPath; exports.resolveFetchedCardHref = resolveFetchedCardHref; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.resolveCardDestination = resolveCardDestination; exports.chatCardLabel = chatCardLabel; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.EMPTY_DIALOG_CAPABILITIES = EMPTY_DIALOG_CAPABILITIES; exports.useChunkCatchup = useChunkCatchup; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.useSlashCommandRegistry = useSlashCommandRegistry; exports.fetchEmptyStateConfig = fetchEmptyStateConfig; exports.emptyStateUrlForTopic = emptyStateUrlForTopic; exports.useEmptyStateConfig = useEmptyStateConfig; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.ChatIdentityProvider = ChatIdentityProvider; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useWhatToAsk = useWhatToAsk; exports.awaitsDecision = awaitsDecision; exports.mergeByTime = mergeByTime; exports.approvalDisplaysInline = approvalDisplaysInline; exports.appendToTrailingAssistant = appendToTrailingAssistant; exports.upsertTrailingCompaction = upsertTrailingCompaction; exports.applyToolExecutionToMessages = applyToolExecutionToMessages; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.createEmptyTurnMeta = createEmptyTurnMeta; exports.createChatStreamReducer = createChatStreamReducer; exports.DEFAULT_DIALOG_SIDE = DEFAULT_DIALOG_SIDE; exports.DEFAULT_MAX_REDUCERS = DEFAULT_MAX_REDUCERS; exports.MAX_PENDING_RETAIN_KEYS = MAX_PENDING_RETAIN_KEYS; exports.createChatDialogStore = createChatDialogStore; exports.createDeltaBatcher = createDeltaBatcher; exports.useChatStreamReducer = useChatStreamReducer; exports.createChatConversationsApi = createChatConversationsApi; exports.buildDiscussPrompt = buildDiscussPrompt; exports.useManagedDialogList = useManagedDialogList; exports.useSseChatAdapter = useSseChatAdapter; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.extractIncompleteTailState = extractIncompleteTailState; exports.decodeHistoricalMessageData = decodeHistoricalMessageData; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.mapProcessedToUnified = mapProcessedToUnified; exports.historicalToUnified = historicalToUnified; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useStableShallow = useStableShallow; exports.useUnifiedChat = useUnifiedChat; exports.chatChipClass = chatChipClass; exports.MINGO_V2_RAIL_WIDTH = MINGO_V2_RAIL_WIDTH; exports.CHAT_BLOCK_MIN_WIDTH = CHAT_BLOCK_MIN_WIDTH; exports.MINGO_V2_SPLIT_WIDTH = MINGO_V2_SPLIT_WIDTH;
|
|
21167
|
+
exports.PanelResizeGrip = PanelResizeGrip; exports.PanelResizeHandle = PanelResizeHandle; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.AUTHORED_LINK_REL_TOKENS = AUTHORED_LINK_REL_TOKENS; exports.authoredRelTokens = authoredRelTokens; exports.isNofollowRel = isNofollowRel; exports.renderedLinkRel = renderedLinkRel; exports.findMarkdownLinkAt = findMarkdownLinkAt; exports.formatMarkdownLink = formatMarkdownLink; exports.stripInlineMarkdown = stripInlineMarkdown; exports.markdownToPlainText = markdownToPlainText; exports.buildHeadingIdMap = buildHeadingIdMap; exports.useHeadingIdMap = useHeadingIdMap; exports.extractText = extractText; exports.useIsHydrated = useIsHydrated; exports.MermaidDiagram = MermaidDiagram; exports.MARKDOWN_H1_CLASS = MARKDOWN_H1_CLASS; exports.MARKDOWN_H2_CLASS = MARKDOWN_H2_CLASS; exports.MARKDOWN_PARAGRAPH_CLASS = MARKDOWN_PARAGRAPH_CLASS; exports.hasRenderableSrc = hasRenderableSrc; exports.buildStandardLeafRenderers = buildStandardLeafRenderers; exports.SAFE_HTML_TAGS = SAFE_HTML_TAGS; exports.SVG_TAGS = SVG_TAGS; exports.buildEffectiveTagSet = buildEffectiveTagSet; exports.buildSanitizeSchema = buildSanitizeSchema; exports.rehypeStripUnsafe = rehypeStripUnsafe; exports.escapeUnknownHtmlTags = escapeUnknownHtmlTags; exports.cardAwareUrlTransform = cardAwareUrlTransform; exports.splitStreamingBlocks = splitStreamingBlocks; exports.completeStreamingTail = completeStreamingTail; exports.TEXT_SIZE_PRESETS = TEXT_SIZE_PRESETS; exports.resolveTextSizeConfig = resolveTextSizeConfig; exports.NO_BROKEN_LINKS = NO_BROKEN_LINKS; exports.MARKDOWN_SKELETON_LINES = MARKDOWN_SKELETON_LINES; exports.MarkdownEngine = MarkdownEngine; exports.MarkdownEngineSkeleton = MarkdownEngineSkeleton; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ASK_AI_OPEN_EVENT = ASK_AI_OPEN_EVENT; exports.ASK_AI_OPEN_WITH_REF_EVENT = ASK_AI_OPEN_WITH_REF_EVENT; exports.ASK_AI_OPEN_EVENTS = ASK_AI_OPEN_EVENTS; exports.holdAskAiOpens = holdAskAiOpens; exports.askAiOpenIsHeld = askAiOpenIsHeld; exports.chatListensForAskAiOpens = chatListensForAskAiOpens; exports.ASK_AI_TRIGGER_ATTRIBUTE = ASK_AI_TRIGGER_ATTRIBUTE; exports.onAskAiIntent = onAskAiIntent; exports.ChatAppearanceContext = ChatAppearanceContext; exports.useChatAppearance = useChatAppearance; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.EscalationOfferMessage = EscalationOfferMessage; exports.AiAssistantInfo = AiAssistantInfo; exports.TicketEscalatedMessage = TicketEscalatedMessage; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.TICKET_EVENT_KIND = TICKET_EVENT_KIND; exports.TicketEventMessage = TicketEventMessage; exports.SystemEventMessage = SystemEventMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.policyReviewField = policyReviewField; exports.extractCardReferences = extractCardReferences; exports.ThinkingDisplay = ThinkingDisplay; exports.AskDisplay = AskDisplay; exports.ChatPanelContext = ChatPanelContext; exports.getAgentAccent = getAgentAccent; exports.accentFromIdentityIcon = accentFromIdentityIcon; exports.isQuickActionIconSpec = isQuickActionIconSpec; exports.renderQuickActionIcon = renderQuickActionIcon; exports.QuickActionChipButton = QuickActionChipButton; exports.QuickActionChipFromData = QuickActionChipFromData; exports.SuggestionsDisplay = SuggestionsDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.MspOrganizationCard = MspOrganizationCard; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.LoadingFallback = LoadingFallback; exports.LoadingSuspense = LoadingSuspense; exports.CONTEXT_ROW_CLASS = CONTEXT_ROW_CLASS; exports.CONTEXT_ICON_CLASS = CONTEXT_ICON_CLASS; exports.CONTEXT_LABEL_CLASS = CONTEXT_LABEL_CLASS; exports.CONTEXT_BACK_BAR_CLASS = CONTEXT_BACK_BAR_CLASS; exports.CONTEXT_STATE_CLASS = CONTEXT_STATE_CLASS; exports.ContextMenuRow = ContextMenuRow; exports.ContextItemsList = ContextItemsList; exports.ContextErrorBoundary = ContextErrorBoundary; exports.CHAT_CONTEXT_ITEMS_DEFAULT_MAX = CHAT_CONTEXT_ITEMS_DEFAULT_MAX; exports.ChatComposerPlusMenu = ChatComposerPlusMenu; exports.ChatContextPicker = ChatContextPicker; exports.ChatContextChipStrip = ChatContextChipStrip; exports.InlineChip = InlineChip; exports.BlockCard = BlockCard; exports.remarkCardLinks = remarkCardLinks; exports.remarkMentionChips = remarkMentionChips; exports.citedSourceNumbers = citedSourceNumbers; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.CHAT_MESSAGE_LIST_SKELETON_MESSAGES = CHAT_MESSAGE_LIST_SKELETON_MESSAGES; exports.ChatMessageList = ChatMessageList; exports.designDocStatusDisplay = designDocStatusDisplay; exports.formatCompletionLabel = formatCompletionLabel; exports.formatCompletionLabelWithBlockers = formatCompletionLabelWithBlockers; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.DOC_TABLE_TYPES = DOC_TABLE_TYPES; exports.groupsByTable = groupsByTable; exports.recordCountLabel = recordCountLabel; exports.buildGroupedSource = buildGroupedSource; exports.groupSourcesByTable = groupSourcesByTable; exports.formatCitationIndices = formatCitationIndices; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.clickupTaskUrl = clickupTaskUrl; exports.faqSectionSlug = faqSectionSlug; exports.faqItemAnchor = faqItemAnchor; exports.parseFaqHash = parseFaqHash; exports.MingoEdgeLight = MingoEdgeLight; exports.useMarqueeSync = useMarqueeSync; exports.getMarqueeTrackOffset = getMarqueeTrackOffset; exports.getMarqueeAppliedOffset = getMarqueeAppliedOffset; exports.getMarqueeCloneTwin = getMarqueeCloneTwin; exports.MarqueeWallFades = MarqueeWallFades; exports.MarqueeWall = MarqueeWall; exports.WALL_SKELETON_LABEL_CH = WALL_SKELETON_LABEL_CH; exports.interleave = interleave; exports.QuickActionWall = QuickActionWall; exports.PageTopicLabel = PageTopicLabel; exports.QUICK_ACTION_SET_SLOTS = QUICK_ACTION_SET_SLOTS; exports.QuickActionSet = QuickActionSet; exports.MingoQuickActionWall = MingoQuickActionWall; exports.chatDialogMenuItems = chatDialogMenuItems; exports.ChatListEmptyState = ChatListEmptyState; exports.chatDayLabel = chatDayLabel; exports.ChatListLoadError = ChatListLoadError; exports.CHAT_HISTORY_PAGE_SIZE = CHAT_HISTORY_PAGE_SIZE; exports.MingoChatHistory = MingoChatHistory; exports.MingoWelcome = MingoWelcome; exports.GuideWelcome = GuideWelcome; exports.GuideModeBanner = GuideModeBanner; exports.MingoArchiveList = MingoArchiveList; exports.MingoChatHeader = MingoChatHeader; exports.ChatHeaderSearchField = ChatHeaderSearchField; exports.SearchInput = SearchInput; exports.MingoChatSearchModal = MingoChatSearchModal; exports.MingoChatRail = MingoChatRail; exports.MingoHistoryRail = MingoHistoryRail; exports.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatPanelHeader = ChatPanelHeader; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.ChatContextMemoryBar = ChatContextMemoryBar; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.ChatComposer = ChatComposer; exports.ChatArchivePage = ChatArchivePage; exports.useNavLinkViaRuntime = useNavLinkViaRuntime; exports.useNavigateViaRuntime = useNavigateViaRuntime; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.getCaptionsUrl = getCaptionsUrl; exports.rebaseCaptionsUrl = rebaseCaptionsUrl; exports.buildCaptionsUrl = buildCaptionsUrl; exports.getEntityCaptionUrls = getEntityCaptionUrls; exports.getEntityCaptionUrlsById = getEntityCaptionUrlsById; exports.captionsEntityTypeForDocType = captionsEntityTypeForDocType; exports.useCaptions = useCaptions; exports.UserDisplay = UserDisplay; exports.CardHitLayer = CardHitLayer; exports.STRIP_CELL_MAX_WIDTH = STRIP_CELL_MAX_WIDTH; exports.CardsStrip = CardsStrip; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_TO_CSS_ASPECT = RATIO_TO_CSS_ASPECT; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VIDEO_BITES_CARD_HEIGHT_DESKTOP_PX = VIDEO_BITES_CARD_HEIGHT_DESKTOP_PX; exports.VIDEO_BITES_CARD_HEIGHT_MOBILE_PX = VIDEO_BITES_CARD_HEIGHT_MOBILE_PX; exports.STRIP_LINE_MAX_PX = STRIP_LINE_MAX_PX; exports.VIDEO_BITES_SKELETON_COUNT = VIDEO_BITES_SKELETON_COUNT; exports.VideoBitesStrip = VideoBitesStrip; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.CHAT_CARD_DISCLOSURE = CHAT_CARD_DISCLOSURE; exports.CHAT_CARD_DISCLOSURES = CHAT_CARD_DISCLOSURES; exports.chatCardDisclosureOf = chatCardDisclosureOf; exports.ChatCardDisclosureButton = ChatCardDisclosureButton; exports.useChatCardDisclosure = useChatCardDisclosure; exports.ChatCardDisclosureRow = ChatCardDisclosureRow; exports.designDocPeople = designDocPeople; exports.designDocMetaLine = designDocMetaLine; exports.DesignDocCard = DesignDocCard; exports.GitHubActivityCard = GitHubActivityCard; exports.getVendorLogo = getVendorLogo; exports.VendorIcon = VendorIcon; exports.useChatCardItem = useChatCardItem; exports.MingoInfoCardActionProvider = MingoInfoCardActionProvider; exports.readFetchedCardTitle = readFetchedCardTitle; exports.readFetchedCardPath = readFetchedCardPath; exports.resolveFetchedCardHref = resolveFetchedCardHref; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.resolveCardDestination = resolveCardDestination; exports.chatCardLabel = chatCardLabel; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.EMPTY_DIALOG_CAPABILITIES = EMPTY_DIALOG_CAPABILITIES; exports.useChunkCatchup = useChunkCatchup; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.useSlashCommandRegistry = useSlashCommandRegistry; exports.fetchEmptyStateConfig = fetchEmptyStateConfig; exports.emptyStateUrlForTopic = emptyStateUrlForTopic; exports.useEmptyStateConfig = useEmptyStateConfig; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.ChatIdentityProvider = ChatIdentityProvider; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useWhatToAsk = useWhatToAsk; exports.awaitsDecision = awaitsDecision; exports.mergeByTime = mergeByTime; exports.approvalDisplaysInline = approvalDisplaysInline; exports.appendToTrailingAssistant = appendToTrailingAssistant; exports.upsertTrailingCompaction = upsertTrailingCompaction; exports.applyToolExecutionToMessages = applyToolExecutionToMessages; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.createEmptyTurnMeta = createEmptyTurnMeta; exports.createChatStreamReducer = createChatStreamReducer; exports.DEFAULT_DIALOG_SIDE = DEFAULT_DIALOG_SIDE; exports.DEFAULT_MAX_REDUCERS = DEFAULT_MAX_REDUCERS; exports.MAX_PENDING_RETAIN_KEYS = MAX_PENDING_RETAIN_KEYS; exports.createChatDialogStore = createChatDialogStore; exports.createDeltaBatcher = createDeltaBatcher; exports.useChatStreamReducer = useChatStreamReducer; exports.createChatConversationsApi = createChatConversationsApi; exports.buildDiscussPrompt = buildDiscussPrompt; exports.useManagedDialogList = useManagedDialogList; exports.useSseChatAdapter = useSseChatAdapter; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.extractIncompleteTailState = extractIncompleteTailState; exports.decodeHistoricalMessageData = decodeHistoricalMessageData; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.mapProcessedToUnified = mapProcessedToUnified; exports.historicalToUnified = historicalToUnified; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useStableShallow = useStableShallow; exports.useUnifiedChat = useUnifiedChat; exports.chatChipClass = chatChipClass; exports.MINGO_V2_RAIL_WIDTH = MINGO_V2_RAIL_WIDTH; exports.CHAT_BLOCK_MIN_WIDTH = CHAT_BLOCK_MIN_WIDTH; exports.MINGO_V2_SPLIT_WIDTH = MINGO_V2_SPLIT_WIDTH;
|