@arbidocs/react 0.5.111 → 0.5.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.
- package/dist/account/client.js +96 -0
- package/dist/account/client.js.map +7 -0
- package/dist/account/delete.js +70 -0
- package/dist/account/delete.js.map +7 -0
- package/dist/account/didit.js +34 -0
- package/dist/account/didit.js.map +7 -0
- package/dist/account/dismissed-tips.js +33 -0
- package/dist/account/dismissed-tips.js.map +7 -0
- package/dist/account/email.js +84 -0
- package/dist/account/email.js.map +7 -0
- package/dist/account/entitlements.js +47 -0
- package/dist/account/entitlements.js.map +7 -0
- package/dist/account/identity.js +270 -0
- package/dist/account/identity.js.map +7 -0
- package/dist/account/index.js +93 -0
- package/dist/account/index.js.map +7 -0
- package/dist/account/notifications.js +59 -0
- package/dist/account/notifications.js.map +7 -0
- package/dist/account/password.js +103 -0
- package/dist/account/password.js.map +7 -0
- package/dist/account/profile.js +116 -0
- package/dist/account/profile.js.map +7 -0
- package/dist/account/recovery.js +13 -0
- package/dist/account/recovery.js.map +7 -0
- package/dist/account/relevance.js +82 -0
- package/dist/account/relevance.js.map +7 -0
- package/dist/account/sessions.js +37 -0
- package/dist/account/sessions.js.map +7 -0
- package/dist/account/settings.js +39 -0
- package/dist/account/settings.js.map +7 -0
- package/dist/account/table-views.js +16 -0
- package/dist/account/table-views.js.map +7 -0
- package/dist/ai/AiAnswer.js +83 -0
- package/dist/ai/AiAnswer.js.map +7 -0
- package/dist/ai/AiMarkdown.js +40 -0
- package/dist/ai/AiMarkdown.js.map +7 -0
- package/dist/ai/ArtifactCanvas.js +193 -0
- package/dist/ai/ArtifactCanvas.js.map +7 -0
- package/dist/ai/CitationRenderer.js +413 -0
- package/dist/ai/CitationRenderer.js.map +7 -0
- package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
- package/dist/ai/MarkdownRenderer.js.map +7 -0
- package/dist/ai/MessageArtifactCard.js +75 -0
- package/dist/ai/MessageArtifactCard.js.map +7 -0
- package/dist/ai/PassageCard.js +79 -0
- package/dist/ai/PassageCard.js.map +7 -0
- package/dist/ai/engine.js +110 -0
- package/dist/ai/engine.js.map +7 -0
- package/dist/ai/index.js +63 -0
- package/dist/ai/index.js.map +7 -0
- package/dist/ai/markdown-base-components.js +37 -0
- package/dist/ai/markdown-base-components.js.map +7 -0
- package/dist/ai/markdown-streaming-context.js +6 -0
- package/dist/ai/markdown-streaming-context.js.map +7 -0
- package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
- package/dist/ai/normalize-citations.js.map +7 -0
- package/dist/ai/redline.js +41 -0
- package/dist/ai/redline.js.map +7 -0
- package/dist/ai/split-markdown-blocks.js +40 -0
- package/dist/ai/split-markdown-blocks.js.map +7 -0
- package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
- package/dist/ai/stored-markdown.js.map +7 -0
- package/dist/annotations/AnnotationPageOverlay.js +807 -0
- package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
- package/dist/annotations/AnnotationToolbar.js +398 -0
- package/dist/annotations/AnnotationToolbar.js.map +7 -0
- package/dist/annotations/FreezeDialog.js +170 -0
- package/dist/annotations/FreezeDialog.js.map +7 -0
- package/dist/annotations/ProductionDialog.js +354 -0
- package/dist/annotations/ProductionDialog.js.map +7 -0
- package/dist/annotations/controller.js +49 -0
- package/dist/annotations/controller.js.map +7 -0
- package/dist/annotations/freeze/browser.js +21 -0
- package/dist/annotations/freeze/browser.js.map +7 -0
- package/dist/annotations/freeze/bundle.js +201 -0
- package/dist/annotations/freeze/bundle.js.map +7 -0
- package/dist/annotations/freeze/coords.js +37 -0
- package/dist/annotations/freeze/coords.js.map +7 -0
- package/dist/annotations/freeze/freeze.js +261 -0
- package/dist/annotations/freeze/freeze.js.map +7 -0
- package/dist/annotations/freeze/hash.js +28 -0
- package/dist/annotations/freeze/hash.js.map +7 -0
- package/dist/annotations/freeze/index-page.js +78 -0
- package/dist/annotations/freeze/index-page.js.map +7 -0
- package/dist/annotations/freeze/index.js +28 -22
- package/dist/annotations/freeze/index.js.map +7 -1
- package/dist/annotations/freeze/raster.js +208 -0
- package/dist/annotations/freeze/raster.js.map +7 -0
- package/dist/annotations/freeze/stamp.js +117 -0
- package/dist/annotations/freeze/stamp.js.map +7 -0
- package/dist/annotations/freeze/types.js +14 -0
- package/dist/annotations/freeze/types.js.map +7 -0
- package/dist/annotations/freeze/vector.js +283 -0
- package/dist/annotations/freeze/vector.js.map +7 -0
- package/dist/annotations/geometry.js +81 -0
- package/dist/annotations/geometry.js.map +7 -0
- package/dist/annotations/index.js +125 -6
- package/dist/annotations/index.js.map +7 -1
- package/dist/annotations/merge.js +53 -0
- package/dist/annotations/merge.js.map +7 -0
- package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
- package/dist/annotations/model.js.map +7 -0
- package/dist/annotations/overlay-geometry.js +41 -0
- package/dist/annotations/overlay-geometry.js.map +7 -0
- package/dist/annotations/redaction-log.js +33 -0
- package/dist/annotations/redaction-log.js.map +7 -0
- package/dist/annotations/selection-marks.js +122 -0
- package/dist/annotations/selection-marks.js.map +7 -0
- package/dist/annotations/state.js +140 -0
- package/dist/annotations/state.js.map +7 -0
- package/dist/annotations/store.js +49 -0
- package/dist/annotations/store.js.map +7 -0
- package/dist/annotations/useAnnotationLayer.js +306 -0
- package/dist/annotations/useAnnotationLayer.js.map +7 -0
- package/dist/annotations/useAnnotationShortcuts.js +31 -0
- package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
- package/dist/annotations/useTextSelectionMarks.js +100 -0
- package/dist/annotations/useTextSelectionMarks.js.map +7 -0
- package/dist/artifacts/artifact-kind.js +19 -0
- package/dist/artifacts/artifact-kind.js.map +7 -0
- package/dist/artifacts/index.js +89 -571
- package/dist/artifacts/index.js.map +7 -1
- package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
- package/dist/artifacts/normalize-markdown.js.map +7 -0
- package/dist/artifacts/redline-core.js +12 -3
- package/dist/artifacts/redline-core.js.map +7 -1
- package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
- package/dist/artifacts/redline-diff.js.map +7 -0
- package/dist/artifacts/redline-engine.js +14 -0
- package/dist/artifacts/redline-engine.js.map +7 -0
- package/dist/artifacts/renderArtifactMarkdown.js +9 -0
- package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
- package/dist/artifacts/useArtifactEditSession.js +183 -0
- package/dist/artifacts/useArtifactEditSession.js.map +7 -0
- package/dist/artifacts/useArtifactSession.js +173 -0
- package/dist/artifacts/useArtifactSession.js.map +7 -0
- package/dist/artifacts/useArtifactSource.js +16 -0
- package/dist/artifacts/useArtifactSource.js.map +7 -0
- package/dist/artifacts/useArtifactText.js +78 -0
- package/dist/artifacts/useArtifactText.js.map +7 -0
- package/dist/artifacts/useRedline.js +65 -0
- package/dist/artifacts/useRedline.js.map +7 -0
- package/dist/artifacts/useStreamedArtifact.js +74 -0
- package/dist/artifacts/useStreamedArtifact.js.map +7 -0
- package/dist/artifacts/versions.js +68 -0
- package/dist/artifacts/versions.js.map +7 -0
- package/dist/billing.js +200 -0
- package/dist/billing.js.map +7 -0
- package/dist/boot-timeout.js +19 -0
- package/dist/boot-timeout.js.map +7 -0
- package/dist/calendar/accounts.js +213 -0
- package/dist/calendar/accounts.js.map +7 -0
- package/dist/calendar/hooks.js +409 -0
- package/dist/calendar/hooks.js.map +7 -0
- package/dist/calendar/index.js +31 -0
- package/dist/calendar/index.js.map +7 -0
- package/dist/calendar/keys.js +5 -0
- package/dist/calendar/keys.js.map +7 -0
- package/dist/calendar/offline/outbox.js +231 -0
- package/dist/calendar/offline/outbox.js.map +7 -0
- package/dist/calendar/offline/runtime.js +109 -0
- package/dist/calendar/offline/runtime.js.map +7 -0
- package/dist/calendar/offline/support.js +41 -0
- package/dist/calendar/offline/support.js.map +7 -0
- package/dist/calendar/support.js +34 -0
- package/dist/calendar/support.js.map +7 -0
- package/dist/calls/actions.js +226 -0
- package/dist/calls/actions.js.map +7 -0
- package/dist/calls/events.js +138 -0
- package/dist/calls/events.js.map +7 -0
- package/dist/calls/gate.js +19 -0
- package/dist/calls/gate.js.map +7 -0
- package/dist/calls/hooks.js +115 -0
- package/dist/calls/hooks.js.map +7 -0
- package/dist/calls/in-call-chat.js +132 -0
- package/dist/calls/in-call-chat.js.map +7 -0
- package/dist/calls/index.js +24 -0
- package/dist/calls/index.js.map +7 -0
- package/dist/calls/keys.js +17 -0
- package/dist/calls/keys.js.map +7 -0
- package/dist/calls/livekit/index.js +6 -958
- package/dist/calls/livekit/index.js.map +7 -1
- package/dist/calls/livekit/room.js +98 -0
- package/dist/calls/livekit/room.js.map +7 -0
- package/dist/calls/livekit/useCallRecorder.js +219 -0
- package/dist/calls/livekit/useCallRecorder.js.map +7 -0
- package/dist/calls/livekit/useCallTranscriber.js +309 -0
- package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
- package/dist/calls/livekit/useHostMuteNotice.js +29 -0
- package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
- package/dist/calls/livekit/useInCallChat.js +161 -0
- package/dist/calls/livekit/useInCallChat.js.map +7 -0
- package/dist/calls/livekit/useWebinar.js +239 -0
- package/dist/calls/livekit/useWebinar.js.map +7 -0
- package/dist/calls/meeting-chat.js +149 -0
- package/dist/calls/meeting-chat.js.map +7 -0
- package/dist/calls/moderation.js +50 -0
- package/dist/calls/moderation.js.map +7 -0
- package/dist/calls/open-meeting-chat.js +29 -0
- package/dist/calls/open-meeting-chat.js.map +7 -0
- package/dist/calls/read-only.js +24 -0
- package/dist/calls/read-only.js.map +7 -0
- package/dist/calls/recording-media.js +218 -0
- package/dist/calls/recording-media.js.map +7 -0
- package/dist/calls/recording-playback.js +260 -0
- package/dist/calls/recording-playback.js.map +7 -0
- package/dist/calls/recording.js +268 -0
- package/dist/calls/recording.js.map +7 -0
- package/dist/calls/save-to-thread.js +80 -0
- package/dist/calls/save-to-thread.js.map +7 -0
- package/dist/calls/session.js +134 -0
- package/dist/calls/session.js.map +7 -0
- package/dist/calls/transcript-format.js +147 -0
- package/dist/calls/transcript-format.js.map +7 -0
- package/dist/calls/transcription.js +101 -0
- package/dist/calls/transcription.js.map +7 -0
- package/dist/calls/webinar.js +71 -0
- package/dist/calls/webinar.js.map +7 -0
- package/dist/charge-watch.js +71 -0
- package/dist/charge-watch.js.map +7 -0
- package/dist/chat/ChatBubble.js +146 -0
- package/dist/chat/ChatBubble.js.map +7 -0
- package/dist/chat/ConversationScope.js +30 -0
- package/dist/chat/ConversationScope.js.map +7 -0
- package/dist/chat/active-config.js +20 -0
- package/dist/chat/active-config.js.map +7 -0
- package/dist/chat/agent-chat-owner.js +25 -0
- package/dist/chat/agent-chat-owner.js.map +7 -0
- package/dist/chat/chat-artifacts.js +64 -0
- package/dist/chat/chat-artifacts.js.map +7 -0
- package/dist/chat/citations.js +32 -0
- package/dist/chat/citations.js.map +7 -0
- package/dist/chat/config-model.js +10 -0
- package/dist/chat/config-model.js.map +7 -0
- package/dist/chat/conversation-cache.js +676 -0
- package/dist/chat/conversation-cache.js.map +7 -0
- package/dist/chat/conversation-events.js +57 -0
- package/dist/chat/conversation-events.js.map +7 -0
- package/dist/chat/conversation-mentions.js +58 -0
- package/dist/chat/conversation-mentions.js.map +7 -0
- package/dist/chat/conversation-workspace.js +58 -0
- package/dist/chat/conversation-workspace.js.map +7 -0
- package/dist/chat/mentions.js +116 -0
- package/dist/chat/mentions.js.map +7 -0
- package/dist/chat/open-document.js +106 -0
- package/dist/chat/open-document.js.map +7 -0
- package/dist/chat/orphaned.js +44 -0
- package/dist/chat/orphaned.js.map +7 -0
- package/dist/chat/pendingFirstTurn.js +30 -0
- package/dist/chat/pendingFirstTurn.js.map +7 -0
- package/dist/chat/reply-target.js +12 -0
- package/dist/chat/reply-target.js.map +7 -0
- package/dist/chat/run-finished.js +28 -0
- package/dist/chat/run-finished.js.map +7 -0
- package/dist/chat/run-state.js +91 -0
- package/dist/chat/run-state.js.map +7 -0
- package/dist/chat/stream-handlers.js +419 -0
- package/dist/chat/stream-handlers.js.map +7 -0
- package/dist/chat/thread-binding.js +76 -0
- package/dist/chat/thread-binding.js.map +7 -0
- package/dist/chat/thread-document.js +53 -0
- package/dist/chat/thread-document.js.map +7 -0
- package/dist/chat/turn-control.js +79 -0
- package/dist/chat/turn-control.js.map +7 -0
- package/dist/chat/useAgentRunControl.js +36 -0
- package/dist/chat/useAgentRunControl.js.map +7 -0
- package/dist/chat/useAnswerAgentQuestion.js +19 -0
- package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
- package/dist/chat/useAskAgain.js +32 -0
- package/dist/chat/useAskAgain.js.map +7 -0
- package/dist/chat/useAutoSendDraft.js +17 -0
- package/dist/chat/useAutoSendDraft.js.map +7 -0
- package/dist/chat/useBranchNavigation.js +97 -0
- package/dist/chat/useBranchNavigation.js.map +7 -0
- package/dist/chat/useConnectRunStream.js +169 -0
- package/dist/chat/useConnectRunStream.js.map +7 -0
- package/dist/chat/useConversation.js +431 -0
- package/dist/chat/useConversation.js.map +7 -0
- package/dist/chat/useConversationActions.js +662 -0
- package/dist/chat/useConversationActions.js.map +7 -0
- package/dist/chat/useConversationData.js +143 -0
- package/dist/chat/useConversationData.js.map +7 -0
- package/dist/chat/useConversationDocuments.js +41 -0
- package/dist/chat/useConversationDocuments.js.map +7 -0
- package/dist/chat/useConversationSettings.js +78 -0
- package/dist/chat/useConversationSettings.js.map +7 -0
- package/dist/chat/useConversationTurn.js +31 -0
- package/dist/chat/useConversationTurn.js.map +7 -0
- package/dist/chat/useConversationWorkspace.js +12 -0
- package/dist/chat/useConversationWorkspace.js.map +7 -0
- package/dist/chat/useDeleteMessage.js +15 -0
- package/dist/chat/useDeleteMessage.js.map +7 -0
- package/dist/chat/useDocumentAutoAdd.js +73 -0
- package/dist/chat/useDocumentAutoAdd.js.map +7 -0
- package/dist/chat/useMessageTimer.js +39 -0
- package/dist/chat/useMessageTimer.js.map +7 -0
- package/dist/chat/useThinkingContent.js +67 -0
- package/dist/chat/useThinkingContent.js.map +7 -0
- package/dist/chat/useThreadDocument.js +61 -0
- package/dist/chat/useThreadDocument.js.map +7 -0
- package/dist/chat/workflow-run-titles.js +50 -0
- package/dist/chat/workflow-run-titles.js.map +7 -0
- package/dist/config/config-hooks.js +209 -0
- package/dist/config/config-hooks.js.map +7 -0
- package/dist/connectivity.js +72 -0
- package/dist/connectivity.js.map +7 -0
- package/dist/connectors/hooks.js +263 -0
- package/dist/connectors/hooks.js.map +7 -0
- package/dist/connectors/index.js +28 -0
- package/dist/connectors/index.js.map +7 -0
- package/dist/contacts.js +100 -0
- package/dist/contacts.js.map +7 -0
- package/dist/conversation-list.js +65 -0
- package/dist/conversation-list.js.map +7 -0
- package/dist/databases.js +195 -0
- package/dist/databases.js.map +7 -0
- package/dist/datasets/aggregate.js +281 -0
- package/dist/datasets/aggregate.js.map +7 -0
- package/dist/datasets/index.js +122 -0
- package/dist/datasets/index.js.map +7 -0
- package/dist/datasets/members.js +27 -0
- package/dist/datasets/members.js.map +7 -0
- package/dist/datasets/panel.js +44 -0
- package/dist/datasets/panel.js.map +7 -0
- package/dist/datasets/registry.js +47 -0
- package/dist/datasets/registry.js.map +7 -0
- package/dist/datasets/rows-source.js +44 -0
- package/dist/datasets/rows-source.js.map +7 -0
- package/dist/datasets/sources/activity.js +83 -0
- package/dist/datasets/sources/activity.js.map +7 -0
- package/dist/datasets/sources/conversations.js +74 -0
- package/dist/datasets/sources/conversations.js.map +7 -0
- package/dist/datasets/sources/database.js +209 -0
- package/dist/datasets/sources/database.js.map +7 -0
- package/dist/datasets/sources/documents.js +93 -0
- package/dist/datasets/sources/documents.js.map +7 -0
- package/dist/datasets/sources/facts.js +56 -0
- package/dist/datasets/sources/facts.js.map +7 -0
- package/dist/datasets/sources/projects.js +117 -0
- package/dist/datasets/sources/projects.js.map +7 -0
- package/dist/datasets/sources/tags.js +67 -0
- package/dist/datasets/sources/tags.js.map +7 -0
- package/dist/datasets/sources/usage.js +268 -0
- package/dist/datasets/sources/usage.js.map +7 -0
- package/dist/datasets/sources/workflows.js +91 -0
- package/dist/datasets/sources/workflows.js.map +7 -0
- package/dist/datasets/sources/workspaces.js +67 -0
- package/dist/datasets/sources/workspaces.js.map +7 -0
- package/dist/datasets/store.js +194 -0
- package/dist/datasets/store.js.map +7 -0
- package/dist/datasets/types.js +14 -0
- package/dist/datasets/types.js.map +7 -0
- package/dist/directmessages/ConversationList.js +148 -0
- package/dist/directmessages/ConversationList.js.map +7 -0
- package/dist/directmessages/DateSeparator.js +8 -0
- package/dist/directmessages/DateSeparator.js.map +7 -0
- package/dist/directmessages/DmAvatar.js +29 -0
- package/dist/directmessages/DmAvatar.js.map +7 -0
- package/dist/directmessages/DmComposer.js +201 -0
- package/dist/directmessages/DmComposer.js.map +7 -0
- package/dist/directmessages/arrivals.js +29 -0
- package/dist/directmessages/arrivals.js.map +7 -0
- package/dist/directmessages/chat-cache.js +192 -0
- package/dist/directmessages/chat-cache.js.map +7 -0
- package/dist/directmessages/grouping.js +26 -0
- package/dist/directmessages/grouping.js.map +7 -0
- package/dist/directmessages/index.js +81 -0
- package/dist/directmessages/index.js.map +7 -0
- package/dist/directmessages/useChats.js +266 -0
- package/dist/directmessages/useChats.js.map +7 -0
- package/dist/directmessages/utils.js +23 -0
- package/dist/directmessages/utils.js.map +7 -0
- package/dist/document-tools/can-annotate.js +7 -0
- package/dist/document-tools/can-annotate.js.map +7 -0
- package/dist/document-tools/core.js +218 -12
- package/dist/document-tools/core.js.map +7 -1
- package/dist/document-tools/document-pdf.js +76 -0
- package/dist/document-tools/document-pdf.js.map +7 -0
- package/dist/document-tools/environment.js +136 -0
- package/dist/document-tools/environment.js.map +7 -0
- package/dist/document-tools/file-shares.js +112 -0
- package/dist/document-tools/file-shares.js.map +7 -0
- package/dist/document-tools/frozen-copy.js +27 -0
- package/dist/document-tools/frozen-copy.js.map +7 -0
- package/dist/document-tools/index.js +26 -148
- package/dist/document-tools/index.js.map +7 -1
- package/dist/document-tools/markup-download.js +51 -0
- package/dist/document-tools/markup-download.js.map +7 -0
- package/dist/document-tools/markup-store.js +138 -0
- package/dist/document-tools/markup-store.js.map +7 -0
- package/dist/document-tools/markup-transfer.js +88 -0
- package/dist/document-tools/markup-transfer.js.map +7 -0
- package/dist/document-tools/production.js +147 -0
- package/dist/document-tools/production.js.map +7 -0
- package/dist/document-tools/saved-signature.js +90 -0
- package/dist/document-tools/saved-signature.js.map +7 -0
- package/dist/document-tools/signature-requests.js +310 -0
- package/dist/document-tools/signature-requests.js.map +7 -0
- package/dist/document-tools/signing.js +127 -0
- package/dist/document-tools/signing.js.map +7 -0
- package/dist/document-tools/useDocumentBytes.js +38 -0
- package/dist/document-tools/useDocumentBytes.js.map +7 -0
- package/dist/document-tools/useDocumentMarkup.js +154 -0
- package/dist/document-tools/useDocumentMarkup.js.map +7 -0
- package/dist/document-tools/useIsOnline.js +13 -0
- package/dist/document-tools/useIsOnline.js.map +7 -0
- package/dist/document-tools/verification.js +60 -0
- package/dist/document-tools/verification.js.map +7 -0
- package/dist/documents/DocumentReview.js +220 -0
- package/dist/documents/DocumentReview.js.map +7 -0
- package/dist/documents/DraftTitleControls.js +41 -0
- package/dist/documents/DraftTitleControls.js.map +7 -0
- package/dist/documents/InlineMicButton.js +90 -0
- package/dist/documents/InlineMicButton.js.map +7 -0
- package/dist/documents/MicRecordingOverlay.js +29 -0
- package/dist/documents/MicRecordingOverlay.js.map +7 -0
- package/dist/documents/MicWaveformIndicator.js +68 -0
- package/dist/documents/MicWaveformIndicator.js.map +7 -0
- package/dist/documents/PhotoCapture.js +120 -0
- package/dist/documents/PhotoCapture.js.map +7 -0
- package/dist/documents/VideoCapture.js +129 -0
- package/dist/documents/VideoCapture.js.map +7 -0
- package/dist/documents/VoiceNoteRecorder.js +166 -0
- package/dist/documents/VoiceNoteRecorder.js.map +7 -0
- package/dist/documents/audio-segmenter.js +63 -0
- package/dist/documents/audio-segmenter.js.map +7 -0
- package/dist/documents/capture-frame.js +21 -0
- package/dist/documents/capture-frame.js.map +7 -0
- package/dist/documents/chunked-recorder.js +190 -0
- package/dist/documents/chunked-recorder.js.map +7 -0
- package/dist/documents/document-download.js +53 -0
- package/dist/documents/document-download.js.map +7 -0
- package/dist/documents/document-fields.js +109 -0
- package/dist/documents/document-fields.js.map +7 -0
- package/dist/documents/documents-cache.js +110 -0
- package/dist/documents/documents-cache.js.map +7 -0
- package/dist/documents/documents-data.js +128 -0
- package/dist/documents/documents-data.js.map +7 -0
- package/dist/documents/documents-loader.js +113 -0
- package/dist/documents/documents-loader.js.map +7 -0
- package/dist/documents/documents-writes.js +448 -0
- package/dist/documents/documents-writes.js.map +7 -0
- package/dist/documents/format-elapsed.js +10 -0
- package/dist/documents/format-elapsed.js.map +7 -0
- package/dist/documents/has-video-track.js +26 -0
- package/dist/documents/has-video-track.js.map +7 -0
- package/dist/documents/index.js +266 -0
- package/dist/documents/index.js.map +7 -0
- package/dist/documents/media-error.js +18 -0
- package/dist/documents/media-error.js.map +7 -0
- package/dist/documents/offline-documents.js +160 -0
- package/dist/documents/offline-documents.js.map +7 -0
- package/dist/documents/pending-sync.js +210 -0
- package/dist/documents/pending-sync.js.map +7 -0
- package/dist/documents/processing-live.js +122 -0
- package/dist/documents/processing-live.js.map +7 -0
- package/dist/documents/processing-order.js +59 -0
- package/dist/documents/processing-order.js.map +7 -0
- package/dist/documents/processing-settle.js +21 -0
- package/dist/documents/processing-settle.js.map +7 -0
- package/dist/documents/related-documents.js +133 -0
- package/dist/documents/related-documents.js.map +7 -0
- package/dist/documents/support.js +29 -0
- package/dist/documents/support.js.map +7 -0
- package/dist/documents/upload-files.js +169 -0
- package/dist/documents/upload-files.js.map +7 -0
- package/dist/documents/useAudioRecorder.js +315 -0
- package/dist/documents/useAudioRecorder.js.map +7 -0
- package/dist/documents/useCameraStream.js +35 -0
- package/dist/documents/useCameraStream.js.map +7 -0
- package/dist/documents/useDocumentThumbnails.js +71 -0
- package/dist/documents/useDocumentThumbnails.js.map +7 -0
- package/dist/documents/useDownloadDocuments.js +90 -0
- package/dist/documents/useDownloadDocuments.js.map +7 -0
- package/dist/documents/usePassageQuotes.js +37 -0
- package/dist/documents/usePassageQuotes.js.map +7 -0
- package/dist/documents/useUploadFiles.js +165 -0
- package/dist/documents/useUploadFiles.js.map +7 -0
- package/dist/documents/useUploadFromUrls.js +63 -0
- package/dist/documents/useUploadFromUrls.js.map +7 -0
- package/dist/documents/useVideoRecorder.js +62 -0
- package/dist/documents/useVideoRecorder.js.map +7 -0
- package/dist/entities/AgentMarkers.js +61 -0
- package/dist/entities/AgentMarkers.js.map +7 -0
- package/dist/entities/DocumentEntity.js +125 -0
- package/dist/entities/DocumentEntity.js.map +7 -0
- package/dist/entities/EntityPill.js +250 -0
- package/dist/entities/EntityPill.js.map +7 -0
- package/dist/entities/ProjectEntity.js +61 -0
- package/dist/entities/ProjectEntity.js.map +7 -0
- package/dist/entities/ShieldIcon.js +49 -0
- package/dist/entities/ShieldIcon.js.map +7 -0
- package/dist/entities/TagEntity.js +79 -0
- package/dist/entities/TagEntity.js.map +7 -0
- package/dist/entities/ThreadVisibilityIcon.js +15 -0
- package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
- package/dist/entities/UserEntity.js +211 -0
- package/dist/entities/UserEntity.js.map +7 -0
- package/dist/entities/VerifiedBadge.js +19 -0
- package/dist/entities/VerifiedBadge.js.map +7 -0
- package/dist/entities/agent-avatar-colors.js +26 -0
- package/dist/entities/agent-avatar-colors.js.map +7 -0
- package/dist/entities/colors.js +64 -0
- package/dist/entities/colors.js.map +7 -0
- package/dist/entities/file-type.js +151 -0
- package/dist/entities/file-type.js.map +7 -0
- package/dist/entities/index.js +100 -0
- package/dist/entities/index.js.map +7 -0
- package/dist/entities/media-type.js +61 -0
- package/dist/entities/media-type.js.map +7 -0
- package/dist/entities/registry.js +385 -0
- package/dist/entities/registry.js.map +7 -0
- package/dist/entities/status.js +43 -0
- package/dist/entities/status.js.map +7 -0
- package/dist/entities/tag-kinds.js +23 -0
- package/dist/entities/tag-kinds.js.map +7 -0
- package/dist/entities/tag-types.js +44 -0
- package/dist/entities/tag-types.js.map +7 -0
- package/dist/entities/vocabulary.js +12 -0
- package/dist/entities/vocabulary.js.map +7 -0
- package/dist/entity-extraction.js +25 -0
- package/dist/entity-extraction.js.map +7 -0
- package/dist/facts-search.js +57 -0
- package/dist/facts-search.js.map +7 -0
- package/dist/facts.js +69 -0
- package/dist/facts.js.map +7 -0
- package/dist/hooks.js +320 -0
- package/dist/hooks.js.map +7 -0
- package/dist/host/ArbiHost.js +24 -0
- package/dist/host/ArbiHost.js.map +7 -0
- package/dist/host/assistant-copy.js +54 -0
- package/dist/host/assistant-copy.js.map +7 -0
- package/dist/host/config.js +9 -0
- package/dist/host/config.js.map +7 -0
- package/dist/host/context.js +10 -0
- package/dist/host/context.js.map +7 -0
- package/dist/host/features.js +144 -0
- package/dist/host/features.js.map +7 -0
- package/dist/host/index.js +12 -0
- package/dist/host/index.js.map +7 -0
- package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
- package/dist/host/merge.js.map +7 -0
- package/dist/house-template.js +40 -0
- package/dist/house-template.js.map +7 -0
- package/dist/icons/AppleIcon.js +25 -0
- package/dist/icons/AppleIcon.js.map +7 -0
- package/dist/icons/ArbiBotHeadIcon.js +46 -0
- package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
- package/dist/icons/ArbiIcon.js +24 -0
- package/dist/icons/ArbiIcon.js.map +7 -0
- package/dist/icons/AudIcon.js +56 -0
- package/dist/icons/AudIcon.js.map +7 -0
- package/dist/icons/ClaudeIcon.js +28 -0
- package/dist/icons/ClaudeIcon.js.map +7 -0
- package/dist/icons/DocIcon.js +56 -0
- package/dist/icons/DocIcon.js.map +7 -0
- package/dist/icons/EmlIcon.js +57 -0
- package/dist/icons/EmlIcon.js.map +7 -0
- package/dist/icons/FireworksIcon.js +47 -0
- package/dist/icons/FireworksIcon.js.map +7 -0
- package/dist/icons/GeminiIcon.js +37 -0
- package/dist/icons/GeminiIcon.js.map +7 -0
- package/dist/icons/GitHubIcon.js +32 -0
- package/dist/icons/GitHubIcon.js.map +7 -0
- package/dist/icons/GoogleIcon.js +53 -0
- package/dist/icons/GoogleIcon.js.map +7 -0
- package/dist/icons/HtmlIcon.js +56 -0
- package/dist/icons/HtmlIcon.js.map +7 -0
- package/dist/icons/ImgIcon.js +56 -0
- package/dist/icons/ImgIcon.js.map +7 -0
- package/dist/icons/LinkedInIcon.js +25 -0
- package/dist/icons/LinkedInIcon.js.map +7 -0
- package/dist/icons/OpenAIIcon.js +28 -0
- package/dist/icons/OpenAIIcon.js.map +7 -0
- package/dist/icons/PdfIcon.js +56 -0
- package/dist/icons/PdfIcon.js.map +7 -0
- package/dist/icons/ProviderIcon.js +42 -0
- package/dist/icons/ProviderIcon.js.map +7 -0
- package/dist/icons/TxtIcon.js +56 -0
- package/dist/icons/TxtIcon.js.map +7 -0
- package/dist/icons/VidIcon.js +56 -0
- package/dist/icons/VidIcon.js.map +7 -0
- package/dist/icons/XlsIcon.js +56 -0
- package/dist/icons/XlsIcon.js.map +7 -0
- package/dist/icons/arbi-mark.js +5 -0
- package/dist/icons/arbi-mark.js.map +7 -0
- package/dist/icons/colors.js +31 -0
- package/dist/icons/colors.js.map +7 -0
- package/dist/icons/file-type.js +105 -0
- package/dist/icons/file-type.js.map +7 -0
- package/dist/icons/index.js +55 -0
- package/dist/icons/index.js.map +7 -0
- package/dist/imagecrop/ImageCropModal.js +56 -0
- package/dist/imagecrop/ImageCropModal.js.map +7 -0
- package/dist/imagecrop/ImageCropper.js +100 -0
- package/dist/imagecrop/ImageCropper.js.map +7 -0
- package/dist/imagecrop/cropImage.js +43 -0
- package/dist/imagecrop/cropImage.js.map +7 -0
- package/dist/imagecrop/index.js +13 -0
- package/dist/imagecrop/index.js.map +7 -0
- package/dist/index.js +702 -17116
- package/dist/index.js.map +7 -1
- package/dist/{chunk-SSXFVWCT.js → lazy-chunk.js} +8 -8
- package/dist/lazy-chunk.js.map +7 -0
- package/dist/lib/collision-padding.js +13 -0
- package/dist/lib/collision-padding.js.map +7 -0
- package/dist/lib/format-friendly-date.js +55 -0
- package/dist/lib/format-friendly-date.js.map +7 -0
- package/dist/lib/format-relative-time.js +52 -0
- package/dist/lib/format-relative-time.js.map +7 -0
- package/dist/lib/markdown-to-text.js +35 -0
- package/dist/lib/markdown-to-text.js.map +7 -0
- package/dist/lib/toast-interaction.js +9 -0
- package/dist/lib/toast-interaction.js.map +7 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +7 -0
- package/dist/mail/client.js +103 -0
- package/dist/mail/client.js.map +7 -0
- package/dist/mail/document-attachment.js +38 -0
- package/dist/mail/document-attachment.js.map +7 -0
- package/dist/mail/filing.js +132 -0
- package/dist/mail/filing.js.map +7 -0
- package/dist/mail/hooks.js +393 -0
- package/dist/mail/hooks.js.map +7 -0
- package/dist/mail/index.js +120 -0
- package/dist/mail/index.js.map +7 -0
- package/dist/mail/offline/changes.js +258 -0
- package/dist/mail/offline/changes.js.map +7 -0
- package/dist/mail/offline/confirm-sign-out.js +37 -0
- package/dist/mail/offline/confirm-sign-out.js.map +7 -0
- package/dist/mail/offline/crypto.js +26 -0
- package/dist/mail/offline/crypto.js.map +7 -0
- package/dist/mail/offline/drafts.js +69 -0
- package/dist/mail/offline/drafts.js.map +7 -0
- package/dist/mail/offline/hooks.js +104 -0
- package/dist/mail/offline/hooks.js.map +7 -0
- package/dist/mail/offline/index.js +48 -0
- package/dist/mail/offline/index.js.map +7 -0
- package/dist/mail/offline/live.js +233 -0
- package/dist/mail/offline/live.js.map +7 -0
- package/dist/mail/offline/mailbox.js +191 -0
- package/dist/mail/offline/mailbox.js.map +7 -0
- package/dist/mail/offline/outbox.js +167 -0
- package/dist/mail/offline/outbox.js.map +7 -0
- package/dist/mail/offline/reads.js +159 -0
- package/dist/mail/offline/reads.js.map +7 -0
- package/dist/mail/offline/runtime.js +100 -0
- package/dist/mail/offline/runtime.js.map +7 -0
- package/dist/mail/offline/settings.js +84 -0
- package/dist/mail/offline/settings.js.map +7 -0
- package/dist/mail/offline/store.js +29 -0
- package/dist/mail/offline/store.js.map +7 -0
- package/dist/mail/offline/sync.js +251 -0
- package/dist/mail/offline/sync.js.map +7 -0
- package/dist/mail/offline/wipe.js +19 -0
- package/dist/mail/offline/wipe.js.map +7 -0
- package/dist/mail/thread-keys.js +53 -0
- package/dist/mail/thread-keys.js.map +7 -0
- package/dist/mail/threads.js +71 -0
- package/dist/mail/threads.js.map +7 -0
- package/dist/mail/useMailClient.js +42 -0
- package/dist/mail/useMailClient.js.map +7 -0
- package/dist/model-connections.js +58 -0
- package/dist/model-connections.js.map +7 -0
- package/dist/notifications/ActivityFeed.js +70 -0
- package/dist/notifications/ActivityFeed.js.map +7 -0
- package/dist/notifications/NotificationBell.js +200 -0
- package/dist/notifications/NotificationBell.js.map +7 -0
- package/dist/notifications/Toaster.js +24 -0
- package/dist/notifications/Toaster.js.map +7 -0
- package/dist/notifications/activity-types.js +65 -0
- package/dist/notifications/activity-types.js.map +7 -0
- package/dist/notifications/bell.js +24 -0
- package/dist/notifications/bell.js.map +7 -0
- package/dist/notifications/calendar-notifications.js +79 -0
- package/dist/notifications/calendar-notifications.js.map +7 -0
- package/dist/notifications/index.js +108 -0
- package/dist/notifications/index.js.map +7 -0
- package/dist/notifications/live.js +28 -0
- package/dist/notifications/live.js.map +7 -0
- package/dist/notifications/notification-types.js +127 -0
- package/dist/notifications/notification-types.js.map +7 -0
- package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
- package/dist/notifications/notify-store.js.map +7 -0
- package/dist/notifications/server-notifications.js +452 -0
- package/dist/notifications/server-notifications.js.map +7 -0
- package/dist/notifications/useNotifications.js +34 -0
- package/dist/notifications/useNotifications.js.map +7 -0
- package/dist/offline-store/network.js +11 -0
- package/dist/offline-store/network.js.map +7 -0
- package/dist/offline-store/store.js +136 -0
- package/dist/offline-store/store.js.map +7 -0
- package/dist/offline-store/wipe.js +8 -0
- package/dist/offline-store/wipe.js.map +7 -0
- package/dist/offline.js +58 -0
- package/dist/offline.js.map +7 -0
- package/dist/people.js +122 -0
- package/dist/people.js.map +7 -0
- package/dist/projects.js +30 -0
- package/dist/projects.js.map +7 -0
- package/dist/query-client.js +63 -0
- package/dist/query-client.js.map +7 -0
- package/dist/{chunk-ZM6N7YZH.js → query-keys.js} +18 -31
- package/dist/query-keys.js.map +7 -0
- package/dist/query-persist.js +66 -0
- package/dist/query-persist.js.map +7 -0
- package/dist/queued-writes.js +59 -0
- package/dist/queued-writes.js.map +7 -0
- package/dist/remote-control.js +67 -0
- package/dist/remote-control.js.map +7 -0
- package/dist/search/index.js +23 -0
- package/dist/search/index.js.map +7 -0
- package/dist/search/session.js +58 -0
- package/dist/search/session.js.map +7 -0
- package/dist/search/useSemanticSearch.js +82 -0
- package/dist/search/useSemanticSearch.js.map +7 -0
- package/dist/session/chat.js +512 -0
- package/dist/session/chat.js.map +7 -0
- package/dist/session/documents.js +196 -0
- package/dist/session/documents.js.map +7 -0
- package/dist/session/drafts.js +103 -0
- package/dist/session/drafts.js.map +7 -0
- package/dist/session/index.js +123 -0
- package/dist/session/index.js.map +7 -0
- package/dist/session/layout.js +339 -0
- package/dist/session/layout.js.map +7 -0
- package/dist/session/persist.js +106 -0
- package/dist/session/persist.js.map +7 -0
- package/dist/session/session-hooks.js +53 -0
- package/dist/session/session-hooks.js.map +7 -0
- package/dist/session/signed-in.js +36 -0
- package/dist/session/signed-in.js.map +7 -0
- package/dist/session/store.js +166 -0
- package/dist/session/store.js.map +7 -0
- package/dist/session/thread-tabs.js +121 -0
- package/dist/session/thread-tabs.js.map +7 -0
- package/dist/session/ui-state-storage.js +76 -0
- package/dist/session/ui-state-storage.js.map +7 -0
- package/dist/session/workspace.js +77 -0
- package/dist/session/workspace.js.map +7 -0
- package/dist/shell/index.js +43 -10
- package/dist/shell/index.js.map +7 -1
- package/dist/skill-pack.js +111 -0
- package/dist/skill-pack.js.map +7 -0
- package/dist/storage.js +186 -0
- package/dist/storage.js.map +7 -0
- package/dist/support/index.js +35 -0
- package/dist/support/index.js.map +7 -0
- package/dist/tags.js +204 -0
- package/dist/tags.js.map +7 -0
- package/dist/ui/DebouncedInput.js +109 -0
- package/dist/ui/DebouncedInput.js.map +7 -0
- package/dist/ui/DictateContext.js +8 -0
- package/dist/ui/DictateContext.js.map +7 -0
- package/dist/ui/IconToggle.js +79 -0
- package/dist/ui/IconToggle.js.map +7 -0
- package/dist/ui/VerifiedToggle.js +38 -0
- package/dist/ui/VerifiedToggle.js.map +7 -0
- package/dist/ui/VisibilityToggle.js +103 -0
- package/dist/ui/VisibilityToggle.js.map +7 -0
- package/dist/ui/avatar.js +40 -0
- package/dist/ui/avatar.js.map +7 -0
- package/dist/ui/badge.js +28 -0
- package/dist/ui/badge.js.map +7 -0
- package/dist/ui/button.js +48 -0
- package/dist/ui/button.js.map +7 -0
- package/dist/ui/card.js +90 -0
- package/dist/ui/card.js.map +7 -0
- package/dist/ui/checkbox.js +22 -0
- package/dist/ui/checkbox.js.map +7 -0
- package/dist/ui/collapsible.js +10 -0
- package/dist/ui/collapsible.js.map +7 -0
- package/dist/ui/command.js +103 -0
- package/dist/ui/command.js.map +7 -0
- package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
- package/dist/ui/dialog.js.map +7 -0
- package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
- package/dist/ui/dropdown-menu.js.map +7 -0
- package/dist/ui/hover-card.js +36 -0
- package/dist/ui/hover-card.js.map +7 -0
- package/dist/ui/index.js +290 -10
- package/dist/ui/index.js.map +7 -1
- package/dist/ui/input.js +65 -0
- package/dist/ui/input.js.map +7 -0
- package/dist/ui/label.js +16 -0
- package/dist/ui/label.js.map +7 -0
- package/dist/ui/mark-menu.js +300 -0
- package/dist/ui/mark-menu.js.map +7 -0
- package/dist/ui/popover.js +40 -0
- package/dist/ui/popover.js.map +7 -0
- package/dist/ui/portal-container.js +17 -0
- package/dist/ui/portal-container.js.map +7 -0
- package/dist/ui/progress.js +24 -0
- package/dist/ui/progress.js.map +7 -0
- package/dist/ui/radio-group.js +29 -0
- package/dist/ui/radio-group.js.map +7 -0
- package/dist/ui/scroll-area.js +39 -0
- package/dist/ui/scroll-area.js.map +7 -0
- package/dist/ui/select.js +130 -0
- package/dist/ui/select.js.map +7 -0
- package/dist/ui/separator.js +23 -0
- package/dist/ui/separator.js.map +7 -0
- package/dist/ui/slider.js +23 -0
- package/dist/ui/slider.js.map +7 -0
- package/dist/ui/switch.js +28 -0
- package/dist/ui/switch.js.map +7 -0
- package/dist/ui/table.js +75 -0
- package/dist/ui/table.js.map +7 -0
- package/dist/ui/tabs.js +48 -0
- package/dist/ui/tabs.js.map +7 -0
- package/dist/ui/textarea.js +63 -0
- package/dist/ui/textarea.js.map +7 -0
- package/dist/ui/toggle-group.js +43 -0
- package/dist/ui/toggle-group.js.map +7 -0
- package/dist/ui/toggle.js +40 -0
- package/dist/ui/toggle.js.map +7 -0
- package/dist/ui/tooltip.js +215 -0
- package/dist/ui/tooltip.js.map +7 -0
- package/dist/usage-metered.js +8 -0
- package/dist/usage-metered.js.map +7 -0
- package/dist/useArbi.js +16 -0
- package/dist/useArbi.js.map +7 -0
- package/dist/useInstallSkillPack.js +81 -0
- package/dist/useInstallSkillPack.js.map +7 -0
- package/dist/usermenu/UserMenu.js +188 -0
- package/dist/usermenu/UserMenu.js.map +7 -0
- package/dist/usermenu/index.js +5 -0
- package/dist/usermenu/index.js.map +7 -0
- package/dist/users/index.js +15 -0
- package/dist/users/index.js.map +7 -0
- package/dist/users/user-display.js +60 -0
- package/dist/users/user-display.js.map +7 -0
- package/dist/viewers/AudioViewer.js +23 -0
- package/dist/viewers/AudioViewer.js.map +7 -0
- package/dist/viewers/DocxViewer.js +81 -0
- package/dist/viewers/DocxViewer.js.map +7 -0
- package/dist/viewers/ImageViewer.js +31 -0
- package/dist/viewers/ImageViewer.js.map +7 -0
- package/dist/viewers/PdfViewer.js +19 -3
- package/dist/viewers/PdfViewer.js.map +7 -1
- package/dist/{PdfViewerImpl-TEBYF2QI.js → viewers/PdfViewerImpl.js} +25 -19
- package/dist/viewers/PdfViewerImpl.js.map +7 -0
- package/dist/viewers/VideoViewer.js +31 -0
- package/dist/viewers/VideoViewer.js.map +7 -0
- package/dist/viewers/XlsxViewer.js +102 -0
- package/dist/viewers/XlsxViewer.js.map +7 -0
- package/dist/viewers/index.js +61 -271
- package/dist/viewers/index.js.map +7 -1
- package/dist/viewers/page-scroll.js +59 -0
- package/dist/viewers/page-scroll.js.map +7 -0
- package/dist/viewers/pdf-viewer-constants.js +9 -0
- package/dist/viewers/pdf-viewer-constants.js.map +7 -0
- package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
- package/dist/viewers/pdfjs-polyfills.js.map +7 -0
- package/dist/viewers/selection-runs.js +38 -0
- package/dist/viewers/selection-runs.js.map +7 -0
- package/dist/viewers/usePageIntersectionObserver.js +68 -0
- package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
- package/dist/viewers/useProcessedChunks.js +58 -0
- package/dist/viewers/useProcessedChunks.js.map +7 -0
- package/dist/viewers/viewer-zoom.js +163 -0
- package/dist/viewers/viewer-zoom.js.map +7 -0
- package/dist/websocket/ArbiWebSocketProvider.js +207 -0
- package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
- package/dist/websocket/context.js +14 -0
- package/dist/websocket/context.js.map +7 -0
- package/dist/websocket/hooks.js +30 -0
- package/dist/websocket/hooks.js.map +7 -0
- package/dist/websocket/index.js +22 -0
- package/dist/websocket/index.js.map +7 -0
- package/dist/websocket/live-updates.js +38 -0
- package/dist/websocket/live-updates.js.map +7 -0
- package/dist/websocket/reconnect.js +13 -0
- package/dist/websocket/reconnect.js.map +7 -0
- package/dist/websocket/store.js +58 -0
- package/dist/websocket/store.js.map +7 -0
- package/dist/workforce.js +607 -0
- package/dist/workforce.js.map +7 -0
- package/dist/workspaces/access-request.js +35 -0
- package/dist/workspaces/access-request.js.map +7 -0
- package/dist/workspaces/archive.js +59 -0
- package/dist/workspaces/archive.js.map +7 -0
- package/dist/workspaces/current.js +20 -0
- package/dist/workspaces/current.js.map +7 -0
- package/dist/workspaces/delete-workspaces.js +15 -0
- package/dist/workspaces/delete-workspaces.js.map +7 -0
- package/dist/workspaces/export-archive.js +40 -0
- package/dist/workspaces/export-archive.js.map +7 -0
- package/dist/workspaces/index.js +99 -0
- package/dist/workspaces/index.js.map +7 -0
- package/dist/workspaces/settings.js +45 -0
- package/dist/workspaces/settings.js.map +7 -0
- package/dist/workspaces/shell-workspaces.js +49 -0
- package/dist/workspaces/shell-workspaces.js.map +7 -0
- package/dist/workspaces/switch.js +234 -0
- package/dist/workspaces/switch.js.map +7 -0
- package/dist/workspaces/transfer.js +170 -0
- package/dist/workspaces/transfer.js.map +7 -0
- package/dist/workspaces/useShellWorkspaces.js +86 -0
- package/dist/workspaces/useShellWorkspaces.js.map +7 -0
- package/dist/workspaces/workspace-users.js +65 -0
- package/dist/workspaces/workspace-users.js.map +7 -0
- package/package.json +4 -4
- package/dist/PdfViewerImpl-TEBYF2QI.js.map +0 -1
- package/dist/PdfViewerImpl.d-B28hLEuj.d.cts +0 -62
- package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
- package/dist/annotations/freeze/index.d.cts +0 -205
- package/dist/annotations/index.d.cts +0 -360
- package/dist/artifacts/index.d.cts +0 -476
- package/dist/artifacts/redline-core.d.cts +0 -39
- package/dist/bundle-YNOX7VIL.js +0 -5
- package/dist/bundle-YNOX7VIL.js.map +0 -1
- package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
- package/dist/calls/livekit/index.d.cts +0 -280
- package/dist/chunk-47CCGUWR.js.map +0 -1
- package/dist/chunk-4FL3X3LA.js +0 -2057
- package/dist/chunk-4FL3X3LA.js.map +0 -1
- package/dist/chunk-6QNBSXCE.js +0 -271
- package/dist/chunk-6QNBSXCE.js.map +0 -1
- package/dist/chunk-74N436VK.js.map +0 -1
- package/dist/chunk-APZZQZ6P.js +0 -147
- package/dist/chunk-APZZQZ6P.js.map +0 -1
- package/dist/chunk-BF5KW5ZI.js.map +0 -1
- package/dist/chunk-DPYBZDJB.js.map +0 -1
- package/dist/chunk-DZKRL5H3.js +0 -2766
- package/dist/chunk-DZKRL5H3.js.map +0 -1
- package/dist/chunk-HDCRPPBW.js +0 -75
- package/dist/chunk-HDCRPPBW.js.map +0 -1
- package/dist/chunk-L2IPPTVC.js +0 -20
- package/dist/chunk-L2IPPTVC.js.map +0 -1
- package/dist/chunk-LSU4UPS5.js +0 -1011
- package/dist/chunk-LSU4UPS5.js.map +0 -1
- package/dist/chunk-NIKPG4PW.js +0 -1128
- package/dist/chunk-NIKPG4PW.js.map +0 -1
- package/dist/chunk-NNAJLY6B.js +0 -4974
- package/dist/chunk-NNAJLY6B.js.map +0 -1
- package/dist/chunk-OYPKKHXY.js +0 -559
- package/dist/chunk-OYPKKHXY.js.map +0 -1
- package/dist/chunk-PTOP7OHG.js.map +0 -1
- package/dist/chunk-QMY2JKBI.js +0 -246
- package/dist/chunk-QMY2JKBI.js.map +0 -1
- package/dist/chunk-SN5YV6FF.js +0 -11
- package/dist/chunk-SN5YV6FF.js.map +0 -1
- package/dist/chunk-SSXFVWCT.js.map +0 -1
- package/dist/chunk-T3USOSVN.js.map +0 -1
- package/dist/chunk-T4CLW3DN.js +0 -2560
- package/dist/chunk-T4CLW3DN.js.map +0 -1
- package/dist/chunk-UW2SGTI5.js.map +0 -1
- package/dist/chunk-VSCU7K4V.js.map +0 -1
- package/dist/chunk-WL2Y2T47.js.map +0 -1
- package/dist/chunk-WUTL62MC.js.map +0 -1
- package/dist/chunk-XWPLOFDN.js +0 -644
- package/dist/chunk-XWPLOFDN.js.map +0 -1
- package/dist/chunk-Y3MTRA7D.js +0 -97
- package/dist/chunk-Y3MTRA7D.js.map +0 -1
- package/dist/chunk-YNNAJJ5Z.js.map +0 -1
- package/dist/chunk-ZM6N7YZH.js.map +0 -1
- package/dist/document-tools/core.d.cts +0 -883
- package/dist/document-tools/index.d.cts +0 -90
- package/dist/index.d-LArLnpI8.d.cts +0 -2036
- package/dist/index.d-oR5FKZpJ.d.cts +0 -579
- package/dist/index.d.cts +0 -15923
- package/dist/lazy-chunk.d-B6YDLMKI.d.cts +0 -31
- package/dist/model.d-CNtRWKVK.d.cts +0 -110
- package/dist/query-keys.d-B1Am9tIF.d.cts +0 -337
- package/dist/shell/index.d.cts +0 -6
- package/dist/store.d-GADDvC7w.d.cts +0 -35
- package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
- package/dist/ui/index.d.cts +0 -26
- package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
- package/dist/viewers/PdfViewer.d.cts +0 -9
- package/dist/viewers/index.d.cts +0 -262
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { useAssistantQuery } from "../hooks.js";
|
|
3
|
+
import { useDocuments } from "../documents/documents-data.js";
|
|
4
|
+
function useWorkspaceDocs(workspaceId) {
|
|
5
|
+
const { data: docs = [], isLoading, isError } = useDocuments(workspaceId);
|
|
6
|
+
const docIds = useMemo(
|
|
7
|
+
() => docs.map((d) => d.external_id).filter((id) => !!id),
|
|
8
|
+
[docs]
|
|
9
|
+
);
|
|
10
|
+
return { wsId: workspaceId, docs, docIds, isLoading, isError, ready: docIds.length > 0 };
|
|
11
|
+
}
|
|
12
|
+
function useAiTask() {
|
|
13
|
+
const mutation = useAssistantQuery();
|
|
14
|
+
const [status, setStatus] = useState("idle");
|
|
15
|
+
const [text, setText] = useState("");
|
|
16
|
+
const [stepCount, setStepCount] = useState(0);
|
|
17
|
+
const [error, setError] = useState(null);
|
|
18
|
+
const [responseId, setResponseId] = useState(null);
|
|
19
|
+
const [artifacts, setArtifacts] = useState([]);
|
|
20
|
+
const bufferRef = useRef("");
|
|
21
|
+
const artifactsRef = useRef(/* @__PURE__ */ new Map());
|
|
22
|
+
const reset = useCallback(() => {
|
|
23
|
+
setStatus("idle");
|
|
24
|
+
setText("");
|
|
25
|
+
setStepCount(0);
|
|
26
|
+
setError(null);
|
|
27
|
+
setResponseId(null);
|
|
28
|
+
setArtifacts([]);
|
|
29
|
+
artifactsRef.current = /* @__PURE__ */ new Map();
|
|
30
|
+
bufferRef.current = "";
|
|
31
|
+
}, []);
|
|
32
|
+
const run = useCallback(
|
|
33
|
+
async (question, docIds, opts) => {
|
|
34
|
+
setStatus("running");
|
|
35
|
+
setText("");
|
|
36
|
+
setStepCount(0);
|
|
37
|
+
setError(null);
|
|
38
|
+
setArtifacts([]);
|
|
39
|
+
artifactsRef.current = /* @__PURE__ */ new Map();
|
|
40
|
+
bufferRef.current = "";
|
|
41
|
+
let streamError = null;
|
|
42
|
+
try {
|
|
43
|
+
const result = await mutation.mutateAsync({
|
|
44
|
+
request: {
|
|
45
|
+
question,
|
|
46
|
+
docIds,
|
|
47
|
+
previousResponseId: opts?.previousResponseId ?? void 0,
|
|
48
|
+
model: opts?.model,
|
|
49
|
+
activeArtifactExtId: opts?.activeArtifactExtId
|
|
50
|
+
},
|
|
51
|
+
handlers: {
|
|
52
|
+
onToken: (c) => {
|
|
53
|
+
bufferRef.current += c;
|
|
54
|
+
setText(bufferRef.current);
|
|
55
|
+
},
|
|
56
|
+
onOutputItemDone: (ev) => {
|
|
57
|
+
const t = ev.item.type;
|
|
58
|
+
if (t === "function_call" || t === "reasoning") setStepCount((n) => n + 1);
|
|
59
|
+
},
|
|
60
|
+
onArtifact: (a) => {
|
|
61
|
+
artifactsRef.current.set(a.doc_ext_id, a);
|
|
62
|
+
setArtifacts([...artifactsRef.current.values()]);
|
|
63
|
+
},
|
|
64
|
+
onError: (e) => {
|
|
65
|
+
if (typeof e === "string") streamError = e;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const finalText = result.text || bufferRef.current;
|
|
70
|
+
setText(finalText);
|
|
71
|
+
setResponseId(result.assistantMessageExtId);
|
|
72
|
+
setStepCount(result.agentSteps.length || 0);
|
|
73
|
+
if (result.artifacts?.length) {
|
|
74
|
+
for (const a of result.artifacts) artifactsRef.current.set(a.doc_ext_id, a);
|
|
75
|
+
setArtifacts([...artifactsRef.current.values()]);
|
|
76
|
+
}
|
|
77
|
+
const err = streamError || result.errors[0] || null;
|
|
78
|
+
if (err && !finalText) {
|
|
79
|
+
setError(err);
|
|
80
|
+
setStatus("error");
|
|
81
|
+
} else {
|
|
82
|
+
setStatus("done");
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
} catch (e) {
|
|
86
|
+
setError(e instanceof Error ? e.message : "The assistant request failed.");
|
|
87
|
+
setStatus("error");
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
[mutation]
|
|
92
|
+
);
|
|
93
|
+
return {
|
|
94
|
+
status,
|
|
95
|
+
text,
|
|
96
|
+
stepCount,
|
|
97
|
+
error,
|
|
98
|
+
responseId,
|
|
99
|
+
artifacts,
|
|
100
|
+
run,
|
|
101
|
+
reset,
|
|
102
|
+
isRunning: status === "running",
|
|
103
|
+
isDone: status === "done"
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
useAiTask,
|
|
108
|
+
useWorkspaceDocs
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/engine.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The AI engine \u2014 domain-agnostic hooks for building an AI-native app on ARBI.\n *\n * `useAiTask` runs a streaming, cited agentic query (tokens, agent steps and\n * artifacts accumulate live, with follow-up threading). `useWorkspaceDocs`\n * resolves a workspace's document ids to ground on (search lives in `../search`).\n * These wrap the low-level SDK hooks so a vertical app never re-implements the\n * streaming/accumulation plumbing.\n */\n\nimport { useCallback, useMemo, useRef, useState } from 'react'\nimport type { SSEStreamResult, ArtifactEvent } from '@arbidocs/sdk/browser'\nimport { useAssistantQuery } from '../hooks'\nimport { useDocuments } from '../documents/documents-data'\n\nexport type { ArtifactEvent }\n\n/**\n * Resolve a workspace's document set and their external ids. Pass the active\n * `workspaceId`; the kit stays agnostic about how selection is managed.\n */\nexport function useWorkspaceDocs(workspaceId?: string) {\n const { data: docs = [], isLoading, isError } = useDocuments(workspaceId)\n\n const docIds = useMemo(\n () =>\n docs.map((d: { external_id?: string }) => d.external_id).filter((id): id is string => !!id),\n [docs]\n )\n\n return { wsId: workspaceId, docs, docIds, isLoading, isError, ready: docIds.length > 0 }\n}\n\nexport type AiTaskStatus = 'idle' | 'running' | 'done' | 'error'\n\nexport interface AiRunOptions {\n /** Bind this turn to the open native Word document. */\n activeArtifactExtId?: string\n /** Continue a prior turn (follow-up questions in the same thread). */\n previousResponseId?: string | null\n model?: string\n}\n\n/**\n * Run a single streaming agentic task grounded in a set of documents.\n *\n * Returns live state (`text` accumulates tokens as they stream) plus a `run`\n * that resolves to the full {@link SSEStreamResult} \u2014 including the response id\n * needed to chain follow-ups.\n */\nexport function useAiTask() {\n const mutation = useAssistantQuery()\n const [status, setStatus] = useState<AiTaskStatus>('idle')\n const [text, setText] = useState('')\n const [stepCount, setStepCount] = useState(0)\n const [error, setError] = useState<string | null>(null)\n const [responseId, setResponseId] = useState<string | null>(null)\n const [artifacts, setArtifacts] = useState<ArtifactEvent[]>([])\n const bufferRef = useRef('')\n const artifactsRef = useRef<Map<string, ArtifactEvent>>(new Map())\n\n const reset = useCallback(() => {\n setStatus('idle')\n setText('')\n setStepCount(0)\n setError(null)\n setResponseId(null)\n setArtifacts([])\n artifactsRef.current = new Map()\n bufferRef.current = ''\n }, [])\n\n const run = useCallback(\n async (\n question: string,\n docIds: string[],\n opts?: AiRunOptions\n ): Promise<SSEStreamResult | null> => {\n setStatus('running')\n setText('')\n setStepCount(0)\n setError(null)\n setArtifacts([])\n artifactsRef.current = new Map()\n bufferRef.current = ''\n let streamError: string | null = null\n try {\n const result = await mutation.mutateAsync({\n request: {\n question,\n docIds,\n previousResponseId: opts?.previousResponseId ?? undefined,\n model: opts?.model,\n activeArtifactExtId: opts?.activeArtifactExtId,\n },\n handlers: {\n onToken: (c: string) => {\n bufferRef.current += c\n setText(bufferRef.current)\n },\n onOutputItemDone: (ev) => {\n const t = (ev.item as { type?: string }).type\n if (t === 'function_call' || t === 'reasoning') setStepCount((n) => n + 1)\n },\n onArtifact: (a: ArtifactEvent) => {\n // Artifacts are documents; keep the latest version per doc.\n artifactsRef.current.set(a.doc_ext_id, a)\n setArtifacts([...artifactsRef.current.values()])\n },\n onError: (e) => {\n // The server's report; a dropped connection rejects the ask instead.\n if (typeof e === 'string') streamError = e\n },\n },\n })\n const finalText = result.text || bufferRef.current\n setText(finalText)\n setResponseId(result.assistantMessageExtId)\n setStepCount(result.agentSteps.length || 0)\n if (result.artifacts?.length) {\n for (const a of result.artifacts) artifactsRef.current.set(a.doc_ext_id, a)\n setArtifacts([...artifactsRef.current.values()])\n }\n const err = streamError || result.errors[0] || null\n if (err && !finalText) {\n setError(err)\n setStatus('error')\n } else {\n setStatus('done')\n }\n return result\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The assistant request failed.')\n setStatus('error')\n return null\n }\n },\n [mutation]\n )\n\n return {\n status,\n text,\n stepCount,\n error,\n responseId,\n artifacts,\n run,\n reset,\n isRunning: status === 'running',\n isDone: status === 'done',\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/ai/index.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useAiTask,
|
|
3
|
+
useWorkspaceDocs
|
|
4
|
+
} from "./engine.js";
|
|
5
|
+
import { toRedlineMarkdown, redlineStats, textToArtifact } from "./redline.js";
|
|
6
|
+
import {
|
|
7
|
+
MarkdownCode,
|
|
8
|
+
MarkdownLink,
|
|
9
|
+
MarkdownRenderer,
|
|
10
|
+
markdownSanitizeSchema
|
|
11
|
+
} from "./MarkdownRenderer.js";
|
|
12
|
+
import { MarkdownStreamingContext } from "./markdown-streaming-context.js";
|
|
13
|
+
import { splitMarkdownBlocks } from "./split-markdown-blocks.js";
|
|
14
|
+
import { normalizeCitationMarkup, trimOpenCitation, closeOpenEmphasis } from "./normalize-citations.js";
|
|
15
|
+
import { AiMarkdown } from "./AiMarkdown.js";
|
|
16
|
+
import { markdownBaseComponents } from "./markdown-base-components.js";
|
|
17
|
+
import { AiAnswer } from "./AiAnswer.js";
|
|
18
|
+
import { ArtifactCanvas } from "./ArtifactCanvas.js";
|
|
19
|
+
import { MessageArtifactCard } from "./MessageArtifactCard.js";
|
|
20
|
+
import { PassageCard } from "./PassageCard.js";
|
|
21
|
+
import { CitationRenderer } from "./CitationRenderer.js";
|
|
22
|
+
import {
|
|
23
|
+
cleanDraftMarkdown,
|
|
24
|
+
cleanDraftWithReport,
|
|
25
|
+
promoteBoldTitle,
|
|
26
|
+
repairParsedStructure,
|
|
27
|
+
repairParsedTitle,
|
|
28
|
+
stripAgentPreamble,
|
|
29
|
+
unescapeMarkdown,
|
|
30
|
+
unwrapCitationLinks
|
|
31
|
+
} from "./stored-markdown.js";
|
|
32
|
+
export {
|
|
33
|
+
AiAnswer,
|
|
34
|
+
AiMarkdown,
|
|
35
|
+
ArtifactCanvas,
|
|
36
|
+
CitationRenderer,
|
|
37
|
+
MarkdownCode,
|
|
38
|
+
MarkdownLink,
|
|
39
|
+
MarkdownRenderer,
|
|
40
|
+
MarkdownStreamingContext,
|
|
41
|
+
MessageArtifactCard,
|
|
42
|
+
PassageCard,
|
|
43
|
+
cleanDraftMarkdown,
|
|
44
|
+
cleanDraftWithReport,
|
|
45
|
+
closeOpenEmphasis,
|
|
46
|
+
markdownBaseComponents,
|
|
47
|
+
markdownSanitizeSchema,
|
|
48
|
+
normalizeCitationMarkup,
|
|
49
|
+
promoteBoldTitle,
|
|
50
|
+
redlineStats,
|
|
51
|
+
repairParsedStructure,
|
|
52
|
+
repairParsedTitle,
|
|
53
|
+
splitMarkdownBlocks,
|
|
54
|
+
stripAgentPreamble,
|
|
55
|
+
textToArtifact,
|
|
56
|
+
toRedlineMarkdown,
|
|
57
|
+
trimOpenCitation,
|
|
58
|
+
unescapeMarkdown,
|
|
59
|
+
unwrapCitationLinks,
|
|
60
|
+
useAiTask,
|
|
61
|
+
useWorkspaceDocs
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * `@arbidocs/react` AI kit \u2014 mid-level, token-neutral, domain-agnostic building\n * blocks for an AI-native app on ARBI. Compose these into pages; keep prompts,\n * domain model and branding in your app. See docs/ai-native-vertical-kit.md.\n *\n * Theming: components use shadcn semantic tokens plus an AI-accent contract the\n * consumer defines (accent tracks the shadcn --primary by default):\n * --color-ai-accent, --color-ai-accent-foreground, --color-ai-accent-soft, --color-ai-surface\n */\n\n// Engine hooks\nexport {\n useAiTask,\n useWorkspaceDocs,\n type AiTaskStatus,\n type AiRunOptions,\n type ArtifactEvent,\n} from './engine'\n\n// Redline engine\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from './redline'\n\n// UI components\nexport {\n MarkdownCode,\n MarkdownLink,\n MarkdownRenderer,\n markdownSanitizeSchema,\n type MarkdownRendererProps,\n} from './MarkdownRenderer'\nexport { MarkdownStreamingContext } from './markdown-streaming-context'\nexport { splitMarkdownBlocks } from './split-markdown-blocks'\nexport { normalizeCitationMarkup, trimOpenCitation, closeOpenEmphasis } from './normalize-citations'\nexport { AiMarkdown } from './AiMarkdown'\nexport { markdownBaseComponents } from './markdown-base-components'\nexport { AiAnswer } from './AiAnswer'\nexport { ArtifactCanvas } from './ArtifactCanvas'\nexport { MessageArtifactCard, type MessageArtifact } from './MessageArtifactCard'\nexport { PassageCard, type PassageCardProps } from './PassageCard'\nexport { CitationRenderer } from './CitationRenderer'\nexport type {\n CitationRendererProps,\n CitationState,\n ChunkActivation,\n RenderMarkdown,\n Chunk,\n ToolResponses,\n} from './CitationRenderer'\nexport {\n cleanDraftMarkdown,\n cleanDraftWithReport,\n type DraftCleanReport,\n type DraftCleanStage,\n promoteBoldTitle,\n repairParsedStructure,\n repairParsedTitle,\n stripAgentPreamble,\n unescapeMarkdown,\n unwrapCitationLinks,\n} from './stored-markdown'\n"],
|
|
5
|
+
"mappings": "AAWA;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AAGP,SAAS,mBAAmB,cAAc,sBAAsB;AAGhE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gCAAgC;AACzC,SAAS,2BAA2B;AACpC,SAAS,yBAAyB,kBAAkB,yBAAyB;AAC7E,SAAS,kBAAkB;AAC3B,SAAS,8BAA8B;AACvC,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAC/B,SAAS,2BAAiD;AAC1D,SAAS,mBAA0C;AACnD,SAAS,wBAAwB;AASjC;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
const markdownBaseComponents = {
|
|
3
|
+
h1: ({ children, ...props }) => /* @__PURE__ */ jsx("h1", { className: "text-lg font-semibold", "data-testid": "markdown-heading-1", ...props, children }),
|
|
4
|
+
h2: ({ children, ...props }) => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-base", "data-testid": "markdown-heading-2", ...props, children }),
|
|
5
|
+
h3: ({ children, ...props }) => /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base", "data-testid": "markdown-heading-3", ...props, children }),
|
|
6
|
+
h4: ({ children, ...props }) => /* @__PURE__ */ jsx("h4", { className: "font-semibold text-base", ...props, children }),
|
|
7
|
+
h5: ({ children, ...props }) => /* @__PURE__ */ jsx("h5", { className: "font-medium", ...props, children }),
|
|
8
|
+
strong: ({ children, ...props }) => /* @__PURE__ */ jsx("strong", { className: "font-semibold", ...props, children }),
|
|
9
|
+
blockquote: ({ children, ...props }) => /* @__PURE__ */ jsx("blockquote", { className: "border-l-2 border-primary pl-4", ...props, children }),
|
|
10
|
+
ol: ({ children, ...props }) => /* @__PURE__ */ jsx("ol", { className: "list-decimal space-y-2 pl-6", "data-testid": "markdown-ordered-list", ...props, children }),
|
|
11
|
+
ul: ({ children, ...props }) => /* @__PURE__ */ jsx("ul", { className: "list-none space-y-2 pl-6", "data-testid": "markdown-unordered-list", ...props, children }),
|
|
12
|
+
li: ({ children, ...props }) => /* @__PURE__ */ jsx("li", { className: "my-1.5", ...props, children }),
|
|
13
|
+
table: ({ children, ...props }) => /* @__PURE__ */ jsx("table", { "data-testid": "markdown-table", ...props, children }),
|
|
14
|
+
th: ({ children, ...props }) => /* @__PURE__ */ jsx("th", { ...props, children }),
|
|
15
|
+
td: ({ children, ...props }) => /* @__PURE__ */ jsx("td", { ...props, children }),
|
|
16
|
+
tr: ({ children, ...props }) => /* @__PURE__ */ jsx("tr", { ...props, children }),
|
|
17
|
+
p: ({ children, ...props }) => /* @__PURE__ */ jsx("p", { className: "whitespace-pre-wrap", ...props, children }),
|
|
18
|
+
hr: (props) => /* @__PURE__ */ jsx("hr", { className: "border-foreground/20", ...props }),
|
|
19
|
+
sup: ({ children, ...props }) => /* @__PURE__ */ jsx("sup", { className: "text-xs", ...props, children }),
|
|
20
|
+
sub: ({ children, ...props }) => /* @__PURE__ */ jsx("sub", { className: "text-xs", ...props, children }),
|
|
21
|
+
div: ({ children, className, ...props }) => /* @__PURE__ */ jsx("div", { className, ...props, children }),
|
|
22
|
+
br: (props) => /* @__PURE__ */ jsx("br", { ...props }),
|
|
23
|
+
kbd: ({ children, ...props }) => /* @__PURE__ */ jsx(
|
|
24
|
+
"kbd",
|
|
25
|
+
{
|
|
26
|
+
className: "px-1.5 py-0.5 text-xs font-mono bg-muted border border-border rounded",
|
|
27
|
+
...props,
|
|
28
|
+
children
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
abbr: ({ children, title, ...props }) => /* @__PURE__ */ jsx("abbr", { title, className: "underline decoration-dotted cursor-help", ...props, children }),
|
|
32
|
+
cite: ({ children, ...props }) => /* @__PURE__ */ jsx("cite", { className: "italic", ...props, children })
|
|
33
|
+
};
|
|
34
|
+
export {
|
|
35
|
+
markdownBaseComponents
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=markdown-base-components.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/markdown-base-components.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport type { Components } from 'react-markdown'\n\n/**\n * Brand-neutral presentational component overrides for react-markdown, shared by\n * every markdown surface in the workspace (the monolith's `MarkdownRenderer` and\n * the AI kit's `AiMarkdown`). One house style for headings, lists, tables and the\n * inline text elements \u2014 token-based, so it themes per app.\n *\n * Deliberately excluded (kept per-consumer): `a` (external-link confirm vs\n * plain), `code`/`pre` (rich CodeBlock + Mermaid vs inline), `span` (doc-entity\n * pills), and `del`/`ins`/`mark` (general emphasis vs redline tracked-changes) \u2014\n * these differ by intent or carry heavy/coupled behaviour, so each renderer owns\n * them and spreads this base underneath.\n */\nexport const markdownBaseComponents: Partial<Components> = {\n h1: ({ children, ...props }: React.ComponentPropsWithoutRef<'h1'>) => (\n <h1 className=\"text-lg font-semibold\" data-testid=\"markdown-heading-1\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }: React.ComponentPropsWithoutRef<'h2'>) => (\n <h2 className=\"font-semibold text-base\" data-testid=\"markdown-heading-2\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }: React.ComponentPropsWithoutRef<'h3'>) => (\n <h3 className=\"font-semibold text-base\" data-testid=\"markdown-heading-3\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }: React.ComponentPropsWithoutRef<'h4'>) => (\n <h4 className=\"font-semibold text-base\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }: React.ComponentPropsWithoutRef<'h5'>) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }: React.ComponentPropsWithoutRef<'strong'>) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n blockquote: ({ children, ...props }: React.ComponentPropsWithoutRef<'blockquote'>) => (\n <blockquote className=\"border-l-2 border-primary pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n ol: ({ children, ...props }: React.ComponentPropsWithoutRef<'ol'>) => (\n <ol className=\"list-decimal space-y-2 pl-6\" data-testid=\"markdown-ordered-list\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }: React.ComponentPropsWithoutRef<'ul'>) => (\n <ul className=\"list-none space-y-2 pl-6\" data-testid=\"markdown-unordered-list\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }: React.ComponentPropsWithoutRef<'li'>) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }: React.ComponentPropsWithoutRef<'table'>) => (\n <table data-testid=\"markdown-table\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }: React.ComponentPropsWithoutRef<'th'>) => (\n <th {...props}>{children}</th>\n ),\n td: ({ children, ...props }: React.ComponentPropsWithoutRef<'td'>) => (\n <td {...props}>{children}</td>\n ),\n tr: ({ children, ...props }: React.ComponentPropsWithoutRef<'tr'>) => (\n <tr {...props}>{children}</tr>\n ),\n p: ({ children, ...props }: React.ComponentPropsWithoutRef<'p'>) => (\n <p className=\"whitespace-pre-wrap\" {...props}>\n {children}\n </p>\n ),\n hr: (props: React.ComponentPropsWithoutRef<'hr'>) => (\n <hr className=\"border-foreground/20\" {...props} />\n ),\n sup: ({ children, ...props }: React.ComponentPropsWithoutRef<'sup'>) => (\n <sup className=\"text-xs\" {...props}>\n {children}\n </sup>\n ),\n sub: ({ children, ...props }: React.ComponentPropsWithoutRef<'sub'>) => (\n <sub className=\"text-xs\" {...props}>\n {children}\n </sub>\n ),\n div: ({ children, className, ...props }: React.ComponentPropsWithoutRef<'div'>) => (\n <div className={className} {...props}>\n {children}\n </div>\n ),\n br: (props: React.ComponentPropsWithoutRef<'br'>) => <br {...props} />,\n kbd: ({ children, ...props }: React.ComponentPropsWithoutRef<'kbd'>) => (\n <kbd\n className=\"px-1.5 py-0.5 text-xs font-mono bg-muted border border-border rounded\"\n {...props}\n >\n {children}\n </kbd>\n ),\n abbr: ({ children, title, ...props }: React.ComponentPropsWithoutRef<'abbr'>) => (\n <abbr title={title} className=\"underline decoration-dotted cursor-help\" {...props}>\n {children}\n </abbr>\n ),\n cite: ({ children, ...props }: React.ComponentPropsWithoutRef<'cite'>) => (\n <cite className=\"italic\" {...props}>\n {children}\n </cite>\n ),\n}\n"],
|
|
5
|
+
"mappings": "AAiBI;AAFG,MAAM,yBAA8C;AAAA,EACzD,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,yBAAwB,eAAY,sBAAsB,GAAG,OACxE,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,2BAA0B,eAAY,sBAAsB,GAAG,OAC1E,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,2BAA0B,eAAY,sBAAsB,GAAG,OAC1E,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,2BAA2B,GAAG,OACzC,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,eAAe,GAAG,OAC7B,UACH;AAAA,EAEF,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,MAC5B,oBAAC,YAAO,WAAU,iBAAiB,GAAG,OACnC,UACH;AAAA,EAEF,YAAY,CAAC,EAAE,UAAU,GAAG,MAAM,MAChC,oBAAC,gBAAW,WAAU,kCAAkC,GAAG,OACxD,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,+BAA8B,eAAY,yBAAyB,GAAG,OACjF,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,4BAA2B,eAAY,2BAA2B,GAAG,OAChF,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAG,WAAU,UAAU,GAAG,OACxB,UACH;AAAA,EAEF,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,MAC3B,oBAAC,WAAM,eAAY,kBAAkB,GAAG,OACrC,UACH;AAAA,EAEF,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAI,GAAG,OAAQ,UAAS;AAAA,EAE3B,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAI,GAAG,OAAQ,UAAS;AAAA,EAE3B,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,MACxB,oBAAC,QAAI,GAAG,OAAQ,UAAS;AAAA,EAE3B,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,MACvB,oBAAC,OAAE,WAAU,uBAAuB,GAAG,OACpC,UACH;AAAA,EAEF,IAAI,CAAC,UACH,oBAAC,QAAG,WAAU,wBAAwB,GAAG,OAAO;AAAA,EAElD,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,MACzB,oBAAC,SAAI,WAAU,WAAW,GAAG,OAC1B,UACH;AAAA,EAEF,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,MACzB,oBAAC,SAAI,WAAU,WAAW,GAAG,OAC1B,UACH;AAAA,EAEF,KAAK,CAAC,EAAE,UAAU,WAAW,GAAG,MAAM,MACpC,oBAAC,SAAI,WAAuB,GAAG,OAC5B,UACH;AAAA,EAEF,IAAI,CAAC,UAAgD,oBAAC,QAAI,GAAG,OAAO;AAAA,EACpE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,MACzB;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAAA,EAEF,MAAM,CAAC,EAAE,UAAU,OAAO,GAAG,MAAM,MACjC,oBAAC,UAAK,OAAc,WAAU,2CAA2C,GAAG,OACzE,UACH;AAAA,EAEF,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,MAC1B,oBAAC,UAAK,WAAU,UAAU,GAAG,OAC1B,UACH;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/markdown-streaming-context.ts"],
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\n/**\n * Signals to `MarkdownRenderer`'s component overrides that the surrounding\n * message is still streaming tokens. Heavy renderers can defer their work while\n * this is true to avoid burning CPU on partially complete fences and to keep the\n * UI responsive during long generations.\n *\n * Default `false` means non-streaming usages (parsed documents, static answers,\n * DM bubbles) get the full rendering with no behaviour change.\n */\nexport const MarkdownStreamingContext = createContext(false)\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAWvB,MAAM,2BAA2B,cAAc,KAAK;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return useContext(ArbiHostContext);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// src/ai/normalize-citations.ts
|
|
10
|
-
var SOURCE_RESIDUE = /\(\*+\s*(Sources?\s*:[^\n]*?)\s*\*+\)/g;
|
|
11
|
-
var CITE_CLOSE = /^\]\((#cite-[\w-]+)\)/;
|
|
12
|
-
var BLOCK_MARKER = /^(?:[-*+]|\d{1,9}[.)]|#{1,6})[ \t]+/;
|
|
13
|
-
var LEADING_EMPHASIS = /^(?:\*\*|__|\*|_)+/;
|
|
14
|
-
var TRAILING_EMPHASIS = /(\*\*|__|\*|_)(:?)$/;
|
|
1
|
+
const SOURCE_RESIDUE = /\(\*+\s*(Sources?\s*:[^\n]*?)\s*\*+\)/g;
|
|
2
|
+
const CITE_CLOSE = /^\]\((#cite-[\w-]+)\)/;
|
|
3
|
+
const BLOCK_MARKER = /^(?:[-*+]|\d{1,9}[.)]|#{1,6})[ \t]+/;
|
|
4
|
+
const LEADING_EMPHASIS = /^(?:\*\*|__|\*|_)+/;
|
|
5
|
+
const TRAILING_EMPHASIS = /(\*\*|__|\*|_)(:?)$/;
|
|
15
6
|
function countToken(text, token) {
|
|
16
7
|
const double = token + token;
|
|
17
8
|
if (token.length === 2) return text.split(token).length - 1;
|
|
@@ -155,7 +146,7 @@ function normalizeCitationMarkup(markdown) {
|
|
|
155
146
|
return inFence ? line : normalizeSourceResidue(normalizeLine(line));
|
|
156
147
|
}).join("\n");
|
|
157
148
|
}
|
|
158
|
-
|
|
149
|
+
const OPEN_CITATION_TAIL = /\[[^\]\n]*(?:\](?:\((?:#(?:c(?:i(?:t(?:e(?:-[\w-]*)?)?)?)?)?)?)?)?$/;
|
|
159
150
|
function trimOpenCitation(markdown) {
|
|
160
151
|
return markdown.replace(OPEN_CITATION_TAIL, "");
|
|
161
152
|
}
|
|
@@ -175,7 +166,9 @@ function closeOpenEmphasis(markdown) {
|
|
|
175
166
|
if (/\*\*\s*$/.test(line)) return head + line.replace(/\s*\*\*\s*$/, " ");
|
|
176
167
|
return head + line + "**";
|
|
177
168
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
169
|
+
export {
|
|
170
|
+
closeOpenEmphasis,
|
|
171
|
+
normalizeCitationMarkup,
|
|
172
|
+
trimOpenCitation
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=normalize-citations.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/normalize-citations.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Citation markup normaliser.\n *\n * The backend marks a cited statement as a markdown link, `[statement](#cite-N)`, and the\n * statement can include the markdown that surrounds it: a list marker, a heading marker or the\n * opener of a bold/italic span whose closer sits after the link. Inside link text those tokens\n * are not parsed as block or inline syntax, so they show literally and break lists and bold:\n *\n * [- **Claimed quantum (by Claimant)](#cite-1):** **USD 47 million**\n *\n * `normalizeCitationMarkup` hoists the leading tokens out of the link text (and a trailing\n * emphasis closer after it), so the link only wraps the words:\n *\n * - **[Claimed quantum (by Claimant)](#cite-1):** **USD 47 million**\n *\n * It is conservative: emphasis that opens and closes inside the link text is valid markdown and\n * is left alone, an opener is only hoisted when its closer follows on the same line, and fenced\n * code blocks are never touched. The result is idempotent.\n *\n * It also tidies the residue the model leaves when it cites in prose as well: a literal\n * `(*Source: Award.pdf, p. 12*)` shows its asterisks, because `(*` does not open emphasis. It\n * becomes the italic note `*(Source: Award.pdf, p. 12)*`.\n */\n\nconst SOURCE_RESIDUE = /\\(\\*+\\s*(Sources?\\s*:[^\\n]*?)\\s*\\*+\\)/g\n\nconst CITE_CLOSE = /^\\]\\((#cite-[\\w-]+)\\)/\nconst BLOCK_MARKER = /^(?:[-*+]|\\d{1,9}[.)]|#{1,6})[ \\t]+/\nconst LEADING_EMPHASIS = /^(?:\\*\\*|__|\\*|_)+/\nconst TRAILING_EMPHASIS = /(\\*\\*|__|\\*|_)(:?)$/\n\n/** Occurrences of `token` in `text`; a single `*` is counted outside any `**` pair. */\nfunction countToken(text: string, token: string): number {\n const double = token + token\n if (token.length === 2) return text.split(token).length - 1\n const withoutDouble = text.split(double).join('')\n return withoutDouble.split(token).length - 1\n}\n\n/** Split a run of emphasis characters (`***`, `**`, `*`...) into its parser-level tokens. */\nfunction emphasisTokens(run: string): string[] {\n const char = run[0]\n const tokens: string[] = []\n let rest = run\n while (rest.length > 0) {\n const size = rest.length >= 2 ? 2 : 1\n tokens.push(char.repeat(size))\n rest = rest.slice(size)\n }\n return tokens\n}\n\nfunction hoistFromLink(text: string, before: string, after: string): [string, string, string] {\n let body = text\n let prefix = ''\n let suffix = ''\n\n if (before.trim() === '') {\n const marker = BLOCK_MARKER.exec(body)\n if (marker) {\n prefix += marker[0]\n body = body.slice(marker[0].length)\n }\n }\n\n // The link opened inside an emphasis span: `*Sources:[* Letter](#cite-2)`. A leading token that\n // the text before the link left open, and that is followed by a space, is the span's CLOSER (an\n // opener cannot precede a space), so it moves out in front of the link with its space.\n const closer = /^(\\*\\*|__|\\*|_)(\\s+)(?=\\S)/.exec(body)\n if (closer && countToken(before + prefix, closer[1]) % 2 === 1) {\n prefix += closer[1] + closer[2]\n body = body.slice(closer[0].length)\n }\n\n const leading = LEADING_EMPHASIS.exec(body)\n if (leading) {\n let kept = ''\n let rest = body.slice(leading[0].length)\n for (const token of emphasisTokens(leading[0]).reverse()) {\n // Balanced inside the link text: valid as written.\n if (countToken(rest, token) % 2 === 1) {\n kept = token + kept\n continue\n }\n // Unmatched here: hoist only if the line closes it after the link.\n if (countToken(after, token) % 2 === 1) prefix += token\n else kept = token + kept\n }\n body = kept + rest\n rest = ''\n }\n\n // A span opened before the link and closed inside it (`**Spence v. [Costa Rica** arbitration.]`)\n // cannot close across the link boundary: move the words up to the closer out of the link.\n for (const token of ['**', '__']) {\n const at = body.indexOf(token)\n if (at === -1 || countToken(body, token) % 2 === 0) continue\n if (countToken(before + prefix, token) % 2 === 0) continue\n const rest = body.slice(at + token.length)\n if (!/[\\p{L}\\p{N}]/u.test(rest)) continue\n prefix +=\n body.slice(0, at + token.length) + rest.slice(0, rest.length - rest.trimStart().length)\n body = rest.trimStart()\n break\n }\n\n const trailing = TRAILING_EMPHASIS.exec(body)\n if (trailing) {\n const token = trailing[1]\n const inner = body.slice(0, body.length - trailing[0].length)\n const openedBefore = countToken(before + prefix, token) % 2 === 1\n if (countToken(inner, token) % 2 === 0 && openedBefore) {\n body = inner\n suffix = trailing[0]\n }\n }\n\n // The link ends inside an emphasis span that closes after it: `*(Source](#cite-1): a.md)*`. The\n // unmatched opener and the words after it leave the link, so the span opens and closes in the\n // same text again: `[words](#cite-1) *(Source: a.md)*`.\n if (!suffix) {\n for (const token of ['**', '*']) {\n const at = lastUnmatchedOpener(body, token)\n if (at > 0 && countToken(after, token) % 2 === 1) {\n suffix = ' ' + body.slice(at)\n body = body.slice(0, at).trimEnd()\n break\n }\n }\n }\n\n return [prefix, body, suffix]\n}\n\n/** Index of the last `token` in `text` that opens emphasis (followed by a non-space) and has no closer. */\nfunction lastUnmatchedOpener(text: string, token: string): number {\n if (countToken(text, token) % 2 === 0) return -1\n const pattern = token === '**' ? /\\*\\*(?=\\S)/g : /(?<!\\*)\\*(?![*\\s])/g\n let at = -1\n for (const m of text.matchAll(pattern)) at = m.index ?? -1\n return at\n}\n\ninterface CiteLink {\n start: number\n end: number\n text: string\n href: string\n}\n\n/**\n * The `[text](#cite-N)` links of a line. The text may hold brackets of its own\n * (`[2. **[PLACEHOLDER]** names the claimant.](#cite-3)`), so a regex cannot find the opener: a\n * stack of `[` is scanned, and a `](#cite-N)` takes the nearest open one.\n */\nfunction findCiteLinks(line: string): CiteLink[] {\n const links: CiteLink[] = []\n const open: number[] = []\n for (let i = 0; i < line.length; i++) {\n const c = line[i]\n if (c === '[') open.push(i)\n else if (c === ']') {\n const opener = open.pop()\n const close = CITE_CLOSE.exec(line.slice(i, i + 40))\n if (opener !== undefined && close) {\n links.push({\n start: opener,\n end: i + close[0].length,\n text: line.slice(opener + 1, i),\n href: close[1],\n })\n i += close[0].length - 1\n }\n }\n }\n return links.sort((x, y) => x.start - y.start)\n}\n\nfunction normalizeLine(line: string): string {\n if (!line.includes('](#cite-')) return line\n let out = ''\n let last = 0\n for (const link of findCiteLinks(line)) {\n // A link inside another link's text is part of that text.\n if (link.start < last) continue\n // Markdown links do not nest: a citation that wraps another citation (`[a [9](#cite-9)](#cite-10)`)\n // keeps the words and the inner mark, and the outer wrapper is dropped.\n if (link.text.includes('](#cite-')) {\n out += line.slice(last, link.start) + link.text\n last = link.end\n continue\n }\n const before = line.slice(0, link.start)\n const after = line.slice(link.end)\n const [prefix, body, suffix] = hoistFromLink(link.text, before, after)\n out += line.slice(last, link.start)\n out += `${prefix}[${body}](${link.href})${suffix}`\n last = link.end\n }\n return out + line.slice(last)\n}\n\nfunction normalizeSourceResidue(line: string): string {\n return line.includes('(*') ? line.replace(SOURCE_RESIDUE, '*($1)*') : line\n}\n\nexport function normalizeCitationMarkup(markdown: string): string {\n if (!markdown.includes('](#cite-') && !markdown.includes('(*')) return markdown\n let inFence = false\n return markdown\n .split('\\n')\n .map((line) => {\n if (/^\\s*(```|~~~)/.test(line)) {\n inFence = !inFence\n return line\n }\n return inFence ? line : normalizeSourceResidue(normalizeLine(line))\n })\n .join('\\n')\n}\n\n/** A trailing, still-open `[words](#cite-N` marker (or an unclosed `[words`) on the last line. */\nconst OPEN_CITATION_TAIL = /\\[[^\\]\\n]*(?:\\](?:\\((?:#(?:c(?:i(?:t(?:e(?:-[\\w-]*)?)?)?)?)?)?)?)?$/\n\n/**\n * Drops an unfinished citation marker from the end of text that is still streaming (or was\n * stopped mid-marker), so `[Change of control](#cite-` never shows as raw markup: the words appear\n * once the marker is complete. Complete markers and everything else are left alone.\n */\nexport function trimOpenCitation(markdown: string): string {\n return markdown.replace(OPEN_CITATION_TAIL, '')\n}\n\n/** `**` pairs outside inline code in a line. */\nfunction boldMarks(line: string): number {\n return (line.replace(/`[^`]*`/g, '').match(/\\*\\*/g) ?? []).length\n}\n\n/**\n * Makes the tail of text that is still streaming (or was stopped) render cleanly: a `**` opened\n * in the last line and not yet closed (`| Valuation | **[USD 6.2 million](#cite-2)`) would show as\n * literal asterisks until its closer arrives, because an unclosed emphasis is not emphasis. The\n * open bold is closed at the end of the line, or removed when it has no text yet (`| **`, or a\n * half-typed closer `**USD 6*`). Text with balanced emphasis, and every line but the last, is\n * left alone. Apply after `trimOpenCitation`.\n */\nexport function closeOpenEmphasis(markdown: string): string {\n const cut = markdown.lastIndexOf('\\n') + 1\n const head = markdown.slice(0, cut)\n const fences = head.split('\\n').filter((l) => /^\\s*(```|~~~)/.test(l)).length\n let line = markdown.slice(cut)\n if (fences % 2 === 1 || /^\\s*(```|~~~)/.test(line)) return markdown\n // A half-typed opener: the first `*` of `**` after a space or a cell border.\n line = line.replace(/(^|[\\s|])\\*$/, '$1')\n if (boldMarks(line) % 2 === 0) return head + line\n // A half-typed closer: `**USD 6*` -> the second asterisk has not arrived.\n line = line.replace(/([^*\\s])\\*$/, '$1')\n if (boldMarks(line) % 2 === 0) return head + line\n if (/\\*\\*\\s*$/.test(line)) return head + line.replace(/\\s*\\*\\*\\s*$/, ' ')\n return head + line + '**'\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { diffWords } from "diff";
|
|
2
|
+
function toRedlineMarkdown(original, revised) {
|
|
3
|
+
const parts = diffWords(original ?? "", revised ?? "");
|
|
4
|
+
return parts.map((p) => {
|
|
5
|
+
if (p.added) return `<ins>${p.value}</ins>`;
|
|
6
|
+
if (p.removed) return `<del>${p.value}</del>`;
|
|
7
|
+
return p.value;
|
|
8
|
+
}).join("");
|
|
9
|
+
}
|
|
10
|
+
function redlineStats(original, revised) {
|
|
11
|
+
let added = 0;
|
|
12
|
+
let removed = 0;
|
|
13
|
+
for (const p of diffWords(original ?? "", revised ?? "")) {
|
|
14
|
+
const words = p.value.trim() ? p.value.trim().split(/\s+/).length : 0;
|
|
15
|
+
if (p.added) added += words;
|
|
16
|
+
else if (p.removed) removed += words;
|
|
17
|
+
}
|
|
18
|
+
return { added, removed };
|
|
19
|
+
}
|
|
20
|
+
function textToArtifact(title, content, opts) {
|
|
21
|
+
return {
|
|
22
|
+
type: "arbi.artifact",
|
|
23
|
+
doc_ext_id: opts?.id ?? `local-${title.replace(/\W+/g, "-").toLowerCase()}`,
|
|
24
|
+
title,
|
|
25
|
+
mode: opts?.mode ?? "markdown",
|
|
26
|
+
content,
|
|
27
|
+
// Content-backed (markdown/text/html) artifacts carry no blob; file_type is
|
|
28
|
+
// required on ArtifactEvent and defaults to "" for non-image artifacts.
|
|
29
|
+
file_type: "",
|
|
30
|
+
is_complete: opts?.isComplete ?? true,
|
|
31
|
+
version: opts?.version ?? 1,
|
|
32
|
+
message_ext_id: null,
|
|
33
|
+
t: null
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
redlineStats,
|
|
38
|
+
textToArtifact,
|
|
39
|
+
toRedlineMarkdown
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=redline.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/redline.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Client-side redlining \u2014 turn an original + revised text into track-changes\n * markdown (`<del>` strikethrough deletions, `<ins>` insertions). Rendered by\n * {@link AiMarkdown} (via rehype-raw) and the {@link ArtifactCanvas}.\n */\nimport { diffWords } from 'diff'\nimport type { ArtifactEvent } from '@arbidocs/sdk/browser'\n\n/** Produce inline `<del>/<ins>` redline markdown from two document versions. */\nexport function toRedlineMarkdown(original: string, revised: string): string {\n const parts = diffWords(original ?? '', revised ?? '')\n return parts\n .map((p) => {\n if (p.added) return `<ins>${p.value}</ins>`\n if (p.removed) return `<del>${p.value}</del>`\n return p.value\n })\n .join('')\n}\n\n/** Count added/removed words between two versions (for a redline summary). */\nexport function redlineStats(original: string, revised: string) {\n let added = 0\n let removed = 0\n for (const p of diffWords(original ?? '', revised ?? '')) {\n const words = p.value.trim() ? p.value.trim().split(/\\s+/).length : 0\n if (p.added) added += words\n else if (p.removed) removed += words\n }\n return { added, removed }\n}\n\n/** Wrap arbitrary text/markdown as a synthetic artifact for the canvas. */\nexport function textToArtifact(\n title: string,\n content: string,\n opts?: { mode?: ArtifactEvent['mode']; isComplete?: boolean; version?: number; id?: string }\n): ArtifactEvent {\n return {\n type: 'arbi.artifact',\n doc_ext_id: opts?.id ?? `local-${title.replace(/\\W+/g, '-').toLowerCase()}`,\n title,\n mode: opts?.mode ?? 'markdown',\n content,\n // Content-backed (markdown/text/html) artifacts carry no blob; file_type is\n // required on ArtifactEvent and defaults to \"\" for non-image artifacts.\n file_type: '',\n is_complete: opts?.isComplete ?? true,\n version: opts?.version ?? 1,\n message_ext_id: null,\n t: null,\n }\n}\n"],
|
|
5
|
+
"mappings": "AAKA,SAAS,iBAAiB;AAInB,SAAS,kBAAkB,UAAkB,SAAyB;AAC3E,QAAM,QAAQ,UAAU,YAAY,IAAI,WAAW,EAAE;AACrD,SAAO,MACJ,IAAI,CAAC,MAAM;AACV,QAAI,EAAE,MAAO,QAAO,QAAQ,EAAE,KAAK;AACnC,QAAI,EAAE,QAAS,QAAO,QAAQ,EAAE,KAAK;AACrC,WAAO,EAAE;AAAA,EACX,CAAC,EACA,KAAK,EAAE;AACZ;AAGO,SAAS,aAAa,UAAkB,SAAiB;AAC9D,MAAI,QAAQ;AACZ,MAAI,UAAU;AACd,aAAW,KAAK,UAAU,YAAY,IAAI,WAAW,EAAE,GAAG;AACxD,UAAM,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,KAAK,EAAE,MAAM,KAAK,EAAE,SAAS;AACpE,QAAI,EAAE,MAAO,UAAS;AAAA,aACb,EAAE,QAAS,YAAW;AAAA,EACjC;AACA,SAAO,EAAE,OAAO,QAAQ;AAC1B;AAGO,SAAS,eACd,OACA,SACA,MACe;AACf,SAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY,MAAM,MAAM,SAAS,MAAM,QAAQ,QAAQ,GAAG,EAAE,YAAY,CAAC;AAAA,IACzE;AAAA,IACA,MAAM,MAAM,QAAQ;AAAA,IACpB;AAAA;AAAA;AAAA,IAGA,WAAW;AAAA,IACX,aAAa,MAAM,cAAc;AAAA,IACjC,SAAS,MAAM,WAAW;AAAA,IAC1B,gBAAgB;AAAA,IAChB,GAAG;AAAA,EACL;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const LIST_ITEM_RE = /^\s*([-*+]|\d+[.)])\s/;
|
|
2
|
+
const BLOCKQUOTE_RE = /^\s*>/;
|
|
3
|
+
function splitMarkdownBlocks(content) {
|
|
4
|
+
if (!content) return [];
|
|
5
|
+
const blocks = [];
|
|
6
|
+
let start = 0;
|
|
7
|
+
let inFence = false;
|
|
8
|
+
let i = 0;
|
|
9
|
+
while (i < content.length) {
|
|
10
|
+
if (content.startsWith("```", i)) {
|
|
11
|
+
inFence = !inFence;
|
|
12
|
+
i += 3;
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
if (!inFence && content[i] === "\n" && content[i + 1] === "\n") {
|
|
16
|
+
const before = content.slice(start, i);
|
|
17
|
+
const lastLine = before.slice(before.lastIndexOf("\n") + 1);
|
|
18
|
+
const afterStart = i + 2;
|
|
19
|
+
const nextNewline = content.indexOf("\n", afterStart);
|
|
20
|
+
const nextLine = content.slice(afterStart, nextNewline === -1 ? void 0 : nextNewline);
|
|
21
|
+
const bothListItems = LIST_ITEM_RE.test(lastLine) && LIST_ITEM_RE.test(nextLine);
|
|
22
|
+
const bothBlockquotes = BLOCKQUOTE_RE.test(lastLine) && BLOCKQUOTE_RE.test(nextLine);
|
|
23
|
+
if (bothListItems || bothBlockquotes) {
|
|
24
|
+
i += 2;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
blocks.push(content.slice(start, afterStart));
|
|
28
|
+
start = afterStart;
|
|
29
|
+
i = afterStart;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
i++;
|
|
33
|
+
}
|
|
34
|
+
if (start < content.length) blocks.push(content.slice(start));
|
|
35
|
+
return blocks;
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
splitMarkdownBlocks
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=split-markdown-blocks.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ai/split-markdown-blocks.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Splits a markdown string into top-level blocks at `\\n\\n` boundaries.\n *\n * Streaming AI responses arrive token-by-token; passing the full string to\n * react-markdown re-parses the entire AST on every flush. By splitting into\n * blocks and memoizing each, only the trailing (still-growing) block re-parses\n * \u2014 completed blocks stay frozen in the DOM.\n *\n * The split avoids three correctness pitfalls:\n * - never splits inside an open ``` code fence (would corrupt the language)\n * - never splits between two adjacent list items (would render as two lists)\n * - never splits between two blockquote lines (would render as two quotes)\n */\nconst LIST_ITEM_RE = /^\\s*([-*+]|\\d+[.)])\\s/\nconst BLOCKQUOTE_RE = /^\\s*>/\n\nexport function splitMarkdownBlocks(content: string): string[] {\n if (!content) return []\n const blocks: string[] = []\n let start = 0\n let inFence = false\n let i = 0\n while (i < content.length) {\n if (content.startsWith('```', i)) {\n inFence = !inFence\n i += 3\n continue\n }\n if (!inFence && content[i] === '\\n' && content[i + 1] === '\\n') {\n const before = content.slice(start, i)\n const lastLine = before.slice(before.lastIndexOf('\\n') + 1)\n const afterStart = i + 2\n const nextNewline = content.indexOf('\\n', afterStart)\n const nextLine = content.slice(afterStart, nextNewline === -1 ? undefined : nextNewline)\n const bothListItems = LIST_ITEM_RE.test(lastLine) && LIST_ITEM_RE.test(nextLine)\n const bothBlockquotes = BLOCKQUOTE_RE.test(lastLine) && BLOCKQUOTE_RE.test(nextLine)\n if (bothListItems || bothBlockquotes) {\n i += 2\n continue\n }\n blocks.push(content.slice(start, afterStart))\n start = afterStart\n i = afterStart\n continue\n }\n i++\n }\n if (start < content.length) blocks.push(content.slice(start))\n return blocks\n}\n"],
|
|
5
|
+
"mappings": "AAaA,MAAM,eAAe;AACrB,MAAM,gBAAgB;AAEf,SAAS,oBAAoB,SAA2B;AAC7D,MAAI,CAAC,QAAS,QAAO,CAAC;AACtB,QAAM,SAAmB,CAAC;AAC1B,MAAI,QAAQ;AACZ,MAAI,UAAU;AACd,MAAI,IAAI;AACR,SAAO,IAAI,QAAQ,QAAQ;AACzB,QAAI,QAAQ,WAAW,OAAO,CAAC,GAAG;AAChC,gBAAU,CAAC;AACX,WAAK;AACL;AAAA,IACF;AACA,QAAI,CAAC,WAAW,QAAQ,CAAC,MAAM,QAAQ,QAAQ,IAAI,CAAC,MAAM,MAAM;AAC9D,YAAM,SAAS,QAAQ,MAAM,OAAO,CAAC;AACrC,YAAM,WAAW,OAAO,MAAM,OAAO,YAAY,IAAI,IAAI,CAAC;AAC1D,YAAM,aAAa,IAAI;AACvB,YAAM,cAAc,QAAQ,QAAQ,MAAM,UAAU;AACpD,YAAM,WAAW,QAAQ,MAAM,YAAY,gBAAgB,KAAK,SAAY,WAAW;AACvF,YAAM,gBAAgB,aAAa,KAAK,QAAQ,KAAK,aAAa,KAAK,QAAQ;AAC/E,YAAM,kBAAkB,cAAc,KAAK,QAAQ,KAAK,cAAc,KAAK,QAAQ;AACnF,UAAI,iBAAiB,iBAAiB;AACpC,aAAK;AACL;AAAA,MACF;AACA,aAAO,KAAK,QAAQ,MAAM,OAAO,UAAU,CAAC;AAC5C,cAAQ;AACR,UAAI;AACJ;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,QAAQ,QAAQ,OAAQ,QAAO,KAAK,QAAQ,MAAM,KAAK,CAAC;AAC5D,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|