@arbidocs/blocks 0.4.128 → 0.4.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -10
- package/dist/{StreamedArtifactEditor-EEYAXJ4H.cjs → StreamedArtifactEditor-TQAND4H5.cjs} +6 -5
- package/dist/StreamedArtifactEditor-TQAND4H5.cjs.map +1 -0
- package/dist/{StreamedArtifactEditor-TDATDYD2.js → StreamedArtifactEditor-XQNANTWM.js} +4 -3
- package/dist/StreamedArtifactEditor-XQNANTWM.js.map +1 -0
- package/dist/agents/index.cjs +304 -304
- package/dist/agents/index.js +12 -12
- package/dist/artifacts/ArtifactCodeView.d.ts +6 -0
- package/dist/artifacts/ArtifactPreview.d.ts +22 -0
- package/dist/artifacts/index.cjs +50 -21
- package/dist/artifacts/index.d.ts +3 -0
- package/dist/artifacts/index.js +2 -1
- package/dist/artifacts/sandbox-policy.d.ts +34 -0
- package/dist/artifacts/sandboxDocument.d.ts +7 -0
- package/dist/calendar/CalendarPrint.d.ts +25 -0
- package/dist/calendar/booking-slots.d.ts +21 -0
- package/dist/calendar/index.cjs +440 -243
- package/dist/calendar/index.cjs.map +1 -1
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +282 -151
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/print-layout.d.ts +16 -0
- package/dist/calendar/printCalendar.d.ts +6 -0
- package/dist/calls/composite-canvas.d.ts +52 -0
- package/dist/calls/index.cjs +376 -3
- package/dist/calls/index.cjs.map +1 -1
- package/dist/calls/index.d.ts +3 -0
- package/dist/calls/index.js +360 -5
- package/dist/calls/index.js.map +1 -1
- package/dist/calls/ringtone.d.ts +16 -0
- package/dist/calls/voice-levels.d.ts +32 -0
- package/dist/chat/ThreadVisualizer.d.ts +28 -0
- package/dist/chat/index.cjs +156 -140
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +5 -5
- package/dist/chat/open-document.d.ts +5 -1
- package/dist/chat/thread-diagram.d.ts +26 -0
- package/dist/{chunk-7HAM7Y5U.js → chunk-2DFDFOM7.js} +3 -3
- package/dist/{chunk-7HAM7Y5U.js.map → chunk-2DFDFOM7.js.map} +1 -1
- package/dist/{chunk-54ANPPMV.js → chunk-2PNNCEPH.js} +4 -4
- package/dist/{chunk-54ANPPMV.js.map → chunk-2PNNCEPH.js.map} +1 -1
- package/dist/{chunk-DQCYCEDR.js → chunk-2Q7FDZAY.js} +3 -3
- package/dist/{chunk-DQCYCEDR.js.map → chunk-2Q7FDZAY.js.map} +1 -1
- package/dist/{chunk-INW76PEL.cjs → chunk-2YV7FBLO.cjs} +175 -2
- package/dist/chunk-2YV7FBLO.cjs.map +1 -0
- package/dist/{chunk-S7PSMMRG.js → chunk-444XKG46.js} +3 -3
- package/dist/{chunk-S7PSMMRG.js.map → chunk-444XKG46.js.map} +1 -1
- package/dist/{chunk-FSBY2S4V.cjs → chunk-4QIIDXLF.cjs} +10 -10
- package/dist/{chunk-FSBY2S4V.cjs.map → chunk-4QIIDXLF.cjs.map} +1 -1
- package/dist/{chunk-OYMWV45N.js → chunk-4RLCRFZS.js} +63 -13
- package/dist/chunk-4RLCRFZS.js.map +1 -0
- package/dist/{chunk-NZUQFF35.cjs → chunk-4S5IDT5F.cjs} +234 -5
- package/dist/chunk-4S5IDT5F.cjs.map +1 -0
- package/dist/{chunk-CJBN5HIS.js → chunk-4UMXQPNA.js} +20 -8
- package/dist/chunk-4UMXQPNA.js.map +1 -0
- package/dist/{chunk-KELGOCJA.js → chunk-65S53MZK.js} +174 -5
- package/dist/chunk-65S53MZK.js.map +1 -0
- package/dist/{chunk-IBZJYCYM.js → chunk-66TA5IBN.js} +17 -25
- package/dist/chunk-66TA5IBN.js.map +1 -0
- package/dist/{chunk-HM23LXUP.cjs → chunk-6AALMYPS.cjs} +3 -3
- package/dist/{chunk-HM23LXUP.cjs.map → chunk-6AALMYPS.cjs.map} +1 -1
- package/dist/{chunk-OR4CO743.cjs → chunk-AAFX64WD.cjs} +3 -3
- package/dist/{chunk-OR4CO743.cjs.map → chunk-AAFX64WD.cjs.map} +1 -1
- package/dist/{chunk-MUMH3Z6K.cjs → chunk-ARDHLU73.cjs} +61 -11
- package/dist/chunk-ARDHLU73.cjs.map +1 -0
- package/dist/chunk-BIXHB4LV.cjs +178 -0
- package/dist/chunk-BIXHB4LV.cjs.map +1 -0
- package/dist/chunk-C4WSHRR6.cjs +166 -0
- package/dist/chunk-C4WSHRR6.cjs.map +1 -0
- package/dist/{chunk-ZAVEMQ37.cjs → chunk-DWZXSPMB.cjs} +3 -3
- package/dist/{chunk-ZAVEMQ37.cjs.map → chunk-DWZXSPMB.cjs.map} +1 -1
- package/dist/{chunk-VW2C2AZL.js → chunk-ENDP7JER.js} +3 -3
- package/dist/{chunk-VW2C2AZL.js.map → chunk-ENDP7JER.js.map} +1 -1
- package/dist/{chunk-5HFPRI3W.js → chunk-FUTMU4FR.js} +3 -3
- package/dist/{chunk-5HFPRI3W.js.map → chunk-FUTMU4FR.js.map} +1 -1
- package/dist/{chunk-P5ST47VY.js → chunk-GDBDHOI4.js} +3 -3
- package/dist/{chunk-P5ST47VY.js.map → chunk-GDBDHOI4.js.map} +1 -1
- package/dist/chunk-GTCC2VAR.js +153 -0
- package/dist/chunk-GTCC2VAR.js.map +1 -0
- package/dist/{chunk-3BJLNKOB.cjs → chunk-GZPTWHP5.cjs} +22 -10
- package/dist/chunk-GZPTWHP5.cjs.map +1 -0
- package/dist/{chunk-OUW6G4O2.cjs → chunk-HFGXA5CL.cjs} +4 -4
- package/dist/{chunk-OUW6G4O2.cjs.map → chunk-HFGXA5CL.cjs.map} +1 -1
- package/dist/{chunk-SWQX6CTT.cjs → chunk-JKB7WT7L.cjs} +2 -2
- package/dist/chunk-JKB7WT7L.cjs.map +1 -0
- package/dist/{chunk-D4YR56FV.cjs → chunk-KYDRUFWT.cjs} +5 -5
- package/dist/{chunk-D4YR56FV.cjs.map → chunk-KYDRUFWT.cjs.map} +1 -1
- package/dist/chunk-NS4JD2VR.js +22 -0
- package/dist/chunk-NS4JD2VR.js.map +1 -0
- package/dist/{chunk-S6BOINC4.cjs → chunk-OGBXV326.cjs} +7 -7
- package/dist/{chunk-S6BOINC4.cjs.map → chunk-OGBXV326.cjs.map} +1 -1
- package/dist/{chunk-DJM7DLCT.cjs → chunk-OPTBQSCV.cjs} +3 -3
- package/dist/{chunk-DJM7DLCT.cjs.map → chunk-OPTBQSCV.cjs.map} +1 -1
- package/dist/{chunk-GFYGYME3.js → chunk-OQ7RUNOC.js} +3 -3
- package/dist/{chunk-GFYGYME3.js.map → chunk-OQ7RUNOC.js.map} +1 -1
- package/dist/{chunk-WV4IDVDQ.cjs → chunk-PJJY6CYL.cjs} +11 -11
- package/dist/{chunk-WV4IDVDQ.cjs.map → chunk-PJJY6CYL.cjs.map} +1 -1
- package/dist/{chunk-CXLVI3SB.js → chunk-PUCY3UXN.js} +3 -3
- package/dist/{chunk-CXLVI3SB.js.map → chunk-PUCY3UXN.js.map} +1 -1
- package/dist/{chunk-ZV3BKLFY.cjs → chunk-QDEODGXE.cjs} +5 -5
- package/dist/{chunk-ZV3BKLFY.cjs.map → chunk-QDEODGXE.cjs.map} +1 -1
- package/dist/{chunk-7BJRLP3U.js → chunk-QYTYW74G.js} +5 -5
- package/dist/{chunk-7BJRLP3U.js.map → chunk-QYTYW74G.js.map} +1 -1
- package/dist/{chunk-A7NCSZAP.cjs → chunk-QZTNTP75.cjs} +17 -25
- package/dist/chunk-QZTNTP75.cjs.map +1 -0
- package/dist/{chunk-OB5F4577.cjs → chunk-R26BK7YL.cjs} +4 -4
- package/dist/{chunk-OB5F4577.cjs.map → chunk-R26BK7YL.cjs.map} +1 -1
- package/dist/{chunk-A2YAC22G.js → chunk-RI6DZA5X.js} +3 -3
- package/dist/{chunk-A2YAC22G.js.map → chunk-RI6DZA5X.js.map} +1 -1
- package/dist/{chunk-LC2KJSUS.cjs → chunk-SARREDFP.cjs} +46 -46
- package/dist/{chunk-LC2KJSUS.cjs.map → chunk-SARREDFP.cjs.map} +1 -1
- package/dist/{chunk-ZCHSJUCI.js → chunk-SZX44LCT.js} +231 -6
- package/dist/chunk-SZX44LCT.js.map +1 -0
- package/dist/{chunk-7QDX2CO4.cjs → chunk-TP6PLDNM.cjs} +4 -4
- package/dist/{chunk-7QDX2CO4.cjs.map → chunk-TP6PLDNM.cjs.map} +1 -1
- package/dist/{chunk-W27VK32R.cjs → chunk-TT6XV6WM.cjs} +84 -84
- package/dist/{chunk-W27VK32R.cjs.map → chunk-TT6XV6WM.cjs.map} +1 -1
- package/dist/{chunk-KLOSOT26.js → chunk-UMIY4SQS.js} +11 -11
- package/dist/{chunk-KLOSOT26.js.map → chunk-UMIY4SQS.js.map} +1 -1
- package/dist/chunk-VG24E4JJ.cjs +26 -0
- package/dist/chunk-VG24E4JJ.cjs.map +1 -0
- package/dist/{chunk-ECERC6TI.js → chunk-VHJHY7TT.js} +3 -3
- package/dist/{chunk-ECERC6TI.js.map → chunk-VHJHY7TT.js.map} +1 -1
- package/dist/{chunk-D3N67Q4D.js → chunk-W3VYZXNS.js} +3 -3
- package/dist/{chunk-D3N67Q4D.js.map → chunk-W3VYZXNS.js.map} +1 -1
- package/dist/{chunk-JK45LSIH.cjs → chunk-WXYQ66KC.cjs} +5 -5
- package/dist/{chunk-JK45LSIH.cjs.map → chunk-WXYQ66KC.cjs.map} +1 -1
- package/dist/{chunk-ZCF2JJFA.js → chunk-Y3KA6X7B.js} +3 -3
- package/dist/{chunk-ZCF2JJFA.js.map → chunk-Y3KA6X7B.js.map} +1 -1
- package/dist/{chunk-GYCQ3FNL.js → chunk-YBLIKTJK.js} +2 -2
- package/dist/chunk-YBLIKTJK.js.map +1 -0
- package/dist/chunk-YNIBUKV5.js +163 -0
- package/dist/chunk-YNIBUKV5.js.map +1 -0
- package/dist/citations/index.cjs +12 -11
- package/dist/citations/index.js +3 -2
- package/dist/collaboration/index.cjs +51 -51
- package/dist/collaboration/index.js +3 -3
- package/dist/components/DroppableContainer.d.ts +6 -0
- package/dist/components/GridRowNavigator.d.ts +29 -0
- package/dist/components/LoadingIndicator.d.ts +21 -0
- package/dist/components/RowNavigatorControls.d.ts +29 -0
- package/dist/components/SharedCell.d.ts +27 -0
- package/dist/connect/docx.cjs +7 -5
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +6 -4
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +270 -227
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -1
- package/dist/connect/index.js +199 -156
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSettings.d.ts +46 -20
- package/dist/connection/ConnectionProvider.d.ts +5 -0
- package/dist/connection/mail/ConnectedMailComposer.d.ts +2 -3
- package/dist/connection/mail/ConnectedMailbox.d.ts +2 -3
- package/dist/connection/mail/MailComposerForm.d.ts +2 -3
- package/dist/connection/mail/index.d.ts +2 -2
- package/dist/connection/mail/mailbox.d.ts +1 -4
- package/dist/connection/mail/types.d.ts +0 -8
- package/dist/document-tools/index.cjs +1 -1
- package/dist/document-tools/index.js +1 -1
- package/dist/facts/fact-citations.d.ts +56 -0
- package/dist/facts/fact-table-column-resize.d.ts +18 -0
- package/dist/facts/index.cjs +198 -29
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.d.ts +2 -1
- package/dist/facts/index.js +187 -27
- package/dist/facts/index.js.map +1 -1
- package/dist/files/index.cjs +4 -4
- package/dist/files/index.js +3 -3
- package/dist/home/index.cjs +20 -19
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +5 -4
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +877 -679
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +207 -30
- package/dist/index.js.map +1 -1
- package/dist/provider/BlocksProvider.d.ts +39 -4
- package/dist/provider/dialogs.d.ts +31 -0
- package/dist/retrieval/index.cjs +5 -4
- package/dist/retrieval/index.js +3 -2
- package/dist/sandboxDocument-JLEETIWW.js +71 -0
- package/dist/sandboxDocument-JLEETIWW.js.map +1 -0
- package/dist/sandboxDocument-WQUNODSC.cjs +76 -0
- package/dist/sandboxDocument-WQUNODSC.cjs.map +1 -0
- package/dist/settings/DraggableHeader.d.ts +10 -0
- package/dist/settings/FilterChip.d.ts +15 -0
- package/dist/settings/MessageJsonTree.d.ts +7 -0
- package/dist/settings/MoreInfo.d.ts +25 -0
- package/dist/settings/PlanCard.d.ts +1 -1
- package/dist/settings/index.cjs +363 -266
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.d.ts +4 -1
- package/dist/settings/index.js +317 -222
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/message-schema-hints.d.ts +19 -0
- package/dist/shell/index.cjs +48 -47
- package/dist/shell/index.js +4 -3
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +19 -18
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.js +11 -10
- package/dist/studio/index.js.map +1 -1
- package/dist/workflow-canvas/index.cjs +65 -65
- package/dist/workflow-canvas/index.js +13 -13
- package/dist/workspaces/index.cjs +42 -3
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.d.ts +1 -0
- package/dist/workspaces/index.js +38 -3
- package/dist/workspaces/index.js.map +1 -1
- package/dist/workspaces/workspace-type.d.ts +29 -0
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +10 -4
- package/dist/StreamedArtifactEditor-EEYAXJ4H.cjs.map +0 -1
- package/dist/StreamedArtifactEditor-TDATDYD2.js.map +0 -1
- package/dist/chunk-3BJLNKOB.cjs.map +0 -1
- package/dist/chunk-76JDDMSP.js +0 -31
- package/dist/chunk-76JDDMSP.js.map +0 -1
- package/dist/chunk-A7NCSZAP.cjs.map +0 -1
- package/dist/chunk-C54XEN5T.cjs +0 -34
- package/dist/chunk-C54XEN5T.cjs.map +0 -1
- package/dist/chunk-CJBN5HIS.js.map +0 -1
- package/dist/chunk-GYCQ3FNL.js.map +0 -1
- package/dist/chunk-IBZJYCYM.js.map +0 -1
- package/dist/chunk-INW76PEL.cjs.map +0 -1
- package/dist/chunk-KELGOCJA.js.map +0 -1
- package/dist/chunk-MUMH3Z6K.cjs.map +0 -1
- package/dist/chunk-NZUQFF35.cjs.map +0 -1
- package/dist/chunk-OYMWV45N.js.map +0 -1
- package/dist/chunk-SWQX6CTT.cjs.map +0 -1
- package/dist/chunk-ZCHSJUCI.js.map +0 -1
- package/dist/facts/timezone.d.ts +0 -4
- package/dist/settings/FirmPool.d.ts +0 -82
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Toaster } from './chunk-OKERRHLH.js';
|
|
3
|
-
import { useAssistantDock, useChatSurface } from './chunk-
|
|
3
|
+
import { useAssistantDock, useChatSurface } from './chunk-PUCY3UXN.js';
|
|
4
4
|
import { BlocksTooltipProvider } from './chunk-7XF5SFJ2.js';
|
|
5
5
|
import { listOptionId } from './chunk-AA3PT6KR.js';
|
|
6
6
|
import { speakerAccent, speakerDot } from './chunk-Z3AZ7Q5X.js';
|
|
7
7
|
import { prefixedTestId, testIdOr } from './chunk-7F6CBP3Z.js';
|
|
8
|
-
import { Globe, BookOpen, ChevronsUpDown, Search, SquareSlash, PenLine, Pin, X, Network, ArrowLeft, ArrowRight, Crown, Glasses, Zap, Sparkles, Check, Settings, Plus, Bot,
|
|
8
|
+
import { Globe, BookOpen, ChevronsUpDown, Search, SquareSlash, Download, PenLine, Pin, X, Network, ArrowLeft, ArrowRight, Crown, Glasses, Zap, Sparkles, Check, Settings, Plus, Bot, MessageCircleQuestion, Clock, Play, Pause, Loader2, MessageSquare, CheckCircle, Tag, AudioLines, User } from 'lucide-react';
|
|
9
9
|
import { cn, Button, HoverCardContent, Input, Badge, Tooltip, TooltipTrigger, TooltipContent, Popover, PopoverTrigger, PopoverContent, PassageCard, Tabs, TabsList, TabsTrigger, TabsContent } from '@arbidocs/react/ui';
|
|
10
10
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
11
|
-
import { memo, useId, useRef, useEffect, forwardRef,
|
|
11
|
+
import { memo, useId, useRef, useEffect, forwardRef, useState, useMemo, useCallback, Fragment as Fragment$1 } from 'react';
|
|
12
12
|
import DOMPurify from 'dompurify';
|
|
13
13
|
|
|
14
14
|
// src/chat/participant-tints.ts
|
|
@@ -946,6 +946,231 @@ function ThreadMapDiagram({
|
|
|
946
946
|
}
|
|
947
947
|
);
|
|
948
948
|
}
|
|
949
|
+
|
|
950
|
+
// src/chat/thread-diagram.ts
|
|
951
|
+
var DIAGRAM_COLORS = {
|
|
952
|
+
userBg: "#f1f5f9",
|
|
953
|
+
// slate-100
|
|
954
|
+
assistantBg: "#ffffff",
|
|
955
|
+
stroke: "#cbd5e1",
|
|
956
|
+
// slate-300
|
|
957
|
+
strokeLight: "#e2e8f0",
|
|
958
|
+
// slate-200
|
|
959
|
+
text: "#334155"
|
|
960
|
+
// slate-700
|
|
961
|
+
};
|
|
962
|
+
function escapeLabel(text) {
|
|
963
|
+
return text.replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">").replace(/\[/g, "[").replace(/\]/g, "]").replace(/\(/g, "(").replace(/\)/g, ")").replace(/\{/g, "{").replace(/\}/g, "}");
|
|
964
|
+
}
|
|
965
|
+
function buildThreadDiagram(threads) {
|
|
966
|
+
if (!threads || threads.length === 0) return null;
|
|
967
|
+
const allMessages = /* @__PURE__ */ new Map();
|
|
968
|
+
threads.forEach((thread) => {
|
|
969
|
+
thread.history.forEach((message) => {
|
|
970
|
+
allMessages.set(message.external_id, message);
|
|
971
|
+
});
|
|
972
|
+
});
|
|
973
|
+
const parentToChildren = /* @__PURE__ */ new Map();
|
|
974
|
+
threads.forEach((thread) => {
|
|
975
|
+
thread.history.forEach((message, index) => {
|
|
976
|
+
const messageId = message.external_id;
|
|
977
|
+
let parentId = message.parent_message_ext_id;
|
|
978
|
+
if (!parentId && index > 0) {
|
|
979
|
+
parentId = thread.history[index - 1].external_id;
|
|
980
|
+
console.warn(
|
|
981
|
+
`ThreadVisualizer: Message ${messageId} (${message.role}) missing parent_message_ext_id. Inferred parent: ${parentId}`
|
|
982
|
+
);
|
|
983
|
+
} else if (!parentId) {
|
|
984
|
+
parentId = null;
|
|
985
|
+
}
|
|
986
|
+
if (parentId && !allMessages.has(parentId)) {
|
|
987
|
+
if (index > 0) {
|
|
988
|
+
const fallbackParentId = thread.history[index - 1].external_id;
|
|
989
|
+
console.warn(
|
|
990
|
+
`ThreadVisualizer: Message ${messageId} has invalid parent ${parentId}. Using fallback: ${fallbackParentId}`
|
|
991
|
+
);
|
|
992
|
+
parentId = fallbackParentId;
|
|
993
|
+
} else {
|
|
994
|
+
console.warn(
|
|
995
|
+
`ThreadVisualizer: Message ${messageId} has invalid parent ${parentId} and no fallback. Using root.`
|
|
996
|
+
);
|
|
997
|
+
parentId = null;
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
if (!parentToChildren.has(parentId)) parentToChildren.set(parentId, /* @__PURE__ */ new Set());
|
|
1001
|
+
parentToChildren.get(parentId)?.add(messageId);
|
|
1002
|
+
});
|
|
1003
|
+
});
|
|
1004
|
+
const branchPoints = /* @__PURE__ */ new Set();
|
|
1005
|
+
parentToChildren.forEach((children, parentId) => {
|
|
1006
|
+
if (children.size > 1 && parentId) branchPoints.add(parentId);
|
|
1007
|
+
});
|
|
1008
|
+
allMessages.forEach((message, id) => {
|
|
1009
|
+
if (message.is_branch_point) branchPoints.add(id);
|
|
1010
|
+
});
|
|
1011
|
+
const leafNodes = new Set(threads.map((thread) => thread.leaf_message_ext_id));
|
|
1012
|
+
let diagram = "graph TD\n";
|
|
1013
|
+
diagram += ` classDef user fill:${DIAGRAM_COLORS.userBg},stroke:${DIAGRAM_COLORS.stroke},color:${DIAGRAM_COLORS.text},stroke-width:1px,font-size:12px
|
|
1014
|
+
`;
|
|
1015
|
+
diagram += ` classDef assistant fill:${DIAGRAM_COLORS.assistantBg},stroke:${DIAGRAM_COLORS.strokeLight},color:${DIAGRAM_COLORS.text},stroke-width:1px,font-size:12px
|
|
1016
|
+
`;
|
|
1017
|
+
diagram += ` linkStyle default stroke:${DIAGRAM_COLORS.stroke},stroke-width:1px
|
|
1018
|
+
`;
|
|
1019
|
+
allMessages.forEach((message, id) => {
|
|
1020
|
+
const plain = (message.content || "").replace(/[*_~`#]/g, "");
|
|
1021
|
+
const shortened = plain.substring(0, 180).replace(/\n/g, " ");
|
|
1022
|
+
const content = escapeLabel(shortened) + (shortened.length < plain.length ? "..." : "");
|
|
1023
|
+
let label = `${message.role === "user" ? "User" : "Assistant"}: ${content}`;
|
|
1024
|
+
if (branchPoints.has(id)) label = `${label} \u{1F500}`;
|
|
1025
|
+
if (leafNodes.has(id)) label = `${label} \u{1F3C1}`;
|
|
1026
|
+
diagram += ` ${id}["${label}"]
|
|
1027
|
+
`;
|
|
1028
|
+
diagram += ` class ${id} ${message.role === "user" ? "user" : "assistant"}
|
|
1029
|
+
`;
|
|
1030
|
+
});
|
|
1031
|
+
parentToChildren.forEach((children, parentId) => {
|
|
1032
|
+
children.forEach((childId) => {
|
|
1033
|
+
if (parentId) diagram += ` ${parentId} --> ${childId}
|
|
1034
|
+
`;
|
|
1035
|
+
});
|
|
1036
|
+
});
|
|
1037
|
+
return diagram;
|
|
1038
|
+
}
|
|
1039
|
+
function threadForNode(threads, nodeId) {
|
|
1040
|
+
const messageId = nodeId.replace(/^flowchart-/, "").replace(/-\d+$/, "");
|
|
1041
|
+
if (threads.some((thread) => thread.leaf_message_ext_id === messageId)) return messageId;
|
|
1042
|
+
const containing = threads.find(
|
|
1043
|
+
(thread) => thread.history.some((msg) => msg.external_id === messageId)
|
|
1044
|
+
);
|
|
1045
|
+
return containing ? containing.leaf_message_ext_id : null;
|
|
1046
|
+
}
|
|
1047
|
+
var DEFAULT_THREAD_VISUALIZER_LABELS = {
|
|
1048
|
+
hint: "Click on a message to resume conversation thread.",
|
|
1049
|
+
hintMany: "This conversation has many threads. Click on a message to resume conversation thread."
|
|
1050
|
+
};
|
|
1051
|
+
var mermaidInitialized = false;
|
|
1052
|
+
var mermaidModule = null;
|
|
1053
|
+
async function getMermaid() {
|
|
1054
|
+
if (!mermaidModule) {
|
|
1055
|
+
mermaidModule = (await import('mermaid')).default;
|
|
1056
|
+
}
|
|
1057
|
+
if (!mermaidInitialized) {
|
|
1058
|
+
try {
|
|
1059
|
+
mermaidModule.initialize({
|
|
1060
|
+
startOnLoad: false,
|
|
1061
|
+
flowchart: { useMaxWidth: true, curve: "basis" },
|
|
1062
|
+
securityLevel: "loose"
|
|
1063
|
+
// Required for click interactivity
|
|
1064
|
+
});
|
|
1065
|
+
mermaidInitialized = true;
|
|
1066
|
+
} catch (error) {
|
|
1067
|
+
console.error("Error initializing Mermaid:", error);
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
return mermaidModule;
|
|
1071
|
+
}
|
|
1072
|
+
function ThreadVisualizerView({
|
|
1073
|
+
threads,
|
|
1074
|
+
switchToThread,
|
|
1075
|
+
showHeader = true,
|
|
1076
|
+
showDownloadButton = true,
|
|
1077
|
+
className,
|
|
1078
|
+
labels
|
|
1079
|
+
}) {
|
|
1080
|
+
const svgContainerRef = useRef(null);
|
|
1081
|
+
const [isRendering, setIsRendering] = useState(true);
|
|
1082
|
+
const [renderError, setRenderError] = useState(null);
|
|
1083
|
+
const [svgContent, setSvgContent] = useState("");
|
|
1084
|
+
const renderingRef = useRef(false);
|
|
1085
|
+
const mermaidDiagram = useMemo(() => buildThreadDiagram(threads), [threads]);
|
|
1086
|
+
const handleNodeClick = useCallback(
|
|
1087
|
+
(nodeId) => {
|
|
1088
|
+
try {
|
|
1089
|
+
const threadId = threadForNode(threads, nodeId);
|
|
1090
|
+
if (threadId) switchToThread(threadId);
|
|
1091
|
+
} catch (error) {
|
|
1092
|
+
console.error("Error in thread navigation callback:", error);
|
|
1093
|
+
}
|
|
1094
|
+
},
|
|
1095
|
+
[threads, switchToThread]
|
|
1096
|
+
);
|
|
1097
|
+
const saveSvgAsFile = useCallback(() => {
|
|
1098
|
+
if (!svgContent) return;
|
|
1099
|
+
try {
|
|
1100
|
+
const blob = new Blob([svgContent], { type: "image/svg+xml" });
|
|
1101
|
+
const url = URL.createObjectURL(blob);
|
|
1102
|
+
const link = document.createElement("a");
|
|
1103
|
+
link.href = url;
|
|
1104
|
+
link.download = `thread-visualizer-${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}.svg`;
|
|
1105
|
+
document.body.appendChild(link);
|
|
1106
|
+
link.click();
|
|
1107
|
+
document.body.removeChild(link);
|
|
1108
|
+
URL.revokeObjectURL(url);
|
|
1109
|
+
} catch (error) {
|
|
1110
|
+
console.error("Failed to save SVG:", error);
|
|
1111
|
+
}
|
|
1112
|
+
}, [svgContent]);
|
|
1113
|
+
useEffect(() => {
|
|
1114
|
+
if (renderingRef.current || !mermaidDiagram) return;
|
|
1115
|
+
const renderDiagram = async () => {
|
|
1116
|
+
renderingRef.current = true;
|
|
1117
|
+
setIsRendering(true);
|
|
1118
|
+
setRenderError(null);
|
|
1119
|
+
setSvgContent("");
|
|
1120
|
+
try {
|
|
1121
|
+
const renderDiagramId = `mermaid-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
1122
|
+
const mermaid = await getMermaid();
|
|
1123
|
+
const { svg } = await mermaid.render(renderDiagramId, mermaidDiagram);
|
|
1124
|
+
setSvgContent(svg);
|
|
1125
|
+
setIsRendering(false);
|
|
1126
|
+
} catch (error) {
|
|
1127
|
+
console.error("Error rendering mermaid diagram:", error);
|
|
1128
|
+
setRenderError(error instanceof Error ? error.message : String(error));
|
|
1129
|
+
setIsRendering(false);
|
|
1130
|
+
setSvgContent("");
|
|
1131
|
+
} finally {
|
|
1132
|
+
renderingRef.current = false;
|
|
1133
|
+
}
|
|
1134
|
+
};
|
|
1135
|
+
renderDiagram();
|
|
1136
|
+
}, [mermaidDiagram]);
|
|
1137
|
+
useEffect(() => {
|
|
1138
|
+
if (!svgContent || !svgContainerRef.current) return;
|
|
1139
|
+
const svgElement = svgContainerRef.current.querySelector("svg");
|
|
1140
|
+
if (!svgElement) return;
|
|
1141
|
+
svgElement.style.maxWidth = "100%";
|
|
1142
|
+
svgElement.style.height = "auto";
|
|
1143
|
+
svgElement.style.minHeight = "400px";
|
|
1144
|
+
const textElements = svgElement.getElementsByTagName("text");
|
|
1145
|
+
for (let i = 0; i < textElements.length; i++) {
|
|
1146
|
+
textElements[i].setAttribute("font-family", "system-ui, sans-serif");
|
|
1147
|
+
textElements[i].setAttribute("font-size", "12px");
|
|
1148
|
+
textElements[i].style.fontSize = "12px !important";
|
|
1149
|
+
}
|
|
1150
|
+
svgElement.querySelectorAll("g.node").forEach((element) => {
|
|
1151
|
+
const nodeId = element.getAttribute("id");
|
|
1152
|
+
if (!nodeId) return;
|
|
1153
|
+
element.style.cursor = "pointer";
|
|
1154
|
+
element.addEventListener("click", () => handleNodeClick(nodeId));
|
|
1155
|
+
});
|
|
1156
|
+
}, [svgContent, handleNodeClick]);
|
|
1157
|
+
const l = { ...DEFAULT_THREAD_VISUALIZER_LABELS, ...labels };
|
|
1158
|
+
const hint = showHeader ? threads.length > 5 ? l.hintMany : l.hint : void 0;
|
|
1159
|
+
return /* @__PURE__ */ jsxs(
|
|
1160
|
+
ThreadMap,
|
|
1161
|
+
{
|
|
1162
|
+
hint,
|
|
1163
|
+
onSave: showDownloadButton && svgContent ? saveSvgAsFile : void 0,
|
|
1164
|
+
className,
|
|
1165
|
+
children: [
|
|
1166
|
+
(isRendering || !svgContent || !mermaidDiagram) && !renderError && /* @__PURE__ */ jsx(ThreadMapLoading, {}),
|
|
1167
|
+
renderError && /* @__PURE__ */ jsx(ThreadMapError, { message: renderError }),
|
|
1168
|
+
svgContent && !renderError && /* @__PURE__ */ jsx(ThreadMapDiagram, { svg: svgContent, diagramRef: svgContainerRef })
|
|
1169
|
+
]
|
|
1170
|
+
}
|
|
1171
|
+
);
|
|
1172
|
+
}
|
|
1173
|
+
var ThreadVisualizer = memo(ThreadVisualizerView);
|
|
949
1174
|
var LONG_PASTE_CHARACTER_LIMIT = 1e3;
|
|
950
1175
|
var LONG_PASTE_LINE_LIMIT = 12;
|
|
951
1176
|
function isLongPastedText(value) {
|
|
@@ -1830,6 +2055,6 @@ function transcriptRuns(items, speakerOf, timeOf, gapMs = 2 * 6e4) {
|
|
|
1830
2055
|
return continued;
|
|
1831
2056
|
}
|
|
1832
2057
|
|
|
1833
|
-
export { AssistantToaster, BranchControls, ComposerAccessories, ComposerTools, ContextActionButton, ContextCheckRow, ContextPanelContent, ContextPanelFooter, ContextPanelTabs, ContextPickerList, ContextPickerRow, ContextSearchInput, ContextSelectList, ContextSelectRow, Conversation, ConversationBody, ConversationFilter, ConversationHeader, ConversationHeaderActions, ConversationHistoryPane, ConversationLoading, ConversationMain, ConversationRoot, ConversationSearchView, ConversationSettingsButton, DEFAULT_BRANCH_CONTROLS_LABELS, DEFAULT_CONVERSATION_LAYOUT_LABELS, DEFAULT_CONVERSATION_PARTS_LABELS, DEFAULT_CONVERSATION_SEARCH_LABELS, DEFAULT_DRAFTING_DOC_CHIP_LABELS, DEFAULT_LABEL_PIN_ROW_LABELS, DEFAULT_MODEL_PRICING_TIP_LABELS, DEFAULT_PENDING_ANSWER_BAR_LABELS, DEFAULT_PINNED_DOC_CHIP_LABELS, DEFAULT_SLASH_MENU_LABELS, DEFAULT_THREAD_MAP_LABELS, DraftingDocChip, LabelPinRow, ModelAutoIcon, ModelConfigureButton, ModelDot, ModelMenuDivider, ModelMenuMessage, ModelOption, ModelOptionLabel, ModelPickerPopover, ModelPickerTrigger, ModelPricingTip, ModelTierIcon, ModelTierOption, ModelTriggerContent, NewChatButton, NewPaChatButton, PaModeBadge, PendingAnswerBar, PinnedDocChip, ProvisionalTranscriptLine, SlashMenu, ThreadMap, ThreadMapDiagram, ThreadMapError, ThreadMapLoading, TranscriptLine, flashMessage, getParticipantTints, hasMessageBody, isLongPastedText, transcriptRuns, useDismissibleCard, useLongPaste, useRecipientDraft };
|
|
1834
|
-
//# sourceMappingURL=chunk-
|
|
1835
|
-
//# sourceMappingURL=chunk-
|
|
2058
|
+
export { AssistantToaster, BranchControls, ComposerAccessories, ComposerTools, ContextActionButton, ContextCheckRow, ContextPanelContent, ContextPanelFooter, ContextPanelTabs, ContextPickerList, ContextPickerRow, ContextSearchInput, ContextSelectList, ContextSelectRow, Conversation, ConversationBody, ConversationFilter, ConversationHeader, ConversationHeaderActions, ConversationHistoryPane, ConversationLoading, ConversationMain, ConversationRoot, ConversationSearchView, ConversationSettingsButton, DEFAULT_BRANCH_CONTROLS_LABELS, DEFAULT_CONVERSATION_LAYOUT_LABELS, DEFAULT_CONVERSATION_PARTS_LABELS, DEFAULT_CONVERSATION_SEARCH_LABELS, DEFAULT_DRAFTING_DOC_CHIP_LABELS, DEFAULT_LABEL_PIN_ROW_LABELS, DEFAULT_MODEL_PRICING_TIP_LABELS, DEFAULT_PENDING_ANSWER_BAR_LABELS, DEFAULT_PINNED_DOC_CHIP_LABELS, DEFAULT_SLASH_MENU_LABELS, DEFAULT_THREAD_MAP_LABELS, DEFAULT_THREAD_VISUALIZER_LABELS, DraftingDocChip, LabelPinRow, ModelAutoIcon, ModelConfigureButton, ModelDot, ModelMenuDivider, ModelMenuMessage, ModelOption, ModelOptionLabel, ModelPickerPopover, ModelPickerTrigger, ModelPricingTip, ModelTierIcon, ModelTierOption, ModelTriggerContent, NewChatButton, NewPaChatButton, PaModeBadge, PendingAnswerBar, PinnedDocChip, ProvisionalTranscriptLine, SlashMenu, ThreadMap, ThreadMapDiagram, ThreadMapError, ThreadMapLoading, ThreadVisualizer, TranscriptLine, buildThreadDiagram, flashMessage, getParticipantTints, hasMessageBody, isLongPastedText, threadForNode, transcriptRuns, useDismissibleCard, useLongPaste, useRecipientDraft };
|
|
2059
|
+
//# sourceMappingURL=chunk-SZX44LCT.js.map
|
|
2060
|
+
//# sourceMappingURL=chunk-SZX44LCT.js.map
|