@arbidocs/blocks 0.4.111 → 0.4.113

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 (98) hide show
  1. package/dist/{NativeDocxEditor-AQKRZBIU.cjs → NativeDocxEditor-AQZSUGET.cjs} +8 -8
  2. package/dist/{NativeDocxEditor-AQKRZBIU.cjs.map → NativeDocxEditor-AQZSUGET.cjs.map} +1 -1
  3. package/dist/{NativeDocxEditor-IN2HEO5I.js → NativeDocxEditor-MBCBXYDZ.js} +4 -4
  4. package/dist/{NativeDocxEditor-IN2HEO5I.js.map → NativeDocxEditor-MBCBXYDZ.js.map} +1 -1
  5. package/dist/chat/index.cjs +131 -131
  6. package/dist/chat/index.js +4 -4
  7. package/dist/{chunk-2C7TCVQZ.js → chunk-3OT37I24.js} +30 -297
  8. package/dist/chunk-3OT37I24.js.map +1 -0
  9. package/dist/{chunk-HBBJYRGI.cjs → chunk-5U4WY2VW.cjs} +9 -9
  10. package/dist/{chunk-HBBJYRGI.cjs.map → chunk-5U4WY2VW.cjs.map} +1 -1
  11. package/dist/{chunk-XKSFJYOD.cjs → chunk-5UHAWSEX.cjs} +4 -4
  12. package/dist/{chunk-XKSFJYOD.cjs.map → chunk-5UHAWSEX.cjs.map} +1 -1
  13. package/dist/{chunk-KZJAG7T3.js → chunk-7XF5SFJ2.js} +3 -3
  14. package/dist/{chunk-KZJAG7T3.js.map → chunk-7XF5SFJ2.js.map} +1 -1
  15. package/dist/{chunk-VGOFFCMT.cjs → chunk-B6MVQCXW.cjs} +3 -3
  16. package/dist/{chunk-VGOFFCMT.cjs.map → chunk-B6MVQCXW.cjs.map} +1 -1
  17. package/dist/{chunk-VLOPZHFH.js → chunk-D3N67Q4D.js} +3 -3
  18. package/dist/{chunk-VLOPZHFH.js.map → chunk-D3N67Q4D.js.map} +1 -1
  19. package/dist/{chunk-XIGWUDOD.cjs → chunk-ETBB5KMN.cjs} +61 -316
  20. package/dist/chunk-ETBB5KMN.cjs.map +1 -0
  21. package/dist/{chunk-Q6B77ZWZ.js → chunk-GIBRZ54P.js} +3 -3
  22. package/dist/{chunk-Q6B77ZWZ.js.map → chunk-GIBRZ54P.js.map} +1 -1
  23. package/dist/{chunk-2WO5L7YT.cjs → chunk-HF4PAYBM.cjs} +5 -5
  24. package/dist/{chunk-2WO5L7YT.cjs.map → chunk-HF4PAYBM.cjs.map} +1 -1
  25. package/dist/chunk-I2QSDQQV.cjs +126 -0
  26. package/dist/chunk-I2QSDQQV.cjs.map +1 -0
  27. package/dist/{chunk-BV7FEMSI.js → chunk-OKERRHLH.js} +3 -3
  28. package/dist/{chunk-BV7FEMSI.js.map → chunk-OKERRHLH.js.map} +1 -1
  29. package/dist/{chunk-CXZ7FPTQ.js → chunk-PKZYL2KU.js} +3 -3
  30. package/dist/{chunk-CXZ7FPTQ.js.map → chunk-PKZYL2KU.js.map} +1 -1
  31. package/dist/{chunk-NRUPUDWB.js → chunk-PXE5BNK6.js} +3 -3
  32. package/dist/{chunk-NRUPUDWB.js.map → chunk-PXE5BNK6.js.map} +1 -1
  33. package/dist/chunk-QXMR5YHC.js +80 -0
  34. package/dist/chunk-QXMR5YHC.js.map +1 -0
  35. package/dist/{chunk-TF47ATYS.cjs → chunk-RUFNJRLW.cjs} +4 -4
  36. package/dist/{chunk-TF47ATYS.cjs.map → chunk-RUFNJRLW.cjs.map} +1 -1
  37. package/dist/{chunk-HBF4BDRU.cjs → chunk-S6BOINC4.cjs} +7 -7
  38. package/dist/{chunk-HBF4BDRU.cjs.map → chunk-S6BOINC4.cjs.map} +1 -1
  39. package/dist/{chunk-6RHHMBZ5.js → chunk-TAXKPPNC.js} +5 -5
  40. package/dist/{chunk-6RHHMBZ5.js.map → chunk-TAXKPPNC.js.map} +1 -1
  41. package/dist/{chunk-WTM65ZNG.js → chunk-TKJSCHSX.js} +3 -3
  42. package/dist/{chunk-WTM65ZNG.js.map → chunk-TKJSCHSX.js.map} +1 -1
  43. package/dist/{chunk-2UAJVK3C.cjs → chunk-UAMZXRYJ.cjs} +4 -4
  44. package/dist/{chunk-2UAJVK3C.cjs.map → chunk-UAMZXRYJ.cjs.map} +1 -1
  45. package/dist/{chunk-WPVIOGDG.cjs → chunk-US5ASM4G.cjs} +22 -22
  46. package/dist/{chunk-WPVIOGDG.cjs.map → chunk-US5ASM4G.cjs.map} +1 -1
  47. package/dist/{chunk-CECWAIHL.js → chunk-XFZ7HNPG.js} +3 -3
  48. package/dist/{chunk-CECWAIHL.js.map → chunk-XFZ7HNPG.js.map} +1 -1
  49. package/dist/{chunk-VP4KJ4LK.cjs → chunk-XZB2QP76.cjs} +7 -7
  50. package/dist/{chunk-VP4KJ4LK.cjs.map → chunk-XZB2QP76.cjs.map} +1 -1
  51. package/dist/connect/docx.cjs +7 -7
  52. package/dist/connect/docx.js +5 -5
  53. package/dist/connect/index.cjs +29 -29
  54. package/dist/connect/index.js +11 -11
  55. package/dist/docx/definitions/commands.d.ts +3 -52
  56. package/dist/docx/definitions/fragment.d.ts +5 -31
  57. package/dist/docx/definitions/port.d.ts +2 -22
  58. package/dist/docx/index.cjs +47 -47
  59. package/dist/docx/index.js +4 -4
  60. package/dist/docx/references/commands.d.ts +3 -89
  61. package/dist/docx/references/port.d.ts +2 -11
  62. package/dist/index.cjs +386 -386
  63. package/dist/index.js +13 -13
  64. package/dist/settings/index.cjs +1 -1
  65. package/dist/settings/index.js +1 -1
  66. package/dist/shell/Shell.d.ts +5 -0
  67. package/dist/shell/index.cjs +60 -60
  68. package/dist/shell/index.js +3 -3
  69. package/dist/studio/index.cjs +4 -4
  70. package/dist/studio/index.js +3 -3
  71. package/dist/tags/definitions.d.ts +4 -25
  72. package/dist/tags/ooxml.d.ts +1 -19
  73. package/node_modules/@arbidocs/coedit/dist/commands.cjs +687 -0
  74. package/node_modules/@arbidocs/coedit/dist/commands.cjs.map +1 -1
  75. package/node_modules/@arbidocs/coedit/dist/commands.d.cts +263 -157
  76. package/node_modules/@arbidocs/coedit/dist/commands.d.ts +263 -157
  77. package/node_modules/@arbidocs/coedit/dist/commands.js +646 -2
  78. package/node_modules/@arbidocs/coedit/dist/commands.js.map +1 -1
  79. package/node_modules/@arbidocs/coedit/dist/port-ip7WByvH.d.cts +188 -0
  80. package/node_modules/@arbidocs/coedit/dist/port-ip7WByvH.d.ts +188 -0
  81. package/node_modules/@arbidocs/coedit/dist/server.cjs +675 -65
  82. package/node_modules/@arbidocs/coedit/dist/server.cjs.map +1 -1
  83. package/node_modules/@arbidocs/coedit/dist/server.d.cts +15 -4
  84. package/node_modules/@arbidocs/coedit/dist/server.d.ts +15 -4
  85. package/node_modules/@arbidocs/coedit/dist/server.js +676 -67
  86. package/node_modules/@arbidocs/coedit/dist/server.js.map +1 -1
  87. package/node_modules/@arbidocs/coedit/dist/template.d.cts +3 -17
  88. package/node_modules/@arbidocs/coedit/dist/template.d.ts +3 -17
  89. package/node_modules/@arbidocs/coedit/dist/track-eYC94jTp.d.cts +17 -0
  90. package/node_modules/@arbidocs/coedit/dist/track-eYC94jTp.d.ts +17 -0
  91. package/node_modules/@arbidocs/coedit/package.json +1 -1
  92. package/package.json +4 -4
  93. package/dist/chunk-2A4MDHJR.cjs +0 -198
  94. package/dist/chunk-2A4MDHJR.cjs.map +0 -1
  95. package/dist/chunk-2C7TCVQZ.js.map +0 -1
  96. package/dist/chunk-EPHGD4YV.js +0 -174
  97. package/dist/chunk-EPHGD4YV.js.map +0 -1
  98. package/dist/chunk-XIGWUDOD.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { NativeDocxEditor } from './chunk-2C7TCVQZ.js';
2
+ import { NativeDocxEditor } from './chunk-3OT37I24.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-WTM65ZNG.js.map
41
- //# sourceMappingURL=chunk-WTM65ZNG.js.map
40
+ //# sourceMappingURL=chunk-TKJSCHSX.js.map
41
+ //# sourceMappingURL=chunk-TKJSCHSX.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-WTM65ZNG.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-TKJSCHSX.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"]}
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkMUMH3Z6K_cjs = require('./chunk-MUMH3Z6K.cjs');
5
- var chunkVP4KJ4LK_cjs = require('./chunk-VP4KJ4LK.cjs');
5
+ var chunkXZB2QP76_cjs = require('./chunk-XZB2QP76.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(chunkVP4KJ4LK_cjs.AssistantDock, { ...props, chat });
64
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXZB2QP76_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-2UAJVK3C.cjs.map
85
- //# sourceMappingURL=chunk-2UAJVK3C.cjs.map
84
+ //# sourceMappingURL=chunk-UAMZXRYJ.cjs.map
85
+ //# sourceMappingURL=chunk-UAMZXRYJ.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-2UAJVK3C.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-UAMZXRYJ.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,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk2A4MDHJR_cjs = require('./chunk-2A4MDHJR.cjs');
4
+ var chunkI2QSDQQV_cjs = require('./chunk-I2QSDQQV.cjs');
5
5
  var chunkXSUOEJB3_cjs = require('./chunk-XSUOEJB3.cjs');
6
6
  var lucideReact = require('lucide-react');
7
7
  var ui = require('@arbidocs/react/ui');
@@ -1130,7 +1130,7 @@ function evidenceParagraphs(row, l) {
1130
1130
  const threads = links.threads ?? [];
1131
1131
  const more = links.doc_count - docs.length + (links.fact_count - facts.length) + (links.thread_count - threads.length);
1132
1132
  return [
1133
- chunk2A4MDHJR_cjs.paragraph(
1133
+ chunkI2QSDQQV_cjs.paragraph(
1134
1134
  [
1135
1135
  {
1136
1136
  text: [
@@ -1144,15 +1144,15 @@ function evidenceParagraphs(row, l) {
1144
1144
  "TagTableCell"
1145
1145
  ),
1146
1146
  ...docs.map(
1147
- (d) => chunk2A4MDHJR_cjs.paragraph(
1147
+ (d) => chunkI2QSDQQV_cjs.paragraph(
1148
1148
  [{ text: d.file_name, bold: true }, ...d.note ? [{ text: ` \u2014 ${d.note}` }] : []],
1149
1149
  "TagTableCell"
1150
1150
  )
1151
1151
  ),
1152
- ...facts.map((f) => chunk2A4MDHJR_cjs.paragraph([{ text: `\u201C${f.text}\u201D`, italic: true }], "TagTableCell")),
1153
- ...threads.map((t) => chunk2A4MDHJR_cjs.paragraph([{ text: t.title || l.untitledThread }], "TagTableCell")),
1152
+ ...facts.map((f) => chunkI2QSDQQV_cjs.paragraph([{ text: `\u201C${f.text}\u201D`, italic: true }], "TagTableCell")),
1153
+ ...threads.map((t) => chunkI2QSDQQV_cjs.paragraph([{ text: t.title || l.untitledThread }], "TagTableCell")),
1154
1154
  ...more > 0 ? [
1155
- chunk2A4MDHJR_cjs.paragraph(
1155
+ chunkI2QSDQQV_cjs.paragraph(
1156
1156
  [{ text: l.more.replace("{count}", String(more)), muted: true }],
1157
1157
  "TagTableCell"
1158
1158
  )
@@ -1162,8 +1162,8 @@ function evidenceParagraphs(row, l) {
1162
1162
  function gapParagraphs(row, columns, l) {
1163
1163
  const missing = columns.filter((c) => c.type !== "checkbox" && cellText(cellValue(row, c), c) === "").map((c) => c.name);
1164
1164
  return [
1165
- ...isGap(row) ? [chunk2A4MDHJR_cjs.paragraph([{ text: l.noEvidence, bold: true }], "TagTableCell")] : [],
1166
- ...missing.length ? [chunk2A4MDHJR_cjs.paragraph([{ text: l.missing.replace("{fields}", missing.join(", ")) }], "TagTableCell")] : []
1165
+ ...isGap(row) ? [chunkI2QSDQQV_cjs.paragraph([{ text: l.noEvidence, bold: true }], "TagTableCell")] : [],
1166
+ ...missing.length ? [chunkI2QSDQQV_cjs.paragraph([{ text: l.missing.replace("{fields}", missing.join(", ")) }], "TagTableCell")] : []
1167
1167
  ];
1168
1168
  }
1169
1169
  function tagTableDocumentXml(table, options) {
@@ -1171,40 +1171,40 @@ function tagTableDocumentXml(table, options) {
1171
1171
  const { columns, rows } = table;
1172
1172
  const heads = [l.row, ...columns.map((c) => c.name), l.evidence, l.gaps];
1173
1173
  const landscape = heads.length > TAG_TABLE_DOCX_LANDSCAPE_AFTER;
1174
- const { textWidth, sectPr } = chunk2A4MDHJR_cjs.page(landscape);
1174
+ const { textWidth, sectPr } = chunkI2QSDQQV_cjs.page(landscape);
1175
1175
  const weights = [2, ...columns.map(() => 1), 3, 1.5];
1176
1176
  const total = weights.reduce((a, b) => a + b, 0);
1177
1177
  const widths = weights.map((w) => Math.floor(textWidth * w / total));
1178
- const at = chunk2A4MDHJR_cjs.minuteUtc(options.at ?? (/* @__PURE__ */ new Date()).toISOString());
1178
+ const at = chunkI2QSDQQV_cjs.minuteUtc(options.at ?? (/* @__PURE__ */ new Date()).toISOString());
1179
1179
  const header = `<w:tr><w:trPr><w:tblHeader/><w:cantSplit/></w:trPr>${heads.map(
1180
- (h, i) => chunk2A4MDHJR_cjs.cell([chunk2A4MDHJR_cjs.paragraph([{ text: h, bold: true }], "TagTableCell")], widths[i], "E7E6E6")
1180
+ (h, i) => chunkI2QSDQQV_cjs.cell([chunkI2QSDQQV_cjs.paragraph([{ text: h, bold: true }], "TagTableCell")], widths[i], "E7E6E6")
1181
1181
  ).join("")}</w:tr>`;
1182
1182
  const body = rows.map((row) => {
1183
1183
  const fill = isGap(row) ? "FFF2CC" : void 0;
1184
1184
  const cells = [
1185
- chunk2A4MDHJR_cjs.cell([chunk2A4MDHJR_cjs.paragraph([{ text: row.name, bold: true }], "TagTableCell")], widths[0], fill),
1185
+ chunkI2QSDQQV_cjs.cell([chunkI2QSDQQV_cjs.paragraph([{ text: row.name, bold: true }], "TagTableCell")], widths[0], fill),
1186
1186
  ...columns.map((c, i) => {
1187
1187
  const text = cellText(cellValue(row, c), c, options.nameOf);
1188
- return chunk2A4MDHJR_cjs.cell(text ? [chunk2A4MDHJR_cjs.paragraph([{ text }], "TagTableCell")] : [], widths[i + 1], fill);
1188
+ return chunkI2QSDQQV_cjs.cell(text ? [chunkI2QSDQQV_cjs.paragraph([{ text }], "TagTableCell")] : [], widths[i + 1], fill);
1189
1189
  }),
1190
- chunk2A4MDHJR_cjs.cell(evidenceParagraphs(row, l), widths[columns.length + 1], fill),
1191
- chunk2A4MDHJR_cjs.cell(gapParagraphs(row, columns, l), widths[columns.length + 2], fill)
1190
+ chunkI2QSDQQV_cjs.cell(evidenceParagraphs(row, l), widths[columns.length + 1], fill),
1191
+ chunkI2QSDQQV_cjs.cell(gapParagraphs(row, columns, l), widths[columns.length + 2], fill)
1192
1192
  ];
1193
1193
  return `<w:tr><w:trPr><w:cantSplit/></w:trPr>${cells.join("")}</w:tr>`;
1194
1194
  });
1195
1195
  const grid = `<w:tbl><w:tblPr><w:tblStyle w:val="TagTableGrid"/><w:tblW w:w="${textWidth}" w:type="dxa"/><w:tblLayout w:type="fixed"/><w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/></w:tblPr><w:tblGrid>${widths.map((w) => `<w:gridCol w:w="${w}"/>`).join("")}</w:tblGrid>${header}${body.join("")}</w:tbl>`;
1196
- return chunk2A4MDHJR_cjs.documentXml(
1197
- `${chunk2A4MDHJR_cjs.paragraph(
1196
+ return chunkI2QSDQQV_cjs.documentXml(
1197
+ `${chunkI2QSDQQV_cjs.paragraph(
1198
1198
  [{ text: options.title }],
1199
1199
  "Title"
1200
- )}${chunk2A4MDHJR_cjs.paragraph([{ text: l.takenAt.replace("{at}", `${at} UTC`), muted: true }])}${grid}${rows.length ? "" : chunk2A4MDHJR_cjs.paragraph([{ text: l.empty, muted: true }])}<w:p/>${sectPr}`
1200
+ )}${chunkI2QSDQQV_cjs.paragraph([{ text: l.takenAt.replace("{at}", `${at} UTC`), muted: true }])}${grid}${rows.length ? "" : chunkI2QSDQQV_cjs.paragraph([{ text: l.empty, muted: true }])}<w:p/>${sectPr}`
1201
1201
  );
1202
1202
  }
1203
1203
  function tagTableDocx(table, options) {
1204
1204
  const at = new Date(options.at ?? Date.now()).toISOString();
1205
- return chunk2A4MDHJR_cjs.docxPackage({
1205
+ return chunkI2QSDQQV_cjs.docxPackage({
1206
1206
  document: tagTableDocumentXml(table, { ...options, at }),
1207
- styles: chunk2A4MDHJR_cjs.TABLE_DOCUMENT_STYLES,
1207
+ styles: chunkI2QSDQQV_cjs.TABLE_DOCUMENT_STYLES,
1208
1208
  title: options.title,
1209
1209
  at
1210
1210
  });
@@ -1235,5 +1235,5 @@ exports.tagTableDocx = tagTableDocx;
1235
1235
  exports.tagTableMarkdown = tagTableMarkdown;
1236
1236
  exports.workspaceActivityHeadline = workspaceActivityHeadline;
1237
1237
  exports.workspaceActivityTarget = workspaceActivityTarget;
1238
- //# sourceMappingURL=chunk-WPVIOGDG.cjs.map
1239
- //# sourceMappingURL=chunk-WPVIOGDG.cjs.map
1238
+ //# sourceMappingURL=chunk-US5ASM4G.cjs.map
1239
+ //# sourceMappingURL=chunk-US5ASM4G.cjs.map