@arbidocs/blocks 0.4.77 → 0.4.78

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 (71) hide show
  1. package/dist/agents/index.cjs +289 -277
  2. package/dist/agents/index.js +5 -5
  3. package/dist/agents/tasks/WorkflowThreadStrip.d.ts +9 -4
  4. package/dist/agents/workflows/StepBarFrame.d.ts +75 -0
  5. package/dist/agents/workflows/WorkflowRunner.d.ts +5 -1
  6. package/dist/agents/workflows/WorkflowStepBar.d.ts +9 -11
  7. package/dist/agents/workflows/index.d.ts +2 -0
  8. package/dist/agents/workflows/stepWindow.d.ts +59 -0
  9. package/dist/chat/ChatPage.d.ts +1 -1
  10. package/dist/chat/chat-page-types.d.ts +5 -0
  11. package/dist/chat/index.cjs +124 -124
  12. package/dist/chat/index.js +2 -2
  13. package/dist/{chunk-HEVVT6IT.js → chunk-5OC5CGYX.js} +128 -124
  14. package/dist/chunk-5OC5CGYX.js.map +1 -0
  15. package/dist/chunk-CWAZNXC5.js +441 -0
  16. package/dist/chunk-CWAZNXC5.js.map +1 -0
  17. package/dist/{chunk-NIP5BOP7.js → chunk-EWSEQEPL.js} +5 -4
  18. package/dist/chunk-EWSEQEPL.js.map +1 -0
  19. package/dist/{chunk-UEU23PTW.js → chunk-ICBAFX5B.js} +3 -3
  20. package/dist/{chunk-UEU23PTW.js.map → chunk-ICBAFX5B.js.map} +1 -1
  21. package/dist/{chunk-EKIUMNCN.cjs → chunk-IF6VAYIA.cjs} +5 -5
  22. package/dist/{chunk-EKIUMNCN.cjs.map → chunk-IF6VAYIA.cjs.map} +1 -1
  23. package/dist/chunk-MLAHDAN5.cjs +450 -0
  24. package/dist/chunk-MLAHDAN5.cjs.map +1 -0
  25. package/dist/{chunk-HOD6OM7L.cjs → chunk-MP6FK43E.cjs} +5 -4
  26. package/dist/chunk-MP6FK43E.cjs.map +1 -0
  27. package/dist/{chunk-JFUN4D7D.cjs → chunk-SSDISIDW.cjs} +152 -148
  28. package/dist/chunk-SSDISIDW.cjs.map +1 -0
  29. package/dist/{chunk-3XR3IEGU.cjs → chunk-VFIZYSZB.cjs} +573 -168
  30. package/dist/chunk-VFIZYSZB.cjs.map +1 -0
  31. package/dist/{chunk-34UW6XUQ.js → chunk-WXRCMIAE.js} +567 -172
  32. package/dist/chunk-WXRCMIAE.js.map +1 -0
  33. package/dist/{chunk-GTXOV7IJ.cjs → chunk-XMBYDLZQ.cjs} +4 -4
  34. package/dist/{chunk-GTXOV7IJ.cjs.map → chunk-XMBYDLZQ.cjs.map} +1 -1
  35. package/dist/{chunk-OEM5ARVM.js → chunk-XQDM6T6C.js} +3 -3
  36. package/dist/{chunk-OEM5ARVM.js.map → chunk-XQDM6T6C.js.map} +1 -1
  37. package/dist/connect/index.cjs +209 -53
  38. package/dist/connect/index.cjs.map +1 -1
  39. package/dist/connect/index.d.ts +2 -0
  40. package/dist/connect/index.js +190 -36
  41. package/dist/connect/index.js.map +1 -1
  42. package/dist/connection/ConnectedTagMatrix.d.ts +20 -0
  43. package/dist/connection/ConnectedWorkflowRunner.d.ts +13 -1
  44. package/dist/connection/WorkflowRunThread.d.ts +21 -0
  45. package/dist/facts/index.cjs +1 -1
  46. package/dist/facts/index.js +1 -1
  47. package/dist/files/index.cjs +1 -1
  48. package/dist/files/index.js +1 -1
  49. package/dist/home/index.cjs +1 -1
  50. package/dist/home/index.js +1 -1
  51. package/dist/index.cjs +492 -447
  52. package/dist/index.cjs.map +1 -1
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.js +9 -8
  55. package/dist/index.js.map +1 -1
  56. package/dist/shell/index.cjs +1 -1
  57. package/dist/shell/index.js +1 -1
  58. package/dist/studio/index.cjs +4 -4
  59. package/dist/studio/index.js +3 -3
  60. package/dist/tags/TagMatrix.d.ts +64 -0
  61. package/dist/tags/index.d.ts +3 -0
  62. package/dist/tags/tagMatrixModel.d.ts +39 -0
  63. package/dist/workflow-canvas/index.cjs +48 -48
  64. package/dist/workflow-canvas/index.js +5 -5
  65. package/package.json +4 -4
  66. package/dist/chunk-34UW6XUQ.js.map +0 -1
  67. package/dist/chunk-3XR3IEGU.cjs.map +0 -1
  68. package/dist/chunk-HEVVT6IT.js.map +0 -1
  69. package/dist/chunk-HOD6OM7L.cjs.map +0 -1
  70. package/dist/chunk-JFUN4D7D.cjs.map +0 -1
  71. package/dist/chunk-NIP5BOP7.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkMUMH3Z6K_cjs = require('./chunk-MUMH3Z6K.cjs');
5
- var chunkHOD6OM7L_cjs = require('./chunk-HOD6OM7L.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(chunkHOD6OM7L_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-GTXOV7IJ.cjs.map
85
- //# sourceMappingURL=chunk-GTXOV7IJ.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-GTXOV7IJ.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
2
  import { useConnection } from './chunk-OYMWV45N.js';
3
- import { AssistantDock } from './chunk-NIP5BOP7.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-OEM5ARVM.js.map
68
- //# sourceMappingURL=chunk-OEM5ARVM.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-OEM5ARVM.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"]}
@@ -2,17 +2,18 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkB3WCKBJ7_cjs = require('../chunk-B3WCKBJ7.cjs');
5
- var chunkGTXOV7IJ_cjs = require('../chunk-GTXOV7IJ.cjs');
5
+ var chunkXMBYDLZQ_cjs = require('../chunk-XMBYDLZQ.cjs');
6
6
  var chunkTZR36PPP_cjs = require('../chunk-TZR36PPP.cjs');
7
7
  var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
8
8
  var chunkZVBPRMHJ_cjs = require('../chunk-ZVBPRMHJ.cjs');
9
9
  require('../chunk-7YUFMNFW.cjs');
10
- var chunk3XR3IEGU_cjs = require('../chunk-3XR3IEGU.cjs');
11
- require('../chunk-DETZZBG2.cjs');
10
+ var chunkMLAHDAN5_cjs = require('../chunk-MLAHDAN5.cjs');
11
+ var chunkVFIZYSZB_cjs = require('../chunk-VFIZYSZB.cjs');
12
12
  require('../chunk-7D737FLE.cjs');
13
+ require('../chunk-DETZZBG2.cjs');
13
14
  var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
14
15
  require('../chunk-ADOKTJHV.cjs');
15
- var chunkHOD6OM7L_cjs = require('../chunk-HOD6OM7L.cjs');
16
+ var chunkMP6FK43E_cjs = require('../chunk-MP6FK43E.cjs');
16
17
  require('../chunk-VGOFFCMT.cjs');
17
18
  require('../chunk-B4SRYJLM.cjs');
18
19
  require('../chunk-7UTB4PHM.cjs');
@@ -189,7 +190,7 @@ function StreamedArtifact({
189
190
  }
190
191
  var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
191
192
  function formValues(step, inputs) {
192
- const fields = chunk3XR3IEGU_cjs.stepFields(step);
193
+ const fields = chunkVFIZYSZB_cjs.stepFields(step);
193
194
  if (!fields.length) return void 0;
194
195
  if (step.kind === "form")
195
196
  return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
@@ -224,10 +225,10 @@ function useAnswerRetry(missing, refetch) {
224
225
  function useWorkflowThread(workflow, options = {}) {
225
226
  const arbi = react$1.useArbi();
226
227
  const { ensureWorkspaceOpen, status } = chunkMUMH3Z6K_cjs.useConnection();
227
- const { wsId } = chunkGTXOV7IJ_cjs.useWorkspaceDocs();
228
+ const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
228
229
  const [threadId, setThreadId] = react.useState(options.conversationId);
229
230
  const [localInputs, setLocalInputs] = react.useState(
230
- () => chunk3XR3IEGU_cjs.initialRunInputs(workflow, options.initialInputs)
231
+ () => chunkVFIZYSZB_cjs.initialRunInputs(workflow, options.initialInputs)
231
232
  );
232
233
  const [edits, setEdits] = react.useState({});
233
234
  const [localStates, setLocalStates] = react.useState({});
@@ -247,12 +248,12 @@ function useWorkflowThread(workflow, options = {}) {
247
248
  );
248
249
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
249
250
  const steps = react.useMemo(
250
- () => chunk3XR3IEGU_cjs.workflowSteps(workflow).length > 0 ? chunk3XR3IEGU_cjs.workflowSteps(workflow) : chunk3XR3IEGU_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
251
+ () => chunkVFIZYSZB_cjs.workflowSteps(workflow).length > 0 ? chunkVFIZYSZB_cjs.workflowSteps(workflow) : chunkVFIZYSZB_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
251
252
  [workflow, conversation?.plan?.steps]
252
253
  );
253
254
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
254
255
  const serverStates = react.useMemo(
255
- () => chunk3XR3IEGU_cjs.stepStatesFromActivity(activity.data ?? []),
256
+ () => chunkVFIZYSZB_cjs.stepStatesFromActivity(activity.data ?? []),
256
257
  [activity.data]
257
258
  );
258
259
  const working = steps.some(
@@ -304,7 +305,7 @@ function useWorkflowThread(workflow, options = {}) {
304
305
  if (!id) {
305
306
  await ensureWorkspaceOpen();
306
307
  const created = await createWork.mutateAsync({
307
- title: chunk3XR3IEGU_cjs.runThreadTitle(workflow, values).slice(0, 60),
308
+ title: chunkVFIZYSZB_cjs.runThreadTitle(workflow, values).slice(0, 60),
308
309
  description: workflow.description || null,
309
310
  prompt: null,
310
311
  skill_ref: null,
@@ -316,7 +317,7 @@ function useWorkflowThread(workflow, options = {}) {
316
317
  criteria: [],
317
318
  max_passes: 3,
318
319
  documents: [],
319
- steps: chunk3XR3IEGU_cjs.toPlanSteps(workflow, {
320
+ steps: chunkVFIZYSZB_cjs.toPlanSteps(workflow, {
320
321
  inputs: values,
321
322
  resolveWorkflow: options.resolveWorkflow,
322
323
  compose: options.compose
@@ -371,7 +372,7 @@ function useWorkflowThread(workflow, options = {}) {
371
372
  [threadId, act]
372
373
  );
373
374
  const loaded = !options.conversationId || activity.isSuccess || activity.isError;
374
- const view = chunk3XR3IEGU_cjs.useWorkflowView({
375
+ const view = chunkVFIZYSZB_cjs.useWorkflowView({
375
376
  steps,
376
377
  states,
377
378
  inputs,
@@ -394,6 +395,38 @@ function useWorkflowThread(workflow, options = {}) {
394
395
  );
395
396
  return { view, conversationId: threadId, conversation, nameOf, people };
396
397
  }
398
+ function WorkflowRunThread({
399
+ conversationId,
400
+ workspaceId,
401
+ aside,
402
+ stepTitle,
403
+ targetMessageId,
404
+ onOpenCitation,
405
+ labels,
406
+ className
407
+ }) {
408
+ const chat = react$1.useArbiChat({ workspaceId });
409
+ const listed = chat.threads.some((t) => t.id === conversationId);
410
+ const { selectThread, activeThreadId } = chat;
411
+ react.useEffect(() => {
412
+ if (listed && activeThreadId !== conversationId) selectThread(conversationId);
413
+ }, [listed, activeThreadId, conversationId, selectThread]);
414
+ return /* @__PURE__ */ jsxRuntime.jsx(
415
+ chunkMP6FK43E_cjs.ChatPage,
416
+ {
417
+ chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
418
+ singleThread: true,
419
+ documentsRequired: false,
420
+ aside,
421
+ asideBreakpoint: 52,
422
+ workflowStepTitle: stepTitle,
423
+ targetMessageId,
424
+ onOpenCitation,
425
+ labels,
426
+ className: className ?? "h-[min(78dvh,860px)] min-h-[480px] rounded-xl border border-border"
427
+ }
428
+ );
429
+ }
397
430
  var DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS = {
398
431
  loadingDocument: "Opening the document\u2026",
399
432
  documentFailed: "The document could not be opened.",
@@ -411,7 +444,7 @@ function WorkflowSignDialog({
411
444
  const arbi = react$1.useArbi();
412
445
  const { user, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
413
446
  const tools = documentTools.useOptionalDocumentTools();
414
- const { id, version } = chunk3XR3IEGU_cjs.splitDocRef(docRef);
447
+ const { id, version } = chunkVFIZYSZB_cjs.splitDocRef(docRef);
415
448
  const [pdf, setPdf] = react.useState(null);
416
449
  const [failed, setFailed] = react.useState(false);
417
450
  react.useEffect(() => {
@@ -463,7 +496,7 @@ function WorkflowWordDialog({
463
496
  onClose,
464
497
  labels
465
498
  }) {
466
- const { id } = chunk3XR3IEGU_cjs.splitDocRef(docRef);
499
+ const { id } = chunkVFIZYSZB_cjs.splitDocRef(docRef);
467
500
  return /* @__PURE__ */ jsxRuntime.jsx(
468
501
  chunkULWRNGGE_cjs.ModalScaffold,
469
502
  {
@@ -547,6 +580,8 @@ function Cell({ onClick, children }) {
547
580
  }
548
581
  var DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = {
549
582
  notify: "Ask to approve",
583
+ showInThread: "Show in the thread",
584
+ currentStep: "Current step",
550
585
  notified: "Notified.",
551
586
  openThread: "Open the thread",
552
587
  loadingAnswer: "Fetching the answer\u2026"
@@ -562,6 +597,7 @@ function ConnectedWorkflowRunner({
562
597
  onOpenMessage,
563
598
  actions: hostActions,
564
599
  dialogLabels,
600
+ layout = "thread",
565
601
  testIdPrefix = "workflow-run",
566
602
  ...runnerProps
567
603
  }) {
@@ -569,7 +605,7 @@ function ConnectedWorkflowRunner({
569
605
  const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
570
606
  const arbi = react$1.useArbi();
571
607
  const { ensureWorkspaceOpen, user } = chunkMUMH3Z6K_cjs.useConnection();
572
- const { wsId } = chunkGTXOV7IJ_cjs.useWorkspaceDocs();
608
+ const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
573
609
  const { data: docs = [], refetch } = react$1.useDocuments(wsId);
574
610
  const [uploading, setUploading] = react.useState(false);
575
611
  const [added, setAdded] = react.useState({});
@@ -581,6 +617,8 @@ function ConnectedWorkflowRunner({
581
617
  documentsFor: options?.documentsFor ?? ((stepId) => Object.entries(addedRef.current).flatMap(([doc, step]) => step === stepId ? [doc] : []))
582
618
  });
583
619
  const [dialog, setDialog] = react.useState(null);
620
+ const inThread = layout === "thread" && !!conversationId;
621
+ const [target, setTarget] = react.useState(void 0);
584
622
  const nameOfDoc = react.useCallback(
585
623
  (id) => docs.find((d) => d.external_id === id)?.file_name ?? void 0,
586
624
  [docs]
@@ -589,19 +627,20 @@ function ConnectedWorkflowRunner({
589
627
  () => ({
590
628
  me: user?.externalId,
591
629
  openDocument: onOpenDocument && ((ref) => {
592
- const { id, version } = chunk3XR3IEGU_cjs.splitDocRef(ref);
630
+ const { id, version } = chunkVFIZYSZB_cjs.splitDocRef(ref);
593
631
  onOpenDocument(id, version);
594
632
  }),
595
633
  openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
596
- openMessage: onOpenMessage,
634
+ // In the thread layout an answer is right there: scroll to it.
635
+ openMessage: inThread ? setTarget : onOpenMessage,
597
636
  sign: hostActions?.sign ?? ((_step, state) => {
598
637
  const w = state.waiting;
599
638
  if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
600
639
  }),
601
- openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunk3XR3IEGU_cjs.splitDocRef(ref).id) ?? "" })),
640
+ openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkVFIZYSZB_cjs.splitDocRef(ref).id) ?? "" })),
602
641
  openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
603
642
  }),
604
- [user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc]
643
+ [user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
605
644
  );
606
645
  const onUpload = react.useCallback(
607
646
  async (files2, step) => {
@@ -634,6 +673,23 @@ function ConnectedWorkflowRunner({
634
673
  }, [reading, refetch]);
635
674
  const renderAgentOutput = (step, state) => {
636
675
  const status = state?.status;
676
+ if (inThread) {
677
+ const id = state?.responseId;
678
+ return id && status === "done" ? /* @__PURE__ */ jsxRuntime.jsxs(
679
+ ui.Button,
680
+ {
681
+ variant: "outline",
682
+ size: "sm",
683
+ onClick: () => setTarget(id),
684
+ "data-testid": `${testIdPrefix}-${step.id}-show-in-thread`,
685
+ children: [
686
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageSquare, { className: "size-4" }),
687
+ " ",
688
+ l.showInThread
689
+ ]
690
+ }
691
+ ) : null;
692
+ }
637
693
  if (!state?.text && status !== "done") return null;
638
694
  if (!state?.text && state?.responseId) {
639
695
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -659,6 +715,34 @@ function ConnectedWorkflowRunner({
659
715
  }
660
716
  );
661
717
  };
718
+ const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
719
+ chunkVFIZYSZB_cjs.WorkflowRunner,
720
+ {
721
+ people,
722
+ ...runnerProps,
723
+ workflow,
724
+ run: view,
725
+ renderAgentOutput,
726
+ renderReview: (step) => conversationId ? /* @__PURE__ */ jsxRuntime.jsx(
727
+ ReviewNotify,
728
+ {
729
+ conversationId,
730
+ workspaceId: wsId,
731
+ labels: l,
732
+ testId: `${testIdPrefix}-${step.id}`
733
+ }
734
+ ) : null,
735
+ onUpload,
736
+ uploading,
737
+ files,
738
+ actions,
739
+ nameOfDoc,
740
+ testIdPrefix,
741
+ hideStepBar: compact,
742
+ compact,
743
+ className: compact ? void 0 : runnerProps.className
744
+ }
745
+ );
662
746
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
663
747
  conversationId && onOpenConversation && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
664
748
  ui.Button,
@@ -674,31 +758,29 @@ function ConnectedWorkflowRunner({
674
758
  ]
675
759
  }
676
760
  ) }),
677
- /* @__PURE__ */ jsxRuntime.jsx(
678
- chunk3XR3IEGU_cjs.WorkflowRunner,
679
- {
680
- people,
681
- ...runnerProps,
682
- workflow,
683
- run: view,
684
- renderAgentOutput,
685
- renderReview: (step) => conversationId ? /* @__PURE__ */ jsxRuntime.jsx(
686
- ReviewNotify,
687
- {
688
- conversationId,
689
- workspaceId: wsId,
690
- labels: l,
691
- testId: `${testIdPrefix}-${step.id}`
692
- }
693
- ) : null,
694
- onUpload,
695
- uploading,
696
- files,
697
- actions,
698
- nameOfDoc,
699
- testIdPrefix
700
- }
701
- ),
761
+ inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
762
+ /* @__PURE__ */ jsxRuntime.jsx(
763
+ chunkVFIZYSZB_cjs.WorkflowStepBar,
764
+ {
765
+ run: view,
766
+ levels: chunkVFIZYSZB_cjs.stepLevels(view.steps),
767
+ doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
768
+ icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
769
+ tid: (suffix) => `${testIdPrefix}-${suffix}`
770
+ }
771
+ ),
772
+ /* @__PURE__ */ jsxRuntime.jsx(
773
+ WorkflowRunThread,
774
+ {
775
+ conversationId,
776
+ workspaceId: wsId,
777
+ stepTitle: (id) => view.steps.find((s) => s.id === id)?.title,
778
+ targetMessageId: target,
779
+ labels: { workflows: l.currentStep },
780
+ aside: runner(true)
781
+ }
782
+ )
783
+ ] }) : runner(false),
702
784
  dialog?.kind === "sign" && /* @__PURE__ */ jsxRuntime.jsx(WorkflowSignDialog, { docRef: dialog.docRef, onClose: () => setDialog(null), labels: dl }),
703
785
  dialog?.kind === "word" && /* @__PURE__ */ jsxRuntime.jsx(
704
786
  WorkflowWordDialog,
@@ -793,6 +875,78 @@ function ReviewNotify({
793
875
  ] })
794
876
  ] });
795
877
  }
878
+ function ConnectedTagMatrix({
879
+ parentId,
880
+ linksLimit = 3,
881
+ exportTitle,
882
+ onExported,
883
+ readOnly,
884
+ ...props
885
+ }) {
886
+ const arbi = react$1.useArbi();
887
+ const { workspaceId, status, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
888
+ const matrix = react$1.useTagMatrix({ parentId }, { linksLimit });
889
+ const update = react$1.useUpdateTagFields();
890
+ const invalidate = react$1.useInvalidateTagData();
891
+ const members = react$1.useWorkspaceUsers(workspaceId ?? void 0, {
892
+ enabled: status === "authenticated" && !!workspaceId,
893
+ beforeFetch: ensureWorkspaceOpen
894
+ });
895
+ const [error, setError] = react.useState(null);
896
+ const people = (members.data ?? []).map((m) => ({
897
+ value: m.user.external_id,
898
+ label: [m.user.given_name, m.user.family_name].filter(Boolean).join(" ") || m.user.email
899
+ }));
900
+ const fail = (e) => setError(e instanceof Error ? e.message : String(e));
901
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
902
+ /* @__PURE__ */ jsxRuntime.jsx(
903
+ chunkMLAHDAN5_cjs.TagMatrix,
904
+ {
905
+ ...props,
906
+ matrix: matrix.data,
907
+ isLoading: matrix.isLoading,
908
+ people,
909
+ onChangeValue: readOnly ? void 0 : async (tagId, fieldId, value) => {
910
+ setError(null);
911
+ await update.mutateAsync({ tagId, values: { [fieldId]: value } }).catch(fail);
912
+ },
913
+ onAddRow: readOnly ? void 0 : async (name) => {
914
+ setError(null);
915
+ try {
916
+ await ensureWorkspaceOpen();
917
+ await arbi.tags.create({ name, parentId });
918
+ await invalidate();
919
+ } catch (e) {
920
+ fail(e);
921
+ }
922
+ },
923
+ onExport: onExported && matrix.data ? async () => {
924
+ setError(null);
925
+ try {
926
+ const data = matrix.data;
927
+ if (!data) return;
928
+ const title = exportTitle ?? data.parent?.name ?? "Matrix";
929
+ const markdown = chunkMLAHDAN5_cjs.tagMatrixMarkdown(data, {
930
+ title,
931
+ nameOf: (id2) => people.find((p) => p.value === id2)?.label
932
+ });
933
+ await ensureWorkspaceOpen();
934
+ const stamp = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
935
+ const uploaded = await arbi.documents.uploadFile(
936
+ new Blob([markdown], { type: "text/markdown" }),
937
+ `${title} (${stamp}).md`
938
+ );
939
+ const id = uploaded?.doc_ext_ids?.[0];
940
+ if (id) onExported(id);
941
+ } catch (e) {
942
+ fail(e);
943
+ }
944
+ } : void 0
945
+ }
946
+ ),
947
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-sm text-destructive", children: error })
948
+ ] });
949
+ }
796
950
  function useConnectedShellWorkspaces(options = {}) {
797
951
  const { workspaceId, setWorkspace } = chunkMUMH3Z6K_cjs.useConnection();
798
952
  const query = react$1.useWorkspaces();
@@ -1331,7 +1485,7 @@ function mapWorkNotification(note) {
1331
1485
  function ActiveChat({ agentId, workspaceId }) {
1332
1486
  const chat = react$1.useArbiChat({ agentId, workspaceId });
1333
1487
  return /* @__PURE__ */ jsxRuntime.jsx(
1334
- chunkHOD6OM7L_cjs.ChatPage,
1488
+ chunkMP6FK43E_cjs.ChatPage,
1335
1489
  {
1336
1490
  chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
1337
1491
  documentsRequired: false,
@@ -1393,35 +1547,35 @@ function ConnectedAgentChatPanel({
1393
1547
 
1394
1548
  Object.defineProperty(exports, "ConnectedAssistantDock", {
1395
1549
  enumerable: true,
1396
- get: function () { return chunkGTXOV7IJ_cjs.ConnectedAssistantDock; }
1550
+ get: function () { return chunkXMBYDLZQ_cjs.ConnectedAssistantDock; }
1397
1551
  });
1398
1552
  Object.defineProperty(exports, "redlineStats", {
1399
1553
  enumerable: true,
1400
- get: function () { return chunkGTXOV7IJ_cjs.redlineStats; }
1554
+ get: function () { return chunkXMBYDLZQ_cjs.redlineStats; }
1401
1555
  });
1402
1556
  Object.defineProperty(exports, "textToArtifact", {
1403
1557
  enumerable: true,
1404
- get: function () { return chunkGTXOV7IJ_cjs.textToArtifact; }
1558
+ get: function () { return chunkXMBYDLZQ_cjs.textToArtifact; }
1405
1559
  });
1406
1560
  Object.defineProperty(exports, "toRedlineMarkdown", {
1407
1561
  enumerable: true,
1408
- get: function () { return chunkGTXOV7IJ_cjs.toRedlineMarkdown; }
1562
+ get: function () { return chunkXMBYDLZQ_cjs.toRedlineMarkdown; }
1409
1563
  });
1410
1564
  Object.defineProperty(exports, "useConnectedAiTask", {
1411
1565
  enumerable: true,
1412
- get: function () { return chunkGTXOV7IJ_cjs.useConnectedAiTask; }
1566
+ get: function () { return chunkXMBYDLZQ_cjs.useConnectedAiTask; }
1413
1567
  });
1414
1568
  Object.defineProperty(exports, "useConnectedChat", {
1415
1569
  enumerable: true,
1416
- get: function () { return chunkGTXOV7IJ_cjs.useConnectedChat; }
1570
+ get: function () { return chunkXMBYDLZQ_cjs.useConnectedChat; }
1417
1571
  });
1418
1572
  Object.defineProperty(exports, "useSemanticSearch", {
1419
1573
  enumerable: true,
1420
- get: function () { return chunkGTXOV7IJ_cjs.useSemanticSearch; }
1574
+ get: function () { return chunkXMBYDLZQ_cjs.useSemanticSearch; }
1421
1575
  });
1422
1576
  Object.defineProperty(exports, "useWorkspaceDocs", {
1423
1577
  enumerable: true,
1424
- get: function () { return chunkGTXOV7IJ_cjs.useWorkspaceDocs; }
1578
+ get: function () { return chunkXMBYDLZQ_cjs.useWorkspaceDocs; }
1425
1579
  });
1426
1580
  Object.defineProperty(exports, "ConnectionProvider", {
1427
1581
  enumerable: true,
@@ -1450,10 +1604,12 @@ exports.ConnectedRequireVerified = ConnectedRequireVerified;
1450
1604
  exports.ConnectedSecuritySection = ConnectedSecuritySection;
1451
1605
  exports.ConnectedSessionsRow = ConnectedSessionsRow;
1452
1606
  exports.ConnectedSkillUpload = ConnectedSkillUpload;
1607
+ exports.ConnectedTagMatrix = ConnectedTagMatrix;
1453
1608
  exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
1454
1609
  exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
1455
1610
  exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
1456
1611
  exports.StreamedArtifact = StreamedArtifact;
1612
+ exports.WorkflowRunThread = WorkflowRunThread;
1457
1613
  exports.defaultUnmetPasswordRequirement = defaultUnmetPasswordRequirement;
1458
1614
  exports.useConnectedDocxNotifications = useConnectedDocxNotifications;
1459
1615
  exports.useConnectedShellWorkspaces = useConnectedShellWorkspaces;