@arbidocs/blocks 0.4.126 → 0.4.127

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 (80) hide show
  1. package/dist/agents/index.cjs +303 -303
  2. package/dist/agents/index.js +11 -11
  3. package/dist/calls/index.cjs +3 -3
  4. package/dist/calls/index.js +2 -2
  5. package/dist/chat/index.cjs +135 -135
  6. package/dist/chat/index.js +4 -4
  7. package/dist/{chunk-7HAM7Y5U.js → chunk-2DFDFOM7.js} +3 -3
  8. package/dist/{chunk-7HAM7Y5U.js.map → chunk-2DFDFOM7.js.map} +1 -1
  9. package/dist/{chunk-54ANPPMV.js → chunk-2PNNCEPH.js} +4 -4
  10. package/dist/{chunk-54ANPPMV.js.map → chunk-2PNNCEPH.js.map} +1 -1
  11. package/dist/{chunk-P5ST47VY.js → chunk-5Y7JRY7Y.js} +3 -3
  12. package/dist/{chunk-P5ST47VY.js.map → chunk-5Y7JRY7Y.js.map} +1 -1
  13. package/dist/{chunk-HM23LXUP.cjs → chunk-6AALMYPS.cjs} +3 -3
  14. package/dist/{chunk-HM23LXUP.cjs.map → chunk-6AALMYPS.cjs.map} +1 -1
  15. package/dist/{chunk-IXTQYFIF.js → chunk-6HCJ3ZEU.js} +34 -6
  16. package/dist/chunk-6HCJ3ZEU.js.map +1 -0
  17. package/dist/{chunk-JJLMCV3T.js → chunk-ECERC6TI.js} +32 -28
  18. package/dist/chunk-ECERC6TI.js.map +1 -0
  19. package/dist/{chunk-VW2C2AZL.js → chunk-ENDP7JER.js} +3 -3
  20. package/dist/{chunk-VW2C2AZL.js.map → chunk-ENDP7JER.js.map} +1 -1
  21. package/dist/{chunk-D4YR56FV.cjs → chunk-KYDRUFWT.cjs} +5 -5
  22. package/dist/{chunk-D4YR56FV.cjs.map → chunk-KYDRUFWT.cjs.map} +1 -1
  23. package/dist/{chunk-W27VK32R.cjs → chunk-MCPRNDOJ.cjs} +79 -79
  24. package/dist/{chunk-W27VK32R.cjs.map → chunk-MCPRNDOJ.cjs.map} +1 -1
  25. package/dist/{chunk-ZV3BKLFY.cjs → chunk-NYHGG2IA.cjs} +3 -3
  26. package/dist/{chunk-ZV3BKLFY.cjs.map → chunk-NYHGG2IA.cjs.map} +1 -1
  27. package/dist/{chunk-U6MPHCEB.cjs → chunk-O6IEZDRC.cjs} +33 -5
  28. package/dist/chunk-O6IEZDRC.cjs.map +1 -0
  29. package/dist/{chunk-WV4IDVDQ.cjs → chunk-PJJY6CYL.cjs} +11 -11
  30. package/dist/{chunk-WV4IDVDQ.cjs.map → chunk-PJJY6CYL.cjs.map} +1 -1
  31. package/dist/{chunk-CXLVI3SB.js → chunk-PUCY3UXN.js} +3 -3
  32. package/dist/{chunk-CXLVI3SB.js.map → chunk-PUCY3UXN.js.map} +1 -1
  33. package/dist/{chunk-LC2KJSUS.cjs → chunk-SARREDFP.cjs} +46 -46
  34. package/dist/{chunk-LC2KJSUS.cjs.map → chunk-SARREDFP.cjs.map} +1 -1
  35. package/dist/{chunk-KLOSOT26.js → chunk-T2CVFK2I.js} +11 -11
  36. package/dist/{chunk-KLOSOT26.js.map → chunk-T2CVFK2I.js.map} +1 -1
  37. package/dist/{chunk-HQH35JWC.js → chunk-T6I6ZCBE.js} +3 -3
  38. package/dist/{chunk-HQH35JWC.js.map → chunk-T6I6ZCBE.js.map} +1 -1
  39. package/dist/{chunk-Y4X3RBFI.js → chunk-UUXKB3WQ.js} +3 -3
  40. package/dist/{chunk-Y4X3RBFI.js.map → chunk-UUXKB3WQ.js.map} +1 -1
  41. package/dist/{chunk-VMZXFYHK.cjs → chunk-XFKF3WRN.cjs} +5 -5
  42. package/dist/{chunk-VMZXFYHK.cjs.map → chunk-XFKF3WRN.cjs.map} +1 -1
  43. package/dist/{chunk-GICUGQNN.cjs → chunk-ZAVEMQ37.cjs} +31 -27
  44. package/dist/chunk-ZAVEMQ37.cjs.map +1 -0
  45. package/dist/{chunk-4VCKYR4D.cjs → chunk-ZLRQ5K77.cjs} +4 -4
  46. package/dist/{chunk-4VCKYR4D.cjs.map → chunk-ZLRQ5K77.cjs.map} +1 -1
  47. package/dist/collaboration/index.cjs +23 -23
  48. package/dist/collaboration/index.js +1 -1
  49. package/dist/collaboration/mail/MailMessageView.d.ts +5 -1
  50. package/dist/connect/index.cjs +117 -62
  51. package/dist/connect/index.cjs.map +1 -1
  52. package/dist/connect/index.js +67 -12
  53. package/dist/connect/index.js.map +1 -1
  54. package/dist/document-tools/index.cjs +1 -1
  55. package/dist/document-tools/index.js +1 -1
  56. package/dist/facts/index.cjs +1 -1
  57. package/dist/facts/index.js +1 -1
  58. package/dist/files/index.cjs +1 -1
  59. package/dist/files/index.js +1 -1
  60. package/dist/home/index.cjs +17 -17
  61. package/dist/home/index.js +3 -3
  62. package/dist/index.cjs +652 -652
  63. package/dist/index.js +22 -22
  64. package/dist/settings/ConfirmDialog.d.ts +4 -1
  65. package/dist/settings/index.cjs +14 -14
  66. package/dist/settings/index.js +4 -4
  67. package/dist/shell/index.cjs +1 -1
  68. package/dist/shell/index.js +1 -1
  69. package/dist/site/index.cjs +5 -5
  70. package/dist/site/index.js +1 -1
  71. package/dist/studio/index.cjs +6 -6
  72. package/dist/studio/index.js +5 -5
  73. package/dist/workflow-canvas/index.cjs +62 -62
  74. package/dist/workflow-canvas/index.js +11 -11
  75. package/node_modules/@arbidocs/coedit/package.json +1 -1
  76. package/package.json +4 -4
  77. package/dist/chunk-GICUGQNN.cjs.map +0 -1
  78. package/dist/chunk-IXTQYFIF.js.map +0 -1
  79. package/dist/chunk-JJLMCV3T.js.map +0 -1
  80. package/dist/chunk-U6MPHCEB.cjs.map +0 -1
@@ -25,11 +25,12 @@ function ConfirmDialog({
25
25
  isLoading = false,
26
26
  labels,
27
27
  testId,
28
- testIds
28
+ testIds,
29
+ children
29
30
  }) {
30
31
  const l = react.useMemo(() => ({ ...DEFAULT_CONFIRM_DIALOG_LABELS, ...labels }), [labels]);
31
32
  const cancelRef = react.useRef(null);
32
- return /* @__PURE__ */ jsxRuntime.jsx(
33
+ return /* @__PURE__ */ jsxRuntime.jsxs(
33
34
  chunkULWRNGGE_cjs.ModalScaffold,
34
35
  {
35
36
  open: isOpen,
@@ -43,34 +44,37 @@ function ConfirmDialog({
43
44
  showDescription: true,
44
45
  icon: variant === "destructive" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "h-5 w-5 text-red-text", "aria-hidden": "true" }) : null,
45
46
  testId: chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "confirmation-modal" }),
46
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalScaffold.Footer, { children: [
47
- /* @__PURE__ */ jsxRuntime.jsx(
48
- ui.Button,
49
- {
50
- ref: cancelRef,
51
- variant: "outline",
52
- onClick: () => onClose(),
53
- disabled: isLoading,
54
- "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.cancel, { testId: "confirmation-modal-cancel-button" }),
55
- children: cancelText ?? l.cancel
56
- }
57
- ),
58
- /* @__PURE__ */ jsxRuntime.jsx(
59
- ui.Button,
60
- {
61
- variant,
62
- onClick: onConfirm,
63
- disabled: isLoading,
64
- "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.confirm, { testId: "confirmation-modal-confirm-button" }),
65
- children: isLoading ? l.pleaseWait : confirmText ?? l.confirm
66
- }
67
- )
68
- ] })
47
+ children: [
48
+ children,
49
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalScaffold.Footer, { children: [
50
+ /* @__PURE__ */ jsxRuntime.jsx(
51
+ ui.Button,
52
+ {
53
+ ref: cancelRef,
54
+ variant: "outline",
55
+ onClick: () => onClose(),
56
+ disabled: isLoading,
57
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.cancel, { testId: "confirmation-modal-cancel-button" }),
58
+ children: cancelText ?? l.cancel
59
+ }
60
+ ),
61
+ /* @__PURE__ */ jsxRuntime.jsx(
62
+ ui.Button,
63
+ {
64
+ variant,
65
+ onClick: onConfirm,
66
+ disabled: isLoading,
67
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.confirm, { testId: "confirmation-modal-confirm-button" }),
68
+ children: isLoading ? l.pleaseWait : confirmText ?? l.confirm
69
+ }
70
+ )
71
+ ] })
72
+ ]
69
73
  }
70
74
  );
71
75
  }
72
76
 
73
77
  exports.ConfirmDialog = ConfirmDialog;
74
78
  exports.DEFAULT_CONFIRM_DIALOG_LABELS = DEFAULT_CONFIRM_DIALOG_LABELS;
75
- //# sourceMappingURL=chunk-GICUGQNN.cjs.map
76
- //# sourceMappingURL=chunk-GICUGQNN.cjs.map
79
+ //# sourceMappingURL=chunk-ZAVEMQ37.cjs.map
80
+ //# sourceMappingURL=chunk-ZAVEMQ37.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/settings/ConfirmDialog.tsx"],"names":["useMemo","useRef","jsxs","ModalScaffold","jsx","AlertTriangle","testIdOr","Button"],"mappings":";;;;;;;;;AAaO,IAAM,6BAAA,GAAqD;AAAA,EAChE,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY;AACd;AAyBO,SAAS,aAAA,CAAc;AAAA,EAC5B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,SAAA,GAAY,KAAA;AAAA,EACZ,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAA,GAAIA,aAAA,CAAQ,OAAO,EAAE,GAAG,6BAAA,EAA+B,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AACnF,EAAA,MAAM,SAAA,GAAYC,aAA0B,IAAI,CAAA;AAChD,EAAA,uBACEC,eAAA;AAAA,IAACC,+BAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,CAAC,MAAM,OAAA,EAAQ;AAAA,MACrB,CAAA;AAAA,MACA,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAiB,SAAA;AAAA,MACjB,KAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA,EAAe,IAAA;AAAA,MACf,IAAA,EACE,YAAY,aAAA,mBACVC,cAAA,CAACC,6BAAc,SAAA,EAAU,uBAAA,EAAwB,aAAA,EAAY,MAAA,EAAO,CAAA,GAClE,IAAA;AAAA,MAEN,QAAQC,0BAAA,CAAS,MAAA,EAAQ,EAAE,MAAA,EAAQ,sBAAsB,CAAA;AAAA,MAExD,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDJ,eAAA,CAACC,+BAAA,CAAc,MAAA,EAAd,EACC,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAACG,SAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,SAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,MAAM,OAAA,EAAQ;AAAA,cACvB,QAAA,EAAU,SAAA;AAAA,cACV,eAAaD,0BAAA,CAAS,OAAA,EAAS,QAAQ,EAAE,MAAA,EAAQ,oCAAoC,CAAA;AAAA,cAEpF,wBAAc,CAAA,CAAE;AAAA;AAAA,WACnB;AAAA,0BACAF,cAAA;AAAA,YAACG,SAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,OAAA,EAAS,SAAA;AAAA,cACT,QAAA,EAAU,SAAA;AAAA,cACV,eAAaD,0BAAA,CAAS,OAAA,EAAS,SAAS,EAAE,MAAA,EAAQ,qCAAqC,CAAA;AAAA,cAEtF,QAAA,EAAA,SAAA,GAAY,CAAA,CAAE,UAAA,GAAc,WAAA,IAAe,CAAA,CAAE;AAAA;AAAA;AAChD,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ","file":"chunk-ZAVEMQ37.cjs","sourcesContent":["import { useMemo, useRef, type ReactNode } from 'react'\nimport { AlertTriangle } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\nimport { ModalScaffold } from './ModalScaffold'\n\n/** Every fixed string of the confirm dialog. `confirmText` / `cancelText` props win. */\nexport interface ConfirmDialogLabels {\n confirm: string\n cancel: string\n pleaseWait: string\n}\n\nexport const DEFAULT_CONFIRM_DIALOG_LABELS: ConfirmDialogLabels = {\n confirm: 'Confirm',\n cancel: 'Cancel',\n pleaseWait: 'Please wait...',\n}\n\nexport interface ConfirmDialogProps {\n labels?: Partial<ConfirmDialogLabels>\n isOpen: boolean\n onClose: () => void\n onConfirm: () => void\n title: string\n description: string\n confirmText?: string\n cancelText?: string\n variant?: 'destructive' | 'default'\n isLoading?: boolean\n /** Dialog test id (default `confirmation-modal`). */\n testId?: string\n /** Button ids; defaults are the current ids. */\n testIds?: Partial<Record<'cancel' | 'confirm', string>>\n /** Extra content between the description and the buttons (e.g. an opt-in checkbox). */\n children?: ReactNode\n}\n\n/**\n * Declarative yes/no confirmation with a loading state. An `alertdialog`: initial focus is on\n * Cancel (the safe action) and clicking outside does not dismiss it; Escape and Cancel do.\n */\nexport function ConfirmDialog({\n isOpen,\n onClose,\n onConfirm,\n title,\n description,\n confirmText,\n cancelText,\n variant = 'destructive',\n isLoading = false,\n labels,\n testId,\n testIds,\n children,\n}: ConfirmDialogProps) {\n const l = useMemo(() => ({ ...DEFAULT_CONFIRM_DIALOG_LABELS, ...labels }), [labels])\n const cancelRef = useRef<HTMLButtonElement>(null)\n return (\n <ModalScaffold\n open={isOpen}\n onOpenChange={(next) => {\n if (!next) onClose()\n }}\n role=\"alertdialog\"\n initialFocusRef={cancelRef}\n title={title}\n description={description}\n showDescription\n icon={\n variant === 'destructive' ? (\n <AlertTriangle className=\"h-5 w-5 text-red-text\" aria-hidden=\"true\" />\n ) : null\n }\n testId={testIdOr(testId, { testId: 'confirmation-modal' })}\n >\n {children}\n <ModalScaffold.Footer>\n <Button\n ref={cancelRef}\n variant=\"outline\"\n onClick={() => onClose()}\n disabled={isLoading}\n data-testid={testIdOr(testIds?.cancel, { testId: 'confirmation-modal-cancel-button' })}\n >\n {cancelText ?? l.cancel}\n </Button>\n <Button\n variant={variant}\n onClick={onConfirm}\n disabled={isLoading}\n data-testid={testIdOr(testIds?.confirm, { testId: 'confirmation-modal-confirm-button' })}\n >\n {isLoading ? l.pleaseWait : (confirmText ?? l.confirm)}\n </Button>\n </ModalScaffold.Footer>\n </ModalScaffold>\n )\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkMUMH3Z6K_cjs = require('./chunk-MUMH3Z6K.cjs');
5
- var chunkWV4IDVDQ_cjs = require('./chunk-WV4IDVDQ.cjs');
5
+ var chunkPJJY6CYL_cjs = require('./chunk-PJJY6CYL.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(chunkWV4IDVDQ_cjs.AssistantDock, { ...props, chat });
64
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkPJJY6CYL_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-4VCKYR4D.cjs.map
85
- //# sourceMappingURL=chunk-4VCKYR4D.cjs.map
84
+ //# sourceMappingURL=chunk-ZLRQ5K77.cjs.map
85
+ //# sourceMappingURL=chunk-ZLRQ5K77.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-4VCKYR4D.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-ZLRQ5K77.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"]}
@@ -3,8 +3,8 @@
3
3
 
4
4
  var chunkDJM7DLCT_cjs = require('../chunk-DJM7DLCT.cjs');
5
5
  require('../chunk-7G2LJMUG.cjs');
6
- var chunkU6MPHCEB_cjs = require('../chunk-U6MPHCEB.cjs');
7
6
  var chunkVLCY46K6_cjs = require('../chunk-VLCY46K6.cjs');
7
+ var chunkO6IEZDRC_cjs = require('../chunk-O6IEZDRC.cjs');
8
8
  require('../chunk-C2CWWEHO.cjs');
9
9
  require('../chunk-ULWRNGGE.cjs');
10
10
  require('../chunk-FX3K6LNZ.cjs');
@@ -173,69 +173,69 @@ Object.defineProperty(exports, "vCardFilename", {
173
173
  enumerable: true,
174
174
  get: function () { return chunkDJM7DLCT_cjs.vCardFilename; }
175
175
  });
176
+ Object.defineProperty(exports, "DEFAULT_SHARE_CONTROL_LABELS", {
177
+ enumerable: true,
178
+ get: function () { return chunkVLCY46K6_cjs.DEFAULT_SHARE_CONTROL_LABELS; }
179
+ });
180
+ Object.defineProperty(exports, "ShareControl", {
181
+ enumerable: true,
182
+ get: function () { return chunkVLCY46K6_cjs.ShareControl; }
183
+ });
176
184
  Object.defineProperty(exports, "MailDeliveryBadge", {
177
185
  enumerable: true,
178
- get: function () { return chunkU6MPHCEB_cjs.MailDeliveryBadge; }
186
+ get: function () { return chunkO6IEZDRC_cjs.MailDeliveryBadge; }
179
187
  });
180
188
  Object.defineProperty(exports, "MailDeliveryList", {
181
189
  enumerable: true,
182
- get: function () { return chunkU6MPHCEB_cjs.MailDeliveryList; }
190
+ get: function () { return chunkO6IEZDRC_cjs.MailDeliveryList; }
183
191
  });
184
192
  Object.defineProperty(exports, "MailDocumentPicker", {
185
193
  enumerable: true,
186
- get: function () { return chunkU6MPHCEB_cjs.MailDocumentPicker; }
194
+ get: function () { return chunkO6IEZDRC_cjs.MailDocumentPicker; }
187
195
  });
188
196
  Object.defineProperty(exports, "MailGrid", {
189
197
  enumerable: true,
190
- get: function () { return chunkU6MPHCEB_cjs.MailGrid; }
198
+ get: function () { return chunkO6IEZDRC_cjs.MailGrid; }
191
199
  });
192
200
  Object.defineProperty(exports, "MailMessagePreview", {
193
201
  enumerable: true,
194
- get: function () { return chunkU6MPHCEB_cjs.MailMessagePreview; }
202
+ get: function () { return chunkO6IEZDRC_cjs.MailMessagePreview; }
195
203
  });
196
204
  Object.defineProperty(exports, "MailMessageView", {
197
205
  enumerable: true,
198
- get: function () { return chunkU6MPHCEB_cjs.MailMessageView; }
206
+ get: function () { return chunkO6IEZDRC_cjs.MailMessageView; }
199
207
  });
200
208
  Object.defineProperty(exports, "NEEDS_CONNECTION", {
201
209
  enumerable: true,
202
- get: function () { return chunkU6MPHCEB_cjs.NEEDS_CONNECTION; }
210
+ get: function () { return chunkO6IEZDRC_cjs.NEEDS_CONNECTION; }
203
211
  });
204
212
  Object.defineProperty(exports, "PlainMailBodyEditor", {
205
213
  enumerable: true,
206
- get: function () { return chunkU6MPHCEB_cjs.PlainMailBodyEditor; }
214
+ get: function () { return chunkO6IEZDRC_cjs.PlainMailBodyEditor; }
207
215
  });
208
216
  Object.defineProperty(exports, "draftMailCompose", {
209
217
  enumerable: true,
210
- get: function () { return chunkU6MPHCEB_cjs.draftMailCompose; }
218
+ get: function () { return chunkO6IEZDRC_cjs.draftMailCompose; }
211
219
  });
212
220
  Object.defineProperty(exports, "emptyMailCompose", {
213
221
  enumerable: true,
214
- get: function () { return chunkU6MPHCEB_cjs.emptyMailCompose; }
222
+ get: function () { return chunkO6IEZDRC_cjs.emptyMailCompose; }
215
223
  });
216
224
  Object.defineProperty(exports, "hasCalendarPart", {
217
225
  enumerable: true,
218
- get: function () { return chunkU6MPHCEB_cjs.hasCalendarPart; }
226
+ get: function () { return chunkO6IEZDRC_cjs.hasCalendarPart; }
219
227
  });
220
228
  Object.defineProperty(exports, "mailAddressLabel", {
221
229
  enumerable: true,
222
- get: function () { return chunkU6MPHCEB_cjs.mailAddressLabel; }
230
+ get: function () { return chunkO6IEZDRC_cjs.mailAddressLabel; }
223
231
  });
224
232
  Object.defineProperty(exports, "parseMailRecipients", {
225
233
  enumerable: true,
226
- get: function () { return chunkU6MPHCEB_cjs.parseMailRecipients; }
234
+ get: function () { return chunkO6IEZDRC_cjs.parseMailRecipients; }
227
235
  });
228
236
  Object.defineProperty(exports, "replyMailCompose", {
229
237
  enumerable: true,
230
- get: function () { return chunkU6MPHCEB_cjs.replyMailCompose; }
231
- });
232
- Object.defineProperty(exports, "DEFAULT_SHARE_CONTROL_LABELS", {
233
- enumerable: true,
234
- get: function () { return chunkVLCY46K6_cjs.DEFAULT_SHARE_CONTROL_LABELS; }
235
- });
236
- Object.defineProperty(exports, "ShareControl", {
237
- enumerable: true,
238
- get: function () { return chunkVLCY46K6_cjs.ShareControl; }
238
+ get: function () { return chunkO6IEZDRC_cjs.replyMailCompose; }
239
239
  });
240
240
  //# sourceMappingURL=index.cjs.map
241
241
  //# sourceMappingURL=index.cjs.map
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  export { ActionMenu, AddContactsForm, AddContactsResults, ContactCard, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_CARD_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_INVITE_CHIP_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmInviteChip, DmNewTabIcon, DmThreadFrame, DmThreadHeader, MAX_INVITE_EMAILS, MailFolderTree, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, RecipientPicker, RoleSelect, WorkspaceDeleteButton, buildMailFolderTree, contactToVCard, descendantFolderIds, downloadVCard, isInboxFolder, parseEmails, toAddContactsRow, toAddContactsRows, toggleMailFolder, vCardFilename } from '../chunk-5HFPRI3W.js';
3
3
  import '../chunk-NBV56SGU.js';
4
- export { MailDeliveryBadge, MailDeliveryList, MailDocumentPicker, MailGrid, MailMessagePreview, MailMessageView, NEEDS_CONNECTION, PlainMailBodyEditor, draftMailCompose, emptyMailCompose, hasCalendarPart, mailAddressLabel, parseMailRecipients, replyMailCompose } from '../chunk-IXTQYFIF.js';
5
4
  export { DEFAULT_SHARE_CONTROL_LABELS, ShareControl } from '../chunk-K4BGOPGG.js';
5
+ export { MailDeliveryBadge, MailDeliveryList, MailDocumentPicker, MailGrid, MailMessagePreview, MailMessageView, NEEDS_CONNECTION, PlainMailBodyEditor, draftMailCompose, emptyMailCompose, hasCalendarPart, mailAddressLabel, parseMailRecipients, replyMailCompose } from '../chunk-6HCJ3ZEU.js';
6
6
  import '../chunk-N5YEF3LC.js';
7
7
  import '../chunk-TX2ZICS7.js';
8
8
  import '../chunk-SLSBJRWW.js';
@@ -24,6 +24,10 @@ export interface MailMessageViewProps {
24
24
  personLabel?: (person: MailAddress) => string;
25
25
  /** A calendar invite card, for a message that carries an .ics part. */
26
26
  renderInvite?: () => ReactNode;
27
+ /** In the Trash (ARBI mail): put it back in the folder it was trashed from. Absent: "Move to Inbox". */
28
+ onRestore?: () => void;
29
+ /** In the Trash (ARBI mail): delete it for good (the host confirms). Absent: not offered. */
30
+ onDeleteForever?: () => void;
27
31
  }
28
32
  /** An opened message: its actions, sender, recipients, delivery, attachments and body. */
29
- export declare function MailMessageView({ account, message, folderRole, folders, isOnline, loading, uploadPending, onBack, onEditDraft, onReply, onReplyWithArbi, onUpdate, onDownloadAttachment, onDownloadOriginal, onSaveToWorkspace, personLabel, renderInvite, }: MailMessageViewProps): import("react").JSX.Element;
33
+ export declare function MailMessageView({ account, message, folderRole, folders, isOnline, loading, uploadPending, onBack, onEditDraft, onReply, onReplyWithArbi, onUpdate, onDownloadAttachment, onDownloadOriginal, onSaveToWorkspace, personLabel, renderInvite, onRestore, onDeleteForever, }: MailMessageViewProps): import("react").JSX.Element;