@arbidocs/blocks 0.5.116 → 0.5.117

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.
Files changed (101) hide show
  1. package/dist/{ConnectedCallDock-WER7R222.cjs → ConnectedCallDock-OZBTU3IT.cjs} +20 -20
  2. package/dist/{ConnectedCallDock-WER7R222.cjs.map → ConnectedCallDock-OZBTU3IT.cjs.map} +1 -1
  3. package/dist/{ConnectedCallRoom-T7OBQTYP.cjs → ConnectedCallRoom-VMZE2NFP.cjs} +13 -13
  4. package/dist/{ConnectedCallRoom-T7OBQTYP.cjs.map → ConnectedCallRoom-VMZE2NFP.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxComparison-546ILGLW.cjs → ConnectedNativeDocxComparison-7OUKTKYP.cjs} +17 -17
  6. package/dist/{ConnectedNativeDocxComparison-546ILGLW.cjs.map → ConnectedNativeDocxComparison-7OUKTKYP.cjs.map} +1 -1
  7. package/dist/{ConnectedProductionSetDialog-LHB4VQWC.cjs → ConnectedProductionSetDialog-4EAY6KAZ.cjs} +3 -3
  8. package/dist/{ConnectedProductionSetDialog-LHB4VQWC.cjs.map → ConnectedProductionSetDialog-4EAY6KAZ.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs → ConnectedStreamedWordArtifact-7V24ZDAC.cjs} +17 -17
  10. package/dist/{ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs.map → ConnectedStreamedWordArtifact-7V24ZDAC.cjs.map} +1 -1
  11. package/dist/{DocumentReviewCard-ZSBZBGFK.cjs → DocumentReviewCard-OCPFVMLD.cjs} +15 -15
  12. package/dist/{DocumentReviewCard-ZSBZBGFK.cjs.map → DocumentReviewCard-OCPFVMLD.cjs.map} +1 -1
  13. package/dist/{FilesViewerDialog-6UKR5WEF.cjs → FilesViewerDialog-KLRDIYEH.cjs} +44 -44
  14. package/dist/{FilesViewerDialog-6UKR5WEF.cjs.map → FilesViewerDialog-KLRDIYEH.cjs.map} +1 -1
  15. package/dist/{WorkspaceTableView-J3C6VH4T.cjs → WorkspaceTableView-IMAZICIZ.cjs} +8 -8
  16. package/dist/{WorkspaceTableView-J3C6VH4T.cjs.map → WorkspaceTableView-IMAZICIZ.cjs.map} +1 -1
  17. package/dist/agents/index.cjs +297 -297
  18. package/dist/{ai-IM4A23YT.cjs → ai-7U4B4CVF.cjs} +24 -24
  19. package/dist/ai-7U4B4CVF.cjs.map +1 -0
  20. package/dist/calls/index.cjs +121 -121
  21. package/dist/chat/index.cjs +1 -1
  22. package/dist/{chunk-SGYSDABK.cjs → chunk-2W5E62EY.cjs} +6 -6
  23. package/dist/{chunk-SGYSDABK.cjs.map → chunk-2W5E62EY.cjs.map} +1 -1
  24. package/dist/{chunk-P77YTTJ3.cjs → chunk-3ODEWSRO.cjs} +4 -4
  25. package/dist/{chunk-P77YTTJ3.cjs.map → chunk-3ODEWSRO.cjs.map} +1 -1
  26. package/dist/{chunk-DDIW4HLU.cjs → chunk-3U36VYMD.cjs} +27 -27
  27. package/dist/{chunk-DDIW4HLU.cjs.map → chunk-3U36VYMD.cjs.map} +1 -1
  28. package/dist/{chunk-TP5PGWIO.cjs → chunk-4IOYQLKG.cjs} +3 -3
  29. package/dist/{chunk-TP5PGWIO.cjs.map → chunk-4IOYQLKG.cjs.map} +1 -1
  30. package/dist/{chunk-NY3YUCOW.cjs → chunk-4NPCDS2X.cjs} +3 -3
  31. package/dist/{chunk-NY3YUCOW.cjs.map → chunk-4NPCDS2X.cjs.map} +1 -1
  32. package/dist/{chunk-BQ5RIWWT.cjs → chunk-4VZZWYEC.cjs} +3 -3
  33. package/dist/{chunk-BQ5RIWWT.cjs.map → chunk-4VZZWYEC.cjs.map} +1 -1
  34. package/dist/{chunk-Y24V6HPR.cjs → chunk-57EE6CMW.cjs} +15 -15
  35. package/dist/{chunk-Y24V6HPR.cjs.map → chunk-57EE6CMW.cjs.map} +1 -1
  36. package/dist/{chunk-NNUK5ZM7.cjs → chunk-5QUL5BZO.cjs} +4 -4
  37. package/dist/{chunk-NNUK5ZM7.cjs.map → chunk-5QUL5BZO.cjs.map} +1 -1
  38. package/dist/{chunk-OEREKAAP.cjs → chunk-6DCIZA3X.cjs} +75 -75
  39. package/dist/{chunk-OEREKAAP.cjs.map → chunk-6DCIZA3X.cjs.map} +1 -1
  40. package/dist/{chunk-YGXOKB5Z.cjs → chunk-7TEUGFIL.cjs} +4 -4
  41. package/dist/{chunk-YGXOKB5Z.cjs.map → chunk-7TEUGFIL.cjs.map} +1 -1
  42. package/dist/{chunk-TT4IF52H.cjs → chunk-7X3FS5HQ.cjs} +35 -35
  43. package/dist/{chunk-TT4IF52H.cjs.map → chunk-7X3FS5HQ.cjs.map} +1 -1
  44. package/dist/{chunk-CPR6EHG7.cjs → chunk-7XT5B2DZ.cjs} +47 -47
  45. package/dist/{chunk-CPR6EHG7.cjs.map → chunk-7XT5B2DZ.cjs.map} +1 -1
  46. package/dist/{chunk-HB2O4THB.cjs → chunk-BKY2LAV2.cjs} +4 -4
  47. package/dist/{chunk-HB2O4THB.cjs.map → chunk-BKY2LAV2.cjs.map} +1 -1
  48. package/dist/{chunk-XKVPSOKP.cjs → chunk-BW5MF464.cjs} +4 -4
  49. package/dist/{chunk-XKVPSOKP.cjs.map → chunk-BW5MF464.cjs.map} +1 -1
  50. package/dist/{chunk-SB4M3ITT.cjs → chunk-D7ICHGWM.cjs} +59 -59
  51. package/dist/{chunk-SB4M3ITT.cjs.map → chunk-D7ICHGWM.cjs.map} +1 -1
  52. package/dist/{chunk-TDO5UWXF.cjs → chunk-E4BLRF2L.cjs} +5 -5
  53. package/dist/{chunk-TDO5UWXF.cjs.map → chunk-E4BLRF2L.cjs.map} +1 -1
  54. package/dist/{chunk-NIE3N6OM.cjs → chunk-E4DUXU5K.cjs} +7 -7
  55. package/dist/{chunk-NIE3N6OM.cjs.map → chunk-E4DUXU5K.cjs.map} +1 -1
  56. package/dist/{chunk-WAV762GP.cjs → chunk-GQXPNIRE.cjs} +6 -6
  57. package/dist/{chunk-WAV762GP.cjs.map → chunk-GQXPNIRE.cjs.map} +1 -1
  58. package/dist/{chunk-7OPOPYV6.cjs → chunk-H5OLHP2U.cjs} +3 -3
  59. package/dist/{chunk-7OPOPYV6.cjs.map → chunk-H5OLHP2U.cjs.map} +1 -1
  60. package/dist/{chunk-6UTKM5AB.cjs → chunk-JSQQV23D.cjs} +3 -3
  61. package/dist/{chunk-6UTKM5AB.cjs.map → chunk-JSQQV23D.cjs.map} +1 -1
  62. package/dist/{chunk-557MJ4IH.cjs → chunk-LFRNBT2I.cjs} +20 -20
  63. package/dist/{chunk-557MJ4IH.cjs.map → chunk-LFRNBT2I.cjs.map} +1 -1
  64. package/dist/{chunk-R7CJEIA5.cjs → chunk-LYTIQQQ2.cjs} +3 -3
  65. package/dist/{chunk-R7CJEIA5.cjs.map → chunk-LYTIQQQ2.cjs.map} +1 -1
  66. package/dist/{chunk-CPG7II4E.cjs → chunk-MC4F2URI.cjs} +28 -28
  67. package/dist/{chunk-CPG7II4E.cjs.map → chunk-MC4F2URI.cjs.map} +1 -1
  68. package/dist/{chunk-WXUU3COI.cjs → chunk-MZ2KZXNU.cjs} +3 -3
  69. package/dist/{chunk-WXUU3COI.cjs.map → chunk-MZ2KZXNU.cjs.map} +1 -1
  70. package/dist/{chunk-QHOHDNBU.cjs → chunk-OZVDOAXG.cjs} +4 -4
  71. package/dist/{chunk-QHOHDNBU.cjs.map → chunk-OZVDOAXG.cjs.map} +1 -1
  72. package/dist/{chunk-325GVZE6.cjs → chunk-Q6DQGGP4.cjs} +3 -3
  73. package/dist/{chunk-325GVZE6.cjs.map → chunk-Q6DQGGP4.cjs.map} +1 -1
  74. package/dist/{chunk-KTQOGT2L.cjs → chunk-TDN33HSK.cjs} +6 -6
  75. package/dist/{chunk-KTQOGT2L.cjs.map → chunk-TDN33HSK.cjs.map} +1 -1
  76. package/dist/{chunk-T23UTIRI.cjs → chunk-UNDQYTRF.cjs} +6 -6
  77. package/dist/{chunk-T23UTIRI.cjs.map → chunk-UNDQYTRF.cjs.map} +1 -1
  78. package/dist/{chunk-KXIRVKCJ.cjs → chunk-UUENH4BJ.cjs} +3 -3
  79. package/dist/{chunk-KXIRVKCJ.cjs.map → chunk-UUENH4BJ.cjs.map} +1 -1
  80. package/dist/{chunk-B2HNNG25.cjs → chunk-VBL3SHWX.cjs} +50 -50
  81. package/dist/{chunk-B2HNNG25.cjs.map → chunk-VBL3SHWX.cjs.map} +1 -1
  82. package/dist/{chunk-VGCTYTEW.cjs → chunk-VTYJAZDU.cjs} +11 -11
  83. package/dist/{chunk-VGCTYTEW.cjs.map → chunk-VTYJAZDU.cjs.map} +1 -1
  84. package/dist/{chunk-B3LZITVF.cjs → chunk-WW6LXQY6.cjs} +12 -12
  85. package/dist/{chunk-B3LZITVF.cjs.map → chunk-WW6LXQY6.cjs.map} +1 -1
  86. package/dist/{chunk-NJCK6V6U.cjs → chunk-XKDUPU7B.cjs} +4 -4
  87. package/dist/{chunk-NJCK6V6U.cjs.map → chunk-XKDUPU7B.cjs.map} +1 -1
  88. package/dist/connect/docx.cjs +20 -20
  89. package/dist/connect/index.cjs +981 -981
  90. package/dist/connect/viewer.cjs +33 -33
  91. package/dist/dashboards/index.cjs +1 -1
  92. package/dist/embed/index.cjs +38 -38
  93. package/dist/files/index.cjs +224 -224
  94. package/dist/index.cjs +1589 -1589
  95. package/dist/settings/index.cjs +147 -147
  96. package/dist/shell/index.cjs +90 -90
  97. package/dist/studio/index.cjs +26 -26
  98. package/dist/workflow-canvas/index.cjs +54 -54
  99. package/node_modules/@arbidocs/coedit/package.json +1 -1
  100. package/package.json +5 -5
  101. package/dist/ai-IM4A23YT.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chat/mermaid-normalize.ts","../src/connection/conversation/MermaidDiagram.tsx","../src/connection/conversation/DocumentWorkspaceContext.tsx","../src/connection/conversation/ConnectedMarkdown.tsx"],"names":["useState","useId","useEffect","jsxs","jsx","createContext","useContext","useBlocksEnvironment","React","useArbiSession","MentionChip","QuietLink","useArbiHost","Fragment","useCompactChat","useDocument","EntityPill","FileText","DocumentEntity","Mail","mentionFromHref","MarkdownLink","workspaceDocIdFromHref","MarkdownStreamingContext","MarkdownCode","rehypeDocEntityPills","useMemo","KitMarkdownRenderer"],"mappings":"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","file":"chunk-KXIRVKCJ.cjs","sourcesContent":["/**\n * Defensive normalizer for single-line `graph` / `flowchart` Mermaid source.\n *\n * Some LLMs emit the entire diagram on one line. Mermaid's parser splits\n * statements on newlines, so a single-line graph fails outright. This helper\n * inserts newlines on safe statement boundaries so the diagram has a chance\n * of parsing. Only attempts normalization when:\n * 1. The source has no embedded newlines (i.e. is genuinely single-line), and\n * 2. The first directive is `graph` or `flowchart`.\n *\n * Other diagram types (sequenceDiagram, classDiagram, gantt, …) have very\n * different syntaxes — applying these heuristics to them would corrupt valid\n * input, so they're left untouched.\n *\n * Boundaries we split on:\n * - After the diagram-type header (`graph TD`, `flowchart LR`, …).\n * - Before each `style` / `classDef` / `class` / `linkStyle` / `click`\n * / `subgraph` keyword.\n * - Before/after `end` (closes a subgraph block).\n * - After a `]` (label close) that's followed by another node identifier\n * starting a new edge or node declaration.\n */\nexport function normalizeMermaidGraph(source: string): string {\n // Already multi-line — assume it's well-formed; don't touch it.\n if (/\\n/.test(source)) return source\n\n const headerMatch = source.match(/^\\s*(graph|flowchart)\\s+\\w+\\s+/)\n if (!headerMatch) return source\n\n const header = headerMatch[0].trimEnd()\n let body = source.slice(headerMatch[0].length)\n\n // Insert newline before keywords that always start a new statement.\n body = body.replace(/\\s+(style|classDef|class|linkStyle|click|subgraph)\\s/g, '\\n$1 ')\n\n // `end` closes a subgraph: put it on its own line, with a break after it\n // too so any trailing statements don't stay attached.\n body = body.replace(/\\s+end\\b\\s*/g, '\\nend\\n')\n\n // After a label close (`]`), if the next token looks like a Mermaid node id\n // followed by another `[` or `-->`, that's a new statement starting.\n body = body.replace(/\\]\\s+(?=[A-Za-z_][\\w-]*\\s*(?:\\[|-->))/g, ']\\n')\n\n // Collapse any accidental runs of blank lines we may have produced.\n body = body.replace(/\\n{2,}/g, '\\n')\n\n return `${header}\\n${body.trimStart()}`\n}\n","/**\n * MermaidDiagram Component\n *\n * Renders a Mermaid diagram from source code.\n * Used inside MarkdownRenderer to handle ```mermaid code blocks.\n * Lazy-loads the mermaid library to avoid bloating the initial bundle.\n */\n\nimport { useState, useEffect, useId } from 'react'\nimport { normalizeMermaidGraph } from '../../chat/mermaid-normalize'\n\ninterface MermaidDiagramProps {\n /** Mermaid diagram source code */\n chart: string\n}\n\n// Lazy-load and initialize mermaid once\nlet mermaidInstance: typeof import('mermaid').default | null = null\nlet mermaidLoadPromise: Promise<typeof import('mermaid').default> | null = null\n\nasync function getMermaid() {\n if (mermaidInstance) return mermaidInstance\n if (!mermaidLoadPromise) {\n mermaidLoadPromise = import('mermaid').then((mod) => {\n const m = mod.default\n m.initialize({\n startOnLoad: false,\n theme: 'default',\n securityLevel: 'strict',\n flowchart: { useMaxWidth: true, curve: 'basis' },\n })\n mermaidInstance = m\n return m\n })\n }\n return mermaidLoadPromise\n}\n\nexport function MermaidDiagram({ chart }: MermaidDiagramProps) {\n const [svg, setSvg] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const uniqueId = useId().replace(/:/g, '-')\n\n useEffect(() => {\n let cancelled = false\n\n async function render() {\n const mermaid = await getMermaid()\n const diagramId = `mermaid${uniqueId}`\n\n // Validate with parse() before render(). In Mermaid v11 a render() with\n // bad source can return a \"Syntax error in text\" bomb SVG instead of\n // throwing — and it appends DOM side-effects of its own — so a try/catch\n // around render() doesn't reliably catch failures and the bomb leaks\n // into the page (especially under React StrictMode where effects run\n // twice). parse() throws cleanly with no DOM side-effects.\n //\n // Defensive rescue: some LLMs emit single-line `graph`/`flowchart`\n // source. If the original parse fails, try a normalized variant. The\n // normalizer is a no-op on already-multi-line source and on non-graph\n // diagram types, so this only helps the bad-source case and never\n // corrupts valid input.\n let validSource: string | null = null\n let firstErr: unknown\n try {\n await mermaid.parse(chart)\n validSource = chart\n } catch (err) {\n firstErr = err\n const normalized = normalizeMermaidGraph(chart)\n if (normalized !== chart) {\n try {\n await mermaid.parse(normalized)\n validSource = normalized\n } catch (retryErr) {\n console.warn('Mermaid normalized parse also failed', retryErr)\n }\n }\n }\n\n if (cancelled) return\n\n if (!validSource) {\n console.warn('Mermaid parse failed, showing source', firstErr)\n setError('Failed to render diagram')\n setSvg(null)\n return\n }\n\n try {\n const { svg: renderedSvg } = await mermaid.render(diagramId, validSource)\n if (!cancelled) {\n setSvg(renderedSvg)\n setError(null)\n }\n } catch (renderErr) {\n if (!cancelled) {\n console.warn('Mermaid render failed despite parse success', renderErr)\n setError('Failed to render diagram')\n setSvg(null)\n }\n }\n }\n\n render()\n return () => {\n cancelled = true\n }\n }, [chart, uniqueId])\n\n if (error) {\n // Fall back to showing the raw source in a code block\n return (\n <div className=\"code-block\" data-testid=\"mermaid-error\">\n <div className=\"text-sm text-muted-foreground mb-1\">{error}</div>\n <code className=\"language-mermaid\">{chart}</code>\n </div>\n )\n }\n\n if (!svg) {\n return (\n <div\n className=\"flex items-center justify-center py-8 text-muted-foreground text-sm\"\n data-testid=\"mermaid-loading\"\n >\n Rendering diagram...\n </div>\n )\n }\n\n return (\n <div\n className=\"mermaid-diagram my-4 overflow-x-auto rounded-md border border-border bg-background p-4\"\n data-testid=\"mermaid-diagram\"\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )\n}\n","/**\n * The workspace a conversation's document references belong to, when it is not the open one: an\n * agent's direct-message thread runs in the agent's workspace, so the documents it names are there.\n * A reference then opens that workspace first (`openDocument(id, { workspaceId })`).\n */\n\nimport { createContext, useContext, type ReactNode } from 'react'\nimport { useBlocksEnvironment } from '../../provider/environment'\n\n/** The workspace of the documents referenced inside it (null: the open workspace). */\nexport const DocumentWorkspaceContext = createContext<string | null>(null)\nexport const useDocumentWorkspace = () => useContext(DocumentWorkspaceContext)\n\n/** A reference to a document of another workspace: opening it opens that workspace first. */\nexport function WorkspaceDocumentReference({\n workspaceId,\n docId,\n children,\n className = 'inline-flex rounded-full border px-2 py-0.5 text-xs hover:bg-muted',\n}: {\n workspaceId: string\n docId: string\n children?: ReactNode\n className?: string\n}) {\n const { openDocument } = useBlocksEnvironment()\n return (\n <button\n type=\"button\"\n className={className}\n onClick={() => openDocument(docId, { workspaceId })}\n >\n {children ?? docId}\n </button>\n )\n}\n","/**\n * The conversation's markdown: the kit's `MarkdownRenderer` (`@arbidocs/react`: sanitised HTML,\n * slugs, lazy KaTeX, streaming blocks, tables, code) with what a conversation adds: @mention chips,\n * workspace documents opening in the viewer, quiet external links, document and email pills (the\n * host's chips, `ArbiChatHost.renderDocumentChip` / `renderMailChip`) and Mermaid diagrams.\n */\nimport { useArbiHost, useArbiSession, useDocument } from '@arbidocs/react'\nimport { mentionFromHref, type MentionKind } from '@arbidocs/react/shell'\nimport {\n EntityPill,\n getDocumentTitle,\n MarkdownCode,\n MarkdownLink,\n MarkdownRenderer as KitMarkdownRenderer,\n MarkdownStreamingContext,\n type MarkdownRendererProps as KitMarkdownRendererProps,\n DocumentEntity,\n} from '@arbidocs/react/ui'\nimport React, { useContext, useMemo } from 'react'\nimport { FileText, Mail } from 'lucide-react'\n\n/** The markdown element overrides, as the kit's renderer takes them. */\ntype Components = NonNullable<KitMarkdownRendererProps['components']>\nimport { useCompactChat } from '../../chat/CompactChatContext'\nimport { MentionChip } from '../../chat/MentionMenu'\nimport { QuietLink } from '../../citations/QuietMarks'\nimport { rehypeDocEntityPills } from '../../chat/rehype-doc-entity-pills'\nimport { workspaceDocIdFromHref } from '../../chat/doc-links'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { MermaidDiagram } from './MermaidDiagram'\nimport { useDocumentWorkspace, WorkspaceDocumentReference } from './DocumentWorkspaceContext'\n\n/** Plain text of a link's children (the `@Label` of a mention link). */\nfunction childrenText(children: React.ReactNode): string {\n return React.Children.toArray(children)\n .map((child) => (typeof child === 'string' || typeof child === 'number' ? String(child) : ''))\n .join('')\n}\n\n/** A mention chip; a mention of the reader stands out. */\nfunction MentionLink({ kind, id, text }: { kind: MentionKind; id: string; text: string }) {\n const currentUserId = useArbiSession().user?.external_id\n return (\n <MentionChip\n kind={kind}\n id={id}\n label={text.replace(/^@/, '')}\n isSelf={kind === 'user' && id === currentUserId}\n />\n )\n}\n\n/**\n * A link to elsewhere, as quiet text. Its menu (Open link / Copy link) is the deliberate step\n * the old confirmation dialog used to be; nothing opens until the menu's primary row is chosen.\n */\nexport function ExternalLink({ href, children }: React.ComponentPropsWithoutRef<'a'>) {\n return (\n <QuietLink href={href} kind=\"external\">\n {children}\n </QuietLink>\n )\n}\n\n/**\n * A workspace document referenced by a link's href rather than by its text.\n *\n * `rehypeDocEntityPills` turns a bare `doc-…` id into a pill, but it only walks\n * TEXT nodes — so `[NVDA DCF Valuation Report](…doc-abc12345…)`, which is how an\n * answer links an artifact it just saved, keeps the id in the href where the\n * plugin never looks. The link then fell through to `ExternalLink`, and opening\n * your own workspace document asked you to confirm an \"external link\" and\n * launched a new tab. It opens in the document viewer, like the pill and the\n * artifact card already do.\n */\nexport function InternalDocLink({\n docId,\n href,\n children,\n}: React.ComponentPropsWithoutRef<'a'> & { docId: string }) {\n const { openDocument } = useBlocksEnvironment()\n const workspaceId = useDocumentWorkspace()\n if (workspaceId) {\n return (\n <WorkspaceDocumentReference workspaceId={workspaceId} docId={docId}>\n {children}\n </WorkspaceDocumentReference>\n )\n }\n\n return (\n <QuietLink href={href} kind=\"document\" onOpen={() => openDocument(docId)}>\n {children}\n </QuietLink>\n )\n}\n\n/** A document of the workspace, as a pill: the host's chip, else the document entity. */\nexport function DocumentChip({ docId }: { docId: string }) {\n const render = useArbiHost().chat?.renderDocumentChip\n const workspaceId = useDocumentWorkspace()\n if (workspaceId) return <WorkspaceDocumentReference workspaceId={workspaceId} docId={docId} />\n return render ? <>{render(docId)}</> : <DefaultDocumentChip docId={docId} />\n}\n\nfunction DefaultDocumentChip({ docId }: { docId: string }) {\n const compact = useCompactChat()\n const { data: doc } = useDocument(docId)\n const { openDocument } = useBlocksEnvironment()\n if (compact && doc)\n return (\n <button\n type=\"button\"\n className=\"inline text-left text-primary underline decoration-primary/30 underline-offset-2 hover:decoration-primary\"\n onClick={() => openDocument(docId)}\n >\n {getDocumentTitle(doc)}\n </button>\n )\n if (!doc)\n return (\n <EntityPill\n icon={<FileText className=\"w-3.5 h-3.5 flex-shrink-0\" />}\n label={docId}\n size=\"sm\"\n onClick={() => openDocument(docId)}\n data-testid=\"doc-entity-pill\"\n />\n )\n return (\n <DocumentEntity doc={doc} onClick={() => openDocument(docId)} data-testid=\"doc-entity-pill\" />\n )\n}\n\n/** An email of the person's mailbox, as a pill: the host's chip, else a plain \"Email\". */\nfunction MailChip({ mailId }: { mailId: string }) {\n const render = useArbiHost().chat?.renderMailChip\n if (render) return <>{render(mailId)}</>\n return (\n <EntityPill\n icon={<Mail className=\"w-3.5 h-3.5 flex-shrink-0\" />}\n label=\"Email\"\n size=\"sm\"\n data-testid=\"mail-entity-pill\"\n />\n )\n}\n\n/**\n * The conversation's overrides, layered on the kit's defaults. Module scope, so the reference is stable\n * and memoised markdown blocks do not re-parse.\n */\nconst conversationMarkdownComponents: Partial<Components> = {\n a: function ConversationMarkdownLink({\n href,\n children,\n ...props\n }: React.ComponentPropsWithoutRef<'a'>) {\n const deploymentDomain = useBlocksEnvironment().runtimeConfig.deploymentDomain\n // @mentions: `linkMentions` turned them into `#mention-<id>` links; draw them as chips.\n const mention = mentionFromHref(href)\n if (mention) {\n return <MentionLink kind={mention.kind} id={mention.id} text={childrenText(children)} />\n }\n // Bookmarks: in-page anchors are near-invisible text; the menu jumps or copies the place.\n if (href?.startsWith('#') && !href.startsWith('#cite-')) {\n return (\n <QuietLink href={href} kind=\"anchor\">\n {children}\n </QuietLink>\n )\n }\n // Citations, `cite:` references and bare links: the kit's link.\n if (!href || href.startsWith('#') || href.startsWith('cite:')) {\n return (\n <MarkdownLink href={href} {...props}>\n {children}\n </MarkdownLink>\n )\n }\n // A workspace document is not an external link, wherever it is hosted: it opens in the viewer.\n const docId = workspaceDocIdFromHref(href, deploymentDomain)\n if (docId) {\n return (\n <InternalDocLink docId={docId} href={href} {...props}>\n {children}\n </InternalDocLink>\n )\n }\n return (\n <ExternalLink href={href} {...props}>\n {children}\n </ExternalLink>\n )\n },\n code: function ConversationMarkdownCode(\n props: React.ComponentPropsWithoutRef<'code'> & { inline?: boolean }\n ) {\n const isStreaming = useContext(MarkdownStreamingContext)\n const { className, children } = props\n const language = /language-(\\w+)/.exec(className || '')?.[1]\n if (!language) {\n // Answers often backtick a bare doc id (`doc-f7b3eeb5`). The text-node pass skips code, so\n // the id would stay monospace text; show it as the document pill. Only a whole id (eight\n // alphanumerics): while streaming, a partial one (\"doc-e\") would be looked up and 404.\n const codeText = typeof children === 'string' ? children.trim() : ''\n if (/^doc-[a-zA-Z0-9]{8}$/.test(codeText)) return <DocumentChip docId={codeText} />\n if (/^eml-[a-zA-Z0-9]{8}$/.test(codeText)) return <MailChip mailId={codeText} />\n }\n // Mermaid lazy-loads its own bundle and re-renders SVG on every change. While streaming the\n // fence is almost always partial, so it stays a code block until generation completes.\n if (language === 'mermaid' && !isStreaming) {\n return <MermaidDiagram chart={String(children).replace(/\\n$/, '')} />\n }\n return <MarkdownCode {...props} />\n },\n span: ({ children, className, ...props }: React.ComponentPropsWithoutRef<'span'>) => {\n const docId = (props as Record<string, unknown>)['data-doc-id'] as string | undefined\n if (docId) return <DocumentChip docId={docId} />\n const mailId = (props as Record<string, unknown>)['data-mail-id'] as string | undefined\n if (mailId) return <MailChip mailId={mailId} />\n return (\n <span className={className} {...props}>\n {children}\n </span>\n )\n },\n}\n\n/** Bare `doc-…` / `eml-…` ids in text become `<span data-doc-id>` / `<span data-mail-id>` pills. */\nconst conversationRehypePlugins = [rehypeDocEntityPills]\n\nexport type ConnectedMarkdownProps = Omit<\n KitMarkdownRendererProps,\n 'rehypePlugins' | 'allowHtml' | 'renderCitation'\n>\n\n/**\n * The kit's renderer with the conversation's overrides; a caller's `components` (e.g. the citation\n * core's) still win over both.\n */\nfunction ConnectedMarkdownComponent({ components, ...props }: ConnectedMarkdownProps) {\n const merged = useMemo(\n () =>\n components\n ? { ...conversationMarkdownComponents, ...components }\n : conversationMarkdownComponents,\n [components]\n )\n return (\n <KitMarkdownRenderer {...props} components={merged} rehypePlugins={conversationRehypePlugins} />\n )\n}\n\nexport const ConnectedMarkdown = React.memo(ConnectedMarkdownComponent)\n"]}
1
+ {"version":3,"sources":["../src/chat/mermaid-normalize.ts","../src/connection/conversation/MermaidDiagram.tsx","../src/connection/conversation/DocumentWorkspaceContext.tsx","../src/connection/conversation/ConnectedMarkdown.tsx"],"names":["useState","useId","useEffect","jsxs","jsx","createContext","useContext","useBlocksEnvironment","React","useArbiSession","MentionChip","QuietLink","useArbiHost","Fragment","useCompactChat","useDocument","EntityPill","FileText","DocumentEntity","Mail","mentionFromHref","MarkdownLink","workspaceDocIdFromHref","MarkdownStreamingContext","MarkdownCode","rehypeDocEntityPills","useMemo","KitMarkdownRenderer"],"mappings":"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","file":"chunk-UUENH4BJ.cjs","sourcesContent":["/**\n * Defensive normalizer for single-line `graph` / `flowchart` Mermaid source.\n *\n * Some LLMs emit the entire diagram on one line. Mermaid's parser splits\n * statements on newlines, so a single-line graph fails outright. This helper\n * inserts newlines on safe statement boundaries so the diagram has a chance\n * of parsing. Only attempts normalization when:\n * 1. The source has no embedded newlines (i.e. is genuinely single-line), and\n * 2. The first directive is `graph` or `flowchart`.\n *\n * Other diagram types (sequenceDiagram, classDiagram, gantt, …) have very\n * different syntaxes — applying these heuristics to them would corrupt valid\n * input, so they're left untouched.\n *\n * Boundaries we split on:\n * - After the diagram-type header (`graph TD`, `flowchart LR`, …).\n * - Before each `style` / `classDef` / `class` / `linkStyle` / `click`\n * / `subgraph` keyword.\n * - Before/after `end` (closes a subgraph block).\n * - After a `]` (label close) that's followed by another node identifier\n * starting a new edge or node declaration.\n */\nexport function normalizeMermaidGraph(source: string): string {\n // Already multi-line — assume it's well-formed; don't touch it.\n if (/\\n/.test(source)) return source\n\n const headerMatch = source.match(/^\\s*(graph|flowchart)\\s+\\w+\\s+/)\n if (!headerMatch) return source\n\n const header = headerMatch[0].trimEnd()\n let body = source.slice(headerMatch[0].length)\n\n // Insert newline before keywords that always start a new statement.\n body = body.replace(/\\s+(style|classDef|class|linkStyle|click|subgraph)\\s/g, '\\n$1 ')\n\n // `end` closes a subgraph: put it on its own line, with a break after it\n // too so any trailing statements don't stay attached.\n body = body.replace(/\\s+end\\b\\s*/g, '\\nend\\n')\n\n // After a label close (`]`), if the next token looks like a Mermaid node id\n // followed by another `[` or `-->`, that's a new statement starting.\n body = body.replace(/\\]\\s+(?=[A-Za-z_][\\w-]*\\s*(?:\\[|-->))/g, ']\\n')\n\n // Collapse any accidental runs of blank lines we may have produced.\n body = body.replace(/\\n{2,}/g, '\\n')\n\n return `${header}\\n${body.trimStart()}`\n}\n","/**\n * MermaidDiagram Component\n *\n * Renders a Mermaid diagram from source code.\n * Used inside MarkdownRenderer to handle ```mermaid code blocks.\n * Lazy-loads the mermaid library to avoid bloating the initial bundle.\n */\n\nimport { useState, useEffect, useId } from 'react'\nimport { normalizeMermaidGraph } from '../../chat/mermaid-normalize'\n\ninterface MermaidDiagramProps {\n /** Mermaid diagram source code */\n chart: string\n}\n\n// Lazy-load and initialize mermaid once\nlet mermaidInstance: typeof import('mermaid').default | null = null\nlet mermaidLoadPromise: Promise<typeof import('mermaid').default> | null = null\n\nasync function getMermaid() {\n if (mermaidInstance) return mermaidInstance\n if (!mermaidLoadPromise) {\n mermaidLoadPromise = import('mermaid').then((mod) => {\n const m = mod.default\n m.initialize({\n startOnLoad: false,\n theme: 'default',\n securityLevel: 'strict',\n flowchart: { useMaxWidth: true, curve: 'basis' },\n })\n mermaidInstance = m\n return m\n })\n }\n return mermaidLoadPromise\n}\n\nexport function MermaidDiagram({ chart }: MermaidDiagramProps) {\n const [svg, setSvg] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const uniqueId = useId().replace(/:/g, '-')\n\n useEffect(() => {\n let cancelled = false\n\n async function render() {\n const mermaid = await getMermaid()\n const diagramId = `mermaid${uniqueId}`\n\n // Validate with parse() before render(). In Mermaid v11 a render() with\n // bad source can return a \"Syntax error in text\" bomb SVG instead of\n // throwing — and it appends DOM side-effects of its own — so a try/catch\n // around render() doesn't reliably catch failures and the bomb leaks\n // into the page (especially under React StrictMode where effects run\n // twice). parse() throws cleanly with no DOM side-effects.\n //\n // Defensive rescue: some LLMs emit single-line `graph`/`flowchart`\n // source. If the original parse fails, try a normalized variant. The\n // normalizer is a no-op on already-multi-line source and on non-graph\n // diagram types, so this only helps the bad-source case and never\n // corrupts valid input.\n let validSource: string | null = null\n let firstErr: unknown\n try {\n await mermaid.parse(chart)\n validSource = chart\n } catch (err) {\n firstErr = err\n const normalized = normalizeMermaidGraph(chart)\n if (normalized !== chart) {\n try {\n await mermaid.parse(normalized)\n validSource = normalized\n } catch (retryErr) {\n console.warn('Mermaid normalized parse also failed', retryErr)\n }\n }\n }\n\n if (cancelled) return\n\n if (!validSource) {\n console.warn('Mermaid parse failed, showing source', firstErr)\n setError('Failed to render diagram')\n setSvg(null)\n return\n }\n\n try {\n const { svg: renderedSvg } = await mermaid.render(diagramId, validSource)\n if (!cancelled) {\n setSvg(renderedSvg)\n setError(null)\n }\n } catch (renderErr) {\n if (!cancelled) {\n console.warn('Mermaid render failed despite parse success', renderErr)\n setError('Failed to render diagram')\n setSvg(null)\n }\n }\n }\n\n render()\n return () => {\n cancelled = true\n }\n }, [chart, uniqueId])\n\n if (error) {\n // Fall back to showing the raw source in a code block\n return (\n <div className=\"code-block\" data-testid=\"mermaid-error\">\n <div className=\"text-sm text-muted-foreground mb-1\">{error}</div>\n <code className=\"language-mermaid\">{chart}</code>\n </div>\n )\n }\n\n if (!svg) {\n return (\n <div\n className=\"flex items-center justify-center py-8 text-muted-foreground text-sm\"\n data-testid=\"mermaid-loading\"\n >\n Rendering diagram...\n </div>\n )\n }\n\n return (\n <div\n className=\"mermaid-diagram my-4 overflow-x-auto rounded-md border border-border bg-background p-4\"\n data-testid=\"mermaid-diagram\"\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )\n}\n","/**\n * The workspace a conversation's document references belong to, when it is not the open one: an\n * agent's direct-message thread runs in the agent's workspace, so the documents it names are there.\n * A reference then opens that workspace first (`openDocument(id, { workspaceId })`).\n */\n\nimport { createContext, useContext, type ReactNode } from 'react'\nimport { useBlocksEnvironment } from '../../provider/environment'\n\n/** The workspace of the documents referenced inside it (null: the open workspace). */\nexport const DocumentWorkspaceContext = createContext<string | null>(null)\nexport const useDocumentWorkspace = () => useContext(DocumentWorkspaceContext)\n\n/** A reference to a document of another workspace: opening it opens that workspace first. */\nexport function WorkspaceDocumentReference({\n workspaceId,\n docId,\n children,\n className = 'inline-flex rounded-full border px-2 py-0.5 text-xs hover:bg-muted',\n}: {\n workspaceId: string\n docId: string\n children?: ReactNode\n className?: string\n}) {\n const { openDocument } = useBlocksEnvironment()\n return (\n <button\n type=\"button\"\n className={className}\n onClick={() => openDocument(docId, { workspaceId })}\n >\n {children ?? docId}\n </button>\n )\n}\n","/**\n * The conversation's markdown: the kit's `MarkdownRenderer` (`@arbidocs/react`: sanitised HTML,\n * slugs, lazy KaTeX, streaming blocks, tables, code) with what a conversation adds: @mention chips,\n * workspace documents opening in the viewer, quiet external links, document and email pills (the\n * host's chips, `ArbiChatHost.renderDocumentChip` / `renderMailChip`) and Mermaid diagrams.\n */\nimport { useArbiHost, useArbiSession, useDocument } from '@arbidocs/react'\nimport { mentionFromHref, type MentionKind } from '@arbidocs/react/shell'\nimport {\n EntityPill,\n getDocumentTitle,\n MarkdownCode,\n MarkdownLink,\n MarkdownRenderer as KitMarkdownRenderer,\n MarkdownStreamingContext,\n type MarkdownRendererProps as KitMarkdownRendererProps,\n DocumentEntity,\n} from '@arbidocs/react/ui'\nimport React, { useContext, useMemo } from 'react'\nimport { FileText, Mail } from 'lucide-react'\n\n/** The markdown element overrides, as the kit's renderer takes them. */\ntype Components = NonNullable<KitMarkdownRendererProps['components']>\nimport { useCompactChat } from '../../chat/CompactChatContext'\nimport { MentionChip } from '../../chat/MentionMenu'\nimport { QuietLink } from '../../citations/QuietMarks'\nimport { rehypeDocEntityPills } from '../../chat/rehype-doc-entity-pills'\nimport { workspaceDocIdFromHref } from '../../chat/doc-links'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { MermaidDiagram } from './MermaidDiagram'\nimport { useDocumentWorkspace, WorkspaceDocumentReference } from './DocumentWorkspaceContext'\n\n/** Plain text of a link's children (the `@Label` of a mention link). */\nfunction childrenText(children: React.ReactNode): string {\n return React.Children.toArray(children)\n .map((child) => (typeof child === 'string' || typeof child === 'number' ? String(child) : ''))\n .join('')\n}\n\n/** A mention chip; a mention of the reader stands out. */\nfunction MentionLink({ kind, id, text }: { kind: MentionKind; id: string; text: string }) {\n const currentUserId = useArbiSession().user?.external_id\n return (\n <MentionChip\n kind={kind}\n id={id}\n label={text.replace(/^@/, '')}\n isSelf={kind === 'user' && id === currentUserId}\n />\n )\n}\n\n/**\n * A link to elsewhere, as quiet text. Its menu (Open link / Copy link) is the deliberate step\n * the old confirmation dialog used to be; nothing opens until the menu's primary row is chosen.\n */\nexport function ExternalLink({ href, children }: React.ComponentPropsWithoutRef<'a'>) {\n return (\n <QuietLink href={href} kind=\"external\">\n {children}\n </QuietLink>\n )\n}\n\n/**\n * A workspace document referenced by a link's href rather than by its text.\n *\n * `rehypeDocEntityPills` turns a bare `doc-…` id into a pill, but it only walks\n * TEXT nodes — so `[NVDA DCF Valuation Report](…doc-abc12345…)`, which is how an\n * answer links an artifact it just saved, keeps the id in the href where the\n * plugin never looks. The link then fell through to `ExternalLink`, and opening\n * your own workspace document asked you to confirm an \"external link\" and\n * launched a new tab. It opens in the document viewer, like the pill and the\n * artifact card already do.\n */\nexport function InternalDocLink({\n docId,\n href,\n children,\n}: React.ComponentPropsWithoutRef<'a'> & { docId: string }) {\n const { openDocument } = useBlocksEnvironment()\n const workspaceId = useDocumentWorkspace()\n if (workspaceId) {\n return (\n <WorkspaceDocumentReference workspaceId={workspaceId} docId={docId}>\n {children}\n </WorkspaceDocumentReference>\n )\n }\n\n return (\n <QuietLink href={href} kind=\"document\" onOpen={() => openDocument(docId)}>\n {children}\n </QuietLink>\n )\n}\n\n/** A document of the workspace, as a pill: the host's chip, else the document entity. */\nexport function DocumentChip({ docId }: { docId: string }) {\n const render = useArbiHost().chat?.renderDocumentChip\n const workspaceId = useDocumentWorkspace()\n if (workspaceId) return <WorkspaceDocumentReference workspaceId={workspaceId} docId={docId} />\n return render ? <>{render(docId)}</> : <DefaultDocumentChip docId={docId} />\n}\n\nfunction DefaultDocumentChip({ docId }: { docId: string }) {\n const compact = useCompactChat()\n const { data: doc } = useDocument(docId)\n const { openDocument } = useBlocksEnvironment()\n if (compact && doc)\n return (\n <button\n type=\"button\"\n className=\"inline text-left text-primary underline decoration-primary/30 underline-offset-2 hover:decoration-primary\"\n onClick={() => openDocument(docId)}\n >\n {getDocumentTitle(doc)}\n </button>\n )\n if (!doc)\n return (\n <EntityPill\n icon={<FileText className=\"w-3.5 h-3.5 flex-shrink-0\" />}\n label={docId}\n size=\"sm\"\n onClick={() => openDocument(docId)}\n data-testid=\"doc-entity-pill\"\n />\n )\n return (\n <DocumentEntity doc={doc} onClick={() => openDocument(docId)} data-testid=\"doc-entity-pill\" />\n )\n}\n\n/** An email of the person's mailbox, as a pill: the host's chip, else a plain \"Email\". */\nfunction MailChip({ mailId }: { mailId: string }) {\n const render = useArbiHost().chat?.renderMailChip\n if (render) return <>{render(mailId)}</>\n return (\n <EntityPill\n icon={<Mail className=\"w-3.5 h-3.5 flex-shrink-0\" />}\n label=\"Email\"\n size=\"sm\"\n data-testid=\"mail-entity-pill\"\n />\n )\n}\n\n/**\n * The conversation's overrides, layered on the kit's defaults. Module scope, so the reference is stable\n * and memoised markdown blocks do not re-parse.\n */\nconst conversationMarkdownComponents: Partial<Components> = {\n a: function ConversationMarkdownLink({\n href,\n children,\n ...props\n }: React.ComponentPropsWithoutRef<'a'>) {\n const deploymentDomain = useBlocksEnvironment().runtimeConfig.deploymentDomain\n // @mentions: `linkMentions` turned them into `#mention-<id>` links; draw them as chips.\n const mention = mentionFromHref(href)\n if (mention) {\n return <MentionLink kind={mention.kind} id={mention.id} text={childrenText(children)} />\n }\n // Bookmarks: in-page anchors are near-invisible text; the menu jumps or copies the place.\n if (href?.startsWith('#') && !href.startsWith('#cite-')) {\n return (\n <QuietLink href={href} kind=\"anchor\">\n {children}\n </QuietLink>\n )\n }\n // Citations, `cite:` references and bare links: the kit's link.\n if (!href || href.startsWith('#') || href.startsWith('cite:')) {\n return (\n <MarkdownLink href={href} {...props}>\n {children}\n </MarkdownLink>\n )\n }\n // A workspace document is not an external link, wherever it is hosted: it opens in the viewer.\n const docId = workspaceDocIdFromHref(href, deploymentDomain)\n if (docId) {\n return (\n <InternalDocLink docId={docId} href={href} {...props}>\n {children}\n </InternalDocLink>\n )\n }\n return (\n <ExternalLink href={href} {...props}>\n {children}\n </ExternalLink>\n )\n },\n code: function ConversationMarkdownCode(\n props: React.ComponentPropsWithoutRef<'code'> & { inline?: boolean }\n ) {\n const isStreaming = useContext(MarkdownStreamingContext)\n const { className, children } = props\n const language = /language-(\\w+)/.exec(className || '')?.[1]\n if (!language) {\n // Answers often backtick a bare doc id (`doc-f7b3eeb5`). The text-node pass skips code, so\n // the id would stay monospace text; show it as the document pill. Only a whole id (eight\n // alphanumerics): while streaming, a partial one (\"doc-e\") would be looked up and 404.\n const codeText = typeof children === 'string' ? children.trim() : ''\n if (/^doc-[a-zA-Z0-9]{8}$/.test(codeText)) return <DocumentChip docId={codeText} />\n if (/^eml-[a-zA-Z0-9]{8}$/.test(codeText)) return <MailChip mailId={codeText} />\n }\n // Mermaid lazy-loads its own bundle and re-renders SVG on every change. While streaming the\n // fence is almost always partial, so it stays a code block until generation completes.\n if (language === 'mermaid' && !isStreaming) {\n return <MermaidDiagram chart={String(children).replace(/\\n$/, '')} />\n }\n return <MarkdownCode {...props} />\n },\n span: ({ children, className, ...props }: React.ComponentPropsWithoutRef<'span'>) => {\n const docId = (props as Record<string, unknown>)['data-doc-id'] as string | undefined\n if (docId) return <DocumentChip docId={docId} />\n const mailId = (props as Record<string, unknown>)['data-mail-id'] as string | undefined\n if (mailId) return <MailChip mailId={mailId} />\n return (\n <span className={className} {...props}>\n {children}\n </span>\n )\n },\n}\n\n/** Bare `doc-…` / `eml-…` ids in text become `<span data-doc-id>` / `<span data-mail-id>` pills. */\nconst conversationRehypePlugins = [rehypeDocEntityPills]\n\nexport type ConnectedMarkdownProps = Omit<\n KitMarkdownRendererProps,\n 'rehypePlugins' | 'allowHtml' | 'renderCitation'\n>\n\n/**\n * The kit's renderer with the conversation's overrides; a caller's `components` (e.g. the citation\n * core's) still win over both.\n */\nfunction ConnectedMarkdownComponent({ components, ...props }: ConnectedMarkdownProps) {\n const merged = useMemo(\n () =>\n components\n ? { ...conversationMarkdownComponents, ...components }\n : conversationMarkdownComponents,\n [components]\n )\n return (\n <KitMarkdownRenderer {...props} components={merged} rehypePlugins={conversationRehypePlugins} />\n )\n}\n\nexport const ConnectedMarkdown = React.memo(ConnectedMarkdownComponent)\n"]}
@@ -3,30 +3,30 @@
3
3
 
4
4
  var chunkYZ6YOOTF_cjs = require('./chunk-YZ6YOOTF.cjs');
5
5
  var chunkKWJW5TMH_cjs = require('./chunk-KWJW5TMH.cjs');
6
- var chunkY24V6HPR_cjs = require('./chunk-Y24V6HPR.cjs');
7
- var chunkP77YTTJ3_cjs = require('./chunk-P77YTTJ3.cjs');
8
- var chunk6UTKM5AB_cjs = require('./chunk-6UTKM5AB.cjs');
9
- var chunkNJCK6V6U_cjs = require('./chunk-NJCK6V6U.cjs');
10
- var chunkVGCTYTEW_cjs = require('./chunk-VGCTYTEW.cjs');
6
+ var chunk57EE6CMW_cjs = require('./chunk-57EE6CMW.cjs');
7
+ var chunk3ODEWSRO_cjs = require('./chunk-3ODEWSRO.cjs');
8
+ var chunkJSQQV23D_cjs = require('./chunk-JSQQV23D.cjs');
9
+ var chunkXKDUPU7B_cjs = require('./chunk-XKDUPU7B.cjs');
10
+ var chunkVTYJAZDU_cjs = require('./chunk-VTYJAZDU.cjs');
11
11
  var chunkP5AQYC4D_cjs = require('./chunk-P5AQYC4D.cjs');
12
- var chunkWAV762GP_cjs = require('./chunk-WAV762GP.cjs');
12
+ var chunkGQXPNIRE_cjs = require('./chunk-GQXPNIRE.cjs');
13
13
  var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
14
14
  var chunkZ3LFF3YT_cjs = require('./chunk-Z3LFF3YT.cjs');
15
- var chunkNSD37OF5_cjs = require('./chunk-NSD37OF5.cjs');
16
- var chunkDDIW4HLU_cjs = require('./chunk-DDIW4HLU.cjs');
17
- var chunkTP5PGWIO_cjs = require('./chunk-TP5PGWIO.cjs');
18
- var chunk7JLJH5CW_cjs = require('./chunk-7JLJH5CW.cjs');
19
- var chunkR7CJEIA5_cjs = require('./chunk-R7CJEIA5.cjs');
20
- var chunkWXUU3COI_cjs = require('./chunk-WXUU3COI.cjs');
21
- var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
22
- var chunkHQDR43JC_cjs = require('./chunk-HQDR43JC.cjs');
23
- var chunkJR2YSBD5_cjs = require('./chunk-JR2YSBD5.cjs');
24
15
  var chunk5SKHK3BG_cjs = require('./chunk-5SKHK3BG.cjs');
25
16
  var chunkIDCD5TEZ_cjs = require('./chunk-IDCD5TEZ.cjs');
17
+ var chunkNSD37OF5_cjs = require('./chunk-NSD37OF5.cjs');
18
+ var chunk3U36VYMD_cjs = require('./chunk-3U36VYMD.cjs');
19
+ var chunk4IOYQLKG_cjs = require('./chunk-4IOYQLKG.cjs');
20
+ var chunk7JLJH5CW_cjs = require('./chunk-7JLJH5CW.cjs');
26
21
  var chunkHSLPFBK2_cjs = require('./chunk-HSLPFBK2.cjs');
22
+ var chunkLYTIQQQ2_cjs = require('./chunk-LYTIQQQ2.cjs');
23
+ var chunkMZ2KZXNU_cjs = require('./chunk-MZ2KZXNU.cjs');
27
24
  var chunkQGVOT7E4_cjs = require('./chunk-QGVOT7E4.cjs');
28
25
  var chunkQRAQZTJE_cjs = require('./chunk-QRAQZTJE.cjs');
29
26
  var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
27
+ var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
28
+ var chunkHQDR43JC_cjs = require('./chunk-HQDR43JC.cjs');
29
+ var chunkJR2YSBD5_cjs = require('./chunk-JR2YSBD5.cjs');
30
30
  var chunkTKHCIHE2_cjs = require('./chunk-TKHCIHE2.cjs');
31
31
  var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
32
32
  var react = require('@arbidocs/react');
@@ -70,7 +70,7 @@ function ConnectedTaskComposer({
70
70
  const startLater = startLaterProp && automationsEnabled;
71
71
  const isWorkflow = kind === "workflow";
72
72
  const isEdit = isWorkflow ? !!editingWorkflow : !!task;
73
- const { forTasks: baseSkills, skills } = chunk6UTKM5AB_cjs.useWorkflowDefinitions();
73
+ const { forTasks: baseSkills, skills } = chunkJSQQV23D_cjs.useWorkflowDefinitions();
74
74
  const { data: reviewFields = [] } = react.useTags();
75
75
  const scheduledSkills = react$1.useMemo(
76
76
  () => [
@@ -129,8 +129,8 @@ function ConnectedTaskComposer({
129
129
  const { data: workspaces = [] } = react.useWorkspaces();
130
130
  const { tasks: allTasks } = react.useWorkItems();
131
131
  const { data: documents = [] } = react.useDocuments();
132
- const { create, update, updateWorkflow, isPending } = chunk6UTKM5AB_cjs.useWorkflowTasks();
133
- const scopeSource = chunkWAV762GP_cjs.useConnectedWorkflowScopeSource();
132
+ const { create, update, updateWorkflow, isPending } = chunkJSQQV23D_cjs.useWorkflowTasks();
133
+ const scopeSource = chunkGQXPNIRE_cjs.useConnectedWorkflowScopeSource();
134
134
  const activeWorkspaceId = react.useArbiSessionState((s) => s.workspaceId);
135
135
  const planWork = react.usePlanWork(activeWorkspaceId);
136
136
  const activeWorkspace = react$1.useMemo(
@@ -148,7 +148,7 @@ function ConnectedTaskComposer({
148
148
  const label = (t) => t.title?.trim() || "Untitled task";
149
149
  if (isWorkflow) return allTasks.map((t) => ({ id: t.external_id, name: label(t) }));
150
150
  const subject = task ?? { external_id: "__new__" };
151
- return chunkDDIW4HLU_cjs.moveTargets(
151
+ return chunk3U36VYMD_cjs.moveTargets(
152
152
  [...allTasks.filter((t) => t.external_id !== subject.external_id), subject],
153
153
  subject
154
154
  ).map((t) => ({ id: t.external_id, name: label(t) }));
@@ -286,7 +286,7 @@ function ConnectedTaskComposer({
286
286
  }
287
287
  };
288
288
  return /* @__PURE__ */ jsxRuntime.jsx(
289
- chunkDDIW4HLU_cjs.TaskComposer,
289
+ chunk3U36VYMD_cjs.TaskComposer,
290
290
  {
291
291
  open,
292
292
  onOpenChange,
@@ -300,7 +300,7 @@ function ConnectedTaskComposer({
300
300
  tasks: taskOptions,
301
301
  initialValues,
302
302
  timezones,
303
- eventOptions: chunkTP5PGWIO_cjs.AUTOMATION_EVENTS,
303
+ eventOptions: chunk4IOYQLKG_cjs.AUTOMATION_EVENTS,
304
304
  eventWorkflowOptions: workspaceAutomations.filter((item) => item.external_id !== editingWorkflow?.external_id).map((item) => ({ id: item.external_id, label: item.name })),
305
305
  isPending,
306
306
  planDrafting: planWork.isPending,
@@ -308,7 +308,7 @@ function ConnectedTaskComposer({
308
308
  renderIcon: chunk7JLJH5CW_cjs.renderWorkflowIcon,
309
309
  scopeSource,
310
310
  renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
311
- chunkWAV762GP_cjs.ConnectedWorkflowDocumentsField,
311
+ chunkGQXPNIRE_cjs.ConnectedWorkflowDocumentsField,
312
312
  {
313
313
  field,
314
314
  value,
@@ -340,7 +340,7 @@ function ConnectedTaskComposer({
340
340
  },
341
341
  onSubmit: submit,
342
342
  goal: (values) => values.workflowId === chunk7JLJH5CW_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
343
- chunkDDIW4HLU_cjs.TaskPlan,
343
+ chunk3U36VYMD_cjs.TaskPlan,
344
344
  {
345
345
  plan,
346
346
  onChange: setPlan,
@@ -386,7 +386,7 @@ function ConnectedWorkflowHistory({
386
386
  const { openConversation } = chunkTKHCIHE2_cjs.useBlocksEnvironment();
387
387
  const { data: runs = [], isLoading } = react.useWorkflowRuns(workflow?.external_id);
388
388
  return /* @__PURE__ */ jsxRuntime.jsx(
389
- chunkDDIW4HLU_cjs.TaskRunsDialog,
389
+ chunk3U36VYMD_cjs.TaskRunsDialog,
390
390
  {
391
391
  inline,
392
392
  hideHeader,
@@ -421,14 +421,14 @@ function ConnectedTaskActivityDialog({
421
421
  const activity = react.useConversationActivity(conversationId, { live });
422
422
  const { data: agents = [] } = react.useAgents();
423
423
  const { userId } = chunkJR2YSBD5_cjs.useConnectedWorkspace();
424
- const { members } = chunkVGCTYTEW_cjs.useConnectedWorkspaceRole();
424
+ const { members } = chunkVTYJAZDU_cjs.useConnectedWorkspaceRole();
425
425
  const renderPerson = react$1.useCallback(
426
426
  (id) => {
427
427
  const isMe = !!id && id === userId;
428
428
  const member = members.find((m) => m.user.external_id === id)?.user;
429
429
  const name = member && [member.given_name, member.family_name].filter(Boolean).join(" ") || member?.email;
430
430
  const person = { id, label: isMe ? "You" : name || "Someone", isMe };
431
- return /* @__PURE__ */ jsxRuntime.jsx(chunkR7CJEIA5_cjs.PersonPill, { person });
431
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLYTIQQQ2_cjs.PersonPill, { person });
432
432
  },
433
433
  [userId, members]
434
434
  );
@@ -437,7 +437,7 @@ function ConnectedTaskActivityDialog({
437
437
  [agents]
438
438
  );
439
439
  return /* @__PURE__ */ jsxRuntime.jsx(
440
- chunkDDIW4HLU_cjs.TaskActivityDialog,
440
+ chunk3U36VYMD_cjs.TaskActivityDialog,
441
441
  {
442
442
  open: true,
443
443
  onOpenChange: (open) => !open && onClose(),
@@ -474,7 +474,7 @@ function useRenderTaskPerson() {
474
474
  return react$1.useCallback(
475
475
  (person) => {
476
476
  const user = person.id ? byId.get(person.id) : void 0;
477
- return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkP77YTTJ3_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkR7CJEIA5_cjs.PersonPill, { person });
477
+ return user ? /* @__PURE__ */ jsxRuntime.jsx(chunk3ODEWSRO_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLYTIQQQ2_cjs.PersonPill, { person });
478
478
  },
479
479
  [byId]
480
480
  );
@@ -487,7 +487,7 @@ function ConnectedThreadTaskBar({
487
487
  renderIcon
488
488
  }) {
489
489
  const { conversations } = react.useConversationItems();
490
- const { activity, items, related, signals, startedBy } = chunkY24V6HPR_cjs.useConnectedThreadActivity(conversationId);
490
+ const { activity, items, related, signals, startedBy } = chunk57EE6CMW_cjs.useConnectedThreadActivity(conversationId);
491
491
  const canEditShared = react.useCanEditShared();
492
492
  const update = react.useUpdateConversation();
493
493
  const actOnStep = react.useActOnStep();
@@ -508,7 +508,7 @@ function ConnectedThreadTaskBar({
508
508
  const person = members.find((m) => m.user.external_id === id)?.user;
509
509
  return person ? ui.getUserDisplayName(person) : void 0;
510
510
  };
511
- const steps = chunkTP5PGWIO_cjs.fromPlanSteps(task?.plan?.steps ?? []);
511
+ const steps = chunk4IOYQLKG_cjs.fromPlanSteps(task?.plan?.steps ?? []);
512
512
  const states = chunkQGVOT7E4_cjs.stepStatesFromActivity(activity.data ?? []);
513
513
  const runInputs = task?.skill_inputs ?? {};
514
514
  const stepCall = (body) => actOnStep.mutateAsync({ conversationId, body });
@@ -535,7 +535,7 @@ function ConnectedThreadTaskBar({
535
535
  ).finally(() => setBusy(false));
536
536
  };
537
537
  const strip = /* @__PURE__ */ jsxRuntime.jsx(
538
- chunkDDIW4HLU_cjs.WorkflowThreadStrip,
538
+ chunk3U36VYMD_cjs.WorkflowThreadStrip,
539
539
  {
540
540
  renderIcon,
541
541
  ...variant === "steps" ? { maxSpan: 3, current: currentStepId, onSelectStep } : {},
@@ -564,7 +564,7 @@ function ConnectedThreadTaskBar({
564
564
  renderStepAction: (step, phase) => (
565
565
  // A signer or a draft's person acts on their step even on a thread they cannot edit.
566
566
  canEdit || phase === "waiting" || phase === "done" ? /* @__PURE__ */ jsxRuntime.jsx(
567
- chunkDDIW4HLU_cjs.WorkflowStepAction,
567
+ chunk3U36VYMD_cjs.WorkflowStepAction,
568
568
  {
569
569
  step,
570
570
  phase,
@@ -602,8 +602,8 @@ function ConnectedThreadTaskBar({
602
602
  // A workflow run: its named steps, with what happened in the thread under each.
603
603
  strip
604
604
  ) : items.length || startedBy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
605
- startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunkDDIW4HLU_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
606
- /* @__PURE__ */ jsxRuntime.jsx(chunkTP5PGWIO_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
605
+ startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunk3U36VYMD_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
606
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4IOYQLKG_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
607
607
  ] }) : (
608
608
  // Ordinary chats record no activity events, so an empty ribbon says nothing rather than
609
609
  // "No recorded activity yet" while the answer and its steps are right there in the thread.
@@ -688,7 +688,7 @@ function ConnectedThreadTaskBar({
688
688
  ] }),
689
689
  error && /* @__PURE__ */ jsxRuntime.jsx("span", { role: "alert", className: "text-xs text-destructive", children: error }),
690
690
  /* @__PURE__ */ jsxRuntime.jsx(
691
- chunkNJCK6V6U_cjs.RenameDialog,
691
+ chunkXKDUPU7B_cjs.RenameDialog,
692
692
  {
693
693
  open: renameOpen,
694
694
  onClose: () => setRenameOpen(false),
@@ -721,7 +721,7 @@ ${labels.map((l) => `${l.key}=${l.name}`).join("\n")}`;
721
721
  if (known) return known;
722
722
  const setUp = (async () => {
723
723
  const existing = await arbi.tags.list({ workspaceId });
724
- const { ids, missing } = chunkDDIW4HLU_cjs.matchRequiredLabels(labels, existing);
724
+ const { ids, missing } = chunk3U36VYMD_cjs.matchRequiredLabels(labels, existing);
725
725
  for (const label of missing) {
726
726
  const tag = await createTag({
727
727
  name: label.name,
@@ -973,7 +973,7 @@ function useWorkflowRunTarget({
973
973
  }) {
974
974
  const { workspaceId: open } = chunkJR2YSBD5_cjs.useConnectedWorkspace();
975
975
  const session = react.useArbiSessionStore();
976
- const selectWorkspace = chunkY24V6HPR_cjs.useSelectWorkspace();
976
+ const selectWorkspace = chunk57EE6CMW_cjs.useSelectWorkspace();
977
977
  const createProject = react.useCreateProject();
978
978
  const { mutateAsync: updateProject } = react.useUpdateProjectFields();
979
979
  const { mutateAsync: updateWorkspace } = react.useUpdateWorkspace();
@@ -1180,7 +1180,7 @@ function WorkflowRunProjectChooser({
1180
1180
  "data-testid": `${testId}-new-project`,
1181
1181
  children: [
1182
1182
  /* @__PURE__ */ jsxRuntime.jsx(
1183
- chunkWXUU3COI_cjs.SchemaForm,
1183
+ chunkMZ2KZXNU_cjs.SchemaForm,
1184
1184
  {
1185
1185
  fields,
1186
1186
  values,
@@ -1428,7 +1428,7 @@ function useWorkflowThread(workflow, options = {}) {
1428
1428
  );
1429
1429
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
1430
1430
  const steps = react$1.useMemo(
1431
- () => chunkQGVOT7E4_cjs.workflowSteps(workflow).length > 0 ? chunkQGVOT7E4_cjs.workflowSteps(workflow) : chunkTP5PGWIO_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1431
+ () => chunkQGVOT7E4_cjs.workflowSteps(workflow).length > 0 ? chunkQGVOT7E4_cjs.workflowSteps(workflow) : chunk4IOYQLKG_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1432
1432
  [workflow, conversation?.plan?.steps]
1433
1433
  );
1434
1434
  const activity = react.useConversationActivity(threadId, { live: !!threadId });
@@ -1475,7 +1475,7 @@ function useWorkflowThread(workflow, options = {}) {
1475
1475
  const createThread = react$1.useCallback(
1476
1476
  async (values, done) => {
1477
1477
  const prepared = await options.beforeStart?.();
1478
- const planned = prepared?.labelIds ? chunkDDIW4HLU_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
1478
+ const planned = prepared?.labelIds ? chunk3U36VYMD_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
1479
1479
  const created = await createWork.mutateAsync({
1480
1480
  title: chunkQGVOT7E4_cjs.runThreadTitle(workflow, values).slice(0, 60),
1481
1481
  description: workflow.description || null,
@@ -1489,7 +1489,7 @@ function useWorkflowThread(workflow, options = {}) {
1489
1489
  criteria: [],
1490
1490
  max_passes: 3,
1491
1491
  documents: [],
1492
- steps: chunkTP5PGWIO_cjs.toPlanSteps(planned, {
1492
+ steps: chunk4IOYQLKG_cjs.toPlanSteps(planned, {
1493
1493
  inputs: values,
1494
1494
  resolveWorkflow: options.resolveWorkflow,
1495
1495
  compose: options.compose
@@ -1576,7 +1576,7 @@ function useWorkflowThread(workflow, options = {}) {
1576
1576
  const anyRunning = Object.values(states).some((s) => s.status === "running");
1577
1577
  const needsStart = !threadId || idle && !anyRunning;
1578
1578
  const runError = idle ? conversation?.last_error ?? null : null;
1579
- const view = chunkDDIW4HLU_cjs.useWorkflowView({
1579
+ const view = chunk3U36VYMD_cjs.useWorkflowView({
1580
1580
  steps,
1581
1581
  states,
1582
1582
  inputs,
@@ -1712,7 +1712,7 @@ function WorkflowWordDialog({
1712
1712
  title: title ?? labels.wordTitle,
1713
1713
  size: "xl",
1714
1714
  testId: "workflow-word-dialog",
1715
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVGCTYTEW_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
1715
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVTYJAZDU_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
1716
1716
  }
1717
1717
  );
1718
1718
  }
@@ -1868,7 +1868,7 @@ function WorkflowRunBody({
1868
1868
  const session = react.useArbiSessionStore();
1869
1869
  const openRef = react$1.useRef(workspaceId);
1870
1870
  openRef.current = workspaceId;
1871
- const required = chunkDDIW4HLU_cjs.requiredLabelsOf(given);
1871
+ const required = chunk3U36VYMD_cjs.requiredLabelsOf(given);
1872
1872
  const ownEnsureLabels = useEnsureRequiredLabels();
1873
1873
  const ensureLabels = page?.ensureLabels ?? ownEnsureLabels;
1874
1874
  const [startedLabelIds, setStartedLabelIds] = react$1.useState({});
@@ -1883,7 +1883,7 @@ function WorkflowRunBody({
1883
1883
  const fromStep = pageTarget ? projectStepOf(projectFrom) : void 0;
1884
1884
  const projectStep = fromStep?.step;
1885
1885
  const workflow = react$1.useMemo(
1886
- () => withCommitStep(chunkDDIW4HLU_cjs.withLabelIds(given, labelIds), projectStep),
1886
+ () => withCommitStep(chunk3U36VYMD_cjs.withLabelIds(given, labelIds), projectStep),
1887
1887
  [given, labelIds, projectStep]
1888
1888
  );
1889
1889
  const hostBeforeStart = options?.beforeStart;
@@ -2076,7 +2076,7 @@ function WorkflowRunBody({
2076
2076
  ) : null;
2077
2077
  };
2078
2078
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
2079
- chunkDDIW4HLU_cjs.WorkflowRunner,
2079
+ chunk3U36VYMD_cjs.WorkflowRunner,
2080
2080
  {
2081
2081
  people,
2082
2082
  ...runnerProps,
@@ -2137,7 +2137,7 @@ function WorkflowRunBody({
2137
2137
  pageBar,
2138
2138
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2139
2139
  !page && /* @__PURE__ */ jsxRuntime.jsx(
2140
- chunkDDIW4HLU_cjs.WorkflowStepBar,
2140
+ chunk3U36VYMD_cjs.WorkflowStepBar,
2141
2141
  {
2142
2142
  run: view,
2143
2143
  levels: chunkQGVOT7E4_cjs.stepLevels(view.steps),
@@ -2377,7 +2377,7 @@ function ConnectedWorkflowRunPage({
2377
2377
  workspaceId,
2378
2378
  onProjectCreated
2379
2379
  });
2380
- const required = chunkDDIW4HLU_cjs.requiredLabelsOf(workflow);
2380
+ const required = chunk3U36VYMD_cjs.requiredLabelsOf(workflow);
2381
2381
  const ensure = useEnsureRequiredLabels();
2382
2382
  const labels = useRequiredLabels(required, target.target, ensure, target.stage === "ready");
2383
2383
  const fromStep = !!projectStepOf(projectFrom);
@@ -2502,5 +2502,5 @@ exports.useRequiredLabels = useRequiredLabels;
2502
2502
  exports.useTaskPeople = useTaskPeople;
2503
2503
  exports.useWorkflowsPageState = useWorkflowsPageState;
2504
2504
  exports.workflowRunView = workflowRunView;
2505
- //# sourceMappingURL=chunk-B2HNNG25.cjs.map
2506
- //# sourceMappingURL=chunk-B2HNNG25.cjs.map
2505
+ //# sourceMappingURL=chunk-VBL3SHWX.cjs.map
2506
+ //# sourceMappingURL=chunk-VBL3SHWX.cjs.map