@arbidocs/blocks 0.4.95 → 0.4.96

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 (73) hide show
  1. package/dist/agents/index.cjs +281 -281
  2. package/dist/agents/index.js +5 -5
  3. package/dist/chat/index.cjs +127 -127
  4. package/dist/chat/index.js +4 -4
  5. package/dist/{chunk-DCZGYCN2.cjs → chunk-3WW32OUU.cjs} +4 -4
  6. package/dist/{chunk-DCZGYCN2.cjs.map → chunk-3WW32OUU.cjs.map} +1 -1
  7. package/dist/{chunk-E2AAIMXO.cjs → chunk-7RI3G5BO.cjs} +538 -168
  8. package/dist/chunk-7RI3G5BO.cjs.map +1 -0
  9. package/dist/{chunk-KBPHLW2R.cjs → chunk-B4SRYJLM.cjs} +3 -3
  10. package/dist/{chunk-KBPHLW2R.cjs.map → chunk-B4SRYJLM.cjs.map} +1 -1
  11. package/dist/{chunk-RZGVMV6B.cjs → chunk-CK6TU76J.cjs} +5 -5
  12. package/dist/{chunk-RZGVMV6B.cjs.map → chunk-CK6TU76J.cjs.map} +1 -1
  13. package/dist/{chunk-EJAYB7PP.js → chunk-EWSEQEPL.js} +4 -4
  14. package/dist/{chunk-EJAYB7PP.js.map → chunk-EWSEQEPL.js.map} +1 -1
  15. package/dist/{chunk-ZNDAXSDP.js → chunk-H4SVY5FH.js} +3 -3
  16. package/dist/{chunk-ZNDAXSDP.js.map → chunk-H4SVY5FH.js.map} +1 -1
  17. package/dist/{chunk-CKYA2IG5.cjs → chunk-HBF4BDRU.cjs} +3 -3
  18. package/dist/{chunk-CKYA2IG5.cjs.map → chunk-HBF4BDRU.cjs.map} +1 -1
  19. package/dist/{chunk-24CS7JWU.js → chunk-HOXKR26S.js} +3 -3
  20. package/dist/{chunk-24CS7JWU.js.map → chunk-HOXKR26S.js.map} +1 -1
  21. package/dist/{chunk-PDEHIGJ5.js → chunk-ICBAFX5B.js} +3 -3
  22. package/dist/{chunk-PDEHIGJ5.js.map → chunk-ICBAFX5B.js.map} +1 -1
  23. package/dist/{chunk-OYMYNYFV.cjs → chunk-IF6VAYIA.cjs} +5 -5
  24. package/dist/{chunk-OYMYNYFV.cjs.map → chunk-IF6VAYIA.cjs.map} +1 -1
  25. package/dist/{chunk-EOEDGJ75.js → chunk-JID3CZSY.js} +3 -3
  26. package/dist/{chunk-EOEDGJ75.js.map → chunk-JID3CZSY.js.map} +1 -1
  27. package/dist/{chunk-WXLKMEMB.js → chunk-K27SDLLN.js} +538 -168
  28. package/dist/chunk-K27SDLLN.js.map +1 -0
  29. package/dist/{chunk-VYKMBLDX.cjs → chunk-MP6FK43E.cjs} +8 -8
  30. package/dist/{chunk-VYKMBLDX.cjs.map → chunk-MP6FK43E.cjs.map} +1 -1
  31. package/dist/{chunk-VQ65UHTV.cjs → chunk-MROSCSPW.cjs} +45 -45
  32. package/dist/{chunk-VQ65UHTV.cjs.map → chunk-MROSCSPW.cjs.map} +1 -1
  33. package/dist/{chunk-TOVSTC2M.cjs → chunk-PSN4VWI7.cjs} +5 -5
  34. package/dist/{chunk-TOVSTC2M.cjs.map → chunk-PSN4VWI7.cjs.map} +1 -1
  35. package/dist/{chunk-3OXWJ3CZ.cjs → chunk-SC33PQTQ.cjs} +5 -5
  36. package/dist/{chunk-3OXWJ3CZ.cjs.map → chunk-SC33PQTQ.cjs.map} +1 -1
  37. package/dist/{chunk-HUFLBZWI.js → chunk-SF4BDUZS.js} +3 -3
  38. package/dist/{chunk-HUFLBZWI.js.map → chunk-SF4BDUZS.js.map} +1 -1
  39. package/dist/{chunk-QQH2NI5U.js → chunk-SJVUKXS6.js} +6 -6
  40. package/dist/{chunk-QQH2NI5U.js.map → chunk-SJVUKXS6.js.map} +1 -1
  41. package/dist/{chunk-UMY6Y6BM.js → chunk-VLOPZHFH.js} +3 -3
  42. package/dist/{chunk-UMY6Y6BM.js.map → chunk-VLOPZHFH.js.map} +1 -1
  43. package/dist/{chunk-GNHOB2ZB.cjs → chunk-XMBYDLZQ.cjs} +4 -4
  44. package/dist/{chunk-GNHOB2ZB.cjs.map → chunk-XMBYDLZQ.cjs.map} +1 -1
  45. package/dist/{chunk-YG7DGGCA.js → chunk-XQDM6T6C.js} +3 -3
  46. package/dist/{chunk-YG7DGGCA.js.map → chunk-XQDM6T6C.js.map} +1 -1
  47. package/dist/{chunk-YPKSLTL5.js → chunk-Y52CEKVD.js} +3 -3
  48. package/dist/{chunk-YPKSLTL5.js.map → chunk-Y52CEKVD.js.map} +1 -1
  49. package/dist/connect/docx.cjs +6 -6
  50. package/dist/connect/docx.js +4 -4
  51. package/dist/connect/index.cjs +46 -46
  52. package/dist/connect/index.js +16 -16
  53. package/dist/docx/NativeDocxEditor.d.ts +3 -1
  54. package/dist/docx/index.cjs +24 -24
  55. package/dist/docx/index.js +3 -3
  56. package/dist/docx/review/DocxEditorReview.d.ts +4 -2
  57. package/dist/docx/review/commentText.d.ts +7 -0
  58. package/dist/facts/index.cjs +5 -5
  59. package/dist/facts/index.js +2 -2
  60. package/dist/index.cjs +1117 -1117
  61. package/dist/index.js +17 -17
  62. package/dist/settings/index.cjs +1 -1
  63. package/dist/settings/index.js +1 -1
  64. package/dist/shell/index.cjs +67 -67
  65. package/dist/shell/index.js +3 -3
  66. package/dist/studio/index.cjs +7 -7
  67. package/dist/studio/index.js +6 -6
  68. package/dist/workflow-canvas/index.cjs +49 -49
  69. package/dist/workflow-canvas/index.js +6 -6
  70. package/package.json +4 -4
  71. package/src/docx/styles.css +473 -91
  72. package/dist/chunk-E2AAIMXO.cjs.map +0 -1
  73. package/dist/chunk-WXLKMEMB.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkVYKMBLDX_cjs = require('./chunk-VYKMBLDX.cjs');
5
4
  var chunkMUMH3Z6K_cjs = require('./chunk-MUMH3Z6K.cjs');
5
+ var chunkMP6FK43E_cjs = require('./chunk-MP6FK43E.cjs');
6
6
  var react$1 = require('react');
7
7
  var react = require('@arbidocs/react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
@@ -61,7 +61,7 @@ function useConnectedChat(options) {
61
61
  }
62
62
  function ConnectedAssistantDock(props) {
63
63
  const chat = useConnectedChat();
64
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVYKMBLDX_cjs.AssistantDock, { ...props, chat });
64
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkMP6FK43E_cjs.AssistantDock, { ...props, chat });
65
65
  }
66
66
 
67
67
  Object.defineProperty(exports, "redlineStats", {
@@ -81,5 +81,5 @@ exports.useConnectedAiTask = useConnectedAiTask;
81
81
  exports.useConnectedChat = useConnectedChat;
82
82
  exports.useSemanticSearch = useSemanticSearch;
83
83
  exports.useWorkspaceDocs = useWorkspaceDocs;
84
- //# sourceMappingURL=chunk-GNHOB2ZB.cjs.map
85
- //# sourceMappingURL=chunk-GNHOB2ZB.cjs.map
84
+ //# sourceMappingURL=chunk-XMBYDLZQ.cjs.map
85
+ //# sourceMappingURL=chunk-XMBYDLZQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/ai.tsx"],"names":["useConnection","useKitAiTask","useCallback","useKitWorkspaceDocs","useKitSemanticSearch","useWorkspaceUsers","useArbiChat","jsx","AssistantDock"],"mappings":"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","file":"chunk-GNHOB2ZB.cjs","sourcesContent":["/**\n * The connected agent hooks — thin adapters over the reusable AI kit in\n * `@arbidocs/react`. The streaming/accumulation/search plumbing lives once in\n * the SDK; these hooks only bind the *workspace source* (from the connection\n * context, falling back to the configured workspace) and inject the host's\n * default assistant *configuration* so call sites needn't know the config\n * ext_id. An explicit `opts.model` still wins.\n */\nimport { useCallback } from 'react'\nimport {\n useAiTask as useKitAiTask,\n useWorkspaceDocs as useKitWorkspaceDocs,\n useSemanticSearch as useKitSemanticSearch,\n useArbiChat,\n useWorkspaceUsers,\n type ArbiChat,\n type UseArbiChatOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '../chat/mentions'\n\nexport type { AiTaskStatus, AiRunOptions, SearchChunk, ArtifactEvent } from '@arbidocs/react'\n\n/** Client-side redlining, re-exported so a host app has one import surface. */\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from '@arbidocs/react'\n\n/**\n * The kit's `useAiTask` with the host's default assistant configuration\n * injected, so call sites needn't know the config ext_id.\n */\nexport function useConnectedAiTask() {\n const { assistantConfig } = useConnection()\n const task = useKitAiTask()\n const kitRun = task.run\n const run = useCallback(\n (question: string, docIds: string[], opts?: AiRunOptions) =>\n kitRun(question, docIds, { ...opts, model: opts?.model ?? assistantConfig }),\n [kitRun, assistantConfig]\n )\n return { ...task, run }\n}\n\n/** Resolve the active workspace + its document ids (what we ground the agent on). */\nexport function useWorkspaceDocs() {\n const { workspaceId, fallbackWorkspaceId } = useConnection()\n return useKitWorkspaceDocs(workspaceId ?? fallbackWorkspaceId)\n}\n\n/** Search the active workspace's documents and return the top matching passages. */\nexport function useSemanticSearch() {\n const { docIds } = useWorkspaceDocs()\n return useKitSemanticSearch(docIds)\n}\n\n/**\n * The chat controller for `ChatPage` bound to the connection: the active workspace and the host's\n * default assistant configuration are injected, so a host writes\n * `<ChatPage chat={useConnectedChat()} />`.\n */\nexport function useConnectedChat(\n options?: Omit<UseArbiChatOptions, 'workspaceId'>\n): ArbiChat & { mentionCandidates: MentionCandidate[] } {\n const { workspaceId, fallbackWorkspaceId, assistantConfig, user, status, ensureWorkspaceOpen } =\n useConnection()\n const wsId = workspaceId ?? fallbackWorkspaceId\n const { data: members = [] } = useWorkspaceUsers(wsId, {\n enabled: status === 'authenticated' && !!wsId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const mentionCandidates: MentionCandidate[] = [\n { id: 'assistant', kind: 'assistant', label: 'Assistant' },\n ...(status === 'authenticated' ? members : [])\n .filter(\n (member) =>\n !member.agent_ext_id &&\n member.user.external_id !== user?.externalId &&\n !member.user.external_id.startsWith('agt-')\n )\n .map((member) => ({\n id: member.user.external_id,\n kind: 'user' as const,\n label:\n [member.user.given_name, member.user.family_name].filter(Boolean).join(' ') ||\n member.user.email,\n description: member.user.email,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]\n const chat = useArbiChat({\n ...options,\n workspaceId: workspaceId ?? fallbackWorkspaceId,\n model: options?.model ?? assistantConfig,\n })\n return {\n ...chat,\n mentionCandidates,\n messages: chat.messages.map((message) => ({\n ...message,\n ...(message.authorId\n ? {\n senderName:\n message.authorId === user?.externalId\n ? user?.name || user?.email\n : mentionCandidates.find((candidate) => candidate.id === message.authorId)?.label,\n }\n : {}),\n })),\n }\n}\n\n/**\n * The assistant dock bound to the connection: mount it once in the layout (`Shell.Root`'s `aside`)\n * and put `AssistantDockToggle` in the topbar. Chat state lives here, so it survives closing the dock.\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
1
+ {"version":3,"sources":["../src/connection/ai.tsx"],"names":["useConnection","useKitAiTask","useCallback","useKitWorkspaceDocs","useKitSemanticSearch","useWorkspaceUsers","useArbiChat","jsx","AssistantDock"],"mappings":"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","file":"chunk-XMBYDLZQ.cjs","sourcesContent":["/**\n * The connected agent hooks — thin adapters over the reusable AI kit in\n * `@arbidocs/react`. The streaming/accumulation/search plumbing lives once in\n * the SDK; these hooks only bind the *workspace source* (from the connection\n * context, falling back to the configured workspace) and inject the host's\n * default assistant *configuration* so call sites needn't know the config\n * ext_id. An explicit `opts.model` still wins.\n */\nimport { useCallback } from 'react'\nimport {\n useAiTask as useKitAiTask,\n useWorkspaceDocs as useKitWorkspaceDocs,\n useSemanticSearch as useKitSemanticSearch,\n useArbiChat,\n useWorkspaceUsers,\n type ArbiChat,\n type UseArbiChatOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '../chat/mentions'\n\nexport type { AiTaskStatus, AiRunOptions, SearchChunk, ArtifactEvent } from '@arbidocs/react'\n\n/** Client-side redlining, re-exported so a host app has one import surface. */\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from '@arbidocs/react'\n\n/**\n * The kit's `useAiTask` with the host's default assistant configuration\n * injected, so call sites needn't know the config ext_id.\n */\nexport function useConnectedAiTask() {\n const { assistantConfig } = useConnection()\n const task = useKitAiTask()\n const kitRun = task.run\n const run = useCallback(\n (question: string, docIds: string[], opts?: AiRunOptions) =>\n kitRun(question, docIds, { ...opts, model: opts?.model ?? assistantConfig }),\n [kitRun, assistantConfig]\n )\n return { ...task, run }\n}\n\n/** Resolve the active workspace + its document ids (what we ground the agent on). */\nexport function useWorkspaceDocs() {\n const { workspaceId, fallbackWorkspaceId } = useConnection()\n return useKitWorkspaceDocs(workspaceId ?? fallbackWorkspaceId)\n}\n\n/** Search the active workspace's documents and return the top matching passages. */\nexport function useSemanticSearch() {\n const { docIds } = useWorkspaceDocs()\n return useKitSemanticSearch(docIds)\n}\n\n/**\n * The chat controller for `ChatPage` bound to the connection: the active workspace and the host's\n * default assistant configuration are injected, so a host writes\n * `<ChatPage chat={useConnectedChat()} />`.\n */\nexport function useConnectedChat(\n options?: Omit<UseArbiChatOptions, 'workspaceId'>\n): ArbiChat & { mentionCandidates: MentionCandidate[] } {\n const { workspaceId, fallbackWorkspaceId, assistantConfig, user, status, ensureWorkspaceOpen } =\n useConnection()\n const wsId = workspaceId ?? fallbackWorkspaceId\n const { data: members = [] } = useWorkspaceUsers(wsId, {\n enabled: status === 'authenticated' && !!wsId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const mentionCandidates: MentionCandidate[] = [\n { id: 'assistant', kind: 'assistant', label: 'Assistant' },\n ...(status === 'authenticated' ? members : [])\n .filter(\n (member) =>\n !member.agent_ext_id &&\n member.user.external_id !== user?.externalId &&\n !member.user.external_id.startsWith('agt-')\n )\n .map((member) => ({\n id: member.user.external_id,\n kind: 'user' as const,\n label:\n [member.user.given_name, member.user.family_name].filter(Boolean).join(' ') ||\n member.user.email,\n description: member.user.email,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]\n const chat = useArbiChat({\n ...options,\n workspaceId: workspaceId ?? fallbackWorkspaceId,\n model: options?.model ?? assistantConfig,\n })\n return {\n ...chat,\n mentionCandidates,\n messages: chat.messages.map((message) => ({\n ...message,\n ...(message.authorId\n ? {\n senderName:\n message.authorId === user?.externalId\n ? user?.name || user?.email\n : mentionCandidates.find((candidate) => candidate.id === message.authorId)?.label,\n }\n : {}),\n })),\n }\n}\n\n/**\n * The assistant dock bound to the connection: mount it once in the layout (`Shell.Root`'s `aside`)\n * and put `AssistantDockToggle` in the topbar. Chat state lives here, so it survives closing the dock.\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { AssistantDock } from './chunk-EJAYB7PP.js';
3
2
  import { useConnection } from './chunk-OYMWV45N.js';
3
+ import { AssistantDock } from './chunk-EWSEQEPL.js';
4
4
  import { useCallback } from 'react';
5
5
  import { useAiTask, useWorkspaceDocs as useWorkspaceDocs$1, useSemanticSearch as useSemanticSearch$1, useWorkspaceUsers, useArbiChat } from '@arbidocs/react';
6
6
  export { redlineStats, textToArtifact, toRedlineMarkdown } from '@arbidocs/react';
@@ -64,5 +64,5 @@ function ConnectedAssistantDock(props) {
64
64
  }
65
65
 
66
66
  export { ConnectedAssistantDock, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs };
67
- //# sourceMappingURL=chunk-YG7DGGCA.js.map
68
- //# sourceMappingURL=chunk-YG7DGGCA.js.map
67
+ //# sourceMappingURL=chunk-XQDM6T6C.js.map
68
+ //# sourceMappingURL=chunk-XQDM6T6C.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/ai.tsx"],"names":["useKitAiTask","useKitWorkspaceDocs","useKitSemanticSearch"],"mappings":"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","file":"chunk-YG7DGGCA.js","sourcesContent":["/**\n * The connected agent hooks — thin adapters over the reusable AI kit in\n * `@arbidocs/react`. The streaming/accumulation/search plumbing lives once in\n * the SDK; these hooks only bind the *workspace source* (from the connection\n * context, falling back to the configured workspace) and inject the host's\n * default assistant *configuration* so call sites needn't know the config\n * ext_id. An explicit `opts.model` still wins.\n */\nimport { useCallback } from 'react'\nimport {\n useAiTask as useKitAiTask,\n useWorkspaceDocs as useKitWorkspaceDocs,\n useSemanticSearch as useKitSemanticSearch,\n useArbiChat,\n useWorkspaceUsers,\n type ArbiChat,\n type UseArbiChatOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '../chat/mentions'\n\nexport type { AiTaskStatus, AiRunOptions, SearchChunk, ArtifactEvent } from '@arbidocs/react'\n\n/** Client-side redlining, re-exported so a host app has one import surface. */\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from '@arbidocs/react'\n\n/**\n * The kit's `useAiTask` with the host's default assistant configuration\n * injected, so call sites needn't know the config ext_id.\n */\nexport function useConnectedAiTask() {\n const { assistantConfig } = useConnection()\n const task = useKitAiTask()\n const kitRun = task.run\n const run = useCallback(\n (question: string, docIds: string[], opts?: AiRunOptions) =>\n kitRun(question, docIds, { ...opts, model: opts?.model ?? assistantConfig }),\n [kitRun, assistantConfig]\n )\n return { ...task, run }\n}\n\n/** Resolve the active workspace + its document ids (what we ground the agent on). */\nexport function useWorkspaceDocs() {\n const { workspaceId, fallbackWorkspaceId } = useConnection()\n return useKitWorkspaceDocs(workspaceId ?? fallbackWorkspaceId)\n}\n\n/** Search the active workspace's documents and return the top matching passages. */\nexport function useSemanticSearch() {\n const { docIds } = useWorkspaceDocs()\n return useKitSemanticSearch(docIds)\n}\n\n/**\n * The chat controller for `ChatPage` bound to the connection: the active workspace and the host's\n * default assistant configuration are injected, so a host writes\n * `<ChatPage chat={useConnectedChat()} />`.\n */\nexport function useConnectedChat(\n options?: Omit<UseArbiChatOptions, 'workspaceId'>\n): ArbiChat & { mentionCandidates: MentionCandidate[] } {\n const { workspaceId, fallbackWorkspaceId, assistantConfig, user, status, ensureWorkspaceOpen } =\n useConnection()\n const wsId = workspaceId ?? fallbackWorkspaceId\n const { data: members = [] } = useWorkspaceUsers(wsId, {\n enabled: status === 'authenticated' && !!wsId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const mentionCandidates: MentionCandidate[] = [\n { id: 'assistant', kind: 'assistant', label: 'Assistant' },\n ...(status === 'authenticated' ? members : [])\n .filter(\n (member) =>\n !member.agent_ext_id &&\n member.user.external_id !== user?.externalId &&\n !member.user.external_id.startsWith('agt-')\n )\n .map((member) => ({\n id: member.user.external_id,\n kind: 'user' as const,\n label:\n [member.user.given_name, member.user.family_name].filter(Boolean).join(' ') ||\n member.user.email,\n description: member.user.email,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]\n const chat = useArbiChat({\n ...options,\n workspaceId: workspaceId ?? fallbackWorkspaceId,\n model: options?.model ?? assistantConfig,\n })\n return {\n ...chat,\n mentionCandidates,\n messages: chat.messages.map((message) => ({\n ...message,\n ...(message.authorId\n ? {\n senderName:\n message.authorId === user?.externalId\n ? user?.name || user?.email\n : mentionCandidates.find((candidate) => candidate.id === message.authorId)?.label,\n }\n : {}),\n })),\n }\n}\n\n/**\n * The assistant dock bound to the connection: mount it once in the layout (`Shell.Root`'s `aside`)\n * and put `AssistantDockToggle` in the topbar. Chat state lives here, so it survives closing the dock.\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
1
+ {"version":3,"sources":["../src/connection/ai.tsx"],"names":["useKitAiTask","useKitWorkspaceDocs","useKitSemanticSearch"],"mappings":"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","file":"chunk-XQDM6T6C.js","sourcesContent":["/**\n * The connected agent hooks — thin adapters over the reusable AI kit in\n * `@arbidocs/react`. The streaming/accumulation/search plumbing lives once in\n * the SDK; these hooks only bind the *workspace source* (from the connection\n * context, falling back to the configured workspace) and inject the host's\n * default assistant *configuration* so call sites needn't know the config\n * ext_id. An explicit `opts.model` still wins.\n */\nimport { useCallback } from 'react'\nimport {\n useAiTask as useKitAiTask,\n useWorkspaceDocs as useKitWorkspaceDocs,\n useSemanticSearch as useKitSemanticSearch,\n useArbiChat,\n useWorkspaceUsers,\n type ArbiChat,\n type UseArbiChatOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '../chat/mentions'\n\nexport type { AiTaskStatus, AiRunOptions, SearchChunk, ArtifactEvent } from '@arbidocs/react'\n\n/** Client-side redlining, re-exported so a host app has one import surface. */\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from '@arbidocs/react'\n\n/**\n * The kit's `useAiTask` with the host's default assistant configuration\n * injected, so call sites needn't know the config ext_id.\n */\nexport function useConnectedAiTask() {\n const { assistantConfig } = useConnection()\n const task = useKitAiTask()\n const kitRun = task.run\n const run = useCallback(\n (question: string, docIds: string[], opts?: AiRunOptions) =>\n kitRun(question, docIds, { ...opts, model: opts?.model ?? assistantConfig }),\n [kitRun, assistantConfig]\n )\n return { ...task, run }\n}\n\n/** Resolve the active workspace + its document ids (what we ground the agent on). */\nexport function useWorkspaceDocs() {\n const { workspaceId, fallbackWorkspaceId } = useConnection()\n return useKitWorkspaceDocs(workspaceId ?? fallbackWorkspaceId)\n}\n\n/** Search the active workspace's documents and return the top matching passages. */\nexport function useSemanticSearch() {\n const { docIds } = useWorkspaceDocs()\n return useKitSemanticSearch(docIds)\n}\n\n/**\n * The chat controller for `ChatPage` bound to the connection: the active workspace and the host's\n * default assistant configuration are injected, so a host writes\n * `<ChatPage chat={useConnectedChat()} />`.\n */\nexport function useConnectedChat(\n options?: Omit<UseArbiChatOptions, 'workspaceId'>\n): ArbiChat & { mentionCandidates: MentionCandidate[] } {\n const { workspaceId, fallbackWorkspaceId, assistantConfig, user, status, ensureWorkspaceOpen } =\n useConnection()\n const wsId = workspaceId ?? fallbackWorkspaceId\n const { data: members = [] } = useWorkspaceUsers(wsId, {\n enabled: status === 'authenticated' && !!wsId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const mentionCandidates: MentionCandidate[] = [\n { id: 'assistant', kind: 'assistant', label: 'Assistant' },\n ...(status === 'authenticated' ? members : [])\n .filter(\n (member) =>\n !member.agent_ext_id &&\n member.user.external_id !== user?.externalId &&\n !member.user.external_id.startsWith('agt-')\n )\n .map((member) => ({\n id: member.user.external_id,\n kind: 'user' as const,\n label:\n [member.user.given_name, member.user.family_name].filter(Boolean).join(' ') ||\n member.user.email,\n description: member.user.email,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]\n const chat = useArbiChat({\n ...options,\n workspaceId: workspaceId ?? fallbackWorkspaceId,\n model: options?.model ?? assistantConfig,\n })\n return {\n ...chat,\n mentionCandidates,\n messages: chat.messages.map((message) => ({\n ...message,\n ...(message.authorId\n ? {\n senderName:\n message.authorId === user?.externalId\n ? user?.name || user?.email\n : mentionCandidates.find((candidate) => candidate.id === message.authorId)?.label,\n }\n : {}),\n })),\n }\n}\n\n/**\n * The assistant dock bound to the connection: mount it once in the layout (`Shell.Root`'s `aside`)\n * and put `AssistantDockToggle` in the topbar. Chat state lives here, so it survives closing the dock.\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { NativeDocxEditor } from './chunk-WXLKMEMB.js';
2
+ import { NativeDocxEditor } from './chunk-K27SDLLN.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function StreamedWordArtifact({
@@ -37,5 +37,5 @@ function StreamedWordArtifact({
37
37
  }
38
38
 
39
39
  export { StreamedWordArtifact };
40
- //# sourceMappingURL=chunk-YPKSLTL5.js.map
41
- //# sourceMappingURL=chunk-YPKSLTL5.js.map
40
+ //# sourceMappingURL=chunk-Y52CEKVD.js.map
41
+ //# sourceMappingURL=chunk-Y52CEKVD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":[],"mappings":";;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-YPKSLTL5.js","sourcesContent":["import { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface StreamedWordArtifactProps {\n adapter: NativeDocxAdapter\n /** Streamed Markdown, shown as a read-only preview while the draft is generated. */\n content: string\n title: string\n busy: boolean\n error?: string | null\n /** The DOCX draft the server stored for this generation (`doc-…`), once known. */\n documentId?: string\n onSaved?: (documentId: string) => void\n}\n\n/**\n * One drafting surface for an AI document draft. The server stores every draft as DOCX, so\n * this component never creates a document: it previews the streamed Markdown until generation\n * ends and the stored DOCX is known, then opens that DOCX in the live collaborative editor.\n */\nexport function StreamedWordArtifact({\n adapter,\n content,\n title,\n busy,\n error,\n documentId,\n onSaved,\n}: StreamedWordArtifactProps) {\n if (!busy && documentId) {\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={title}\n onSaved={onSaved}\n />\n )\n }\n return (\n <NativeDocxEditor\n key=\"stream-preview\"\n adapter={adapter}\n documentId=\"stream-preview\"\n title={title}\n draftContent=\"\"\n stream={{ content, busy, error }}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":[],"mappings":";;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-Y52CEKVD.js","sourcesContent":["import { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface StreamedWordArtifactProps {\n adapter: NativeDocxAdapter\n /** Streamed Markdown, shown as a read-only preview while the draft is generated. */\n content: string\n title: string\n busy: boolean\n error?: string | null\n /** The DOCX draft the server stored for this generation (`doc-…`), once known. */\n documentId?: string\n onSaved?: (documentId: string) => void\n}\n\n/**\n * One drafting surface for an AI document draft. The server stores every draft as DOCX, so\n * this component never creates a document: it previews the streamed Markdown until generation\n * ends and the stored DOCX is known, then opens that DOCX in the live collaborative editor.\n */\nexport function StreamedWordArtifact({\n adapter,\n content,\n title,\n busy,\n error,\n documentId,\n onSaved,\n}: StreamedWordArtifactProps) {\n if (!busy && documentId) {\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={title}\n onSaved={onSaved}\n />\n )\n }\n return (\n <NativeDocxEditor\n key=\"stream-preview\"\n adapter={adapter}\n documentId=\"stream-preview\"\n title={title}\n draftContent=\"\"\n stream={{ content, busy, error }}\n />\n )\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkRZGVMV6B_cjs = require('../chunk-RZGVMV6B.cjs');
4
+ var chunkCK6TU76J_cjs = require('../chunk-CK6TU76J.cjs');
5
5
  require('../chunk-MUMH3Z6K.cjs');
6
- var chunk3OXWJ3CZ_cjs = require('../chunk-3OXWJ3CZ.cjs');
7
- require('../chunk-E2AAIMXO.cjs');
6
+ var chunkSC33PQTQ_cjs = require('../chunk-SC33PQTQ.cjs');
7
+ require('../chunk-7RI3G5BO.cjs');
8
8
  require('../chunk-AOFATOT3.cjs');
9
9
  require('../chunk-RC25WMVB.cjs');
10
10
  require('../chunk-7UTB4PHM.cjs');
@@ -16,13 +16,13 @@ function ConnectedStreamedWordArtifact({
16
16
  fontBaseUrl,
17
17
  ...props
18
18
  }) {
19
- const adapter = chunkRZGVMV6B_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
20
- return /* @__PURE__ */ jsxRuntime.jsx(chunk3OXWJ3CZ_cjs.StreamedWordArtifact, { ...props, adapter });
19
+ const adapter = chunkCK6TU76J_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
20
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkSC33PQTQ_cjs.StreamedWordArtifact, { ...props, adapter });
21
21
  }
22
22
 
23
23
  Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
24
24
  enumerable: true,
25
- get: function () { return chunkRZGVMV6B_cjs.ConnectedNativeDocxEditor; }
25
+ get: function () { return chunkCK6TU76J_cjs.ConnectedNativeDocxEditor; }
26
26
  });
27
27
  exports.ConnectedStreamedWordArtifact = ConnectedStreamedWordArtifact;
28
28
  //# sourceMappingURL=docx.cjs.map
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { useConnectedNativeDocxAdapter } from '../chunk-ZNDAXSDP.js';
3
- export { ConnectedNativeDocxEditor } from '../chunk-ZNDAXSDP.js';
2
+ import { useConnectedNativeDocxAdapter } from '../chunk-H4SVY5FH.js';
3
+ export { ConnectedNativeDocxEditor } from '../chunk-H4SVY5FH.js';
4
4
  import '../chunk-OYMWV45N.js';
5
- import { StreamedWordArtifact } from '../chunk-YPKSLTL5.js';
6
- import '../chunk-WXLKMEMB.js';
5
+ import { StreamedWordArtifact } from '../chunk-Y52CEKVD.js';
6
+ import '../chunk-K27SDLLN.js';
7
7
  import '../chunk-D3QPYKZG.js';
8
8
  import '../chunk-AF6RDAJF.js';
9
9
  import '../chunk-AA3PT6KR.js';
@@ -1,35 +1,35 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkGNHOB2ZB_cjs = require('../chunk-GNHOB2ZB.cjs');
5
4
  var chunk5YXG342J_cjs = require('../chunk-5YXG342J.cjs');
5
+ var chunkXMBYDLZQ_cjs = require('../chunk-XMBYDLZQ.cjs');
6
+ var chunkCK6TU76J_cjs = require('../chunk-CK6TU76J.cjs');
7
+ var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
6
8
  var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
9
+ require('../chunk-7RI3G5BO.cjs');
7
10
  var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
8
- var chunkTOVSTC2M_cjs = require('../chunk-TOVSTC2M.cjs');
9
- var chunkVYKMBLDX_cjs = require('../chunk-VYKMBLDX.cjs');
10
- require('../chunk-VGOFFCMT.cjs');
11
- var chunkDCZGYCN2_cjs = require('../chunk-DCZGYCN2.cjs');
11
+ var chunkPSN4VWI7_cjs = require('../chunk-PSN4VWI7.cjs');
12
+ var chunkAOFATOT3_cjs = require('../chunk-AOFATOT3.cjs');
13
+ require('../chunk-RC25WMVB.cjs');
14
+ var chunk3WW32OUU_cjs = require('../chunk-3WW32OUU.cjs');
12
15
  var chunkN26CXGXC_cjs = require('../chunk-N26CXGXC.cjs');
13
- require('../chunk-KBPHLW2R.cjs');
14
16
  var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
15
17
  require('../chunk-7D737FLE.cjs');
16
18
  require('../chunk-DETZZBG2.cjs');
17
19
  require('../chunk-32HW2Q33.cjs');
18
20
  var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
19
- require('../chunk-PPCATBOY.cjs');
20
- require('../chunk-ADOKTJHV.cjs');
21
21
  var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
22
+ require('../chunk-ADOKTJHV.cjs');
23
+ var chunkMP6FK43E_cjs = require('../chunk-MP6FK43E.cjs');
24
+ require('../chunk-VGOFFCMT.cjs');
25
+ require('../chunk-B4SRYJLM.cjs');
26
+ require('../chunk-7UTB4PHM.cjs');
27
+ require('../chunk-PPCATBOY.cjs');
22
28
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
23
29
  var chunk3R6XBYL7_cjs = require('../chunk-3R6XBYL7.cjs');
24
30
  var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
25
31
  require('../chunk-IXALYQT7.cjs');
26
32
  require('../chunk-FX3K6LNZ.cjs');
27
- var chunkRZGVMV6B_cjs = require('../chunk-RZGVMV6B.cjs');
28
- var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
29
- require('../chunk-E2AAIMXO.cjs');
30
- var chunkAOFATOT3_cjs = require('../chunk-AOFATOT3.cjs');
31
- require('../chunk-RC25WMVB.cjs');
32
- require('../chunk-7UTB4PHM.cjs');
33
33
  require('../chunk-MHVNT4J3.cjs');
34
34
  require('../chunk-DES3K4SD.cjs');
35
35
  var react = require('react');
@@ -119,7 +119,7 @@ function ConnectedWorkspaceActivity({
119
119
  [feed.data]
120
120
  );
121
121
  return /* @__PURE__ */ jsxRuntime.jsx(
122
- chunkTOVSTC2M_cjs.WorkspaceActivityList,
122
+ chunkPSN4VWI7_cjs.WorkspaceActivityList,
123
123
  {
124
124
  ...listProps,
125
125
  items,
@@ -145,7 +145,7 @@ function ConnectedWorkspaceNotificationMenu({
145
145
  });
146
146
  if (!workspaceId) return null;
147
147
  return /* @__PURE__ */ jsxRuntime.jsx(
148
- chunkTOVSTC2M_cjs.WorkspaceNotificationMenu,
148
+ chunkPSN4VWI7_cjs.WorkspaceNotificationMenu,
149
149
  {
150
150
  ...menuProps,
151
151
  level,
@@ -164,7 +164,7 @@ function ConnectedThreadFollow({
164
164
  enabled: status === "authenticated"
165
165
  });
166
166
  if (!conversationId) return null;
167
- const Control = as === "menu-item" ? chunkTOVSTC2M_cjs.ThreadFollowMenuItem : chunkTOVSTC2M_cjs.ThreadFollowButton;
167
+ const Control = as === "menu-item" ? chunkPSN4VWI7_cjs.ThreadFollowMenuItem : chunkPSN4VWI7_cjs.ThreadFollowButton;
168
168
  return /* @__PURE__ */ jsxRuntime.jsx(
169
169
  Control,
170
170
  {
@@ -290,7 +290,7 @@ function StreamedArtifact({
290
290
  }
291
291
  var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
292
292
  function formValues(step, inputs) {
293
- const fields = chunkDCZGYCN2_cjs.stepFields(step);
293
+ const fields = chunk3WW32OUU_cjs.stepFields(step);
294
294
  if (!fields.length) return void 0;
295
295
  if (step.kind === "form")
296
296
  return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
@@ -325,10 +325,10 @@ function useAnswerRetry(missing, refetch) {
325
325
  function useWorkflowThread(workflow, options = {}) {
326
326
  const arbi = react$1.useArbi();
327
327
  const { ensureWorkspaceOpen, status } = chunkMUMH3Z6K_cjs.useConnection();
328
- const { wsId } = chunkGNHOB2ZB_cjs.useWorkspaceDocs();
328
+ const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
329
329
  const [threadId, setThreadId] = react.useState(options.conversationId);
330
330
  const [localInputs, setLocalInputs] = react.useState(
331
- () => chunkDCZGYCN2_cjs.initialRunInputs(workflow, options.initialInputs)
331
+ () => chunk3WW32OUU_cjs.initialRunInputs(workflow, options.initialInputs)
332
332
  );
333
333
  const [edits, setEdits] = react.useState({});
334
334
  const [localStates, setLocalStates] = react.useState({});
@@ -348,12 +348,12 @@ function useWorkflowThread(workflow, options = {}) {
348
348
  );
349
349
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
350
350
  const steps = react.useMemo(
351
- () => chunkDCZGYCN2_cjs.workflowSteps(workflow).length > 0 ? chunkDCZGYCN2_cjs.workflowSteps(workflow) : chunkDCZGYCN2_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
351
+ () => chunk3WW32OUU_cjs.workflowSteps(workflow).length > 0 ? chunk3WW32OUU_cjs.workflowSteps(workflow) : chunk3WW32OUU_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
352
352
  [workflow, conversation?.plan?.steps]
353
353
  );
354
354
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
355
355
  const serverStates = react.useMemo(
356
- () => chunkDCZGYCN2_cjs.stepStatesFromActivity(activity.data ?? []),
356
+ () => chunk3WW32OUU_cjs.stepStatesFromActivity(activity.data ?? []),
357
357
  [activity.data]
358
358
  );
359
359
  const working = steps.some(
@@ -396,7 +396,7 @@ function useWorkflowThread(workflow, options = {}) {
396
396
  async (values, done) => {
397
397
  await ensureWorkspaceOpen();
398
398
  const created = await createWork.mutateAsync({
399
- title: chunkDCZGYCN2_cjs.runThreadTitle(workflow, values).slice(0, 60),
399
+ title: chunk3WW32OUU_cjs.runThreadTitle(workflow, values).slice(0, 60),
400
400
  description: workflow.description || null,
401
401
  prompt: null,
402
402
  skill_ref: null,
@@ -408,7 +408,7 @@ function useWorkflowThread(workflow, options = {}) {
408
408
  criteria: [],
409
409
  max_passes: 3,
410
410
  documents: [],
411
- steps: chunkDCZGYCN2_cjs.toPlanSteps(workflow, {
411
+ steps: chunk3WW32OUU_cjs.toPlanSteps(workflow, {
412
412
  inputs: values,
413
413
  resolveWorkflow: options.resolveWorkflow,
414
414
  compose: options.compose
@@ -495,7 +495,7 @@ function useWorkflowThread(workflow, options = {}) {
495
495
  const anyRunning = Object.values(states).some((s) => s.status === "running");
496
496
  const needsStart = !threadId || idle && !anyRunning;
497
497
  const runError = idle ? conversation?.last_error ?? null : null;
498
- const view = chunkDCZGYCN2_cjs.useWorkflowView({
498
+ const view = chunk3WW32OUU_cjs.useWorkflowView({
499
499
  steps,
500
500
  states,
501
501
  inputs,
@@ -538,7 +538,7 @@ function WorkflowRunThread({
538
538
  if (listed && activeThreadId !== conversationId) selectThread(conversationId);
539
539
  }, [listed, activeThreadId, conversationId, selectThread]);
540
540
  return /* @__PURE__ */ jsxRuntime.jsx(
541
- chunkVYKMBLDX_cjs.ChatPage,
541
+ chunkMP6FK43E_cjs.ChatPage,
542
542
  {
543
543
  chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
544
544
  singleThread: true,
@@ -576,7 +576,7 @@ function WorkflowSignDialog({
576
576
  const arbi = react$1.useArbi();
577
577
  const { user, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
578
578
  const tools = documentTools.useOptionalDocumentTools();
579
- const { id, version: stepVersion } = chunkDCZGYCN2_cjs.splitDocRef(docRef);
579
+ const { id, version: stepVersion } = chunk3WW32OUU_cjs.splitDocRef(docRef);
580
580
  const [version, setVersion] = react.useState(stepVersion);
581
581
  const [pdf, setPdf] = react.useState(null);
582
582
  const [preparing, setPreparing] = react.useState(false);
@@ -654,7 +654,7 @@ function WorkflowWordDialog({
654
654
  onClose,
655
655
  labels
656
656
  }) {
657
- const { id } = chunkDCZGYCN2_cjs.splitDocRef(docRef);
657
+ const { id } = chunk3WW32OUU_cjs.splitDocRef(docRef);
658
658
  return /* @__PURE__ */ jsxRuntime.jsx(
659
659
  chunkULWRNGGE_cjs.ModalScaffold,
660
660
  {
@@ -663,7 +663,7 @@ function WorkflowWordDialog({
663
663
  title: title ?? labels.wordTitle,
664
664
  size: "xl",
665
665
  testId: "workflow-word-dialog",
666
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkRZGVMV6B_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
666
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkCK6TU76J_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
667
667
  }
668
668
  );
669
669
  }
@@ -803,7 +803,7 @@ function ConnectedWorkflowRunner({
803
803
  const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
804
804
  const arbi = react$1.useArbi();
805
805
  const { ensureWorkspaceOpen, user } = chunkMUMH3Z6K_cjs.useConnection();
806
- const { wsId } = chunkGNHOB2ZB_cjs.useWorkspaceDocs();
806
+ const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
807
807
  const { data: docs = [], refetch } = react$1.useDocuments(wsId);
808
808
  const [sending, setSending] = react.useState([]);
809
809
  const [added, setAdded] = react.useState({});
@@ -826,7 +826,7 @@ function ConnectedWorkflowRunner({
826
826
  () => ({
827
827
  me: user?.externalId,
828
828
  openDocument: onOpenDocument && ((ref) => {
829
- const { id, version } = chunkDCZGYCN2_cjs.splitDocRef(ref);
829
+ const { id, version } = chunk3WW32OUU_cjs.splitDocRef(ref);
830
830
  onOpenDocument(id, version);
831
831
  }),
832
832
  openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
@@ -836,7 +836,7 @@ function ConnectedWorkflowRunner({
836
836
  const w = state.waiting;
837
837
  if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
838
838
  }),
839
- openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkDCZGYCN2_cjs.splitDocRef(ref).id) ?? "" })),
839
+ openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunk3WW32OUU_cjs.splitDocRef(ref).id) ?? "" })),
840
840
  openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
841
841
  }),
842
842
  [user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
@@ -972,7 +972,7 @@ function ConnectedWorkflowRunner({
972
972
  );
973
973
  };
974
974
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
975
- chunkDCZGYCN2_cjs.WorkflowRunner,
975
+ chunk3WW32OUU_cjs.WorkflowRunner,
976
976
  {
977
977
  people,
978
978
  ...runnerProps,
@@ -1018,10 +1018,10 @@ function ConnectedWorkflowRunner({
1018
1018
  ) }),
1019
1019
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1020
1020
  /* @__PURE__ */ jsxRuntime.jsx(
1021
- chunkDCZGYCN2_cjs.WorkflowStepBar,
1021
+ chunk3WW32OUU_cjs.WorkflowStepBar,
1022
1022
  {
1023
1023
  run: view,
1024
- levels: chunkDCZGYCN2_cjs.stepLevels(view.steps),
1024
+ levels: chunk3WW32OUU_cjs.stepLevels(view.steps),
1025
1025
  doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
1026
1026
  icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
1027
1027
  tid: (suffix) => `${testIdPrefix}-${suffix}`
@@ -1202,7 +1202,7 @@ function ConnectedTagTable({
1202
1202
  const fail = (e) => setError(e instanceof Error ? e.message : String(e));
1203
1203
  const snapshot = (data) => {
1204
1204
  const title = exportTitle ?? KIND_TITLES[kind];
1205
- const bytes = chunkTOVSTC2M_cjs.tagTableDocx(data, {
1205
+ const bytes = chunkPSN4VWI7_cjs.tagTableDocx(data, {
1206
1206
  title,
1207
1207
  nameOf: (id) => people.find((p) => p.value === id)?.label
1208
1208
  });
@@ -1212,7 +1212,7 @@ function ConnectedTagTable({
1212
1212
  };
1213
1213
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1214
1214
  /* @__PURE__ */ jsxRuntime.jsx(
1215
- chunkTOVSTC2M_cjs.TagTable,
1215
+ chunkPSN4VWI7_cjs.TagTable,
1216
1216
  {
1217
1217
  ...props,
1218
1218
  table,
@@ -3322,7 +3322,7 @@ function ConnectedMailbox({
3322
3322
  function ActiveChat({ agentId, workspaceId }) {
3323
3323
  const chat = react$1.useArbiChat({ agentId, workspaceId });
3324
3324
  return /* @__PURE__ */ jsxRuntime.jsx(
3325
- chunkVYKMBLDX_cjs.ChatPage,
3325
+ chunkMP6FK43E_cjs.ChatPage,
3326
3326
  {
3327
3327
  chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
3328
3328
  documentsRequired: false,
@@ -3384,35 +3384,35 @@ function ConnectedAgentChatPanel({
3384
3384
 
3385
3385
  Object.defineProperty(exports, "ConnectedAssistantDock", {
3386
3386
  enumerable: true,
3387
- get: function () { return chunkGNHOB2ZB_cjs.ConnectedAssistantDock; }
3387
+ get: function () { return chunkXMBYDLZQ_cjs.ConnectedAssistantDock; }
3388
3388
  });
3389
3389
  Object.defineProperty(exports, "redlineStats", {
3390
3390
  enumerable: true,
3391
- get: function () { return chunkGNHOB2ZB_cjs.redlineStats; }
3391
+ get: function () { return chunkXMBYDLZQ_cjs.redlineStats; }
3392
3392
  });
3393
3393
  Object.defineProperty(exports, "textToArtifact", {
3394
3394
  enumerable: true,
3395
- get: function () { return chunkGNHOB2ZB_cjs.textToArtifact; }
3395
+ get: function () { return chunkXMBYDLZQ_cjs.textToArtifact; }
3396
3396
  });
3397
3397
  Object.defineProperty(exports, "toRedlineMarkdown", {
3398
3398
  enumerable: true,
3399
- get: function () { return chunkGNHOB2ZB_cjs.toRedlineMarkdown; }
3399
+ get: function () { return chunkXMBYDLZQ_cjs.toRedlineMarkdown; }
3400
3400
  });
3401
3401
  Object.defineProperty(exports, "useConnectedAiTask", {
3402
3402
  enumerable: true,
3403
- get: function () { return chunkGNHOB2ZB_cjs.useConnectedAiTask; }
3403
+ get: function () { return chunkXMBYDLZQ_cjs.useConnectedAiTask; }
3404
3404
  });
3405
3405
  Object.defineProperty(exports, "useConnectedChat", {
3406
3406
  enumerable: true,
3407
- get: function () { return chunkGNHOB2ZB_cjs.useConnectedChat; }
3407
+ get: function () { return chunkXMBYDLZQ_cjs.useConnectedChat; }
3408
3408
  });
3409
3409
  Object.defineProperty(exports, "useSemanticSearch", {
3410
3410
  enumerable: true,
3411
- get: function () { return chunkGNHOB2ZB_cjs.useSemanticSearch; }
3411
+ get: function () { return chunkXMBYDLZQ_cjs.useSemanticSearch; }
3412
3412
  });
3413
3413
  Object.defineProperty(exports, "useWorkspaceDocs", {
3414
3414
  enumerable: true,
3415
- get: function () { return chunkGNHOB2ZB_cjs.useWorkspaceDocs; }
3415
+ get: function () { return chunkXMBYDLZQ_cjs.useWorkspaceDocs; }
3416
3416
  });
3417
3417
  Object.defineProperty(exports, "ConnectionProvider", {
3418
3418
  enumerable: true,
@@ -1,35 +1,35 @@
1
1
  "use client";
2
- import { useWorkspaceDocs } from '../chunk-YG7DGGCA.js';
3
- export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-YG7DGGCA.js';
4
2
  import { SettingsSection, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, SettingsCard, SettingsActionRow, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews } from '../chunk-W7NZRZ54.js';
3
+ import { useWorkspaceDocs } from '../chunk-XQDM6T6C.js';
4
+ export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-XQDM6T6C.js';
5
+ import { ConnectedNativeDocxEditor } from '../chunk-H4SVY5FH.js';
6
+ import { ConnectionProvider, useConnection } from '../chunk-OYMWV45N.js';
7
+ export { ConnectionProvider, SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnection } from '../chunk-OYMWV45N.js';
5
8
  import { SignDocumentDialog } from '../chunk-2YOVK524.js';
9
+ import '../chunk-K27SDLLN.js';
6
10
  import { FilesFilterBar, FolderFilterButton, FolderPickerRow } from '../chunk-7RJTEWYM.js';
7
- import { WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, tagTableDocx } from '../chunk-EOEDGJ75.js';
8
- import { ChatPage } from '../chunk-EJAYB7PP.js';
9
- import '../chunk-KZJAG7T3.js';
10
- import { splitDocRef, WorkflowStepBar, stepLevels, WorkflowRunner, initialRunInputs, workflowSteps, fromPlanSteps, stepStatesFromActivity, toPlanSteps, runThreadTitle, useWorkflowView, stepFields } from '../chunk-HUFLBZWI.js';
11
+ import { WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, tagTableDocx } from '../chunk-JID3CZSY.js';
12
+ import { DOCX_MIME_TYPE } from '../chunk-D3QPYKZG.js';
13
+ import '../chunk-AF6RDAJF.js';
14
+ import { splitDocRef, WorkflowStepBar, stepLevels, WorkflowRunner, initialRunInputs, workflowSteps, fromPlanSteps, stepStatesFromActivity, toPlanSteps, runThreadTitle, useWorkflowView, stepFields } from '../chunk-SF4BDUZS.js';
11
15
  import { TriStateFilterMenu } from '../chunk-6S5FLMWG.js';
12
- import '../chunk-24CS7JWU.js';
13
16
  import { TabHeader } from '../chunk-4WWM3GQ5.js';
14
17
  import '../chunk-XD2M6LIG.js';
15
18
  import '../chunk-EVUEIBNU.js';
16
19
  import '../chunk-AUS3KBHJ.js';
17
20
  import { FilterInput } from '../chunk-YU2KUMGE.js';
18
- import '../chunk-NPLYHR2E.js';
19
- import '../chunk-VILAPTCB.js';
20
21
  import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
22
+ import '../chunk-VILAPTCB.js';
23
+ import { ChatPage } from '../chunk-EWSEQEPL.js';
24
+ import '../chunk-KZJAG7T3.js';
25
+ import '../chunk-HOXKR26S.js';
26
+ import '../chunk-AA3PT6KR.js';
27
+ import '../chunk-NPLYHR2E.js';
21
28
  import { initials } from '../chunk-OXF2IFXG.js';
22
29
  import { PlainMailBodyEditor, draftMailCompose, emptyMailCompose, MailGrid, MailMessageView, replyMailCompose, MailDocumentPicker, parseMailRecipients } from '../chunk-LGX6UFYG.js';
23
30
  import { ModalScaffold } from '../chunk-TX2ZICS7.js';
24
31
  import '../chunk-ZPLG7QYF.js';
25
32
  import '../chunk-SLSBJRWW.js';
26
- import { ConnectedNativeDocxEditor } from '../chunk-ZNDAXSDP.js';
27
- import { ConnectionProvider, useConnection } from '../chunk-OYMWV45N.js';
28
- export { ConnectionProvider, SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnection } from '../chunk-OYMWV45N.js';
29
- import '../chunk-WXLKMEMB.js';
30
- import { DOCX_MIME_TYPE } from '../chunk-D3QPYKZG.js';
31
- import '../chunk-AF6RDAJF.js';
32
- import '../chunk-AA3PT6KR.js';
33
33
  import '../chunk-7F6CBP3Z.js';
34
34
  import '../chunk-VUNV25KB.js';
35
35
  import { lazy, useState, useMemo, Suspense, useEffect, useRef, useCallback, useLayoutEffect } from 'react';
@@ -67,7 +67,9 @@ export interface NativeDocxEditorProps {
67
67
  export declare function DocxParticipants({ session }: {
68
68
  session?: DocxCollaborationSession;
69
69
  }): React.JSX.Element;
70
- export declare function DocxRibbon({ onSave }: {
70
+ export declare function DocxRibbon({ onSave, badge, }: {
71
71
  onSave: () => void;
72
+ /** A short state label at the end of the row, such as "Co-edit mode". */
73
+ badge?: React.ReactNode;
72
74
  }): React.JSX.Element;
73
75
  export declare function NativeDocxEditor({ documentId, title, draftContent, initialCommentId, snapshot, onSaved, stream, adapter, }: NativeDocxEditorProps): React.JSX.Element;