@athenaintel/react 0.28.1 → 0.30.0
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/README.md +418 -10
- package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.js +124 -0
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
- package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
- package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
- package/dist/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
- package/dist/agent-runtime/src/errors.js.map +1 -0
- package/dist/agent-runtime/src/execute-output.cjs +41 -0
- package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
- package/dist/agent-runtime/src/execute-output.js +41 -0
- package/dist/agent-runtime/src/execute-output.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +10 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +10 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
- package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
- package/dist/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/agent-runtime/src/message-author.js.map +1 -0
- package/dist/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/agent-runtime/src/message-window.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
- package/dist/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
- package/dist/agent-runtime/src/messages.js.map +1 -0
- package/dist/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/agent-runtime/src/model-context.js.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/agent-runtime/src/protocol.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
- package/dist/agent-runtime/src/queue.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +23 -13
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +24 -14
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
- package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
- package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.js +43 -0
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +279 -3
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +279 -3
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/agent-runtime/src/tool-names.cjs +5 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-names.js +5 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
- package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
- package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +8 -2
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +8 -0
- package/dist/assets/AthenaAssetEmbed.js +8 -2
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/AthenaLayout.cjs +97 -31
- package/dist/assets/AthenaLayout.cjs.map +1 -1
- package/dist/assets/AthenaLayout.d.ts +13 -0
- package/dist/assets/AthenaLayout.js +98 -32
- package/dist/assets/AthenaLayout.js.map +1 -1
- package/dist/assets/asset-embed-messages.cjs.map +1 -1
- package/dist/assets/asset-embed-messages.d.ts +6 -0
- package/dist/assets/asset-embed-messages.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +68 -32
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +47 -1
- package/dist/assets/asset-panel-store.js +68 -32
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/assets/use-asset-embed.cjs +29 -8
- package/dist/assets/use-asset-embed.cjs.map +1 -1
- package/dist/assets/use-asset-embed.d.ts +7 -0
- package/dist/assets/use-asset-embed.js +29 -8
- package/dist/assets/use-asset-embed.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +152 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -0
- package/dist/catalog/chat-pickers.d.ts +22 -0
- package/dist/catalog/chat-pickers.js +152 -0
- package/dist/catalog/chat-pickers.js.map +1 -0
- package/dist/catalog/runtime-catalog.cjs +181 -0
- package/dist/catalog/runtime-catalog.cjs.map +1 -0
- package/dist/catalog/runtime-catalog.d.ts +100 -0
- package/dist/catalog/runtime-catalog.js +181 -0
- package/dist/catalog/runtime-catalog.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +86 -46
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +21 -4
- package/dist/chat/AthenaChat.js +88 -48
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +38 -37
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +2 -0
- package/dist/chat/StatewireApprovalCard.js +39 -38
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireClientToolBridge.cjs +2 -2
- package/dist/chat/StatewireClientToolBridge.js +2 -2
- package/dist/chat/StatewireQueuedMessages.cjs +15 -12
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
- package/dist/chat/StatewireQueuedMessages.js +15 -12
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
- package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
- package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
- package/dist/chat/StatewireRunRefusalNotice.js +48 -0
- package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
- package/dist/chat/WaitingOnYouBanner.cjs +2 -2
- package/dist/chat/WaitingOnYouBanner.js +2 -2
- package/dist/chat/athena-citation-links.cjs +19 -15
- package/dist/chat/athena-citation-links.cjs.map +1 -1
- package/dist/chat/athena-citation-links.js +19 -15
- package/dist/chat/athena-citation-links.js.map +1 -1
- package/dist/chat/run-activity.cjs +9 -1
- package/dist/chat/run-activity.cjs.map +1 -1
- package/dist/chat/run-activity.d.ts +6 -0
- package/dist/chat/run-activity.js +10 -2
- package/dist/chat/run-activity.js.map +1 -1
- package/dist/chat/statewire-banners.cjs +30 -1
- package/dist/chat/statewire-banners.cjs.map +1 -1
- package/dist/chat/statewire-banners.d.ts +20 -1
- package/dist/chat/statewire-banners.js +32 -3
- package/dist/chat/statewire-banners.js.map +1 -1
- package/dist/chat/statewire-client-tools.cjs +1 -1
- package/dist/chat/statewire-client-tools.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +7 -5
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +8 -2
- package/dist/chat/super-grouping/SuperGroupingCard.js +7 -5
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +350 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js +350 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
- package/dist/chat/super-grouping/ToolTimeline.js +13 -2
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.cjs +51 -26
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +40 -8
- package/dist/chat/super-grouping/activity-timeline.js +52 -27
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/index.cjs +12 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -1
- package/dist/chat/super-grouping/index.d.ts +7 -2
- package/dist/chat/super-grouping/index.js +14 -2
- package/dist/chat/super-grouping/index.js.map +1 -1
- package/dist/chat/super-grouping/timeline-step.cjs +14 -5
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
- package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
- package/dist/chat/super-grouping/timeline-step.js +15 -6
- package/dist/chat/super-grouping/timeline-step.js.map +1 -1
- package/dist/chat/super-grouping/turn-segments.cjs +82 -0
- package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
- package/dist/chat/super-grouping/turn-segments.js +82 -0
- package/dist/chat/super-grouping/turn-segments.js.map +1 -0
- package/dist/chat/super-grouping/turn-timing.cjs +110 -0
- package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
- package/dist/chat/super-grouping/turn-timing.js +110 -0
- package/dist/chat/super-grouping/turn-timing.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +1 -1
- package/dist/chat/tiptap-text.js +1 -1
- package/dist/chat/use-athena-run-live.cjs +1 -1
- package/dist/chat/use-athena-run-live.js +1 -1
- package/dist/chat/use-statewire-approval-request.cjs +73 -4
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
- package/dist/chat/use-statewire-approval-request.js +74 -5
- package/dist/chat/use-statewire-approval-request.js.map +1 -1
- package/dist/chat-ui/composer/composer-message.cjs +284 -0
- package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-message.d.ts +152 -0
- package/dist/chat-ui/composer/composer-message.js +284 -0
- package/dist/chat-ui/composer/composer-message.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +57 -11
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
- package/dist/chat-ui/composer/tiptap-composer.js +57 -11
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +4 -1
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +5 -2
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +3 -2
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +4 -3
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -2
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -2
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/messages/message-components.cjs +30 -10
- package/dist/chat-ui/messages/message-components.cjs.map +1 -1
- package/dist/chat-ui/messages/message-components.d.ts +21 -1
- package/dist/chat-ui/messages/message-components.js +30 -10
- package/dist/chat-ui/messages/message-components.js.map +1 -1
- package/dist/chat-ui/messages/runtime-message.cjs +1 -1
- package/dist/chat-ui/messages/runtime-message.js +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
- package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
- package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
- package/dist/chat-ui/messages/user-edit-composer.js +1 -1
- package/dist/chat-ui/messages/wake-marker.cjs +39 -4
- package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
- package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
- package/dist/chat-ui/messages/wake-marker.js +40 -5
- package/dist/chat-ui/messages/wake-marker.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
- package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
- package/dist/chat-ui/statewire.cjs +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/statewire.js +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
- package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
- package/dist/collab/client.cjs +218 -13
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +105 -2
- package/dist/collab/client.js +221 -17
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.cjs +2 -0
- package/dist/collab/index.cjs.map +1 -1
- package/dist/collab/index.d.ts +1 -1
- package/dist/collab/index.js +3 -1
- package/dist/composer/AttachmentContext.cjs +38 -12
- package/dist/composer/AttachmentContext.cjs.map +1 -1
- package/dist/composer/AttachmentContext.d.ts +22 -1
- package/dist/composer/AttachmentContext.js +40 -14
- package/dist/composer/AttachmentContext.js.map +1 -1
- package/dist/composer/QuoteContext.cjs +80 -28
- package/dist/composer/QuoteContext.cjs.map +1 -1
- package/dist/composer/QuoteContext.d.ts +35 -6
- package/dist/composer/QuoteContext.js +82 -30
- package/dist/composer/QuoteContext.js.map +1 -1
- package/dist/composer/build-composed-message.cjs +27 -0
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +21 -0
- package/dist/composer/build-composed-message.js +28 -1
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +13 -1
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +12 -0
- package/dist/composer/composer-handoff.js +15 -3
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/index.d.ts +6 -3
- package/dist/composer/useReadComposerDraft.cjs +16 -0
- package/dist/composer/useReadComposerDraft.cjs.map +1 -0
- package/dist/composer/useReadComposerDraft.d.ts +6 -0
- package/dist/composer/useReadComposerDraft.js +16 -0
- package/dist/composer/useReadComposerDraft.js.map +1 -0
- package/dist/diagnostics/errors.cjs +6 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +6 -0
- package/dist/diagnostics/errors.js +6 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +159 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +53 -12
- package/dist/index.js +166 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/owner-document.cjs +32 -0
- package/dist/lib/owner-document.cjs.map +1 -0
- package/dist/lib/owner-document.d.ts +17 -0
- package/dist/lib/owner-document.js +32 -0
- package/dist/lib/owner-document.js.map +1 -0
- package/dist/lib/portal-surface.cjs +55 -0
- package/dist/lib/portal-surface.cjs.map +1 -0
- package/dist/lib/portal-surface.d.ts +37 -0
- package/dist/lib/portal-surface.js +55 -0
- package/dist/lib/portal-surface.js.map +1 -0
- package/dist/lib/use-athena-rest-query.cjs +34 -0
- package/dist/lib/use-athena-rest-query.cjs.map +1 -0
- package/dist/lib/use-athena-rest-query.d.ts +31 -0
- package/dist/lib/use-athena-rest-query.js +34 -0
- package/dist/lib/use-athena-rest-query.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +36 -6
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +20 -1
- package/dist/provider/AthenaProvider.js +38 -8
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/provider/citation-links.d.ts +10 -2
- package/dist/{packages/react → react}/package.json.cjs +1 -1
- package/dist/{packages/react → react}/package.json.js +1 -1
- package/dist/runtime/statewire-lifecycle.cjs +15 -3
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.d.ts +6 -0
- package/dist/runtime/statewire-lifecycle.js +15 -3
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +11 -7
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +11 -7
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaRepoSearch.cjs +5 -13
- package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
- package/dist/search/useAthenaRepoSearch.d.ts +3 -3
- package/dist/search/useAthenaRepoSearch.js +6 -14
- package/dist/search/useAthenaRepoSearch.js.map +1 -1
- package/dist/sheet-range/a1.cjs +162 -0
- package/dist/sheet-range/a1.cjs.map +1 -0
- package/dist/sheet-range/a1.d.ts +91 -0
- package/dist/sheet-range/a1.js +162 -0
- package/dist/sheet-range/a1.js.map +1 -0
- package/dist/sheet-range/index.cjs +22 -0
- package/dist/sheet-range/index.cjs.map +1 -0
- package/dist/sheet-range/index.d.ts +12 -0
- package/dist/sheet-range/index.js +22 -0
- package/dist/sheet-range/index.js.map +1 -0
- package/dist/sheet-range/range-preview-table.cjs +75 -0
- package/dist/sheet-range/range-preview-table.cjs.map +1 -0
- package/dist/sheet-range/range-preview-table.d.ts +20 -0
- package/dist/sheet-range/range-preview-table.js +75 -0
- package/dist/sheet-range/range-preview-table.js.map +1 -0
- package/dist/sheet-range/range-preview.cjs +116 -0
- package/dist/sheet-range/range-preview.cjs.map +1 -0
- package/dist/sheet-range/range-preview.d.ts +67 -0
- package/dist/sheet-range/range-preview.js +116 -0
- package/dist/sheet-range/range-preview.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/threads/Inbox.cjs +289 -0
- package/dist/threads/Inbox.cjs.map +1 -0
- package/dist/threads/Inbox.d.ts +46 -0
- package/dist/threads/Inbox.js +289 -0
- package/dist/threads/Inbox.js.map +1 -0
- package/dist/threads/SessionList.cjs +51 -126
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.d.ts +26 -1
- package/dist/threads/SessionList.js +45 -120
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +753 -0
- package/dist/threads/SessionsPage.cjs.map +1 -0
- package/dist/threads/SessionsPage.d.ts +35 -0
- package/dist/threads/SessionsPage.js +753 -0
- package/dist/threads/SessionsPage.js.map +1 -0
- package/dist/threads/api.cjs +21 -1
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +59 -0
- package/dist/threads/api.js +21 -1
- package/dist/threads/api.js.map +1 -1
- package/dist/threads/conversation-list-fetcher.cjs +9 -2
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
- package/dist/threads/conversation-list-fetcher.d.ts +14 -1
- package/dist/threads/conversation-list-fetcher.js +9 -2
- package/dist/threads/conversation-list-fetcher.js.map +1 -1
- package/dist/threads/index.d.ts +2 -1
- package/dist/threads/pull-request-display.cjs +25 -0
- package/dist/threads/pull-request-display.cjs.map +1 -0
- package/dist/threads/pull-request-display.d.ts +15 -0
- package/dist/threads/pull-request-display.js +25 -0
- package/dist/threads/pull-request-display.js.map +1 -0
- package/dist/threads/session-list-model.cjs +16 -2
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +10 -0
- package/dist/threads/session-list-model.js +16 -2
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +152 -0
- package/dist/threads/session-row-parts.cjs.map +1 -0
- package/dist/threads/session-row-parts.d.ts +50 -0
- package/dist/threads/session-row-parts.js +152 -0
- package/dist/threads/session-row-parts.js.map +1 -0
- package/dist/threads/sessions-page-model.cjs +305 -0
- package/dist/threads/sessions-page-model.cjs.map +1 -0
- package/dist/threads/sessions-page-model.d.ts +86 -0
- package/dist/threads/sessions-page-model.js +305 -0
- package/dist/threads/sessions-page-model.js.map +1 -0
- package/dist/threads/sessions-page-storage.cjs +93 -0
- package/dist/threads/sessions-page-storage.cjs.map +1 -0
- package/dist/threads/sessions-page-storage.d.ts +23 -0
- package/dist/threads/sessions-page-storage.js +93 -0
- package/dist/threads/sessions-page-storage.js.map +1 -0
- package/dist/threads/sessions-query.cjs +235 -0
- package/dist/threads/sessions-query.cjs.map +1 -0
- package/dist/threads/sessions-query.d.ts +119 -0
- package/dist/threads/sessions-query.js +235 -0
- package/dist/threads/sessions-query.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +133 -40
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +83 -2
- package/dist/threads/statewire-thread-list.js +134 -41
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +198 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -0
- package/dist/threads/use-athena-sessions.d.ts +81 -0
- package/dist/threads/use-athena-sessions.js +198 -0
- package/dist/threads/use-athena-sessions.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +1 -1
- package/dist/threads/use-rest-conversation-history.js +1 -1
- package/dist/threads/use-statewire-conversation-history.cjs +1 -1
- package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
- package/dist/threads/use-statewire-conversation-history.js +1 -1
- package/dist/threads/use-thread-read-state.cjs +73 -0
- package/dist/threads/use-thread-read-state.cjs.map +1 -0
- package/dist/threads/use-thread-read-state.d.ts +51 -0
- package/dist/threads/use-thread-read-state.js +73 -0
- package/dist/threads/use-thread-read-state.js.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +2 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.js +2 -0
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/file-tool-uis.cjs +18 -43
- package/dist/tools/file-tool-uis.cjs.map +1 -1
- package/dist/tools/file-tool-uis.d.ts +1 -2
- package/dist/tools/file-tool-uis.js +18 -42
- package/dist/tools/file-tool-uis.js.map +1 -1
- package/dist/tools/index.cjs +6 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +6 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/misc-tool-uis.cjs +2 -2
- package/dist/tools/misc-tool-uis.js +2 -2
- package/dist/tools/primitives.cjs +1 -1
- package/dist/tools/primitives.js +1 -1
- package/dist/tools/read-asset-tool-ui.cjs +21 -70
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
- package/dist/tools/read-asset-tool-ui.js +21 -70
- package/dist/tools/read-asset-tool-ui.js.map +1 -1
- package/dist/tools/step-text.cjs +21 -0
- package/dist/tools/step-text.cjs.map +1 -0
- package/dist/tools/step-text.d.ts +10 -0
- package/dist/tools/step-text.js +21 -0
- package/dist/tools/step-text.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +24 -5
- package/dist/tools/tool-fallback.cjs.map +1 -1
- package/dist/tools/tool-fallback.d.ts +3 -1
- package/dist/tools/tool-fallback.js +24 -5
- package/dist/tools/tool-fallback.js.map +1 -1
- package/dist/tools/tool-summary.cjs +661 -0
- package/dist/tools/tool-summary.cjs.map +1 -0
- package/dist/tools/tool-summary.d.ts +99 -0
- package/dist/tools/tool-summary.js +661 -0
- package/dist/tools/tool-summary.js.map +1 -0
- package/dist/tools/tool-uis.cjs +37 -95
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.js +37 -95
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/tools/voice-update-tool-ui.cjs +1 -1
- package/dist/tools/voice-update-tool-ui.js +1 -1
- package/dist/tools/write-todos-tool-ui.cjs +3 -2
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
- package/dist/tools/write-todos-tool-ui.d.ts +5 -0
- package/dist/tools/write-todos-tool-ui.js +5 -4
- package/dist/tools/write-todos-tool-ui.js.map +1 -1
- package/dist/ui/popover.cjs +6 -6
- package/dist/ui/popover.cjs.map +1 -1
- package/dist/ui/popover.js +6 -6
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/tooltip.cjs +16 -2
- package/dist/ui/tooltip.cjs.map +1 -1
- package/dist/ui/tooltip.d.ts +1 -1
- package/dist/ui/tooltip.js +16 -2
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/use-athena-voice-session.cjs.map +1 -1
- package/dist/voice/use-athena-voice-session.d.ts +3 -3
- package/dist/voice/use-athena-voice-session.js.map +1 -1
- package/dist/workbench/SessionWorkbench.cjs +378 -0
- package/dist/workbench/SessionWorkbench.cjs.map +1 -0
- package/dist/workbench/SessionWorkbench.d.ts +30 -0
- package/dist/workbench/SessionWorkbench.js +378 -0
- package/dist/workbench/SessionWorkbench.js.map +1 -0
- package/dist/workbench/session-workbench-context.cjs +26 -0
- package/dist/workbench/session-workbench-context.cjs.map +1 -0
- package/dist/workbench/session-workbench-context.d.ts +55 -0
- package/dist/workbench/session-workbench-context.js +26 -0
- package/dist/workbench/session-workbench-context.js.map +1 -0
- package/dist/workbench/session-workbench-model.cjs +288 -0
- package/dist/workbench/session-workbench-model.cjs.map +1 -0
- package/dist/workbench/session-workbench-model.d.ts +168 -0
- package/dist/workbench/session-workbench-model.js +288 -0
- package/dist/workbench/session-workbench-model.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +580 -0
- package/dist/workbench/session-workbench-panes.cjs.map +1 -0
- package/dist/workbench/session-workbench-panes.d.ts +16 -0
- package/dist/workbench/session-workbench-panes.js +580 -0
- package/dist/workbench/session-workbench-panes.js.map +1 -0
- package/dist/workbench/session-workspace-api.cjs +157 -0
- package/dist/workbench/session-workspace-api.cjs.map +1 -0
- package/dist/workbench/session-workspace-api.d.ts +70 -0
- package/dist/workbench/session-workspace-api.js +157 -0
- package/dist/workbench/session-workspace-api.js.map +1 -0
- package/dist/workbench/use-session-workspace.cjs +100 -0
- package/dist/workbench/use-session-workspace.cjs.map +1 -0
- package/dist/workbench/use-session-workspace.d.ts +45 -0
- package/dist/workbench/use-session-workspace.js +100 -0
- package/dist/workbench/use-session-workspace.js.map +1 -0
- package/dist/workbench/workbench-layout-context.cjs +10 -0
- package/dist/workbench/workbench-layout-context.cjs.map +1 -0
- package/dist/workbench/workbench-layout-context.d.ts +17 -0
- package/dist/workbench/workbench-layout-context.js +10 -0
- package/dist/workbench/workbench-layout-context.js.map +1 -0
- package/package.json +20 -9
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
- package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/errors.js.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
- package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
- package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/queue.js.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
- /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
- /package/dist/{packages/react → react}/package.json.js.map +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-text-schema.cjs","sources":["../../../src/chat-ui/rich-text/chat-text-schema.tsx"],"sourcesContent":["import { Editor, type Extensions } from \"@tiptap/core\";\nimport { DOMParser as ProseMirrorDOMParser } from \"@tiptap/pm/model\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport { Table, TableCell, TableHeader, TableRow } from \"@tiptap/extension-table\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport { markdownTableStorage } from \"@athenaintel/tiptap-markdown-table\";\nimport { Markdown } from \"tiptap-markdown\";\nimport { getMarkdownStorage } from \"../markdown-storage\";\nimport { MentionExtension } from \"../mentions/mention-extension\";\nimport { ChatCodeBlockNodeView, ChatMentionNodeView } from \"./chat-node-views\";\nimport { isAllowedChatHref, normalizeCitationAnchors } from \"./citation-anchors\";\n\nconst ChatMentionExtension = MentionExtension.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatMentionNodeView, { as: \"span\" }),\n});\n/** Fenced code rendered through `ChatCodeBlock` (language label + copy button). */\nexport const ChatCodeBlockExtension = CodeBlock.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatCodeBlockNodeView),\n});\n\n/**\n * The table node, written to Markdown through the table writer Olympus's\n * editors share (`@athenaintel/tiptap-markdown-table`), which escapes a `|`\n * inside a cell as `\\|`, so a draft's table reaches the message with the cells\n * it was typed with.\n */\nexport const ChatTableExtension = Table.extend({\n addStorage() {\n return { ...this.parent?.(), ...markdownTableStorage() };\n },\n});\n\n/**\n * The Link mark with the excerpt a citation carries (`data-excerpt`, the\n * source chip's tooltip and scroll-to-text target) and an href allow-list\n * narrower than tiptap's default: `http(s):`, `mailto:`, the screen-point\n * protocol and app-relative Spaces paths pass; every other scheme\n * (`javascript:`, `ftp:`, `data:`, protocol-relative `//host`) is dropped and\n * its label kept as text. The same rule governs the composer's autolink.\n */\nexport const ChatLinkExtension = Link.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n excerpt: {\n default: null,\n parseHTML: (element: HTMLElement) => element.getAttribute(\"data-excerpt\"),\n renderHTML: (attributes: Record<string, unknown>) =>\n typeof attributes.excerpt === \"string\" && attributes.excerpt\n ? { \"data-excerpt\": attributes.excerpt }\n : {},\n },\n };\n },\n});\n\n/** Both the editable draft and the static message body use this schema and parser. */\nexport function createChatTextExtensions(): Extensions {\n return [\n StarterKit.configure({\n codeBlock: false,\n // Tiptap 3 StarterKit also bundles these; chat text registers its own link and never had the rest.\n link: false,\n underline: false,\n listKeymap: false,\n trailingNode: false,\n }),\n ChatCodeBlockExtension,\n ChatLinkExtension.configure({\n openOnClick: false,\n autolink: true,\n linkOnPaste: true,\n protocols: [\"athena-point\"],\n isAllowedUri: (url) => isAllowedChatHref(url),\n }),\n Image.configure({ inline: true }),\n ChatTableExtension.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n TaskList,\n TaskItem.configure({ nested: true }),\n Markdown.configure({\n html: true,\n tightLists: true,\n tightListClass: \"tight\",\n bulletListMarker: \"-\",\n linkify: true,\n breaks: true,\n transformPastedText: true,\n transformCopiedText: false,\n }),\n ChatMentionExtension,\n ];\n}\n\nlet parserEditor: Editor | undefined;\n\n/**\n * A single detached parser per browser tab, never an editor per message.\n * Markdown → HTML (markdown-it, with bare URLs linkified and inline HTML kept)\n * → agora's citation anchors given their hrefs → the schema's document.\n */\nexport function parseChatText(markdown: string) {\n parserEditor ??= new Editor({\n extensions: createChatTextExtensions(),\n content: \"\",\n editable: false,\n });\n const html: string = getMarkdownStorage(parserEditor).parser.parse(markdown);\n const body = new window.DOMParser().parseFromString(html, \"text/html\").body;\n normalizeCitationAnchors(body);\n return ProseMirrorDOMParser.fromSchema(parserEditor.schema).parse(body);\n}\n\n/** Typography is shared; the composer supplies only its padding and scroll boundary. */\nexport const CHAT_TEXT_CLASS =\n \"aui-md prose prose-sm max-w-none min-w-0 break-words text-sm leading-snug text-foreground prose-p:my-1.5 prose-p:leading-snug prose-headings:mt-3 prose-headings:mb-1.5 prose-headings:font-semibold prose-h1:text-sm prose-h2:text-sm prose-h3:text-xs prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-blockquote:border-l-2 prose-blockquote:border-border prose-blockquote:text-muted-foreground prose-code:rounded prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:text-xs prose-code:font-mono prose-code:before:content-none prose-code:after:content-none prose-pre:my-2 prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:border prose-pre:border-border prose-pre:bg-muted/30 prose-pre:p-3 prose-a:text-primary prose-a:underline prose-a:decoration-primary/40 prose-a:underline-offset-2 hover:prose-a:decoration-primary prose-strong:font-semibold prose-hr:border-border [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_table]:block [&_table]:overflow-x-auto [&_td]:border [&_td]:border-border [&_td]:px-2 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_ul[data-type=taskList]]:list-none [&_ul[data-type=taskList]]:pl-0 [&_li[data-type=taskItem]]:flex [&_li[data-type=taskItem]]:gap-2\";\n"],"names":["MentionExtension","ReactNodeViewRenderer","ChatMentionNodeView","ChatCodeBlockNodeView","Table","markdownTableStorage","isAllowedChatHref","TableRow","TableCell","TableHeader","Markdown","Editor","getMarkdownStorage","normalizeCitationAnchors","ProseMirrorDOMParser"],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,MAAM,uBAAuBA,iBAAAA,iBAAiB,OAAO;AAAA,EACnD,aAAa,MAAMC,MAAAA,sBAAsBC,cAAAA,qBAAqB,EAAE,IAAI,QAAQ;AAC9E,CAAC;AAEM,MAAM,yBAAyB,UAAU,OAAO;AAAA,EACrD,aAAa,MAAMD,MAAAA,sBAAsBE,cAAAA,qBAAqB;AAChE,CAAC;AAQM,MAAM,qBAAqBC,eAAAA,MAAM,OAAO;AAAA,EAC7C,aAAa;;AACX,WAAO,EAAE,IAAG,UAAK,WAAL,+BAAiB,GAAGC,wBAAAA,uBAAqB;AAAA,EACvD;AACF,CAAC;AAUM,MAAM,oBAAoB,KAAK,OAAO;AAAA,EAC3C,gBAAgB;;AACd,WAAO;AAAA,MACL,IAAG,UAAK,WAAL;AAAA,MACH,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW,CAAC,YAAyB,QAAQ,aAAa,cAAc;AAAA,QACxE,YAAY,CAAC,eACX,OAAO,WAAW,YAAY,YAAY,WAAW,UACjD,EAAE,gBAAgB,WAAW,QAAA,IAC7B,CAAA;AAAA,MAAC;AAAA,IACT;AAAA,EAEJ;AACF,CAAC;AAGM,SAAS,2BAAuC;AACrD,SAAO;AAAA,IACL,WAAW,UAAU;AAAA,MACnB,WAAW;AAAA;AAAA,MAEX,MAAM;AAAA,MACN,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,IAAA,CACf;AAAA,IACD;AAAA,IACA,kBAAkB,UAAU;AAAA,MAC1B,aAAa;AAAA,MACb,UAAU;AAAA,MACV,aAAa;AAAA,MACb,WAAW,CAAC,cAAc;AAAA,MAC1B,cAAc,CAAC,QAAQC,gBAAAA,kBAAkB,GAAG;AAAA,IAAA,CAC7C;AAAA,IACD,MAAM,UAAU,EAAE,QAAQ,MAAM;AAAA,IAChC,mBAAmB,UAAU,EAAE,WAAW,OAAO;AAAA,IACjDC,eAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACA;AAAA,IACA,SAAS,UAAU,EAAE,QAAQ,MAAM;AAAA,IACnCC,eAAAA,SAAS,UAAU;AAAA,MACjB,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,IAAA,CACtB;AAAA,IACD;AAAA,EAAA;AAEJ;AAEA,IAAI;AAOG,SAAS,cAAc,UAAkB;AAC9C,kCAAiB,IAAIC,KAAAA,OAAO;AAAA,IAC1B,YAAY,yBAAA;AAAA,IACZ,SAAS;AAAA,IACT,UAAU;AAAA,EAAA,CACX;AACD,QAAM,OAAeC,gBAAAA,mBAAmB,YAAY,EAAE,OAAO,MAAM,QAAQ;AAC3E,QAAM,OAAO,IAAI,OAAO,UAAA,EAAY,gBAAgB,MAAM,WAAW,EAAE;AACvEC,kBAAAA,yBAAyB,IAAI;AAC7B,SAAOC,MAAAA,UAAqB,WAAW,aAAa,MAAM,EAAE,MAAM,IAAI;AACxE;AAGO,MAAM,kBACX;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"chat-text-schema.cjs","sources":["../../../src/chat-ui/rich-text/chat-text-schema.tsx"],"sourcesContent":["import { Editor, Extension, type Extensions } from \"@tiptap/core\";\nimport { DOMParser as ProseMirrorDOMParser } from \"@tiptap/pm/model\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport { Table, TableCell, TableHeader, TableRow } from \"@tiptap/extension-table\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport { markdownTableStorage } from \"@athenaintel/tiptap-markdown-table\";\nimport { Markdown } from \"tiptap-markdown\";\nimport { getMarkdownStorage } from \"../markdown-storage\";\nimport { MentionExtension } from \"../mentions/mention-extension\";\nimport { ChatCodeBlockNodeView, ChatMentionNodeView } from \"./chat-node-views\";\nimport { isAllowedChatHref, normalizeCitationAnchors } from \"./citation-anchors\";\n\nconst ChatMentionExtension = MentionExtension.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatMentionNodeView, { as: \"span\" }),\n});\n/** Fenced code rendered through `ChatCodeBlock` (language label + copy button). */\nexport const ChatCodeBlockExtension = CodeBlock.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatCodeBlockNodeView),\n});\n\n/**\n * The table node, written to Markdown through the table writer Olympus's\n * editors share (`@athenaintel/tiptap-markdown-table`), which escapes a `|`\n * inside a cell as `\\|`, so a draft's table reaches the message with the cells\n * it was typed with.\n */\nexport const ChatTableExtension = Table.extend({\n addStorage() {\n return { ...this.parent?.(), ...markdownTableStorage() };\n },\n});\n\n/**\n * The Link mark with the excerpt a citation carries (`data-excerpt`, the\n * source chip's tooltip and scroll-to-text target) and an href allow-list\n * narrower than tiptap's default: `http(s):`, `mailto:`, the screen-point\n * protocol and app-relative Spaces paths pass; every other scheme\n * (`javascript:`, `ftp:`, `data:`, protocol-relative `//host`) is dropped and\n * its label kept as text. The same rule governs the composer's autolink.\n */\nexport const ChatLinkExtension = Link.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n excerpt: {\n default: null,\n parseHTML: (element: HTMLElement) => element.getAttribute(\"data-excerpt\"),\n renderHTML: (attributes: Record<string, unknown>) =>\n typeof attributes.excerpt === \"string\" && attributes.excerpt\n ? { \"data-excerpt\": attributes.excerpt }\n : {},\n },\n };\n },\n});\n\n/** Both the editable draft and the static message body use this schema and parser. */\nexport function createChatTextExtensions(): Extensions {\n return [\n StarterKit.configure({\n codeBlock: false,\n // Tiptap 3 StarterKit also bundles these; chat text registers its own link and never had the rest.\n link: false,\n underline: false,\n listKeymap: false,\n trailingNode: false,\n }),\n ChatCodeBlockExtension,\n ChatLinkExtension.configure({\n openOnClick: false,\n autolink: true,\n linkOnPaste: true,\n // No `protocols`: Tiptap's Link registers them with linkifyjs in every\n // editor's onCreate, and linkifyjs accepts a scheme only before its first\n // scan — so each chat body or composer created after the first one logged\n // \"linkifyjs: already initialized\" (seen in Chrome's extension Errors\n // page). Screen points arrive as markdown links (`[label](athena-point://…)`),\n // which parse without linkify, and `isAllowedChatHref` already admits\n // the scheme; only autolinking a bare `athena-point://` string needed it.\n isAllowedUri: (url) => isAllowedChatHref(url),\n }),\n Image.configure({ inline: true }),\n ChatTableExtension.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n TaskList,\n TaskItem.configure({ nested: true }),\n Markdown.configure({\n html: true,\n tightLists: true,\n tightListClass: \"tight\",\n bulletListMarker: \"-\",\n linkify: true,\n breaks: true,\n transformPastedText: true,\n transformCopiedText: false,\n }),\n ChatMentionExtension,\n ];\n}\n\n/** The slice of a markdown-it token {@link TypedTextReading} rewrites. */\ninterface MarkdownToken {\n type: string;\n tag: string;\n nesting: number;\n markup: string;\n content: string;\n children: MarkdownToken[] | null;\n}\n\n/** The slice of markdown-it (the instance tiptap-markdown parses with) {@link TypedTextReading} configures. */\ninterface MarkdownIt {\n disable(rules: string | string[], ignoreInvalid?: boolean): unknown;\n core: {\n ruler: {\n after(\n afterName: string,\n ruleName: string,\n rule: (state: { tokens: MarkdownToken[] }) => void,\n ): void;\n };\n };\n}\n\n/** A line break tag: the one piece of HTML a composer writes, for a line break inside a table cell. */\nconst LINE_BREAK_TAG = /^<br\\s*\\/?>$/i;\n\n/**\n * The inline token a typed reading shows as the characters it was written\n * with. Raw HTML counts only when it is in the text itself (`source`, the\n * inline block's own content): a task list's checkbox is HTML markdown-it's\n * task-list rule makes, not text anyone typed.\n */\nfunction isTypedCharacters(token: MarkdownToken, source: string, inTable: boolean): boolean {\n if (token.type === \"html_inline\") {\n return (\n source.includes(token.content) && !(inTable && LINE_BREAK_TAG.test(token.content.trim()))\n );\n }\n return (\n (token.type === \"em_open\" ||\n token.type === \"em_close\" ||\n token.type === \"strong_open\" ||\n token.type === \"strong_close\") &&\n token.markup.startsWith(\"_\")\n );\n}\n\nconst typedReadingInstalled = new WeakSet<object>();\n\nfunction installTypedTextReading(markdownit: MarkdownIt): void {\n if (typedReadingInstalled.has(markdownit)) return;\n typedReadingInstalled.add(markdownit);\n markdownit.disable(\"html_block\");\n markdownit.core.ruler.after(\"inline\", \"athena_typed_text\", (state) => {\n let tables = 0;\n for (const block of state.tokens) {\n if (block.type === \"table_open\") tables += 1;\n if (block.type === \"table_close\") tables -= 1;\n for (const token of block.children ?? []) {\n if (!isTypedCharacters(token, block.content, tables > 0)) continue;\n if (token.type !== \"html_inline\") token.content = token.markup;\n token.type = \"text\";\n token.tag = \"\";\n token.nesting = 0;\n }\n }\n });\n}\n\n/**\n * How a person's typed text reads in the user bubble: the chat's Markdown,\n * except for the two readings no composer send relies on and plain text often\n * trips. Raw HTML stays the characters it was typed with (`List<T>` keeps its\n * `<T>`, `a <b>c</b>` is not bold): a composer writes a typed `<` as `<`,\n * and its only tag is a `<br>` for a line break inside a table cell, which a\n * table cell still reads as one. Underscore emphasis stays underscores\n * (`obj.__init__` keeps them, `_private_` is not italic): a composer writes\n * emphasis with `*` and escapes a typed `_`. Everything a composer does write\n * (bold, lists, code, links, mention chips, tables, and the escaped Markdown\n * of older sends) reads as the assistant's reading reads it.\n */\nconst TypedTextReading = Extension.create({\n name: \"athenaTypedTextReading\",\n addStorage() {\n return {\n markdown: {\n parse: {\n setup: (markdownit: MarkdownIt) => installTypedTextReading(markdownit),\n },\n },\n };\n },\n});\n\nlet parserEditor: Editor | undefined;\nlet typedParserEditor: Editor | undefined;\n\nfunction parseWith(editor: Editor, markdown: string) {\n const html: string = getMarkdownStorage(editor).parser.parse(markdown);\n const body = new window.DOMParser().parseFromString(html, \"text/html\").body;\n normalizeCitationAnchors(body);\n return ProseMirrorDOMParser.fromSchema(editor.schema).parse(body);\n}\n\n/**\n * A single detached parser per browser tab, never an editor per message.\n * Markdown → HTML (markdown-it, with bare URLs linkified and inline HTML kept)\n * → agora's citation anchors given their hrefs → the schema's document.\n */\nexport function parseChatText(markdown: string) {\n parserEditor ??= new Editor({\n extensions: createChatTextExtensions(),\n content: \"\",\n editable: false,\n });\n return parseWith(parserEditor, markdown);\n}\n\n/**\n * {@link parseChatText} for text a person typed (a user message): the same\n * schema and document, read with {@link TypedTextReading}.\n */\nexport function parseTypedChatText(markdown: string) {\n typedParserEditor ??= new Editor({\n extensions: [...createChatTextExtensions(), TypedTextReading],\n content: \"\",\n editable: false,\n });\n return parseWith(typedParserEditor, markdown);\n}\n\n/** Typography is shared; the composer supplies only its padding and scroll boundary. */\nexport const CHAT_TEXT_CLASS =\n \"aui-md prose prose-sm max-w-none min-w-0 break-words text-sm leading-snug text-foreground prose-p:my-1.5 prose-p:leading-snug prose-headings:mt-3 prose-headings:mb-1.5 prose-headings:font-semibold prose-h1:text-sm prose-h2:text-sm prose-h3:text-xs prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-blockquote:border-l-2 prose-blockquote:border-border prose-blockquote:text-muted-foreground prose-code:rounded prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:text-xs prose-code:font-mono prose-code:before:content-none prose-code:after:content-none prose-pre:my-2 prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:border prose-pre:border-border prose-pre:bg-muted/30 prose-pre:p-3 prose-a:text-primary prose-a:underline prose-a:decoration-primary/40 prose-a:underline-offset-2 hover:prose-a:decoration-primary prose-strong:font-semibold prose-hr:border-border [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_table]:block [&_table]:overflow-x-auto [&_td]:border [&_td]:border-border [&_td]:px-2 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_ul[data-type=taskList]]:list-none [&_ul[data-type=taskList]]:pl-0 [&_li[data-type=taskItem]]:flex [&_li[data-type=taskItem]]:gap-2\";\n"],"names":["MentionExtension","ReactNodeViewRenderer","ChatMentionNodeView","ChatCodeBlockNodeView","Table","markdownTableStorage","isAllowedChatHref","TableRow","TableCell","TableHeader","Markdown","Extension","getMarkdownStorage","normalizeCitationAnchors","ProseMirrorDOMParser","Editor"],"mappings":"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"}
|
|
@@ -25,5 +25,10 @@ export declare function createChatTextExtensions(): Extensions;
|
|
|
25
25
|
* → agora's citation anchors given their hrefs → the schema's document.
|
|
26
26
|
*/
|
|
27
27
|
export declare function parseChatText(markdown: string): import("prosemirror-model").Node;
|
|
28
|
+
/**
|
|
29
|
+
* {@link parseChatText} for text a person typed (a user message): the same
|
|
30
|
+
* schema and document, read with {@link TypedTextReading}.
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseTypedChatText(markdown: string): import("prosemirror-model").Node;
|
|
28
33
|
/** Typography is shared; the composer supplies only its padding and scroll boundary. */
|
|
29
34
|
export declare const CHAT_TEXT_CLASS = "aui-md prose prose-sm max-w-none min-w-0 break-words text-sm leading-snug text-foreground prose-p:my-1.5 prose-p:leading-snug prose-headings:mt-3 prose-headings:mb-1.5 prose-headings:font-semibold prose-h1:text-sm prose-h2:text-sm prose-h3:text-xs prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-blockquote:border-l-2 prose-blockquote:border-border prose-blockquote:text-muted-foreground prose-code:rounded prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:text-xs prose-code:font-mono prose-code:before:content-none prose-code:after:content-none prose-pre:my-2 prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:border prose-pre:border-border prose-pre:bg-muted/30 prose-pre:p-3 prose-a:text-primary prose-a:underline prose-a:decoration-primary/40 prose-a:underline-offset-2 hover:prose-a:decoration-primary prose-strong:font-semibold prose-hr:border-border [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_table]:block [&_table]:overflow-x-auto [&_td]:border [&_td]:border-border [&_td]:px-2 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_ul[data-type=taskList]]:list-none [&_ul[data-type=taskList]]:pl-0 [&_li[data-type=taskItem]]:flex [&_li[data-type=taskItem]]:gap-2";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Editor } from "@tiptap/core";
|
|
1
|
+
import { Editor, Extension } from "@tiptap/core";
|
|
2
2
|
import { DOMParser } from "@tiptap/pm/model";
|
|
3
3
|
import StarterKit from "@tiptap/starter-kit";
|
|
4
4
|
import CodeBlock from "@tiptap/extension-code-block";
|
|
@@ -8,7 +8,7 @@ import Image from "@tiptap/extension-image";
|
|
|
8
8
|
import { TableRow, TableCell, TableHeader, Table } from "@tiptap/extension-table";
|
|
9
9
|
import TaskList from "@tiptap/extension-task-list";
|
|
10
10
|
import TaskItem from "@tiptap/extension-task-item";
|
|
11
|
-
import { markdownTableStorage } from "../../
|
|
11
|
+
import { markdownTableStorage } from "../../tiptap-markdown-table/src/markdown-table-serializer.js";
|
|
12
12
|
import { Markdown } from "tiptap-markdown";
|
|
13
13
|
import { getMarkdownStorage } from "../markdown-storage.js";
|
|
14
14
|
import { MentionExtension } from "../mentions/mention-extension.js";
|
|
@@ -54,7 +54,13 @@ function createChatTextExtensions() {
|
|
|
54
54
|
openOnClick: false,
|
|
55
55
|
autolink: true,
|
|
56
56
|
linkOnPaste: true,
|
|
57
|
-
protocols
|
|
57
|
+
// No `protocols`: Tiptap's Link registers them with linkifyjs in every
|
|
58
|
+
// editor's onCreate, and linkifyjs accepts a scheme only before its first
|
|
59
|
+
// scan — so each chat body or composer created after the first one logged
|
|
60
|
+
// "linkifyjs: already initialized" (seen in Chrome's extension Errors
|
|
61
|
+
// page). Screen points arrive as markdown links (`[label](athena-point://…)`),
|
|
62
|
+
// which parse without linkify, and `isAllowedChatHref` already admits
|
|
63
|
+
// the scheme; only autolinking a bare `athena-point://` string needed it.
|
|
58
64
|
isAllowedUri: (url) => isAllowedChatHref(url)
|
|
59
65
|
}),
|
|
60
66
|
Image.configure({ inline: true }),
|
|
@@ -77,17 +83,68 @@ function createChatTextExtensions() {
|
|
|
77
83
|
ChatMentionExtension
|
|
78
84
|
];
|
|
79
85
|
}
|
|
86
|
+
const LINE_BREAK_TAG = /^<br\s*\/?>$/i;
|
|
87
|
+
function isTypedCharacters(token, source, inTable) {
|
|
88
|
+
if (token.type === "html_inline") {
|
|
89
|
+
return source.includes(token.content) && !(inTable && LINE_BREAK_TAG.test(token.content.trim()));
|
|
90
|
+
}
|
|
91
|
+
return (token.type === "em_open" || token.type === "em_close" || token.type === "strong_open" || token.type === "strong_close") && token.markup.startsWith("_");
|
|
92
|
+
}
|
|
93
|
+
const typedReadingInstalled = /* @__PURE__ */ new WeakSet();
|
|
94
|
+
function installTypedTextReading(markdownit) {
|
|
95
|
+
if (typedReadingInstalled.has(markdownit)) return;
|
|
96
|
+
typedReadingInstalled.add(markdownit);
|
|
97
|
+
markdownit.disable("html_block");
|
|
98
|
+
markdownit.core.ruler.after("inline", "athena_typed_text", (state) => {
|
|
99
|
+
let tables = 0;
|
|
100
|
+
for (const block of state.tokens) {
|
|
101
|
+
if (block.type === "table_open") tables += 1;
|
|
102
|
+
if (block.type === "table_close") tables -= 1;
|
|
103
|
+
for (const token of block.children ?? []) {
|
|
104
|
+
if (!isTypedCharacters(token, block.content, tables > 0)) continue;
|
|
105
|
+
if (token.type !== "html_inline") token.content = token.markup;
|
|
106
|
+
token.type = "text";
|
|
107
|
+
token.tag = "";
|
|
108
|
+
token.nesting = 0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const TypedTextReading = Extension.create({
|
|
114
|
+
name: "athenaTypedTextReading",
|
|
115
|
+
addStorage() {
|
|
116
|
+
return {
|
|
117
|
+
markdown: {
|
|
118
|
+
parse: {
|
|
119
|
+
setup: (markdownit) => installTypedTextReading(markdownit)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
});
|
|
80
125
|
let parserEditor;
|
|
126
|
+
let typedParserEditor;
|
|
127
|
+
function parseWith(editor, markdown) {
|
|
128
|
+
const html = getMarkdownStorage(editor).parser.parse(markdown);
|
|
129
|
+
const body = new window.DOMParser().parseFromString(html, "text/html").body;
|
|
130
|
+
normalizeCitationAnchors(body);
|
|
131
|
+
return DOMParser.fromSchema(editor.schema).parse(body);
|
|
132
|
+
}
|
|
81
133
|
function parseChatText(markdown) {
|
|
82
134
|
parserEditor ?? (parserEditor = new Editor({
|
|
83
135
|
extensions: createChatTextExtensions(),
|
|
84
136
|
content: "",
|
|
85
137
|
editable: false
|
|
86
138
|
}));
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
139
|
+
return parseWith(parserEditor, markdown);
|
|
140
|
+
}
|
|
141
|
+
function parseTypedChatText(markdown) {
|
|
142
|
+
typedParserEditor ?? (typedParserEditor = new Editor({
|
|
143
|
+
extensions: [...createChatTextExtensions(), TypedTextReading],
|
|
144
|
+
content: "",
|
|
145
|
+
editable: false
|
|
146
|
+
}));
|
|
147
|
+
return parseWith(typedParserEditor, markdown);
|
|
91
148
|
}
|
|
92
149
|
const CHAT_TEXT_CLASS = "aui-md prose prose-sm max-w-none min-w-0 break-words text-sm leading-snug text-foreground prose-p:my-1.5 prose-p:leading-snug prose-headings:mt-3 prose-headings:mb-1.5 prose-headings:font-semibold prose-h1:text-sm prose-h2:text-sm prose-h3:text-xs prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-blockquote:border-l-2 prose-blockquote:border-border prose-blockquote:text-muted-foreground prose-code:rounded prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:text-xs prose-code:font-mono prose-code:before:content-none prose-code:after:content-none prose-pre:my-2 prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:border prose-pre:border-border prose-pre:bg-muted/30 prose-pre:p-3 prose-a:text-primary prose-a:underline prose-a:decoration-primary/40 prose-a:underline-offset-2 hover:prose-a:decoration-primary prose-strong:font-semibold prose-hr:border-border [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_table]:block [&_table]:overflow-x-auto [&_td]:border [&_td]:border-border [&_td]:px-2 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_ul[data-type=taskList]]:list-none [&_ul[data-type=taskList]]:pl-0 [&_li[data-type=taskItem]]:flex [&_li[data-type=taskItem]]:gap-2";
|
|
93
150
|
export {
|
|
@@ -96,6 +153,7 @@ export {
|
|
|
96
153
|
ChatLinkExtension,
|
|
97
154
|
ChatTableExtension,
|
|
98
155
|
createChatTextExtensions,
|
|
99
|
-
parseChatText
|
|
156
|
+
parseChatText,
|
|
157
|
+
parseTypedChatText
|
|
100
158
|
};
|
|
101
159
|
//# sourceMappingURL=chat-text-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-text-schema.js","sources":["../../../src/chat-ui/rich-text/chat-text-schema.tsx"],"sourcesContent":["import { Editor, type Extensions } from \"@tiptap/core\";\nimport { DOMParser as ProseMirrorDOMParser } from \"@tiptap/pm/model\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport { Table, TableCell, TableHeader, TableRow } from \"@tiptap/extension-table\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport { markdownTableStorage } from \"@athenaintel/tiptap-markdown-table\";\nimport { Markdown } from \"tiptap-markdown\";\nimport { getMarkdownStorage } from \"../markdown-storage\";\nimport { MentionExtension } from \"../mentions/mention-extension\";\nimport { ChatCodeBlockNodeView, ChatMentionNodeView } from \"./chat-node-views\";\nimport { isAllowedChatHref, normalizeCitationAnchors } from \"./citation-anchors\";\n\nconst ChatMentionExtension = MentionExtension.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatMentionNodeView, { as: \"span\" }),\n});\n/** Fenced code rendered through `ChatCodeBlock` (language label + copy button). */\nexport const ChatCodeBlockExtension = CodeBlock.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatCodeBlockNodeView),\n});\n\n/**\n * The table node, written to Markdown through the table writer Olympus's\n * editors share (`@athenaintel/tiptap-markdown-table`), which escapes a `|`\n * inside a cell as `\\|`, so a draft's table reaches the message with the cells\n * it was typed with.\n */\nexport const ChatTableExtension = Table.extend({\n addStorage() {\n return { ...this.parent?.(), ...markdownTableStorage() };\n },\n});\n\n/**\n * The Link mark with the excerpt a citation carries (`data-excerpt`, the\n * source chip's tooltip and scroll-to-text target) and an href allow-list\n * narrower than tiptap's default: `http(s):`, `mailto:`, the screen-point\n * protocol and app-relative Spaces paths pass; every other scheme\n * (`javascript:`, `ftp:`, `data:`, protocol-relative `//host`) is dropped and\n * its label kept as text. The same rule governs the composer's autolink.\n */\nexport const ChatLinkExtension = Link.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n excerpt: {\n default: null,\n parseHTML: (element: HTMLElement) => element.getAttribute(\"data-excerpt\"),\n renderHTML: (attributes: Record<string, unknown>) =>\n typeof attributes.excerpt === \"string\" && attributes.excerpt\n ? { \"data-excerpt\": attributes.excerpt }\n : {},\n },\n };\n },\n});\n\n/** Both the editable draft and the static message body use this schema and parser. */\nexport function createChatTextExtensions(): Extensions {\n return [\n StarterKit.configure({\n codeBlock: false,\n // Tiptap 3 StarterKit also bundles these; chat text registers its own link and never had the rest.\n link: false,\n underline: false,\n listKeymap: false,\n trailingNode: false,\n }),\n ChatCodeBlockExtension,\n ChatLinkExtension.configure({\n openOnClick: false,\n autolink: true,\n linkOnPaste: true,\n protocols: [\"athena-point\"],\n isAllowedUri: (url) => isAllowedChatHref(url),\n }),\n Image.configure({ inline: true }),\n ChatTableExtension.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n TaskList,\n TaskItem.configure({ nested: true }),\n Markdown.configure({\n html: true,\n tightLists: true,\n tightListClass: \"tight\",\n bulletListMarker: \"-\",\n linkify: true,\n breaks: true,\n transformPastedText: true,\n transformCopiedText: false,\n }),\n ChatMentionExtension,\n ];\n}\n\nlet parserEditor: Editor | undefined;\n\n/**\n * A single detached parser per browser tab, never an editor per message.\n * Markdown → HTML (markdown-it, with bare URLs linkified and inline HTML kept)\n * → agora's citation anchors given their hrefs → the schema's document.\n */\nexport function parseChatText(markdown: string) {\n parserEditor ??= new Editor({\n extensions: createChatTextExtensions(),\n content: \"\",\n editable: false,\n });\n const html: string = getMarkdownStorage(parserEditor).parser.parse(markdown);\n const body = new window.DOMParser().parseFromString(html, \"text/html\").body;\n normalizeCitationAnchors(body);\n return ProseMirrorDOMParser.fromSchema(parserEditor.schema).parse(body);\n}\n\n/** Typography is shared; the composer supplies only its padding and scroll boundary. */\nexport const CHAT_TEXT_CLASS =\n \"aui-md prose prose-sm max-w-none min-w-0 break-words text-sm leading-snug text-foreground prose-p:my-1.5 prose-p:leading-snug prose-headings:mt-3 prose-headings:mb-1.5 prose-headings:font-semibold prose-h1:text-sm prose-h2:text-sm prose-h3:text-xs prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-blockquote:border-l-2 prose-blockquote:border-border prose-blockquote:text-muted-foreground prose-code:rounded prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:text-xs prose-code:font-mono prose-code:before:content-none prose-code:after:content-none prose-pre:my-2 prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:border prose-pre:border-border prose-pre:bg-muted/30 prose-pre:p-3 prose-a:text-primary prose-a:underline prose-a:decoration-primary/40 prose-a:underline-offset-2 hover:prose-a:decoration-primary prose-strong:font-semibold prose-hr:border-border [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_table]:block [&_table]:overflow-x-auto [&_td]:border [&_td]:border-border [&_td]:px-2 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_ul[data-type=taskList]]:list-none [&_ul[data-type=taskList]]:pl-0 [&_li[data-type=taskItem]]:flex [&_li[data-type=taskItem]]:gap-2\";\n"],"names":["ProseMirrorDOMParser"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,uBAAuB,iBAAiB,OAAO;AAAA,EACnD,aAAa,MAAM,sBAAsB,qBAAqB,EAAE,IAAI,QAAQ;AAC9E,CAAC;AAEM,MAAM,yBAAyB,UAAU,OAAO;AAAA,EACrD,aAAa,MAAM,sBAAsB,qBAAqB;AAChE,CAAC;AAQM,MAAM,qBAAqB,MAAM,OAAO;AAAA,EAC7C,aAAa;;AACX,WAAO,EAAE,IAAG,UAAK,WAAL,+BAAiB,GAAG,uBAAqB;AAAA,EACvD;AACF,CAAC;AAUM,MAAM,oBAAoB,KAAK,OAAO;AAAA,EAC3C,gBAAgB;;AACd,WAAO;AAAA,MACL,IAAG,UAAK,WAAL;AAAA,MACH,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW,CAAC,YAAyB,QAAQ,aAAa,cAAc;AAAA,QACxE,YAAY,CAAC,eACX,OAAO,WAAW,YAAY,YAAY,WAAW,UACjD,EAAE,gBAAgB,WAAW,QAAA,IAC7B,CAAA;AAAA,MAAC;AAAA,IACT;AAAA,EAEJ;AACF,CAAC;AAGM,SAAS,2BAAuC;AACrD,SAAO;AAAA,IACL,WAAW,UAAU;AAAA,MACnB,WAAW;AAAA;AAAA,MAEX,MAAM;AAAA,MACN,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,IAAA,CACf;AAAA,IACD;AAAA,IACA,kBAAkB,UAAU;AAAA,MAC1B,aAAa;AAAA,MACb,UAAU;AAAA,MACV,aAAa;AAAA,MACb,WAAW,CAAC,cAAc;AAAA,MAC1B,cAAc,CAAC,QAAQ,kBAAkB,GAAG;AAAA,IAAA,CAC7C;AAAA,IACD,MAAM,UAAU,EAAE,QAAQ,MAAM;AAAA,IAChC,mBAAmB,UAAU,EAAE,WAAW,OAAO;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,UAAU,EAAE,QAAQ,MAAM;AAAA,IACnC,SAAS,UAAU;AAAA,MACjB,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,IAAA,CACtB;AAAA,IACD;AAAA,EAAA;AAEJ;AAEA,IAAI;AAOG,SAAS,cAAc,UAAkB;AAC9C,kCAAiB,IAAI,OAAO;AAAA,IAC1B,YAAY,yBAAA;AAAA,IACZ,SAAS;AAAA,IACT,UAAU;AAAA,EAAA,CACX;AACD,QAAM,OAAe,mBAAmB,YAAY,EAAE,OAAO,MAAM,QAAQ;AAC3E,QAAM,OAAO,IAAI,OAAO,UAAA,EAAY,gBAAgB,MAAM,WAAW,EAAE;AACvE,2BAAyB,IAAI;AAC7B,SAAOA,UAAqB,WAAW,aAAa,MAAM,EAAE,MAAM,IAAI;AACxE;AAGO,MAAM,kBACX;"}
|
|
1
|
+
{"version":3,"file":"chat-text-schema.js","sources":["../../../src/chat-ui/rich-text/chat-text-schema.tsx"],"sourcesContent":["import { Editor, Extension, type Extensions } from \"@tiptap/core\";\nimport { DOMParser as ProseMirrorDOMParser } from \"@tiptap/pm/model\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport { Table, TableCell, TableHeader, TableRow } from \"@tiptap/extension-table\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport { markdownTableStorage } from \"@athenaintel/tiptap-markdown-table\";\nimport { Markdown } from \"tiptap-markdown\";\nimport { getMarkdownStorage } from \"../markdown-storage\";\nimport { MentionExtension } from \"../mentions/mention-extension\";\nimport { ChatCodeBlockNodeView, ChatMentionNodeView } from \"./chat-node-views\";\nimport { isAllowedChatHref, normalizeCitationAnchors } from \"./citation-anchors\";\n\nconst ChatMentionExtension = MentionExtension.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatMentionNodeView, { as: \"span\" }),\n});\n/** Fenced code rendered through `ChatCodeBlock` (language label + copy button). */\nexport const ChatCodeBlockExtension = CodeBlock.extend({\n addNodeView: () => ReactNodeViewRenderer(ChatCodeBlockNodeView),\n});\n\n/**\n * The table node, written to Markdown through the table writer Olympus's\n * editors share (`@athenaintel/tiptap-markdown-table`), which escapes a `|`\n * inside a cell as `\\|`, so a draft's table reaches the message with the cells\n * it was typed with.\n */\nexport const ChatTableExtension = Table.extend({\n addStorage() {\n return { ...this.parent?.(), ...markdownTableStorage() };\n },\n});\n\n/**\n * The Link mark with the excerpt a citation carries (`data-excerpt`, the\n * source chip's tooltip and scroll-to-text target) and an href allow-list\n * narrower than tiptap's default: `http(s):`, `mailto:`, the screen-point\n * protocol and app-relative Spaces paths pass; every other scheme\n * (`javascript:`, `ftp:`, `data:`, protocol-relative `//host`) is dropped and\n * its label kept as text. The same rule governs the composer's autolink.\n */\nexport const ChatLinkExtension = Link.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n excerpt: {\n default: null,\n parseHTML: (element: HTMLElement) => element.getAttribute(\"data-excerpt\"),\n renderHTML: (attributes: Record<string, unknown>) =>\n typeof attributes.excerpt === \"string\" && attributes.excerpt\n ? { \"data-excerpt\": attributes.excerpt }\n : {},\n },\n };\n },\n});\n\n/** Both the editable draft and the static message body use this schema and parser. */\nexport function createChatTextExtensions(): Extensions {\n return [\n StarterKit.configure({\n codeBlock: false,\n // Tiptap 3 StarterKit also bundles these; chat text registers its own link and never had the rest.\n link: false,\n underline: false,\n listKeymap: false,\n trailingNode: false,\n }),\n ChatCodeBlockExtension,\n ChatLinkExtension.configure({\n openOnClick: false,\n autolink: true,\n linkOnPaste: true,\n // No `protocols`: Tiptap's Link registers them with linkifyjs in every\n // editor's onCreate, and linkifyjs accepts a scheme only before its first\n // scan — so each chat body or composer created after the first one logged\n // \"linkifyjs: already initialized\" (seen in Chrome's extension Errors\n // page). Screen points arrive as markdown links (`[label](athena-point://…)`),\n // which parse without linkify, and `isAllowedChatHref` already admits\n // the scheme; only autolinking a bare `athena-point://` string needed it.\n isAllowedUri: (url) => isAllowedChatHref(url),\n }),\n Image.configure({ inline: true }),\n ChatTableExtension.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n TaskList,\n TaskItem.configure({ nested: true }),\n Markdown.configure({\n html: true,\n tightLists: true,\n tightListClass: \"tight\",\n bulletListMarker: \"-\",\n linkify: true,\n breaks: true,\n transformPastedText: true,\n transformCopiedText: false,\n }),\n ChatMentionExtension,\n ];\n}\n\n/** The slice of a markdown-it token {@link TypedTextReading} rewrites. */\ninterface MarkdownToken {\n type: string;\n tag: string;\n nesting: number;\n markup: string;\n content: string;\n children: MarkdownToken[] | null;\n}\n\n/** The slice of markdown-it (the instance tiptap-markdown parses with) {@link TypedTextReading} configures. */\ninterface MarkdownIt {\n disable(rules: string | string[], ignoreInvalid?: boolean): unknown;\n core: {\n ruler: {\n after(\n afterName: string,\n ruleName: string,\n rule: (state: { tokens: MarkdownToken[] }) => void,\n ): void;\n };\n };\n}\n\n/** A line break tag: the one piece of HTML a composer writes, for a line break inside a table cell. */\nconst LINE_BREAK_TAG = /^<br\\s*\\/?>$/i;\n\n/**\n * The inline token a typed reading shows as the characters it was written\n * with. Raw HTML counts only when it is in the text itself (`source`, the\n * inline block's own content): a task list's checkbox is HTML markdown-it's\n * task-list rule makes, not text anyone typed.\n */\nfunction isTypedCharacters(token: MarkdownToken, source: string, inTable: boolean): boolean {\n if (token.type === \"html_inline\") {\n return (\n source.includes(token.content) && !(inTable && LINE_BREAK_TAG.test(token.content.trim()))\n );\n }\n return (\n (token.type === \"em_open\" ||\n token.type === \"em_close\" ||\n token.type === \"strong_open\" ||\n token.type === \"strong_close\") &&\n token.markup.startsWith(\"_\")\n );\n}\n\nconst typedReadingInstalled = new WeakSet<object>();\n\nfunction installTypedTextReading(markdownit: MarkdownIt): void {\n if (typedReadingInstalled.has(markdownit)) return;\n typedReadingInstalled.add(markdownit);\n markdownit.disable(\"html_block\");\n markdownit.core.ruler.after(\"inline\", \"athena_typed_text\", (state) => {\n let tables = 0;\n for (const block of state.tokens) {\n if (block.type === \"table_open\") tables += 1;\n if (block.type === \"table_close\") tables -= 1;\n for (const token of block.children ?? []) {\n if (!isTypedCharacters(token, block.content, tables > 0)) continue;\n if (token.type !== \"html_inline\") token.content = token.markup;\n token.type = \"text\";\n token.tag = \"\";\n token.nesting = 0;\n }\n }\n });\n}\n\n/**\n * How a person's typed text reads in the user bubble: the chat's Markdown,\n * except for the two readings no composer send relies on and plain text often\n * trips. Raw HTML stays the characters it was typed with (`List<T>` keeps its\n * `<T>`, `a <b>c</b>` is not bold): a composer writes a typed `<` as `<`,\n * and its only tag is a `<br>` for a line break inside a table cell, which a\n * table cell still reads as one. Underscore emphasis stays underscores\n * (`obj.__init__` keeps them, `_private_` is not italic): a composer writes\n * emphasis with `*` and escapes a typed `_`. Everything a composer does write\n * (bold, lists, code, links, mention chips, tables, and the escaped Markdown\n * of older sends) reads as the assistant's reading reads it.\n */\nconst TypedTextReading = Extension.create({\n name: \"athenaTypedTextReading\",\n addStorage() {\n return {\n markdown: {\n parse: {\n setup: (markdownit: MarkdownIt) => installTypedTextReading(markdownit),\n },\n },\n };\n },\n});\n\nlet parserEditor: Editor | undefined;\nlet typedParserEditor: Editor | undefined;\n\nfunction parseWith(editor: Editor, markdown: string) {\n const html: string = getMarkdownStorage(editor).parser.parse(markdown);\n const body = new window.DOMParser().parseFromString(html, \"text/html\").body;\n normalizeCitationAnchors(body);\n return ProseMirrorDOMParser.fromSchema(editor.schema).parse(body);\n}\n\n/**\n * A single detached parser per browser tab, never an editor per message.\n * Markdown → HTML (markdown-it, with bare URLs linkified and inline HTML kept)\n * → agora's citation anchors given their hrefs → the schema's document.\n */\nexport function parseChatText(markdown: string) {\n parserEditor ??= new Editor({\n extensions: createChatTextExtensions(),\n content: \"\",\n editable: false,\n });\n return parseWith(parserEditor, markdown);\n}\n\n/**\n * {@link parseChatText} for text a person typed (a user message): the same\n * schema and document, read with {@link TypedTextReading}.\n */\nexport function parseTypedChatText(markdown: string) {\n typedParserEditor ??= new Editor({\n extensions: [...createChatTextExtensions(), TypedTextReading],\n content: \"\",\n editable: false,\n });\n return parseWith(typedParserEditor, markdown);\n}\n\n/** Typography is shared; the composer supplies only its padding and scroll boundary. */\nexport const CHAT_TEXT_CLASS =\n \"aui-md prose prose-sm max-w-none min-w-0 break-words text-sm leading-snug text-foreground prose-p:my-1.5 prose-p:leading-snug prose-headings:mt-3 prose-headings:mb-1.5 prose-headings:font-semibold prose-h1:text-sm prose-h2:text-sm prose-h3:text-xs prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-blockquote:border-l-2 prose-blockquote:border-border prose-blockquote:text-muted-foreground prose-code:rounded prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:text-xs prose-code:font-mono prose-code:before:content-none prose-code:after:content-none prose-pre:my-2 prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:border prose-pre:border-border prose-pre:bg-muted/30 prose-pre:p-3 prose-a:text-primary prose-a:underline prose-a:decoration-primary/40 prose-a:underline-offset-2 hover:prose-a:decoration-primary prose-strong:font-semibold prose-hr:border-border [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_table]:block [&_table]:overflow-x-auto [&_td]:border [&_td]:border-border [&_td]:px-2 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_ul[data-type=taskList]]:list-none [&_ul[data-type=taskList]]:pl-0 [&_li[data-type=taskItem]]:flex [&_li[data-type=taskItem]]:gap-2\";\n"],"names":["ProseMirrorDOMParser"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const runtimeMessage = require("./messages/runtime-message.cjs");
|
|
|
10
10
|
const wakeMarker = require("./messages/wake-marker.cjs");
|
|
11
11
|
const WaitingOnYouBanner = require("../chat/WaitingOnYouBanner.cjs");
|
|
12
12
|
const statewireContinueRun = require("./messages/statewire-continue-run.cjs");
|
|
13
|
-
const interrupts = require("../
|
|
13
|
+
const interrupts = require("../agent-runtime/src/interrupts.cjs");
|
|
14
14
|
exports.StatewireApprovalCard = StatewireApprovalCard.StatewireApprovalCard;
|
|
15
15
|
exports.useStatewireApprovalRequest = useStatewireApprovalRequest.useStatewireApprovalRequest;
|
|
16
16
|
exports.StatewireQueuedMessages = StatewireQueuedMessages.StatewireQueuedMessages;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { StatewireApprovalCard, type StatewireApprovalCardProps, type StatewireApprovalEditorContext, type StatewireApprovalRequestContext, } from "../chat/StatewireApprovalCard";
|
|
12
12
|
export { type StatewireApprovalRequest, type StatewireInterruptPredicate, type UseStatewireApprovalRequestOptions, useStatewireApprovalRequest, } from "../chat/use-statewire-approval-request";
|
|
13
|
-
export { StatewireQueuedMessages, type StatewireQueueEditorContext, type StatewireQueueEvent, type StatewireQueueRowContentContext, type StatewireQueuedMessagesProps, } from "../chat/StatewireQueuedMessages";
|
|
13
|
+
export { StatewireQueuedMessages, type StatewireQueueEditorContext, type StatewireQueueEvent, type StatewireQueueRowContentContext, type StatewireQueueRowMarkerContext, type StatewireQueuedMessagesProps, } from "../chat/StatewireQueuedMessages";
|
|
14
14
|
export { HistoryEdgeRow, type HistoryEdgeRowProps, StatewireHistoryEdge, type StatewireHistoryEdgeProps, } from "./thread/statewire-history-edge";
|
|
15
15
|
export { StatewireToolOutputsContext, useStatewireToolOutputs, } from "../provider/statewire-window-context";
|
|
16
16
|
export { ContinuePill } from "./messages/continue-pill";
|
|
@@ -8,7 +8,7 @@ import { RuntimeMessageCard } from "./messages/runtime-message.js";
|
|
|
8
8
|
import { WakeMarkerCard, WakeMarkerMessage } from "./messages/wake-marker.js";
|
|
9
9
|
import { WaitingOnYouBanner, WaitingOnYouBannerView } from "../chat/WaitingOnYouBanner.js";
|
|
10
10
|
import { StatewireContinueRunAffordance, StatewireContinueRunButton, StatewireRunEndedFooter } from "./messages/statewire-continue-run.js";
|
|
11
|
-
import { HITL_PENDING_RESUME_GRACE_MS } from "../
|
|
11
|
+
import { HITL_PENDING_RESUME_GRACE_MS } from "../agent-runtime/src/interrupts.js";
|
|
12
12
|
export {
|
|
13
13
|
ContinuePill,
|
|
14
14
|
HITL_PENDING_RESUME_GRACE_MS,
|
|
@@ -4,8 +4,8 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const react = require("@assistant-ui/react");
|
|
5
5
|
const react$1 = require("react");
|
|
6
6
|
const statewireWindowContext = require("../../provider/statewire-window-context.cjs");
|
|
7
|
-
const useDeepAgentWindowSync = require("../../
|
|
8
|
-
const errors = require("../../
|
|
7
|
+
const useDeepAgentWindowSync = require("../../agent-runtime/src/use-deep-agent-window-sync.cjs");
|
|
8
|
+
const errors = require("../../agent-runtime/src/errors.cjs");
|
|
9
9
|
const cnfast = require("cnfast");
|
|
10
10
|
const THREAD_VIEWPORT_ATTR = "data-aui-thread-viewport";
|
|
11
11
|
const HISTORY_EDGE_NEAR_MARGIN_PX = 1500;
|
|
@@ -2,8 +2,8 @@ import { jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useAuiState } from "@assistant-ui/react";
|
|
3
3
|
import { useState, useRef, useEffect, useLayoutEffect } from "react";
|
|
4
4
|
import { useStatewireToolOutputs } from "../../provider/statewire-window-context.js";
|
|
5
|
-
import { useDeepAgentWindowSync } from "../../
|
|
6
|
-
import { isStatewireChannelTeardown } from "../../
|
|
5
|
+
import { useDeepAgentWindowSync } from "../../agent-runtime/src/use-deep-agent-window-sync.js";
|
|
6
|
+
import { isStatewireChannelTeardown } from "../../agent-runtime/src/errors.js";
|
|
7
7
|
import { cn } from "cnfast";
|
|
8
8
|
const THREAD_VIEWPORT_ATTR = "data-aui-thread-viewport";
|
|
9
9
|
const HISTORY_EDGE_NEAR_MARGIN_PX = 1500;
|
package/dist/collab/client.cjs
CHANGED
|
@@ -22,12 +22,33 @@ function _interopNamespaceDefault(e) {
|
|
|
22
22
|
return Object.freeze(n);
|
|
23
23
|
}
|
|
24
24
|
const Y__namespace = /* @__PURE__ */ _interopNamespaceDefault(Y);
|
|
25
|
+
const DEFAULT_OFFLINE_GATE_AFTER_MS = 15e3;
|
|
26
|
+
const MINT_RETRY_DELAYS_MS = [1e3, 2e3, 4e3, 8e3, 15e3, 3e4, 6e4];
|
|
27
|
+
function isRetryableMintError(error) {
|
|
28
|
+
if (error instanceof mint.CollabTokenError) {
|
|
29
|
+
return error.status >= 500 || error.status === 408 || error.status === 429;
|
|
30
|
+
}
|
|
31
|
+
return error instanceof TypeError || error instanceof DOMException && error.name === "TimeoutError";
|
|
32
|
+
}
|
|
33
|
+
function resolveMint({ auth, mint: mint$1 }) {
|
|
34
|
+
if (mint$1) return mint$1;
|
|
35
|
+
if (!auth) throw new Error("connectGenericDoc needs `auth` or `mint`");
|
|
36
|
+
return ({ assetId, access }) => mint.mintCollabToken({ auth, assetId, access });
|
|
37
|
+
}
|
|
25
38
|
function connectGenericDoc(args) {
|
|
26
39
|
const access = args.access ?? "view";
|
|
40
|
+
const mint2 = resolveMint({ auth: args.auth, mint: args.mint });
|
|
41
|
+
const localCopy = args.localCopy;
|
|
42
|
+
const retryMintError = args.retryMintError ?? isRetryableMintError;
|
|
43
|
+
const offlineGateAfterMs = args.offlineGateAfterMs ?? DEFAULT_OFFLINE_GATE_AFTER_MS;
|
|
27
44
|
const doc = new Y__namespace.Doc();
|
|
28
45
|
const listeners = /* @__PURE__ */ new Set();
|
|
29
46
|
let provider = null;
|
|
30
47
|
let refreshTimer = null;
|
|
48
|
+
let retryTimer = null;
|
|
49
|
+
let offlineTimer = null;
|
|
50
|
+
let openingPastThreshold = null;
|
|
51
|
+
let mintRetries = 0;
|
|
31
52
|
let destroyed = false;
|
|
32
53
|
let status = "connecting";
|
|
33
54
|
let synced = false;
|
|
@@ -36,14 +57,62 @@ function connectGenericDoc(args) {
|
|
|
36
57
|
let lastPresence = null;
|
|
37
58
|
let version = 0;
|
|
38
59
|
let consecutiveRemints = 0;
|
|
60
|
+
let prepared = localCopy === void 0;
|
|
61
|
+
let held = false;
|
|
62
|
+
let heldGrant = null;
|
|
63
|
+
let everConnected = false;
|
|
64
|
+
let disconnectedSince = null;
|
|
65
|
+
let connectSeq = 0;
|
|
66
|
+
let carriedUpdates = [];
|
|
67
|
+
let localChangesSynced = true;
|
|
39
68
|
const notify = () => {
|
|
40
69
|
version += 1;
|
|
41
70
|
for (const listener of listeners) listener();
|
|
42
71
|
};
|
|
72
|
+
const unconfirmedEdits = () => {
|
|
73
|
+
const all = [...carriedUpdates, ...(provider == null ? void 0 : provider.unconfirmedUpdates) ?? []].map(
|
|
74
|
+
(entry) => entry.ids
|
|
75
|
+
);
|
|
76
|
+
if (all.length === 0) return null;
|
|
77
|
+
return all.length === 1 ? all[0] : Y__namespace.mergeContentIds(all);
|
|
78
|
+
};
|
|
79
|
+
const transport = {
|
|
80
|
+
isRemoteOrigin: (origin) => origin instanceof websocket.WebsocketProvider,
|
|
81
|
+
getUnconfirmed: unconfirmedEdits,
|
|
82
|
+
isFullySynced: () => status === "connected" && synced && localChangesSynced
|
|
83
|
+
};
|
|
84
|
+
const transportChanged = () => {
|
|
85
|
+
localCopy == null ? void 0 : localCopy.transportChanged();
|
|
86
|
+
};
|
|
87
|
+
const refreshLocalChangesSynced = () => {
|
|
88
|
+
const next = carriedUpdates.length === 0 && ((provider == null ? void 0 : provider.unconfirmedUpdates.length) ?? 0) === 0;
|
|
89
|
+
if (next !== localChangesSynced) {
|
|
90
|
+
localChangesSynced = next;
|
|
91
|
+
notify();
|
|
92
|
+
}
|
|
93
|
+
transportChanged();
|
|
94
|
+
};
|
|
95
|
+
doc.on("update", (update, origin) => {
|
|
96
|
+
if (!prepared || provider !== null || destroyed || origin instanceof websocket.WebsocketProvider) return;
|
|
97
|
+
carriedUpdates = [
|
|
98
|
+
...carriedUpdates,
|
|
99
|
+
{ created: Date.now(), ids: Y__namespace.createContentIdsFromUpdate(update) }
|
|
100
|
+
];
|
|
101
|
+
refreshLocalChangesSynced();
|
|
102
|
+
});
|
|
43
103
|
const setStatus = (next, err = null) => {
|
|
44
104
|
if (destroyed && next !== "closed") return;
|
|
105
|
+
const wasConnected = status === "connected";
|
|
45
106
|
status = next;
|
|
46
107
|
error = err;
|
|
108
|
+
if (next === "connected") {
|
|
109
|
+
everConnected = true;
|
|
110
|
+
disconnectedSince = null;
|
|
111
|
+
clearOfflineTimer();
|
|
112
|
+
} else if (wasConnected || everConnected && disconnectedSince === null) {
|
|
113
|
+
disconnectedSince = Date.now();
|
|
114
|
+
}
|
|
115
|
+
transportChanged();
|
|
47
116
|
notify();
|
|
48
117
|
};
|
|
49
118
|
const clearRefreshTimer = () => {
|
|
@@ -52,6 +121,18 @@ function connectGenericDoc(args) {
|
|
|
52
121
|
refreshTimer = null;
|
|
53
122
|
}
|
|
54
123
|
};
|
|
124
|
+
const clearRetryTimer = () => {
|
|
125
|
+
if (retryTimer !== null) {
|
|
126
|
+
clearTimeout(retryTimer);
|
|
127
|
+
retryTimer = null;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
function clearOfflineTimer() {
|
|
131
|
+
if (offlineTimer !== null) {
|
|
132
|
+
clearTimeout(offlineTimer);
|
|
133
|
+
offlineTimer = null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
55
136
|
const teardownProvider = () => {
|
|
56
137
|
clearRefreshTimer();
|
|
57
138
|
if (synced) {
|
|
@@ -59,6 +140,7 @@ function connectGenericDoc(args) {
|
|
|
59
140
|
notify();
|
|
60
141
|
}
|
|
61
142
|
if (provider) {
|
|
143
|
+
carriedUpdates = [...carriedUpdates, ...provider.unconfirmedUpdates];
|
|
62
144
|
provider.destroy();
|
|
63
145
|
provider = null;
|
|
64
146
|
}
|
|
@@ -70,32 +152,105 @@ function connectGenericDoc(args) {
|
|
|
70
152
|
void connect({ scheduledRefresh: true });
|
|
71
153
|
}, delay);
|
|
72
154
|
};
|
|
155
|
+
const scheduleRetry = () => {
|
|
156
|
+
clearRetryTimer();
|
|
157
|
+
const delay = MINT_RETRY_DELAYS_MS[Math.min(mintRetries, MINT_RETRY_DELAYS_MS.length - 1)];
|
|
158
|
+
mintRetries += 1;
|
|
159
|
+
retryTimer = setTimeout(() => {
|
|
160
|
+
retryTimer = null;
|
|
161
|
+
void connect();
|
|
162
|
+
}, delay);
|
|
163
|
+
};
|
|
164
|
+
const onBrowserOnline = () => {
|
|
165
|
+
if (destroyed || status === "closed" || status === "error" || provider !== null || held) return;
|
|
166
|
+
mintRetries = 0;
|
|
167
|
+
clearRetryTimer();
|
|
168
|
+
void connect();
|
|
169
|
+
};
|
|
170
|
+
if (typeof window !== "undefined") window.addEventListener("online", onBrowserOnline);
|
|
171
|
+
const armOfflineTakeover = () => {
|
|
172
|
+
if (offlineTimer !== null || !(localCopy == null ? void 0 : localCopy.beforeConnect)) return;
|
|
173
|
+
offlineTimer = setTimeout(() => {
|
|
174
|
+
offlineTimer = null;
|
|
175
|
+
if (destroyed || status === "connected" || provider === null) return;
|
|
176
|
+
if (provider.wsconnecting && !hasUnsyncedLocalEdits()) {
|
|
177
|
+
openingPastThreshold = provider;
|
|
178
|
+
armOfflineTakeover();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
teardownProvider();
|
|
182
|
+
void connect();
|
|
183
|
+
}, offlineGateAfterMs);
|
|
184
|
+
};
|
|
185
|
+
const hasUnsyncedLocalEdits = () => carriedUpdates.length > 0 || ((provider == null ? void 0 : provider.unconfirmedUpdates.length) ?? 0) > 0;
|
|
73
186
|
const connect = async (opts) => {
|
|
74
187
|
if (destroyed) return;
|
|
75
|
-
|
|
188
|
+
await preparing;
|
|
189
|
+
if (destroyed) return;
|
|
190
|
+
const seq = ++connectSeq;
|
|
191
|
+
const scheduledRefresh = (opts == null ? void 0 : opts.scheduledRefresh) === true && status === "connected";
|
|
76
192
|
if (!scheduledRefresh) {
|
|
77
193
|
teardownProvider();
|
|
78
194
|
} else {
|
|
79
195
|
clearRefreshTimer();
|
|
80
196
|
}
|
|
197
|
+
clearRetryTimer();
|
|
81
198
|
let grant;
|
|
82
|
-
|
|
83
|
-
grant =
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
199
|
+
if ((opts == null ? void 0 : opts.grant) && opts.grant.expires_at_ms - Date.now() > tokenRefresh.MIN_REFRESH_DELAY_MS) {
|
|
200
|
+
grant = opts.grant;
|
|
201
|
+
} else {
|
|
202
|
+
try {
|
|
203
|
+
grant = await mint2({ assetId: args.assetId, access });
|
|
204
|
+
} catch (err) {
|
|
205
|
+
if (destroyed || seq !== connectSeq) return;
|
|
206
|
+
if (scheduledRefresh) {
|
|
207
|
+
refreshTimer = setTimeout(() => {
|
|
208
|
+
void connect({ scheduledRefresh: true });
|
|
209
|
+
}, tokenRefresh.MIN_REFRESH_DELAY_MS);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (retryMintError(err)) {
|
|
213
|
+
if (status !== "disconnected") setStatus("disconnected");
|
|
214
|
+
scheduleRetry();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
setStatus("error", err instanceof Error ? err : new Error(String(err)));
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (destroyed || seq !== connectSeq) return;
|
|
222
|
+
mintRetries = 0;
|
|
223
|
+
accessType = grant.access_type;
|
|
224
|
+
const beforeConnect = localCopy == null ? void 0 : localCopy.beforeConnect;
|
|
225
|
+
if (beforeConnect && !scheduledRefresh && !(opts == null ? void 0 : opts.skipGate)) {
|
|
226
|
+
const firstConnection = !everConnected;
|
|
227
|
+
const offlineForMs = disconnectedSince === null ? null : Date.now() - disconnectedSince;
|
|
228
|
+
let decision;
|
|
229
|
+
try {
|
|
230
|
+
decision = await beforeConnect({
|
|
231
|
+
grant,
|
|
232
|
+
firstConnection,
|
|
233
|
+
offlineForMs,
|
|
234
|
+
hasUnsyncedEdits: hasUnsyncedLocalEdits()
|
|
235
|
+
});
|
|
236
|
+
} catch {
|
|
237
|
+
if (destroyed || seq !== connectSeq) return;
|
|
238
|
+
if (status !== "disconnected") setStatus("disconnected");
|
|
239
|
+
scheduleRetry();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (destroyed || seq !== connectSeq) return;
|
|
243
|
+
if (decision === "hold") {
|
|
244
|
+
held = true;
|
|
245
|
+
heldGrant = grant;
|
|
246
|
+
if (status !== "disconnected") setStatus("disconnected");
|
|
247
|
+
else notify();
|
|
89
248
|
return;
|
|
90
249
|
}
|
|
91
|
-
setStatus("error", err instanceof Error ? err : new Error(String(err)));
|
|
92
|
-
return;
|
|
93
250
|
}
|
|
94
|
-
if (destroyed) return;
|
|
95
251
|
if (scheduledRefresh) {
|
|
96
252
|
teardownProvider();
|
|
97
253
|
}
|
|
98
|
-
accessType = grant.access_type;
|
|
99
254
|
const nextProvider = new websocket.WebsocketProvider(grant.ws_url, `${grant.org}/${grant.doc_id}`, doc, {
|
|
100
255
|
params: {
|
|
101
256
|
yauth: grant.token,
|
|
@@ -108,8 +263,20 @@ function connectGenericDoc(args) {
|
|
|
108
263
|
disableBc: true
|
|
109
264
|
});
|
|
110
265
|
provider = nextProvider;
|
|
266
|
+
nextProvider.unconfirmedUpdates = [...carriedUpdates, ...nextProvider.unconfirmedUpdates];
|
|
267
|
+
carriedUpdates = [];
|
|
268
|
+
refreshLocalChangesSynced();
|
|
269
|
+
nextProvider.on("sync-status", () => {
|
|
270
|
+
if (provider !== nextProvider) return;
|
|
271
|
+
refreshLocalChangesSynced();
|
|
272
|
+
});
|
|
111
273
|
nextProvider.on("status", (event) => {
|
|
112
274
|
if (provider !== nextProvider) return;
|
|
275
|
+
if (event.status === "connected" && openingPastThreshold === nextProvider && hasUnsyncedLocalEdits()) {
|
|
276
|
+
teardownProvider();
|
|
277
|
+
void connect();
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
113
280
|
if (event.status === "connected") {
|
|
114
281
|
consecutiveRemints = 0;
|
|
115
282
|
}
|
|
@@ -117,11 +284,14 @@ function connectGenericDoc(args) {
|
|
|
117
284
|
if (event.status === "connected" && lastPresence !== null) {
|
|
118
285
|
nextProvider.awareness.setLocalState(lastPresence);
|
|
119
286
|
}
|
|
287
|
+
if (event.status !== "connected") armOfflineTakeover();
|
|
120
288
|
});
|
|
289
|
+
if (!nextProvider.wsconnected) armOfflineTakeover();
|
|
121
290
|
nextProvider.on("sync", (state) => {
|
|
122
291
|
if (provider !== nextProvider) return;
|
|
123
292
|
if (synced !== state) {
|
|
124
293
|
synced = state;
|
|
294
|
+
transportChanged();
|
|
125
295
|
notify();
|
|
126
296
|
}
|
|
127
297
|
});
|
|
@@ -153,6 +323,15 @@ function connectGenericDoc(args) {
|
|
|
153
323
|
});
|
|
154
324
|
scheduleRefresh(grant);
|
|
155
325
|
};
|
|
326
|
+
const preparing = localCopy ? localCopy.prepare({ doc, transport }).catch(() => ({ unsyncedEdits: null })).then(({ unsyncedEdits }) => {
|
|
327
|
+
if (destroyed) return;
|
|
328
|
+
if (unsyncedEdits && !(unsyncedEdits.inserts.isEmpty() && unsyncedEdits.deletes.isEmpty())) {
|
|
329
|
+
carriedUpdates = [...carriedUpdates, { created: Date.now(), ids: unsyncedEdits }];
|
|
330
|
+
}
|
|
331
|
+
prepared = true;
|
|
332
|
+
refreshLocalChangesSynced();
|
|
333
|
+
notify();
|
|
334
|
+
}) : Promise.resolve();
|
|
156
335
|
void connect();
|
|
157
336
|
const waitForSync = (timeoutMs = 15e3) => new Promise((resolve, reject) => {
|
|
158
337
|
const terminal = () => {
|
|
@@ -201,12 +380,21 @@ function connectGenericDoc(args) {
|
|
|
201
380
|
get synced() {
|
|
202
381
|
return synced;
|
|
203
382
|
},
|
|
383
|
+
get localChangesSynced() {
|
|
384
|
+
return localChangesSynced;
|
|
385
|
+
},
|
|
204
386
|
get accessType() {
|
|
205
387
|
return accessType;
|
|
206
388
|
},
|
|
207
389
|
get error() {
|
|
208
390
|
return error;
|
|
209
391
|
},
|
|
392
|
+
get prepared() {
|
|
393
|
+
return prepared;
|
|
394
|
+
},
|
|
395
|
+
get held() {
|
|
396
|
+
return held;
|
|
397
|
+
},
|
|
210
398
|
get version() {
|
|
211
399
|
return version;
|
|
212
400
|
},
|
|
@@ -223,7 +411,19 @@ function connectGenericDoc(args) {
|
|
|
223
411
|
lastPresence = state;
|
|
224
412
|
provider == null ? void 0 : provider.awareness.setLocalState(state);
|
|
225
413
|
},
|
|
226
|
-
refreshNow: () =>
|
|
414
|
+
refreshNow: () => {
|
|
415
|
+
if (held) return Promise.resolve();
|
|
416
|
+
return provider ? connect({ scheduledRefresh: true }) : connect();
|
|
417
|
+
},
|
|
418
|
+
resume: () => {
|
|
419
|
+
if (!held || destroyed) return;
|
|
420
|
+
held = false;
|
|
421
|
+
const grant = heldGrant;
|
|
422
|
+
heldGrant = null;
|
|
423
|
+
notify();
|
|
424
|
+
void connect({ skipGate: true, grant: grant ?? void 0 });
|
|
425
|
+
},
|
|
426
|
+
unconfirmedEdits,
|
|
227
427
|
onChange: (listener) => {
|
|
228
428
|
listeners.add(listener);
|
|
229
429
|
return () => {
|
|
@@ -234,6 +434,9 @@ function connectGenericDoc(args) {
|
|
|
234
434
|
if (destroyed) return;
|
|
235
435
|
destroyed = true;
|
|
236
436
|
teardownProvider();
|
|
437
|
+
clearRetryTimer();
|
|
438
|
+
clearOfflineTimer();
|
|
439
|
+
if (typeof window !== "undefined") window.removeEventListener("online", onBrowserOnline);
|
|
237
440
|
status = "closed";
|
|
238
441
|
for (const listener of [...listeners]) listener();
|
|
239
442
|
listeners.clear();
|
|
@@ -242,5 +445,7 @@ function connectGenericDoc(args) {
|
|
|
242
445
|
};
|
|
243
446
|
}
|
|
244
447
|
exports.CollabTokenError = mint.CollabTokenError;
|
|
448
|
+
exports.DEFAULT_OFFLINE_GATE_AFTER_MS = DEFAULT_OFFLINE_GATE_AFTER_MS;
|
|
245
449
|
exports.connectGenericDoc = connectGenericDoc;
|
|
450
|
+
exports.isRetryableMintError = isRetryableMintError;
|
|
246
451
|
//# sourceMappingURL=client.cjs.map
|