@athenaintel/react 0.28.1 → 0.32.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 +479 -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/athena-asset-drag.cjs +44 -0
- package/dist/agent-runtime/src/athena-asset-drag.cjs.map +1 -0
- package/dist/agent-runtime/src/athena-asset-drag.js +44 -0
- package/dist/agent-runtime/src/athena-asset-drag.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/config-mutations.cjs +59 -0
- package/dist/agent-runtime/src/config-mutations.cjs.map +1 -0
- package/dist/agent-runtime/src/config-mutations.js +59 -0
- package/dist/agent-runtime/src/config-mutations.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 +16 -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 +16 -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 +71 -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 +73 -15
- 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 +304 -9
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +304 -9
- 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 +129 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js +129 -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 +13 -2
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +10 -0
- package/dist/assets/AthenaAssetEmbed.js +14 -3
- 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 +6 -0
- package/dist/assets/asset-embed-messages.cjs.map +1 -1
- package/dist/assets/asset-embed-messages.d.ts +13 -0
- package/dist/assets/asset-embed-messages.js +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 +122 -67
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +21 -4
- package/dist/chat/AthenaChat.js +124 -69
- 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 +38 -16
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +21 -4
- package/dist/chat/super-grouping/SuperGroupingCard.js +39 -17
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +377 -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 +377 -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 +69 -29
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +60 -9
- package/dist/chat/super-grouping/activity-timeline.js +70 -30
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/index.cjs +14 -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 +16 -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/toolkit-map.cjs +1 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -1
- package/dist/chat/super-grouping/toolkit-map.js +1 -0
- package/dist/chat/super-grouping/toolkit-map.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 +97 -15
- 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 +97 -15
- 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 +31 -3
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.d.ts +2 -5
- package/dist/chat-ui/mentions/mention-chip.js +33 -5
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +9 -3
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +9 -3
- 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/mentions/use-account-workspace-id.cjs +61 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +3 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.js +61 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -0
- package/dist/chat-ui/mentions/use-member-avatar.cjs +75 -0
- package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-member-avatar.d.ts +2 -0
- package/dist/chat-ui/mentions/use-member-avatar.js +75 -0
- package/dist/chat-ui/mentions/use-member-avatar.js.map +1 -0
- 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 +282 -16
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +127 -2
- package/dist/collab/client.js +285 -20
- 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/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +3 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- 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 +163 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +55 -12
- package/dist/index.js +170 -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 +70 -10
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +27 -2
- package/dist/provider/AthenaProvider.js +74 -14
- 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/StatewireModelLaneSync.cjs +96 -0
- package/dist/runtime/StatewireModelLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewireModelLaneSync.d.ts +45 -0
- package/dist/runtime/StatewireModelLaneSync.js +96 -0
- package/dist/runtime/StatewireModelLaneSync.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +20 -5
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.d.ts +11 -0
- package/dist/runtime/statewire-lifecycle.js +20 -5
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/statewire-model-lane.cjs +28 -0
- package/dist/runtime/statewire-model-lane.cjs.map +1 -0
- package/dist/runtime/statewire-model-lane.d.ts +64 -0
- package/dist/runtime/statewire-model-lane.js +28 -0
- package/dist/runtime/statewire-model-lane.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +16 -2
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +10 -0
- package/dist/runtime/statewire-run-config.js +16 -2
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-server-lane-context.cjs +24 -0
- package/dist/runtime/statewire-server-lane-context.cjs.map +1 -0
- package/dist/runtime/statewire-server-lane-context.d.ts +30 -0
- package/dist/runtime/statewire-server-lane-context.js +24 -0
- package/dist/runtime/statewire-server-lane-context.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +47 -23
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +8 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +48 -24
- 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 +23 -2
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +60 -0
- package/dist/threads/api.js +23 -2
- 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-athena-thread-model.cjs +14 -0
- package/dist/threads/use-athena-thread-model.cjs.map +1 -0
- package/dist/threads/use-athena-thread-model.d.ts +22 -0
- package/dist/threads/use-athena-thread-model.js +14 -0
- package/dist/threads/use-athena-thread-model.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 +21 -10
- 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 +0 -13
- 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 +0 -13
- 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-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
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CheckCheckIcon, BellIcon, MailOpenIcon, MailIcon, XIcon } from "lucide-react";
|
|
3
|
+
import { useMutation } from "@tanstack/react-query";
|
|
4
|
+
import { useContext, useState, useMemo } from "react";
|
|
5
|
+
import { useAthenaQueryClient } from "../lib/use-athena-rest-query.js";
|
|
6
|
+
import { withCredentialRenewal } from "../runtime/credential-renewal.js";
|
|
7
|
+
import { Popover, PopoverTrigger, PopoverContent } from "../ui/popover.js";
|
|
8
|
+
import { dismissThreadFromInbox } from "./api.js";
|
|
9
|
+
import { SessionListSkeleton } from "./SessionList.js";
|
|
10
|
+
import { relativeTime } from "./session-list-model.js";
|
|
11
|
+
import { FOCUS_RING_CLASS, StatusChip, RowIconButton } from "./session-row-parts.js";
|
|
12
|
+
import { inboxStateChip, plainExcerpt } from "./sessions-page-model.js";
|
|
13
|
+
import { useAthenaStatewireThreadList, AthenaSessionsLiveContext } from "./statewire-thread-list.js";
|
|
14
|
+
import { useAthenaSessions } from "./use-athena-sessions.js";
|
|
15
|
+
import { cn } from "cnfast";
|
|
16
|
+
const INBOX_QUERY = { createdByMe: true, excludeDismissed: true };
|
|
17
|
+
const INBOX_UNREAD_QUERY = { ...INBOX_QUERY, unreadOnly: true };
|
|
18
|
+
const INBOX_PAGE_SIZE = 50;
|
|
19
|
+
function useAthenaInboxUnreadCount() {
|
|
20
|
+
const unread = useAthenaSessions({ query: INBOX_UNREAD_QUERY, pageSize: INBOX_PAGE_SIZE });
|
|
21
|
+
const count = unread.rows.length;
|
|
22
|
+
const hasMore = unread.hasNextPage;
|
|
23
|
+
return {
|
|
24
|
+
count,
|
|
25
|
+
hasMore,
|
|
26
|
+
label: count === 0 ? "" : `${count}${hasMore ? "+" : ""}`,
|
|
27
|
+
isAvailable: unread.isAvailable
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function useInboxDismiss(refresh) {
|
|
31
|
+
const live = useContext(AthenaSessionsLiveContext);
|
|
32
|
+
const queryClient = useAthenaQueryClient();
|
|
33
|
+
const [hidden, setHidden] = useState(() => /* @__PURE__ */ new Set());
|
|
34
|
+
const mutation = useMutation(
|
|
35
|
+
{
|
|
36
|
+
mutationKey: ["athena-sdk", "inbox-dismiss", (live == null ? void 0 : live.backendUrl) ?? "", (live == null ? void 0 : live.principal) ?? ""],
|
|
37
|
+
mutationFn: async (threadId) => {
|
|
38
|
+
if (!live) throw new Error("[AthenaSDK] The inbox needs enableThreadList.");
|
|
39
|
+
return withCredentialRenewal(
|
|
40
|
+
live.getAuth,
|
|
41
|
+
(auth) => dismissThreadFromInbox(live.backendUrl, auth, { threadId, dismissed: true })
|
|
42
|
+
);
|
|
43
|
+
},
|
|
44
|
+
onMutate: (threadId) => setHidden((current) => new Set(current).add(threadId)),
|
|
45
|
+
// The local hide only bridges the write and the refresh after it: once
|
|
46
|
+
// the inbox has re-read, the server decides — a dismissed session comes
|
|
47
|
+
// back with its next message, and a failed dismiss shows it again.
|
|
48
|
+
onSettled: async (_result, _error, threadId) => {
|
|
49
|
+
try {
|
|
50
|
+
await refresh();
|
|
51
|
+
} finally {
|
|
52
|
+
setHidden((current) => {
|
|
53
|
+
if (!current.has(threadId)) return current;
|
|
54
|
+
const next = new Set(current);
|
|
55
|
+
next.delete(threadId);
|
|
56
|
+
return next;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
queryClient
|
|
62
|
+
);
|
|
63
|
+
return { hidden, dismiss: mutation.mutate, pending: mutation.isPending };
|
|
64
|
+
}
|
|
65
|
+
const InboxRow = ({ row, isActive, list, onOpen, onDismiss }) => {
|
|
66
|
+
const chip = inboxStateChip(row);
|
|
67
|
+
const excerpt = plainExcerpt(row.preview);
|
|
68
|
+
return /* @__PURE__ */ jsxs(
|
|
69
|
+
"li",
|
|
70
|
+
{
|
|
71
|
+
"data-thread-id": row.id,
|
|
72
|
+
"data-unread": row.isUnread || void 0,
|
|
73
|
+
className: cn(
|
|
74
|
+
"group relative flex items-start gap-2 rounded-lg transition-colors hover:bg-muted/40",
|
|
75
|
+
isActive && "bg-muted"
|
|
76
|
+
),
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ jsxs(
|
|
79
|
+
"button",
|
|
80
|
+
{
|
|
81
|
+
type: "button",
|
|
82
|
+
onClick: () => onOpen(row),
|
|
83
|
+
className: cn("flex min-w-0 flex-1 items-start gap-2 rounded-lg p-2 pl-2.5 text-left", FOCUS_RING_CLASS),
|
|
84
|
+
children: [
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
"span",
|
|
87
|
+
{
|
|
88
|
+
role: row.isUnread ? "img" : void 0,
|
|
89
|
+
"aria-label": row.isUnread ? "Unread" : void 0,
|
|
90
|
+
"aria-hidden": row.isUnread ? void 0 : true,
|
|
91
|
+
className: cn("mt-1.5 size-2 shrink-0 rounded-full", row.isUnread ? "bg-primary" : "bg-transparent")
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
95
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
96
|
+
/* @__PURE__ */ jsx(
|
|
97
|
+
"span",
|
|
98
|
+
{
|
|
99
|
+
"data-title": true,
|
|
100
|
+
className: cn("min-w-0 flex-1 truncate text-foreground text-sm", row.isUnread ? "font-semibold" : "font-medium"),
|
|
101
|
+
children: row.title ?? "Untitled"
|
|
102
|
+
}
|
|
103
|
+
),
|
|
104
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-[11px] text-muted-foreground", children: relativeTime(row.updatedAt) })
|
|
105
|
+
] }),
|
|
106
|
+
excerpt ? /* @__PURE__ */ jsx("span", { "data-excerpt": true, className: "mt-0.5 line-clamp-2 break-words text-muted-foreground text-xs", children: excerpt }) : null,
|
|
107
|
+
/* @__PURE__ */ jsx("span", { className: "mt-1 flex", children: /* @__PURE__ */ jsx(StatusChip, { label: chip.label, tone: chip.tone, detail: row.nextAction }) })
|
|
108
|
+
] })
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
),
|
|
112
|
+
/* @__PURE__ */ jsxs("div", { "data-row-actions": true, className: "flex shrink-0 items-center gap-0.5 py-2 pr-2", children: [
|
|
113
|
+
/* @__PURE__ */ jsx(
|
|
114
|
+
RowIconButton,
|
|
115
|
+
{
|
|
116
|
+
label: row.isUnread ? "Mark read" : "Mark unread",
|
|
117
|
+
action: "read-state",
|
|
118
|
+
pending: list.readStatePendingThreadIds.has(row.id),
|
|
119
|
+
onClick: () => list.setReadState({ threadId: row.id, isUnread: !row.isUnread, updatedAt: row.updatedAt }),
|
|
120
|
+
children: row.isUnread ? /* @__PURE__ */ jsx(MailOpenIcon, { className: "size-3.5", "aria-hidden": true }) : /* @__PURE__ */ jsx(MailIcon, { className: "size-3.5", "aria-hidden": true })
|
|
121
|
+
}
|
|
122
|
+
),
|
|
123
|
+
onDismiss ? /* @__PURE__ */ jsx(RowIconButton, { label: "Dismiss from inbox", action: "dismiss", onClick: () => onDismiss(row.id), children: /* @__PURE__ */ jsx(XIcon, { className: "size-3.5", "aria-hidden": true }) }) : null
|
|
124
|
+
] })
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
};
|
|
129
|
+
function InboxBody({
|
|
130
|
+
className,
|
|
131
|
+
title = "Inbox",
|
|
132
|
+
defaultTab = "all",
|
|
133
|
+
onOpenSession,
|
|
134
|
+
list
|
|
135
|
+
}) {
|
|
136
|
+
var _a;
|
|
137
|
+
const [tab, setTab] = useState(defaultTab);
|
|
138
|
+
const all = useAthenaSessions({ query: INBOX_QUERY, pageSize: INBOX_PAGE_SIZE });
|
|
139
|
+
const unread = useAthenaSessions({ query: INBOX_UNREAD_QUERY, pageSize: INBOX_PAGE_SIZE });
|
|
140
|
+
const shown = tab === "unread" ? unread : all;
|
|
141
|
+
const refreshBoth = async () => {
|
|
142
|
+
await Promise.all([all.refresh(), unread.refresh()]);
|
|
143
|
+
};
|
|
144
|
+
const dismissal = useInboxDismiss(refreshBoth);
|
|
145
|
+
const canDismiss = ((_a = shown.supportedFilters) == null ? void 0 : _a.has("exclude_dismissed")) ?? false;
|
|
146
|
+
const rows = useMemo(
|
|
147
|
+
() => shown.rows.filter((row) => !dismissal.hidden.has(row.id)),
|
|
148
|
+
[shown.rows, dismissal.hidden]
|
|
149
|
+
);
|
|
150
|
+
const unreadRows = unread.rows.filter((row) => !dismissal.hidden.has(row.id));
|
|
151
|
+
const unreadLabel = `${unreadRows.length}${unread.hasNextPage ? "+" : ""}`;
|
|
152
|
+
const allLabel = `${all.rows.filter((row) => !dismissal.hidden.has(row.id)).length}${all.hasNextPage ? "+" : ""}`;
|
|
153
|
+
const open = (row) => {
|
|
154
|
+
list.selectThread(row.id);
|
|
155
|
+
if (row.isUnread) {
|
|
156
|
+
list.setReadState({ threadId: row.id, isUnread: false, updatedAt: row.updatedAt });
|
|
157
|
+
}
|
|
158
|
+
onOpenSession == null ? void 0 : onOpenSession({ threadId: row.id, title: row.title });
|
|
159
|
+
};
|
|
160
|
+
const markAllRead = () => {
|
|
161
|
+
for (const row of unreadRows) {
|
|
162
|
+
list.setReadState({ threadId: row.id, isUnread: false, updatedAt: row.updatedAt });
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const showSkeleton = rows.length === 0 && (!shown.hasResolvedFirstPage || shown.isFetching);
|
|
166
|
+
const notice = shown.unavailableFields.length > 0 ? "This Athena server cannot narrow the inbox to your own, undismissed sessions yet, so it lists every session you can see." : null;
|
|
167
|
+
const tabClass = (active) => cn(
|
|
168
|
+
"inline-flex h-7 items-center gap-1.5 rounded-md px-2.5 font-medium text-xs transition-colors",
|
|
169
|
+
active ? "bg-muted text-foreground" : "text-muted-foreground hover:text-foreground",
|
|
170
|
+
FOCUS_RING_CLASS
|
|
171
|
+
);
|
|
172
|
+
return /* @__PURE__ */ jsxs("div", { "data-testid": "inbox", className: cn("athena-sdk-chrome flex min-h-0 flex-col gap-2", className), children: [
|
|
173
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-1", children: [
|
|
174
|
+
/* @__PURE__ */ jsx("h2", { className: "font-semibold text-foreground text-sm", children: title }),
|
|
175
|
+
/* @__PURE__ */ jsxs("div", { role: "tablist", "aria-label": "Inbox", className: "flex items-center gap-0.5", children: [
|
|
176
|
+
/* @__PURE__ */ jsxs("button", { type: "button", role: "tab", "aria-selected": tab === "all", onClick: () => setTab("all"), className: tabClass(tab === "all"), children: [
|
|
177
|
+
"All",
|
|
178
|
+
/* @__PURE__ */ jsx("span", { "data-testid": "inbox-all-count", className: "text-muted-foreground", children: allLabel })
|
|
179
|
+
] }),
|
|
180
|
+
/* @__PURE__ */ jsxs("button", { type: "button", role: "tab", "aria-selected": tab === "unread", onClick: () => setTab("unread"), className: tabClass(tab === "unread"), children: [
|
|
181
|
+
"Unread",
|
|
182
|
+
/* @__PURE__ */ jsx("span", { "data-testid": "inbox-unread-count", className: "text-muted-foreground", children: unreadLabel })
|
|
183
|
+
] })
|
|
184
|
+
] }),
|
|
185
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
186
|
+
/* @__PURE__ */ jsxs(
|
|
187
|
+
"button",
|
|
188
|
+
{
|
|
189
|
+
type: "button",
|
|
190
|
+
onClick: markAllRead,
|
|
191
|
+
disabled: unreadRows.length === 0,
|
|
192
|
+
className: cn(
|
|
193
|
+
"inline-flex h-7 items-center gap-1 rounded-md px-2 text-muted-foreground text-xs transition-colors hover:bg-muted hover:text-foreground disabled:opacity-50",
|
|
194
|
+
FOCUS_RING_CLASS
|
|
195
|
+
),
|
|
196
|
+
title: "Mark the loaded unread sessions read",
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ jsx(CheckCheckIcon, { className: "size-3.5", "aria-hidden": true }),
|
|
199
|
+
"Mark all read"
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
)
|
|
203
|
+
] }),
|
|
204
|
+
notice ? /* @__PURE__ */ jsx("p", { role: "status", "data-testid": "inbox-degraded", className: "mx-1 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-1.5 text-[11px] text-amber-900", children: notice }) : null,
|
|
205
|
+
/* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto", children: [
|
|
206
|
+
showSkeleton ? /* @__PURE__ */ jsx(SessionListSkeleton, { rows: 4 }) : rows.length === 0 ? /* @__PURE__ */ jsx("p", { "data-testid": "inbox-empty", className: "px-3 py-8 text-center text-muted-foreground text-xs", children: tab === "unread" ? "You are all caught up." : "Nothing in your inbox." }) : /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-0.5", "aria-busy": shown.isFetching || void 0, children: rows.map((row) => /* @__PURE__ */ jsx(
|
|
207
|
+
InboxRow,
|
|
208
|
+
{
|
|
209
|
+
row,
|
|
210
|
+
isActive: row.id === list.activeThreadId,
|
|
211
|
+
list,
|
|
212
|
+
onOpen: open,
|
|
213
|
+
onDismiss: canDismiss ? dismissal.dismiss : null
|
|
214
|
+
},
|
|
215
|
+
row.id
|
|
216
|
+
)) }),
|
|
217
|
+
shown.hasNextPage && !showSkeleton ? /* @__PURE__ */ jsx(
|
|
218
|
+
"button",
|
|
219
|
+
{
|
|
220
|
+
type: "button",
|
|
221
|
+
onClick: shown.fetchNextPage,
|
|
222
|
+
disabled: shown.isFetchingNextPage,
|
|
223
|
+
className: cn("mt-1 w-full rounded-md py-2 text-muted-foreground text-xs transition-colors hover:bg-muted disabled:opacity-50", FOCUS_RING_CLASS),
|
|
224
|
+
children: shown.isFetchingNextPage ? "Loading…" : "Load more"
|
|
225
|
+
}
|
|
226
|
+
) : null
|
|
227
|
+
] })
|
|
228
|
+
] });
|
|
229
|
+
}
|
|
230
|
+
function Inbox(props) {
|
|
231
|
+
const list = useAthenaStatewireThreadList();
|
|
232
|
+
const live = useContext(AthenaSessionsLiveContext);
|
|
233
|
+
if (!list || !live) return null;
|
|
234
|
+
return /* @__PURE__ */ jsx(InboxBody, { ...props, list });
|
|
235
|
+
}
|
|
236
|
+
function InboxButtonBody({ className, panelClassName, align = "end", onOpenSession, ...inboxProps }) {
|
|
237
|
+
const [open, setOpen] = useState(false);
|
|
238
|
+
const unread = useAthenaInboxUnreadCount();
|
|
239
|
+
return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
240
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
241
|
+
"button",
|
|
242
|
+
{
|
|
243
|
+
type: "button",
|
|
244
|
+
"aria-label": unread.count > 0 ? `Inbox, ${unread.label} unread` : "Inbox",
|
|
245
|
+
"data-testid": "inbox-button",
|
|
246
|
+
className: cn(
|
|
247
|
+
"relative inline-flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
248
|
+
FOCUS_RING_CLASS,
|
|
249
|
+
className
|
|
250
|
+
),
|
|
251
|
+
children: [
|
|
252
|
+
/* @__PURE__ */ jsx(BellIcon, { className: "size-4", "aria-hidden": true }),
|
|
253
|
+
unread.count > 0 ? /* @__PURE__ */ jsx(
|
|
254
|
+
"span",
|
|
255
|
+
{
|
|
256
|
+
"data-testid": "inbox-badge",
|
|
257
|
+
className: "absolute -top-0.5 -right-0.5 flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 font-semibold text-[10px] text-primary-foreground leading-none",
|
|
258
|
+
children: unread.label
|
|
259
|
+
}
|
|
260
|
+
) : null
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
) }),
|
|
264
|
+
/* @__PURE__ */ jsx(PopoverContent, { align, className: cn("flex max-h-[70vh] w-96 flex-col p-2", panelClassName), children: /* @__PURE__ */ jsx(
|
|
265
|
+
Inbox,
|
|
266
|
+
{
|
|
267
|
+
...inboxProps,
|
|
268
|
+
onOpenSession: (target) => {
|
|
269
|
+
setOpen(false);
|
|
270
|
+
onOpenSession == null ? void 0 : onOpenSession(target);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
) })
|
|
274
|
+
] });
|
|
275
|
+
}
|
|
276
|
+
function InboxButton(props) {
|
|
277
|
+
const live = useContext(AthenaSessionsLiveContext);
|
|
278
|
+
if (!live) return null;
|
|
279
|
+
return /* @__PURE__ */ jsx(InboxButtonBody, { ...props });
|
|
280
|
+
}
|
|
281
|
+
export {
|
|
282
|
+
INBOX_PAGE_SIZE,
|
|
283
|
+
INBOX_QUERY,
|
|
284
|
+
INBOX_UNREAD_QUERY,
|
|
285
|
+
Inbox,
|
|
286
|
+
InboxButton,
|
|
287
|
+
useAthenaInboxUnreadCount
|
|
288
|
+
};
|
|
289
|
+
//# sourceMappingURL=Inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inbox.js","sources":["../../src/threads/Inbox.tsx"],"sourcesContent":["/**\n * `Inbox` and `InboxButton` — the Devin-style notifications inbox over the\n * session list, with no endpoint of its own:\n *\n * - **What is in it.** The viewer's own sessions, newest activity first, minus\n * the ones dismissed from the inbox — the same set Athena's inbox shows —\n * read through `POST /api/conversations/threads/list` with\n * `created_by_me` + `exclude_dismissed` (+ `unread_only` for the Unread\n * tab). Each row is the session's title, its latest message, a state chip\n * (Needs you / Working / PR merged / Answered …) and an unread dot.\n * - **Live.** The rows fold the per-user conversation index like every other\n * list under the provider, so a session flipping to \"needs you\" or getting\n * a new message moves in place.\n * - **Writes.** Opening a row (or \"Mark read\") stores the read receipt through\n * `POST /api/conversations/threads/read-state`; \"Dismiss\" uses\n * `POST /api/conversations/threads/notifications/dismiss` (EDIT on the\n * session — a dismissed session comes back with its next message).\n * - **Counts.** The unread badge counts the unread page (50 rows); past that\n * it reads `50+`.\n *\n * Renders nothing outside `<AthenaProvider enableThreadList>`.\n */\nimport { BellIcon, CheckCheckIcon, MailIcon, MailOpenIcon, XIcon } from 'lucide-react';\nimport { useMutation } from '@tanstack/react-query';\nimport type { FC } from 'react';\nimport { useContext, useMemo, useState } from 'react';\nimport { cn } from '../lib/utils';\nimport { useAthenaQueryClient } from '../lib/use-athena-rest-query';\nimport { withCredentialRenewal } from '../runtime/credential-renewal';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\nimport { dismissThreadFromInbox } from './api';\nimport { SessionListSkeleton, type SessionOpenTarget } from './SessionList';\nimport { relativeTime } from './session-list-model';\nimport { FOCUS_RING_CLASS, RowIconButton, StatusChip } from './session-row-parts';\nimport { inboxStateChip, plainExcerpt } from './sessions-page-model';\nimport type { AthenaSessionsQuery } from './sessions-query';\nimport {\n AthenaSessionsLiveContext,\n type AthenaStatewireThreadListState,\n type AthenaStatewireThreadSummary,\n useAthenaStatewireThreadList,\n} from './statewire-thread-list';\nimport { type AthenaSessionsList, useAthenaSessions } from './use-athena-sessions';\n\n/** The inbox's sessions: the viewer's own, not dismissed, newest activity first. */\nexport const INBOX_QUERY: AthenaSessionsQuery = { createdByMe: true, excludeDismissed: true };\n/** The Unread tab, and what the badge counts. */\nexport const INBOX_UNREAD_QUERY: AthenaSessionsQuery = { ...INBOX_QUERY, unreadOnly: true };\n\n/** Rows per inbox page — and the badge's ceiling before it reads `50+`. */\nexport const INBOX_PAGE_SIZE = 50;\n\nexport type InboxTab = 'all' | 'unread';\n\nexport interface AthenaInboxUnreadCount {\n /** Unread sessions loaded (at most one page). */\n count: number;\n /** More unread sessions exist beyond `count`. */\n hasMore: boolean;\n /** `count` with `+` when there are more, `''` for none. */\n label: string;\n isAvailable: boolean;\n}\n\n/** The unread count the inbox badge shows; shares the Unread tab's cache. */\nexport function useAthenaInboxUnreadCount(): AthenaInboxUnreadCount {\n const unread = useAthenaSessions({ query: INBOX_UNREAD_QUERY, pageSize: INBOX_PAGE_SIZE });\n const count = unread.rows.length;\n const hasMore = unread.hasNextPage;\n return {\n count,\n hasMore,\n label: count === 0 ? '' : `${count}${hasMore ? '+' : ''}`,\n isAvailable: unread.isAvailable,\n };\n}\n\n/** Dismiss from the inbox: hidden at once, back on failure, the inbox lists refreshed after. */\nfunction useInboxDismiss(refresh: () => Promise<void>) {\n const live = useContext(AthenaSessionsLiveContext);\n const queryClient = useAthenaQueryClient();\n const [hidden, setHidden] = useState<ReadonlySet<string>>(() => new Set());\n const mutation = useMutation(\n {\n mutationKey: ['athena-sdk', 'inbox-dismiss', live?.backendUrl ?? '', live?.principal ?? ''],\n mutationFn: async (threadId: string) => {\n if (!live) throw new Error('[AthenaSDK] The inbox needs enableThreadList.');\n return withCredentialRenewal(live.getAuth, (auth) =>\n dismissThreadFromInbox(live.backendUrl, auth, { threadId, dismissed: true }),\n );\n },\n onMutate: (threadId) => setHidden((current) => new Set(current).add(threadId)),\n // The local hide only bridges the write and the refresh after it: once\n // the inbox has re-read, the server decides — a dismissed session comes\n // back with its next message, and a failed dismiss shows it again.\n onSettled: async (_result, _error, threadId) => {\n try {\n await refresh();\n } finally {\n setHidden((current) => {\n if (!current.has(threadId)) return current;\n const next = new Set(current);\n next.delete(threadId);\n return next;\n });\n }\n },\n },\n queryClient,\n );\n return { hidden, dismiss: mutation.mutate, pending: mutation.isPending };\n}\n\nconst InboxRow: FC<{\n row: AthenaStatewireThreadSummary;\n isActive: boolean;\n list: AthenaStatewireThreadListState;\n onOpen: (row: AthenaStatewireThreadSummary) => void;\n onDismiss: ((threadId: string) => void) | null;\n}> = ({ row, isActive, list, onOpen, onDismiss }) => {\n const chip = inboxStateChip(row);\n const excerpt = plainExcerpt(row.preview);\n return (\n <li\n data-thread-id={row.id}\n data-unread={row.isUnread || undefined}\n className={cn(\n 'group relative flex items-start gap-2 rounded-lg transition-colors hover:bg-muted/40',\n isActive && 'bg-muted',\n )}\n >\n <button\n type=\"button\"\n onClick={() => onOpen(row)}\n className={cn('flex min-w-0 flex-1 items-start gap-2 rounded-lg p-2 pl-2.5 text-left', FOCUS_RING_CLASS)}\n >\n <span\n role={row.isUnread ? 'img' : undefined}\n aria-label={row.isUnread ? 'Unread' : undefined}\n aria-hidden={row.isUnread ? undefined : true}\n className={cn('mt-1.5 size-2 shrink-0 rounded-full', row.isUnread ? 'bg-primary' : 'bg-transparent')}\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"flex items-center gap-2\">\n <span\n data-title\n className={cn('min-w-0 flex-1 truncate text-foreground text-sm', row.isUnread ? 'font-semibold' : 'font-medium')}\n >\n {row.title ?? 'Untitled'}\n </span>\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">{relativeTime(row.updatedAt)}</span>\n </span>\n {excerpt ? (\n <span data-excerpt className=\"mt-0.5 line-clamp-2 break-words text-muted-foreground text-xs\">\n {excerpt}\n </span>\n ) : null}\n <span className=\"mt-1 flex\">\n <StatusChip label={chip.label} tone={chip.tone} detail={row.nextAction} />\n </span>\n </span>\n </button>\n <div data-row-actions className=\"flex shrink-0 items-center gap-0.5 py-2 pr-2\">\n <RowIconButton\n label={row.isUnread ? 'Mark read' : 'Mark unread'}\n action=\"read-state\"\n pending={list.readStatePendingThreadIds.has(row.id)}\n onClick={() =>\n list.setReadState({ threadId: row.id, isUnread: !row.isUnread, updatedAt: row.updatedAt })\n }\n >\n {row.isUnread ? <MailOpenIcon className=\"size-3.5\" aria-hidden /> : <MailIcon className=\"size-3.5\" aria-hidden />}\n </RowIconButton>\n {onDismiss ? (\n <RowIconButton label=\"Dismiss from inbox\" action=\"dismiss\" onClick={() => onDismiss(row.id)}>\n <XIcon className=\"size-3.5\" aria-hidden />\n </RowIconButton>\n ) : null}\n </div>\n </li>\n );\n};\n\nexport interface InboxProps {\n className?: string;\n /** Heading (default \"Inbox\"). */\n title?: string;\n /** The tab it opens on (default `all`). */\n defaultTab?: InboxTab;\n /** Called after a row is opened (selected and marked read), so a host can show its chat. */\n onOpenSession?: (target: SessionOpenTarget) => void;\n}\n\nfunction InboxBody({\n className,\n title = 'Inbox',\n defaultTab = 'all',\n onOpenSession,\n list,\n}: InboxProps & { list: AthenaStatewireThreadListState }) {\n const [tab, setTab] = useState<InboxTab>(defaultTab);\n const all = useAthenaSessions({ query: INBOX_QUERY, pageSize: INBOX_PAGE_SIZE });\n const unread = useAthenaSessions({ query: INBOX_UNREAD_QUERY, pageSize: INBOX_PAGE_SIZE });\n const shown: AthenaSessionsList = tab === 'unread' ? unread : all;\n const refreshBoth = async () => {\n await Promise.all([all.refresh(), unread.refresh()]);\n };\n const dismissal = useInboxDismiss(refreshBoth);\n // Dismissal is only offered where the server can leave dismissed sessions\n // out of the inbox; elsewhere a dismissed row would stay in the list.\n const canDismiss = shown.supportedFilters?.has('exclude_dismissed') ?? false;\n const rows = useMemo(\n () => shown.rows.filter((row) => !dismissal.hidden.has(row.id)),\n [shown.rows, dismissal.hidden],\n );\n const unreadRows = unread.rows.filter((row) => !dismissal.hidden.has(row.id));\n const unreadLabel = `${unreadRows.length}${unread.hasNextPage ? '+' : ''}`;\n const allLabel = `${all.rows.filter((row) => !dismissal.hidden.has(row.id)).length}${all.hasNextPage ? '+' : ''}`;\n\n const open = (row: AthenaStatewireThreadSummary) => {\n list.selectThread(row.id);\n if (row.isUnread) {\n list.setReadState({ threadId: row.id, isUnread: false, updatedAt: row.updatedAt });\n }\n onOpenSession?.({ threadId: row.id, title: row.title });\n };\n const markAllRead = () => {\n for (const row of unreadRows) {\n list.setReadState({ threadId: row.id, isUnread: false, updatedAt: row.updatedAt });\n }\n };\n const showSkeleton = rows.length === 0 && (!shown.hasResolvedFirstPage || shown.isFetching);\n const notice =\n shown.unavailableFields.length > 0\n ? 'This Athena server cannot narrow the inbox to your own, undismissed sessions yet, so it lists every session you can see.'\n : null;\n\n const tabClass = (active: boolean) =>\n cn(\n 'inline-flex h-7 items-center gap-1.5 rounded-md px-2.5 font-medium text-xs transition-colors',\n active ? 'bg-muted text-foreground' : 'text-muted-foreground hover:text-foreground',\n FOCUS_RING_CLASS,\n );\n\n return (\n <div data-testid=\"inbox\" className={cn('athena-sdk-chrome flex min-h-0 flex-col gap-2', className)}>\n <div className=\"flex items-center gap-2 px-1\">\n <h2 className=\"font-semibold text-foreground text-sm\">{title}</h2>\n <div role=\"tablist\" aria-label=\"Inbox\" className=\"flex items-center gap-0.5\">\n <button type=\"button\" role=\"tab\" aria-selected={tab === 'all'} onClick={() => setTab('all')} className={tabClass(tab === 'all')}>\n All\n <span data-testid=\"inbox-all-count\" className=\"text-muted-foreground\">\n {allLabel}\n </span>\n </button>\n <button type=\"button\" role=\"tab\" aria-selected={tab === 'unread'} onClick={() => setTab('unread')} className={tabClass(tab === 'unread')}>\n Unread\n <span data-testid=\"inbox-unread-count\" className=\"text-muted-foreground\">\n {unreadLabel}\n </span>\n </button>\n </div>\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={markAllRead}\n disabled={unreadRows.length === 0}\n className={cn(\n 'inline-flex h-7 items-center gap-1 rounded-md px-2 text-muted-foreground text-xs transition-colors hover:bg-muted hover:text-foreground disabled:opacity-50',\n FOCUS_RING_CLASS,\n )}\n title=\"Mark the loaded unread sessions read\"\n >\n <CheckCheckIcon className=\"size-3.5\" aria-hidden />\n Mark all read\n </button>\n </div>\n {notice ? (\n <p role=\"status\" data-testid=\"inbox-degraded\" className=\"mx-1 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-1.5 text-[11px] text-amber-900\">\n {notice}\n </p>\n ) : null}\n <div className=\"min-h-0 flex-1 overflow-y-auto\">\n {showSkeleton ? (\n <SessionListSkeleton rows={4} />\n ) : rows.length === 0 ? (\n <p data-testid=\"inbox-empty\" className=\"px-3 py-8 text-center text-muted-foreground text-xs\">\n {tab === 'unread' ? 'You are all caught up.' : 'Nothing in your inbox.'}\n </p>\n ) : (\n <ul className=\"flex flex-col gap-0.5\" aria-busy={shown.isFetching || undefined}>\n {rows.map((row) => (\n <InboxRow\n key={row.id}\n row={row}\n isActive={row.id === list.activeThreadId}\n list={list}\n onOpen={open}\n onDismiss={canDismiss ? dismissal.dismiss : null}\n />\n ))}\n </ul>\n )}\n {shown.hasNextPage && !showSkeleton ? (\n <button\n type=\"button\"\n onClick={shown.fetchNextPage}\n disabled={shown.isFetchingNextPage}\n className={cn('mt-1 w-full rounded-md py-2 text-muted-foreground text-xs transition-colors hover:bg-muted disabled:opacity-50', FOCUS_RING_CLASS)}\n >\n {shown.isFetchingNextPage ? 'Loading…' : 'Load more'}\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n\n/**\n * The notifications inbox: All / Unread tabs with counts, rows of title,\n * latest message, state chip and unread dot, mark read / mark all read and\n * dismiss. Renders nothing outside `<AthenaProvider enableThreadList>`.\n */\nexport function Inbox(props: InboxProps) {\n const list = useAthenaStatewireThreadList();\n const live = useContext(AthenaSessionsLiveContext);\n if (!list || !live) return null;\n return <InboxBody {...props} list={list} />;\n}\n\nexport interface InboxButtonProps extends Omit<InboxProps, 'className'> {\n className?: string;\n /** Classes for the popover panel. */\n panelClassName?: string;\n align?: 'start' | 'center' | 'end';\n}\n\nfunction InboxButtonBody({ className, panelClassName, align = 'end', onOpenSession, ...inboxProps }: InboxButtonProps) {\n const [open, setOpen] = useState(false);\n const unread = useAthenaInboxUnreadCount();\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label={unread.count > 0 ? `Inbox, ${unread.label} unread` : 'Inbox'}\n data-testid=\"inbox-button\"\n className={cn(\n 'relative inline-flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground',\n FOCUS_RING_CLASS,\n className,\n )}\n >\n <BellIcon className=\"size-4\" aria-hidden />\n {unread.count > 0 ? (\n <span\n data-testid=\"inbox-badge\"\n className=\"absolute -top-0.5 -right-0.5 flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 font-semibold text-[10px] text-primary-foreground leading-none\"\n >\n {unread.label}\n </span>\n ) : null}\n </button>\n </PopoverTrigger>\n <PopoverContent align={align} className={cn('flex max-h-[70vh] w-96 flex-col p-2', panelClassName)}>\n <Inbox\n {...inboxProps}\n onOpenSession={(target) => {\n setOpen(false);\n onOpenSession?.(target);\n }}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * A bell with the unread count that opens `Inbox` in a popover. Renders\n * nothing outside `<AthenaProvider enableThreadList>`.\n */\nexport function InboxButton(props: InboxButtonProps) {\n const live = useContext(AthenaSessionsLiveContext);\n if (!live) return null;\n return <InboxButtonBody {...props} />;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const lucideReact = require("lucide-react");
|
|
5
5
|
const react = require("react");
|
|
6
|
-
const popover = require("../ui/popover.cjs");
|
|
7
6
|
const api = require("./api.cjs");
|
|
8
7
|
const sessionListModel = require("./session-list-model.cjs");
|
|
8
|
+
const sessionRowParts = require("./session-row-parts.cjs");
|
|
9
9
|
const statewireThreadList = require("./statewire-thread-list.cjs");
|
|
10
10
|
const threadPrefetcher = require("./thread-prefetcher.cjs");
|
|
11
11
|
const cnfast = require("cnfast");
|
|
@@ -65,115 +65,6 @@ const LINE_TONE_CLASS = {
|
|
|
65
65
|
error: "text-red-600",
|
|
66
66
|
muted: "text-muted-foreground"
|
|
67
67
|
};
|
|
68
|
-
const PR_STATE_ICON = {
|
|
69
|
-
open: lucideReact.GitPullRequestIcon,
|
|
70
|
-
draft: lucideReact.GitPullRequestDraftIcon,
|
|
71
|
-
merged: lucideReact.GitMergeIcon,
|
|
72
|
-
closed: lucideReact.GitPullRequestClosedIcon
|
|
73
|
-
};
|
|
74
|
-
const PR_STATE_CLASS = {
|
|
75
|
-
open: "text-green-600",
|
|
76
|
-
draft: "text-muted-foreground",
|
|
77
|
-
merged: "text-violet-600",
|
|
78
|
-
closed: "text-red-600"
|
|
79
|
-
};
|
|
80
|
-
const FOCUS_RING_CLASS = "outline-none focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-0";
|
|
81
|
-
const stopPropagation = (event) => event.stopPropagation();
|
|
82
|
-
const PR_CHECKS_LABEL = {
|
|
83
|
-
SUCCESS: "checks passed",
|
|
84
|
-
FAILURE: "checks failing",
|
|
85
|
-
PENDING: "checks running",
|
|
86
|
-
NONE: ""
|
|
87
|
-
};
|
|
88
|
-
const PR_CHIP_CLASS = "inline-flex h-4 shrink-0 items-center gap-1 rounded-full border border-border/60 px-1.5 font-medium text-[11px] leading-none transition-colors hover:bg-muted";
|
|
89
|
-
const PullRequestListRow = ({
|
|
90
|
-
pullRequest,
|
|
91
|
-
showRepo
|
|
92
|
-
}) => {
|
|
93
|
-
const state = sessionListModel.pullRequestChipState(pullRequest);
|
|
94
|
-
const Icon = PR_STATE_ICON[state];
|
|
95
|
-
const meta = [
|
|
96
|
-
showRepo ? `${pullRequest.repoFullName} #${pullRequest.number}` : `#${pullRequest.number}`,
|
|
97
|
-
state,
|
|
98
|
-
PR_CHECKS_LABEL[pullRequest.checksState]
|
|
99
|
-
].filter(Boolean).join(" · ");
|
|
100
|
-
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
101
|
-
"a",
|
|
102
|
-
{
|
|
103
|
-
href: pullRequest.url,
|
|
104
|
-
target: "_blank",
|
|
105
|
-
rel: "noopener noreferrer",
|
|
106
|
-
"data-pr-state": state,
|
|
107
|
-
className: cnfast.cn(
|
|
108
|
-
"flex items-start gap-2 rounded-sm px-2 py-1.5 text-xs transition-colors hover:bg-muted",
|
|
109
|
-
FOCUS_RING_CLASS
|
|
110
|
-
),
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: cnfast.cn("mt-0.5 size-3.5 shrink-0", PR_STATE_CLASS[state]), "aria-hidden": true }),
|
|
113
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
114
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate text-foreground", children: pullRequest.title || `#${pullRequest.number}` }),
|
|
115
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate text-muted-foreground", children: meta })
|
|
116
|
-
] })
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
) });
|
|
120
|
-
};
|
|
121
|
-
const PullRequestChip = ({ chip, pullRequests }) => {
|
|
122
|
-
var _a;
|
|
123
|
-
const Icon = PR_STATE_ICON[chip.state];
|
|
124
|
-
if (chip.count === 1) {
|
|
125
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
126
|
-
"a",
|
|
127
|
-
{
|
|
128
|
-
href: chip.url,
|
|
129
|
-
target: "_blank",
|
|
130
|
-
rel: "noopener noreferrer",
|
|
131
|
-
onClick: stopPropagation,
|
|
132
|
-
title: chip.title,
|
|
133
|
-
"aria-label": `Pull request ${chip.label}, ${chip.state}`,
|
|
134
|
-
"data-pr-state": chip.state,
|
|
135
|
-
"data-pr-count": chip.count,
|
|
136
|
-
className: cnfast.cn(PR_CHIP_CLASS, FOCUS_RING_CLASS, PR_STATE_CLASS[chip.state]),
|
|
137
|
-
children: [
|
|
138
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3", "aria-hidden": true }),
|
|
139
|
-
chip.label
|
|
140
|
-
]
|
|
141
|
-
}
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
const listLabel = `${chip.count} pull requests`;
|
|
145
|
-
const ordered = sessionListModel.orderedPullRequests(pullRequests);
|
|
146
|
-
const repositories = new Set(ordered.map((pullRequest) => pullRequest.repoFullName));
|
|
147
|
-
const sharedRepository = repositories.size === 1 ? ((_a = ordered[0]) == null ? void 0 : _a.repoFullName) ?? null : null;
|
|
148
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(popover.Popover, { children: [
|
|
149
|
-
/* @__PURE__ */ jsxRuntime.jsx(popover.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
150
|
-
"button",
|
|
151
|
-
{
|
|
152
|
-
type: "button",
|
|
153
|
-
onClick: stopPropagation,
|
|
154
|
-
"aria-label": `${chip.label}: show all ${listLabel}`,
|
|
155
|
-
"data-pr-state": chip.state,
|
|
156
|
-
"data-pr-count": chip.count,
|
|
157
|
-
className: cnfast.cn(PR_CHIP_CLASS, FOCUS_RING_CLASS, PR_STATE_CLASS[chip.state]),
|
|
158
|
-
children: [
|
|
159
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3", "aria-hidden": true }),
|
|
160
|
-
chip.label
|
|
161
|
-
]
|
|
162
|
-
}
|
|
163
|
-
) }),
|
|
164
|
-
/* @__PURE__ */ jsxRuntime.jsxs(popover.PopoverContent, { align: "end", className: "w-80 p-0", "aria-label": listLabel, "data-pr-list": "", children: [
|
|
165
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate border-b border-border px-3 py-2 font-medium text-muted-foreground text-xs", children: sharedRepository ? `${listLabel} in ${sharedRepository}` : listLabel }),
|
|
166
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "max-h-72 overflow-y-auto p-1", children: ordered.map((pullRequest) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
167
|
-
PullRequestListRow,
|
|
168
|
-
{
|
|
169
|
-
pullRequest,
|
|
170
|
-
showRepo: sharedRepository === null
|
|
171
|
-
},
|
|
172
|
-
`${pullRequest.repoFullName}#${pullRequest.number}`
|
|
173
|
-
)) })
|
|
174
|
-
] })
|
|
175
|
-
] });
|
|
176
|
-
};
|
|
177
68
|
const RowActionButton = ({ label, onClick, pending, alwaysVisible, action, pressed, children }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
178
69
|
"button",
|
|
179
70
|
{
|
|
@@ -188,7 +79,7 @@ const RowActionButton = ({ label, onClick, pending, alwaysVisible, action, press
|
|
|
188
79
|
"data-pending": pending || void 0,
|
|
189
80
|
className: cnfast.cn(
|
|
190
81
|
"rounded p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-wait disabled:opacity-60",
|
|
191
|
-
FOCUS_RING_CLASS,
|
|
82
|
+
sessionRowParts.FOCUS_RING_CLASS,
|
|
192
83
|
!alwaysVisible && !pending && "opacity-0 focus-visible:opacity-100 group-focus-within:opacity-100 group-hover:opacity-100"
|
|
193
84
|
),
|
|
194
85
|
children
|
|
@@ -250,12 +141,14 @@ const SessionRow = ({
|
|
|
250
141
|
onRename,
|
|
251
142
|
renamePending,
|
|
252
143
|
onArchive,
|
|
253
|
-
archivePending
|
|
144
|
+
archivePending,
|
|
145
|
+
onOpenInNewTab,
|
|
146
|
+
originBadges
|
|
254
147
|
}) => {
|
|
255
148
|
const indicator = sessionListModel.sessionIndicator(thread);
|
|
256
149
|
const line = sessionListModel.sessionSecondaryLine(thread);
|
|
257
150
|
const chip = sessionListModel.pullRequestChip(thread.pullRequests);
|
|
258
|
-
const origin = sessionListModel.
|
|
151
|
+
const origin = sessionListModel.sessionOriginBadge(thread, originBadges);
|
|
259
152
|
const title = thread.title ?? "Untitled";
|
|
260
153
|
const hoverTimerRef = react.useRef(null);
|
|
261
154
|
const cancelHover = react.useCallback(() => {
|
|
@@ -320,7 +213,22 @@ const SessionRow = ({
|
|
|
320
213
|
if (archivePending) return;
|
|
321
214
|
onArchive == null ? void 0 : onArchive(thread.id);
|
|
322
215
|
};
|
|
323
|
-
const
|
|
216
|
+
const openInNewTab = (event) => {
|
|
217
|
+
event.preventDefault();
|
|
218
|
+
event.stopPropagation();
|
|
219
|
+
onOpenInNewTab == null ? void 0 : onOpenInNewTab({ threadId: thread.id, title: thread.title });
|
|
220
|
+
};
|
|
221
|
+
const handleRowClick = (event) => {
|
|
222
|
+
if (onOpenInNewTab && (event.metaKey || event.ctrlKey)) {
|
|
223
|
+
openInNewTab(event);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
onSelect(thread.id);
|
|
227
|
+
};
|
|
228
|
+
const handleRowAuxClick = (event) => {
|
|
229
|
+
if (onOpenInNewTab && event.button === 1) openInNewTab(event);
|
|
230
|
+
};
|
|
231
|
+
const hasActions = Boolean(onRename || onToggleFavorite || onArchive || onOpenInNewTab);
|
|
324
232
|
const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
325
233
|
/* @__PURE__ */ jsxRuntime.jsx(SessionStatusIndicator, { kind: indicator }),
|
|
326
234
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
@@ -337,10 +245,10 @@ const SessionRow = ({
|
|
|
337
245
|
onChange: (event) => setDraft(event.target.value),
|
|
338
246
|
onKeyDown: handleEditorKeyDown,
|
|
339
247
|
onBlur: commitRename,
|
|
340
|
-
onClick: stopPropagation,
|
|
248
|
+
onClick: sessionRowParts.stopPropagation,
|
|
341
249
|
className: cnfast.cn(
|
|
342
250
|
"h-5 min-w-0 flex-1 rounded border border-primary/60 bg-background px-1 font-medium text-foreground text-sm",
|
|
343
|
-
FOCUS_RING_CLASS
|
|
251
|
+
sessionRowParts.FOCUS_RING_CLASS
|
|
344
252
|
)
|
|
345
253
|
}
|
|
346
254
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", { "data-title": true, className: "min-w-0 truncate font-medium text-sm", children: title }),
|
|
@@ -396,17 +304,29 @@ const SessionRow = ({
|
|
|
396
304
|
"button",
|
|
397
305
|
{
|
|
398
306
|
type: "button",
|
|
399
|
-
onClick:
|
|
307
|
+
onClick: handleRowClick,
|
|
308
|
+
onAuxClick: handleRowAuxClick,
|
|
400
309
|
onFocus: handleFocus,
|
|
401
310
|
className: cnfast.cn(
|
|
402
311
|
"flex min-w-0 flex-1 cursor-pointer items-start gap-2 rounded-lg p-2 pl-3 text-left",
|
|
403
|
-
FOCUS_RING_CLASS
|
|
312
|
+
sessionRowParts.FOCUS_RING_CLASS
|
|
404
313
|
),
|
|
405
314
|
children: body
|
|
406
315
|
}
|
|
407
316
|
),
|
|
408
317
|
chip || hasActions ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 flex-col items-end justify-between gap-0.5 py-2 pr-2", children: [
|
|
409
318
|
hasActions ? /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-row-actions": true, className: "flex h-5 items-center gap-0.5", children: [
|
|
319
|
+
onOpenInNewTab ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
320
|
+
RowActionButton,
|
|
321
|
+
{
|
|
322
|
+
label: "Open in new tab",
|
|
323
|
+
onClick: openInNewTab,
|
|
324
|
+
pending: false,
|
|
325
|
+
alwaysVisible: false,
|
|
326
|
+
action: "open-in-new-tab",
|
|
327
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SquareArrowOutUpRightIcon, { className: "size-3.5", "aria-hidden": true })
|
|
328
|
+
}
|
|
329
|
+
) : null,
|
|
410
330
|
onRename ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
411
331
|
RowActionButton,
|
|
412
332
|
{
|
|
@@ -431,7 +351,7 @@ const SessionRow = ({
|
|
|
431
351
|
}
|
|
432
352
|
) : null
|
|
433
353
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "h-5" }),
|
|
434
|
-
chip ? /* @__PURE__ */ jsxRuntime.jsx(PullRequestChip, { chip, pullRequests: thread.pullRequests ?? [] }) : null
|
|
354
|
+
chip ? /* @__PURE__ */ jsxRuntime.jsx(sessionRowParts.PullRequestChip, { chip, pullRequests: thread.pullRequests ?? [] }) : null
|
|
435
355
|
] }) : null
|
|
436
356
|
]
|
|
437
357
|
}
|
|
@@ -441,10 +361,13 @@ function SessionList({
|
|
|
441
361
|
className,
|
|
442
362
|
grouped = true,
|
|
443
363
|
showSearch = true,
|
|
364
|
+
showNewChat = true,
|
|
365
|
+
originBadges = "all",
|
|
444
366
|
showPinToggle = true,
|
|
445
367
|
showRename = true,
|
|
446
368
|
showArchive = true,
|
|
447
|
-
prefetchOnHover = true
|
|
369
|
+
prefetchOnHover = true,
|
|
370
|
+
onOpenInNewTab
|
|
448
371
|
}) {
|
|
449
372
|
const list = statewireThreadList.useAthenaStatewireThreadList();
|
|
450
373
|
if (!list) return null;
|
|
@@ -462,7 +385,7 @@ function SessionList({
|
|
|
462
385
|
className: cnfast.cn("athena-sdk-chrome flex flex-col gap-2", className),
|
|
463
386
|
"data-testid": "session-list",
|
|
464
387
|
children: [
|
|
465
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
388
|
+
showNewChat ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
466
389
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
467
390
|
"button",
|
|
468
391
|
{
|
|
@@ -470,7 +393,7 @@ function SessionList({
|
|
|
470
393
|
onClick: list.newThread,
|
|
471
394
|
className: cnfast.cn(
|
|
472
395
|
"flex h-9 flex-1 items-center gap-2 rounded-lg border border-border/60 px-3 font-medium text-muted-foreground text-sm transition-colors hover:bg-muted hover:text-foreground",
|
|
473
|
-
FOCUS_RING_CLASS
|
|
396
|
+
sessionRowParts.FOCUS_RING_CLASS
|
|
474
397
|
),
|
|
475
398
|
children: [
|
|
476
399
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.PlusIcon, { className: "size-4" }),
|
|
@@ -486,14 +409,14 @@ function SessionList({
|
|
|
486
409
|
disabled: list.isFetching,
|
|
487
410
|
className: cnfast.cn(
|
|
488
411
|
"flex size-9 items-center justify-center rounded-lg border border-border/60 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:opacity-50",
|
|
489
|
-
FOCUS_RING_CLASS
|
|
412
|
+
sessionRowParts.FOCUS_RING_CLASS
|
|
490
413
|
),
|
|
491
414
|
title: "Refresh sessions",
|
|
492
415
|
"aria-label": "Refresh sessions",
|
|
493
416
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCwIcon, { className: cnfast.cn("size-4", list.isFetching && "animate-spin") })
|
|
494
417
|
}
|
|
495
418
|
)
|
|
496
|
-
] }),
|
|
419
|
+
] }) : null,
|
|
497
420
|
showSearch ? /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "relative block", children: [
|
|
498
421
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, { className: "pointer-events-none absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-foreground" }),
|
|
499
422
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Search sessions" }),
|
|
@@ -527,7 +450,9 @@ function SessionList({
|
|
|
527
450
|
onRename,
|
|
528
451
|
renamePending: list.renamePendingThreadIds.has(thread.id),
|
|
529
452
|
onArchive,
|
|
530
|
-
archivePending: list.archivePendingThreadIds.has(thread.id)
|
|
453
|
+
archivePending: list.archivePendingThreadIds.has(thread.id),
|
|
454
|
+
onOpenInNewTab,
|
|
455
|
+
originBadges
|
|
531
456
|
},
|
|
532
457
|
thread.id
|
|
533
458
|
)) })
|
|
@@ -543,7 +468,7 @@ function SessionList({
|
|
|
543
468
|
onClick: list.fetchNextPage,
|
|
544
469
|
className: cnfast.cn(
|
|
545
470
|
"w-full rounded-lg py-2 text-muted-foreground text-xs transition-colors hover:bg-muted disabled:opacity-50",
|
|
546
|
-
FOCUS_RING_CLASS
|
|
471
|
+
sessionRowParts.FOCUS_RING_CLASS
|
|
547
472
|
),
|
|
548
473
|
children: list.isFetchingNextPage ? "Loading…" : "Load more"
|
|
549
474
|
}
|