@athenaintel/react 0.28.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +418 -10
- package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.js +124 -0
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
- package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
- package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
- package/dist/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
- package/dist/agent-runtime/src/errors.js.map +1 -0
- package/dist/agent-runtime/src/execute-output.cjs +41 -0
- package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
- package/dist/agent-runtime/src/execute-output.js +41 -0
- package/dist/agent-runtime/src/execute-output.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +12 -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 +12 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
- package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
- package/dist/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/agent-runtime/src/message-author.js.map +1 -0
- package/dist/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/agent-runtime/src/message-window.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
- package/dist/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
- package/dist/agent-runtime/src/messages.js.map +1 -0
- package/dist/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/agent-runtime/src/model-context.js.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/agent-runtime/src/protocol.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
- package/dist/agent-runtime/src/queue.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +23 -13
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +24 -14
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
- package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
- package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.js +43 -0
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +365 -3
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +365 -3
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/agent-runtime/src/tool-names.cjs +5 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-names.js +5 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
- package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
- package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +8 -2
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +8 -0
- package/dist/assets/AthenaAssetEmbed.js +8 -2
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/AthenaLayout.cjs +97 -31
- package/dist/assets/AthenaLayout.cjs.map +1 -1
- package/dist/assets/AthenaLayout.d.ts +13 -0
- package/dist/assets/AthenaLayout.js +98 -32
- package/dist/assets/AthenaLayout.js.map +1 -1
- package/dist/assets/asset-embed-messages.cjs.map +1 -1
- package/dist/assets/asset-embed-messages.d.ts +6 -0
- package/dist/assets/asset-embed-messages.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +68 -32
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +47 -1
- package/dist/assets/asset-panel-store.js +68 -32
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/assets/use-asset-embed.cjs +29 -8
- package/dist/assets/use-asset-embed.cjs.map +1 -1
- package/dist/assets/use-asset-embed.d.ts +7 -0
- package/dist/assets/use-asset-embed.js +29 -8
- package/dist/assets/use-asset-embed.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +152 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -0
- package/dist/catalog/chat-pickers.d.ts +22 -0
- package/dist/catalog/chat-pickers.js +152 -0
- package/dist/catalog/chat-pickers.js.map +1 -0
- package/dist/catalog/runtime-catalog.cjs +181 -0
- package/dist/catalog/runtime-catalog.cjs.map +1 -0
- package/dist/catalog/runtime-catalog.d.ts +100 -0
- package/dist/catalog/runtime-catalog.js +181 -0
- package/dist/catalog/runtime-catalog.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +86 -46
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +21 -4
- package/dist/chat/AthenaChat.js +88 -48
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +38 -37
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +2 -0
- package/dist/chat/StatewireApprovalCard.js +39 -38
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireClientToolBridge.cjs +2 -2
- package/dist/chat/StatewireClientToolBridge.js +2 -2
- package/dist/chat/StatewireQueuedMessages.cjs +15 -12
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
- package/dist/chat/StatewireQueuedMessages.js +15 -12
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
- package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
- package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
- package/dist/chat/StatewireRunRefusalNotice.js +48 -0
- package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
- package/dist/chat/WaitingOnYouBanner.cjs +2 -2
- package/dist/chat/WaitingOnYouBanner.js +2 -2
- package/dist/chat/athena-citation-links.cjs +19 -15
- package/dist/chat/athena-citation-links.cjs.map +1 -1
- package/dist/chat/athena-citation-links.js +19 -15
- package/dist/chat/athena-citation-links.js.map +1 -1
- package/dist/chat/run-activity.cjs +9 -1
- package/dist/chat/run-activity.cjs.map +1 -1
- package/dist/chat/run-activity.d.ts +6 -0
- package/dist/chat/run-activity.js +10 -2
- package/dist/chat/run-activity.js.map +1 -1
- package/dist/chat/statewire-banners.cjs +30 -1
- package/dist/chat/statewire-banners.cjs.map +1 -1
- package/dist/chat/statewire-banners.d.ts +20 -1
- package/dist/chat/statewire-banners.js +32 -3
- package/dist/chat/statewire-banners.js.map +1 -1
- package/dist/chat/statewire-client-tools.cjs +1 -1
- package/dist/chat/statewire-client-tools.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +7 -5
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +8 -2
- package/dist/chat/super-grouping/SuperGroupingCard.js +7 -5
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +350 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js +350 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
- package/dist/chat/super-grouping/ToolTimeline.js +13 -2
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.cjs +51 -26
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +40 -8
- package/dist/chat/super-grouping/activity-timeline.js +52 -27
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/index.cjs +12 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -1
- package/dist/chat/super-grouping/index.d.ts +7 -2
- package/dist/chat/super-grouping/index.js +14 -2
- package/dist/chat/super-grouping/index.js.map +1 -1
- package/dist/chat/super-grouping/timeline-step.cjs +14 -5
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
- package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
- package/dist/chat/super-grouping/timeline-step.js +15 -6
- package/dist/chat/super-grouping/timeline-step.js.map +1 -1
- package/dist/chat/super-grouping/turn-segments.cjs +82 -0
- package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
- package/dist/chat/super-grouping/turn-segments.js +82 -0
- package/dist/chat/super-grouping/turn-segments.js.map +1 -0
- package/dist/chat/super-grouping/turn-timing.cjs +110 -0
- package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
- package/dist/chat/super-grouping/turn-timing.js +110 -0
- package/dist/chat/super-grouping/turn-timing.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +1 -1
- package/dist/chat/tiptap-text.js +1 -1
- package/dist/chat/use-athena-run-live.cjs +1 -1
- package/dist/chat/use-athena-run-live.js +1 -1
- package/dist/chat/use-statewire-approval-request.cjs +73 -4
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
- package/dist/chat/use-statewire-approval-request.js +74 -5
- package/dist/chat/use-statewire-approval-request.js.map +1 -1
- package/dist/chat-ui/composer/composer-message.cjs +284 -0
- package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-message.d.ts +152 -0
- package/dist/chat-ui/composer/composer-message.js +284 -0
- package/dist/chat-ui/composer/composer-message.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +57 -11
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
- package/dist/chat-ui/composer/tiptap-composer.js +57 -11
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +4 -1
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +5 -2
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +3 -2
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +4 -3
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -2
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -2
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/messages/message-components.cjs +30 -10
- package/dist/chat-ui/messages/message-components.cjs.map +1 -1
- package/dist/chat-ui/messages/message-components.d.ts +21 -1
- package/dist/chat-ui/messages/message-components.js +30 -10
- package/dist/chat-ui/messages/message-components.js.map +1 -1
- package/dist/chat-ui/messages/runtime-message.cjs +1 -1
- package/dist/chat-ui/messages/runtime-message.js +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
- package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
- package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
- package/dist/chat-ui/messages/user-edit-composer.js +1 -1
- package/dist/chat-ui/messages/wake-marker.cjs +39 -4
- package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
- package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
- package/dist/chat-ui/messages/wake-marker.js +40 -5
- package/dist/chat-ui/messages/wake-marker.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
- package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
- package/dist/chat-ui/statewire.cjs +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/statewire.js +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
- package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
- package/dist/collab/client.cjs +218 -13
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +105 -2
- package/dist/collab/client.js +221 -17
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.cjs +2 -0
- package/dist/collab/index.cjs.map +1 -1
- package/dist/collab/index.d.ts +1 -1
- package/dist/collab/index.js +3 -1
- package/dist/composer/AttachmentContext.cjs +38 -12
- package/dist/composer/AttachmentContext.cjs.map +1 -1
- package/dist/composer/AttachmentContext.d.ts +22 -1
- package/dist/composer/AttachmentContext.js +40 -14
- package/dist/composer/AttachmentContext.js.map +1 -1
- package/dist/composer/QuoteContext.cjs +80 -28
- package/dist/composer/QuoteContext.cjs.map +1 -1
- package/dist/composer/QuoteContext.d.ts +35 -6
- package/dist/composer/QuoteContext.js +82 -30
- package/dist/composer/QuoteContext.js.map +1 -1
- package/dist/composer/build-composed-message.cjs +27 -0
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +21 -0
- package/dist/composer/build-composed-message.js +28 -1
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +13 -1
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +12 -0
- package/dist/composer/composer-handoff.js +15 -3
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/index.d.ts +6 -3
- package/dist/composer/useReadComposerDraft.cjs +16 -0
- package/dist/composer/useReadComposerDraft.cjs.map +1 -0
- package/dist/composer/useReadComposerDraft.d.ts +6 -0
- package/dist/composer/useReadComposerDraft.js +16 -0
- package/dist/composer/useReadComposerDraft.js.map +1 -0
- package/dist/diagnostics/errors.cjs +6 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +6 -0
- package/dist/diagnostics/errors.js +6 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +159 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +53 -12
- package/dist/index.js +166 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/owner-document.cjs +32 -0
- package/dist/lib/owner-document.cjs.map +1 -0
- package/dist/lib/owner-document.d.ts +17 -0
- package/dist/lib/owner-document.js +32 -0
- package/dist/lib/owner-document.js.map +1 -0
- package/dist/lib/portal-surface.cjs +55 -0
- package/dist/lib/portal-surface.cjs.map +1 -0
- package/dist/lib/portal-surface.d.ts +37 -0
- package/dist/lib/portal-surface.js +55 -0
- package/dist/lib/portal-surface.js.map +1 -0
- package/dist/lib/use-athena-rest-query.cjs +34 -0
- package/dist/lib/use-athena-rest-query.cjs.map +1 -0
- package/dist/lib/use-athena-rest-query.d.ts +31 -0
- package/dist/lib/use-athena-rest-query.js +34 -0
- package/dist/lib/use-athena-rest-query.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +36 -6
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +20 -1
- package/dist/provider/AthenaProvider.js +38 -8
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/provider/citation-links.d.ts +10 -2
- package/dist/{packages/react → react}/package.json.cjs +1 -1
- package/dist/{packages/react → react}/package.json.js +1 -1
- package/dist/runtime/statewire-lifecycle.cjs +15 -3
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.d.ts +6 -0
- package/dist/runtime/statewire-lifecycle.js +15 -3
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +11 -7
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +11 -7
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaRepoSearch.cjs +5 -13
- package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
- package/dist/search/useAthenaRepoSearch.d.ts +3 -3
- package/dist/search/useAthenaRepoSearch.js +6 -14
- package/dist/search/useAthenaRepoSearch.js.map +1 -1
- package/dist/sheet-range/a1.cjs +162 -0
- package/dist/sheet-range/a1.cjs.map +1 -0
- package/dist/sheet-range/a1.d.ts +91 -0
- package/dist/sheet-range/a1.js +162 -0
- package/dist/sheet-range/a1.js.map +1 -0
- package/dist/sheet-range/index.cjs +22 -0
- package/dist/sheet-range/index.cjs.map +1 -0
- package/dist/sheet-range/index.d.ts +12 -0
- package/dist/sheet-range/index.js +22 -0
- package/dist/sheet-range/index.js.map +1 -0
- package/dist/sheet-range/range-preview-table.cjs +75 -0
- package/dist/sheet-range/range-preview-table.cjs.map +1 -0
- package/dist/sheet-range/range-preview-table.d.ts +20 -0
- package/dist/sheet-range/range-preview-table.js +75 -0
- package/dist/sheet-range/range-preview-table.js.map +1 -0
- package/dist/sheet-range/range-preview.cjs +116 -0
- package/dist/sheet-range/range-preview.cjs.map +1 -0
- package/dist/sheet-range/range-preview.d.ts +67 -0
- package/dist/sheet-range/range-preview.js +116 -0
- package/dist/sheet-range/range-preview.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/threads/Inbox.cjs +289 -0
- package/dist/threads/Inbox.cjs.map +1 -0
- package/dist/threads/Inbox.d.ts +46 -0
- package/dist/threads/Inbox.js +289 -0
- package/dist/threads/Inbox.js.map +1 -0
- package/dist/threads/SessionList.cjs +51 -126
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.d.ts +26 -1
- package/dist/threads/SessionList.js +45 -120
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +753 -0
- package/dist/threads/SessionsPage.cjs.map +1 -0
- package/dist/threads/SessionsPage.d.ts +35 -0
- package/dist/threads/SessionsPage.js +753 -0
- package/dist/threads/SessionsPage.js.map +1 -0
- package/dist/threads/api.cjs +21 -1
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +59 -0
- package/dist/threads/api.js +21 -1
- package/dist/threads/api.js.map +1 -1
- package/dist/threads/conversation-list-fetcher.cjs +9 -2
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
- package/dist/threads/conversation-list-fetcher.d.ts +14 -1
- package/dist/threads/conversation-list-fetcher.js +9 -2
- package/dist/threads/conversation-list-fetcher.js.map +1 -1
- package/dist/threads/index.d.ts +2 -1
- package/dist/threads/pull-request-display.cjs +25 -0
- package/dist/threads/pull-request-display.cjs.map +1 -0
- package/dist/threads/pull-request-display.d.ts +15 -0
- package/dist/threads/pull-request-display.js +25 -0
- package/dist/threads/pull-request-display.js.map +1 -0
- package/dist/threads/session-list-model.cjs +16 -2
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +10 -0
- package/dist/threads/session-list-model.js +16 -2
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +152 -0
- package/dist/threads/session-row-parts.cjs.map +1 -0
- package/dist/threads/session-row-parts.d.ts +50 -0
- package/dist/threads/session-row-parts.js +152 -0
- package/dist/threads/session-row-parts.js.map +1 -0
- package/dist/threads/sessions-page-model.cjs +305 -0
- package/dist/threads/sessions-page-model.cjs.map +1 -0
- package/dist/threads/sessions-page-model.d.ts +86 -0
- package/dist/threads/sessions-page-model.js +305 -0
- package/dist/threads/sessions-page-model.js.map +1 -0
- package/dist/threads/sessions-page-storage.cjs +93 -0
- package/dist/threads/sessions-page-storage.cjs.map +1 -0
- package/dist/threads/sessions-page-storage.d.ts +23 -0
- package/dist/threads/sessions-page-storage.js +93 -0
- package/dist/threads/sessions-page-storage.js.map +1 -0
- package/dist/threads/sessions-query.cjs +235 -0
- package/dist/threads/sessions-query.cjs.map +1 -0
- package/dist/threads/sessions-query.d.ts +119 -0
- package/dist/threads/sessions-query.js +235 -0
- package/dist/threads/sessions-query.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +133 -40
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +83 -2
- package/dist/threads/statewire-thread-list.js +134 -41
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +198 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -0
- package/dist/threads/use-athena-sessions.d.ts +81 -0
- package/dist/threads/use-athena-sessions.js +198 -0
- package/dist/threads/use-athena-sessions.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +1 -1
- package/dist/threads/use-rest-conversation-history.js +1 -1
- package/dist/threads/use-statewire-conversation-history.cjs +1 -1
- package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
- package/dist/threads/use-statewire-conversation-history.js +1 -1
- package/dist/threads/use-thread-read-state.cjs +73 -0
- package/dist/threads/use-thread-read-state.cjs.map +1 -0
- package/dist/threads/use-thread-read-state.d.ts +51 -0
- package/dist/threads/use-thread-read-state.js +73 -0
- package/dist/threads/use-thread-read-state.js.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +2 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.js +2 -0
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/file-tool-uis.cjs +18 -43
- package/dist/tools/file-tool-uis.cjs.map +1 -1
- package/dist/tools/file-tool-uis.d.ts +1 -2
- package/dist/tools/file-tool-uis.js +18 -42
- package/dist/tools/file-tool-uis.js.map +1 -1
- package/dist/tools/index.cjs +6 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +6 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/misc-tool-uis.cjs +2 -2
- package/dist/tools/misc-tool-uis.js +2 -2
- package/dist/tools/primitives.cjs +1 -1
- package/dist/tools/primitives.js +1 -1
- package/dist/tools/read-asset-tool-ui.cjs +21 -70
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
- package/dist/tools/read-asset-tool-ui.js +21 -70
- package/dist/tools/read-asset-tool-ui.js.map +1 -1
- package/dist/tools/step-text.cjs +21 -0
- package/dist/tools/step-text.cjs.map +1 -0
- package/dist/tools/step-text.d.ts +10 -0
- package/dist/tools/step-text.js +21 -0
- package/dist/tools/step-text.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +24 -5
- package/dist/tools/tool-fallback.cjs.map +1 -1
- package/dist/tools/tool-fallback.d.ts +3 -1
- package/dist/tools/tool-fallback.js +24 -5
- package/dist/tools/tool-fallback.js.map +1 -1
- package/dist/tools/tool-summary.cjs +661 -0
- package/dist/tools/tool-summary.cjs.map +1 -0
- package/dist/tools/tool-summary.d.ts +99 -0
- package/dist/tools/tool-summary.js +661 -0
- package/dist/tools/tool-summary.js.map +1 -0
- package/dist/tools/tool-uis.cjs +39 -97
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.js +39 -97
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/tools/voice-update-tool-ui.cjs +1 -1
- package/dist/tools/voice-update-tool-ui.js +1 -1
- package/dist/tools/write-todos-tool-ui.cjs +3 -2
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
- package/dist/tools/write-todos-tool-ui.d.ts +5 -0
- package/dist/tools/write-todos-tool-ui.js +5 -4
- package/dist/tools/write-todos-tool-ui.js.map +1 -1
- package/dist/ui/popover.cjs +6 -6
- package/dist/ui/popover.cjs.map +1 -1
- package/dist/ui/popover.js +6 -6
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/tooltip.cjs +16 -2
- package/dist/ui/tooltip.cjs.map +1 -1
- package/dist/ui/tooltip.d.ts +1 -1
- package/dist/ui/tooltip.js +16 -2
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/use-athena-voice-session.cjs.map +1 -1
- package/dist/voice/use-athena-voice-session.d.ts +3 -3
- package/dist/voice/use-athena-voice-session.js.map +1 -1
- package/dist/workbench/SessionWorkbench.cjs +378 -0
- package/dist/workbench/SessionWorkbench.cjs.map +1 -0
- package/dist/workbench/SessionWorkbench.d.ts +30 -0
- package/dist/workbench/SessionWorkbench.js +378 -0
- package/dist/workbench/SessionWorkbench.js.map +1 -0
- package/dist/workbench/session-workbench-context.cjs +26 -0
- package/dist/workbench/session-workbench-context.cjs.map +1 -0
- package/dist/workbench/session-workbench-context.d.ts +55 -0
- package/dist/workbench/session-workbench-context.js +26 -0
- package/dist/workbench/session-workbench-context.js.map +1 -0
- package/dist/workbench/session-workbench-model.cjs +288 -0
- package/dist/workbench/session-workbench-model.cjs.map +1 -0
- package/dist/workbench/session-workbench-model.d.ts +168 -0
- package/dist/workbench/session-workbench-model.js +288 -0
- package/dist/workbench/session-workbench-model.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +580 -0
- package/dist/workbench/session-workbench-panes.cjs.map +1 -0
- package/dist/workbench/session-workbench-panes.d.ts +16 -0
- package/dist/workbench/session-workbench-panes.js +580 -0
- package/dist/workbench/session-workbench-panes.js.map +1 -0
- package/dist/workbench/session-workspace-api.cjs +157 -0
- package/dist/workbench/session-workspace-api.cjs.map +1 -0
- package/dist/workbench/session-workspace-api.d.ts +70 -0
- package/dist/workbench/session-workspace-api.js +157 -0
- package/dist/workbench/session-workspace-api.js.map +1 -0
- package/dist/workbench/use-session-workspace.cjs +100 -0
- package/dist/workbench/use-session-workspace.cjs.map +1 -0
- package/dist/workbench/use-session-workspace.d.ts +45 -0
- package/dist/workbench/use-session-workspace.js +100 -0
- package/dist/workbench/use-session-workspace.js.map +1 -0
- package/dist/workbench/workbench-layout-context.cjs +10 -0
- package/dist/workbench/workbench-layout-context.cjs.map +1 -0
- package/dist/workbench/workbench-layout-context.d.ts +17 -0
- package/dist/workbench/workbench-layout-context.js +10 -0
- package/dist/workbench/workbench-layout-context.js.map +1 -0
- package/package.json +20 -9
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
- package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/errors.js.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
- package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
- package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/queue.js.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
- /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
- /package/dist/{packages/react → react}/package.json.js.map +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const DEFAULT_COLLAB_CHANNEL = "default";
|
|
4
|
+
const SESSION_RUN_STATUSES = [
|
|
5
|
+
"needs_input",
|
|
6
|
+
"running",
|
|
7
|
+
"queued",
|
|
8
|
+
"scheduled",
|
|
9
|
+
"completed",
|
|
10
|
+
"failed",
|
|
11
|
+
"canceled"
|
|
12
|
+
];
|
|
13
|
+
const SESSION_SESSION_STATUSES = ["active", "needs_input", "idle", "error"];
|
|
14
|
+
const SERVER_FIELD = {
|
|
15
|
+
search: "search",
|
|
16
|
+
collabAgentIds: "collab_agent_ids",
|
|
17
|
+
collabChannelIds: "collab_channel_ids",
|
|
18
|
+
startChannels: "start_channels",
|
|
19
|
+
createdAfter: "created_after",
|
|
20
|
+
createdBefore: "created_before",
|
|
21
|
+
updatedAfter: "updated_after",
|
|
22
|
+
updatedBefore: "updated_before",
|
|
23
|
+
favoritesOnly: "favorites_only",
|
|
24
|
+
unreadOnly: "unread_only",
|
|
25
|
+
runStatuses: "run_statuses",
|
|
26
|
+
sessionStatuses: "session_statuses",
|
|
27
|
+
hasPullRequests: "has_pull_requests",
|
|
28
|
+
createdByMe: "created_by_me",
|
|
29
|
+
excludeDismissed: "exclude_dismissed",
|
|
30
|
+
excludeTriggered: "exclude_triggered",
|
|
31
|
+
sort: "sort",
|
|
32
|
+
direction: "direction"
|
|
33
|
+
};
|
|
34
|
+
const LEGACY_THREAD_LIST_FILTERS = /* @__PURE__ */ new Set([
|
|
35
|
+
"search",
|
|
36
|
+
"exclude_triggered",
|
|
37
|
+
"app_id",
|
|
38
|
+
"start_channel",
|
|
39
|
+
"created_after",
|
|
40
|
+
"include_pull_requests"
|
|
41
|
+
]);
|
|
42
|
+
function normalizeSessionsQuery(query) {
|
|
43
|
+
var _a;
|
|
44
|
+
const out = {};
|
|
45
|
+
const search = (_a = query.search) == null ? void 0 : _a.trim();
|
|
46
|
+
if (search) out.search = search;
|
|
47
|
+
const list = (values) => {
|
|
48
|
+
if (!values || values.length === 0) return void 0;
|
|
49
|
+
return [...new Set(values)].sort();
|
|
50
|
+
};
|
|
51
|
+
const collabAgentIds = list(query.collabAgentIds);
|
|
52
|
+
if (collabAgentIds) out.collabAgentIds = collabAgentIds;
|
|
53
|
+
const collabChannelIds = list(query.collabChannelIds);
|
|
54
|
+
if (collabChannelIds && collabAgentIds) out.collabChannelIds = collabChannelIds;
|
|
55
|
+
const startChannels = list(query.startChannels);
|
|
56
|
+
if (startChannels) out.startChannels = startChannels;
|
|
57
|
+
for (const bound of ["createdAfter", "createdBefore", "updatedAfter", "updatedBefore"]) {
|
|
58
|
+
const value = query[bound];
|
|
59
|
+
if (value) out[bound] = value;
|
|
60
|
+
}
|
|
61
|
+
if (query.favoritesOnly) out.favoritesOnly = true;
|
|
62
|
+
if (query.unreadOnly) out.unreadOnly = true;
|
|
63
|
+
const runStatuses = list(query.runStatuses);
|
|
64
|
+
if (runStatuses) out.runStatuses = runStatuses;
|
|
65
|
+
const sessionStatuses = list(query.sessionStatuses);
|
|
66
|
+
if (sessionStatuses) out.sessionStatuses = sessionStatuses;
|
|
67
|
+
if (query.hasPullRequests !== void 0) out.hasPullRequests = query.hasPullRequests;
|
|
68
|
+
if (query.createdByMe !== void 0) out.createdByMe = query.createdByMe;
|
|
69
|
+
if (query.excludeDismissed) out.excludeDismissed = true;
|
|
70
|
+
if (query.excludeTriggered) out.excludeTriggered = true;
|
|
71
|
+
if (query.sort && query.sort !== "updated") out.sort = query.sort;
|
|
72
|
+
if (query.direction && query.direction !== "desc") out.direction = query.direction;
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
function sessionsQueryKey(query) {
|
|
76
|
+
const normalized = normalizeSessionsQuery(query);
|
|
77
|
+
return JSON.stringify(
|
|
78
|
+
Object.keys(normalized).sort().map((key) => [key, normalized[key]])
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
function sessionsQueryFromKey(key) {
|
|
82
|
+
const entries = JSON.parse(key);
|
|
83
|
+
if (!Array.isArray(entries)) return {};
|
|
84
|
+
const query = {};
|
|
85
|
+
for (const entry of entries) {
|
|
86
|
+
if (Array.isArray(entry) && typeof entry[0] === "string") query[entry[0]] = entry[1];
|
|
87
|
+
}
|
|
88
|
+
return normalizeSessionsQuery(query);
|
|
89
|
+
}
|
|
90
|
+
function activeSessionsQueryFields(query) {
|
|
91
|
+
const normalized = normalizeSessionsQuery(query);
|
|
92
|
+
return Object.keys(SERVER_FIELD).filter(
|
|
93
|
+
(field) => normalized[field] !== void 0
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
function unavailableSessionsQueryFields(options) {
|
|
97
|
+
const supported = options.supportedFilters ?? LEGACY_THREAD_LIST_FILTERS;
|
|
98
|
+
const testable = {
|
|
99
|
+
includePullRequests: options.includePullRequests,
|
|
100
|
+
rowsCarryCreatedByMe: options.supportedFilters !== null
|
|
101
|
+
};
|
|
102
|
+
return Object.keys(SERVER_FIELD).filter(
|
|
103
|
+
(field) => field !== "sort" && field !== "direction" && !supported.has(SERVER_FIELD[field]) && !locallyTestable(field, testable)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
function locallyTestable(field, options) {
|
|
107
|
+
switch (field) {
|
|
108
|
+
case "excludeDismissed":
|
|
109
|
+
return false;
|
|
110
|
+
case "hasPullRequests":
|
|
111
|
+
return options.includePullRequests;
|
|
112
|
+
case "createdByMe":
|
|
113
|
+
return options.rowsCarryCreatedByMe;
|
|
114
|
+
default:
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function planSessionsQuery(query, options) {
|
|
119
|
+
const normalized = normalizeSessionsQuery(query);
|
|
120
|
+
const supported = options.supportedFilters ?? LEGACY_THREAD_LIST_FILTERS;
|
|
121
|
+
const rowsCarryCreatedByMe = options.supportedFilters !== null;
|
|
122
|
+
const body = {};
|
|
123
|
+
const degraded = [];
|
|
124
|
+
const unavailable = [];
|
|
125
|
+
const local = {};
|
|
126
|
+
const assignLocal = (field) => {
|
|
127
|
+
local[field] = normalized[field];
|
|
128
|
+
};
|
|
129
|
+
for (const field of activeSessionsQueryFields(normalized)) {
|
|
130
|
+
const serverField = SERVER_FIELD[field];
|
|
131
|
+
if (supported.has(serverField)) {
|
|
132
|
+
Object.assign(body, { [serverField]: normalized[field] });
|
|
133
|
+
if (field !== "search" && locallyTestable(field, {
|
|
134
|
+
includePullRequests: options.includePullRequests,
|
|
135
|
+
rowsCarryCreatedByMe
|
|
136
|
+
})) {
|
|
137
|
+
assignLocal(field);
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (field === "sort" || field === "direction") {
|
|
142
|
+
degraded.push(field);
|
|
143
|
+
assignLocal(field);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (locallyTestable(field, {
|
|
147
|
+
includePullRequests: options.includePullRequests,
|
|
148
|
+
rowsCarryCreatedByMe
|
|
149
|
+
})) {
|
|
150
|
+
degraded.push(field);
|
|
151
|
+
assignLocal(field);
|
|
152
|
+
} else {
|
|
153
|
+
unavailable.push(field);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (normalized.sort) local.sort = normalized.sort;
|
|
157
|
+
if (normalized.direction) local.direction = normalized.direction;
|
|
158
|
+
return { body, degraded, unavailable, local };
|
|
159
|
+
}
|
|
160
|
+
function timestamp(value) {
|
|
161
|
+
if (!value) return null;
|
|
162
|
+
const parsed = Date.parse(value);
|
|
163
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
164
|
+
}
|
|
165
|
+
function withinBounds(value, after, before) {
|
|
166
|
+
if (after === void 0 && before === void 0) return true;
|
|
167
|
+
const at = timestamp(value);
|
|
168
|
+
if (at === null) return false;
|
|
169
|
+
const afterMs = timestamp(after);
|
|
170
|
+
const beforeMs = timestamp(before);
|
|
171
|
+
if (afterMs !== null && at < afterMs) return false;
|
|
172
|
+
if (beforeMs !== null && at >= beforeMs) return false;
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
function matchesSessionsQuery(row, query) {
|
|
176
|
+
var _a;
|
|
177
|
+
if (query.search && !(row.title ?? "").toLowerCase().includes(query.search.toLowerCase())) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
if (query.collabAgentIds && !query.collabAgentIds.includes(row.collabAgentId ?? "")) return false;
|
|
181
|
+
if (query.collabChannelIds) {
|
|
182
|
+
const channel = row.collabChannelId || DEFAULT_COLLAB_CHANNEL;
|
|
183
|
+
if (!query.collabChannelIds.includes(channel)) return false;
|
|
184
|
+
}
|
|
185
|
+
if (query.startChannels && !query.startChannels.includes(row.sourceChannel ?? "")) return false;
|
|
186
|
+
if (!withinBounds(row.createdAt, query.createdAfter, query.createdBefore)) return false;
|
|
187
|
+
if (!withinBounds(row.updatedAt, query.updatedAfter, query.updatedBefore)) return false;
|
|
188
|
+
if (query.favoritesOnly && row.isFavorited !== true) return false;
|
|
189
|
+
if (query.unreadOnly && !row.isUnread) return false;
|
|
190
|
+
if (query.runStatuses && !query.runStatuses.includes(row.runStatus ?? "")) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
if (query.sessionStatuses && !query.sessionStatuses.includes(row.sessionStatus ?? "")) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
if (query.hasPullRequests !== void 0 && row.pullRequests !== void 0 && row.pullRequests !== null) {
|
|
197
|
+
if (query.hasPullRequests !== row.pullRequests.length > 0) return false;
|
|
198
|
+
}
|
|
199
|
+
if (query.createdByMe !== void 0 && row.createdByMe !== void 0) {
|
|
200
|
+
if (query.createdByMe !== row.createdByMe) return false;
|
|
201
|
+
}
|
|
202
|
+
if (query.excludeTriggered) {
|
|
203
|
+
const trigger = ((_a = row.triggerType) == null ? void 0 : _a.trim().toLowerCase()) ?? "";
|
|
204
|
+
if (trigger && trigger !== "manual") return false;
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
function sortSessions(rows, query) {
|
|
209
|
+
const key = query.sort === "created" ? "createdAt" : "updatedAt";
|
|
210
|
+
const sign = query.direction === "asc" ? 1 : -1;
|
|
211
|
+
return rows.map((row, index) => ({ row, index, at: timestamp(row[key]) })).sort((a, b) => {
|
|
212
|
+
if (a.at === null || b.at === null) {
|
|
213
|
+
if (a.at === b.at) return a.index - b.index;
|
|
214
|
+
return a.at === null ? 1 : -1;
|
|
215
|
+
}
|
|
216
|
+
return (a.at - b.at) * sign || a.index - b.index;
|
|
217
|
+
}).map(({ row }) => row);
|
|
218
|
+
}
|
|
219
|
+
function supportedFiltersFromResponse(supported) {
|
|
220
|
+
return Array.isArray(supported) ? new Set(supported) : null;
|
|
221
|
+
}
|
|
222
|
+
exports.DEFAULT_COLLAB_CHANNEL = DEFAULT_COLLAB_CHANNEL;
|
|
223
|
+
exports.LEGACY_THREAD_LIST_FILTERS = LEGACY_THREAD_LIST_FILTERS;
|
|
224
|
+
exports.SESSION_RUN_STATUSES = SESSION_RUN_STATUSES;
|
|
225
|
+
exports.SESSION_SESSION_STATUSES = SESSION_SESSION_STATUSES;
|
|
226
|
+
exports.activeSessionsQueryFields = activeSessionsQueryFields;
|
|
227
|
+
exports.matchesSessionsQuery = matchesSessionsQuery;
|
|
228
|
+
exports.normalizeSessionsQuery = normalizeSessionsQuery;
|
|
229
|
+
exports.planSessionsQuery = planSessionsQuery;
|
|
230
|
+
exports.sessionsQueryFromKey = sessionsQueryFromKey;
|
|
231
|
+
exports.sessionsQueryKey = sessionsQueryKey;
|
|
232
|
+
exports.sortSessions = sortSessions;
|
|
233
|
+
exports.supportedFiltersFromResponse = supportedFiltersFromResponse;
|
|
234
|
+
exports.unavailableSessionsQueryFields = unavailableSessionsQueryFields;
|
|
235
|
+
//# sourceMappingURL=sessions-query.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-query.cjs","sources":["../../src/threads/sessions-query.ts"],"sourcesContent":["/**\n * The session-list query behind `SessionsPage` and `Inbox`: what the person\n * asked to see, how it maps onto `POST /api/conversations/threads/list`, and\n * what happens on a server that cannot apply part of it.\n *\n * Every filter is applied by the server as a predicate of its one page\n * statement, so a page is exact and `Load more` continues the filtered set.\n * The server ignores request fields it does not know, so a filter an older\n * agora cannot apply comes back unapplied; the list response names the fields\n * the server applies (`supported_filters`). `planSessionsQuery` splits a query\n * into what to send, what to apply to the loaded rows instead (`degraded`:\n * exact per loaded page, but a page may come back short), and what cannot be\n * applied at all on that server (`unavailable`: the UI disables those\n * controls).\n */\nimport type { ConversationSummary } from '@athenaintel/agent-runtime';\nimport type { ThreadListFilterBody } from './api';\n\nexport type AthenaSessionsSort = 'updated' | 'created';\nexport type AthenaSessionsDirection = 'desc' | 'asc';\n\n/** The collab-channel token for an agent's default channel (sessions with no channel stamp). */\nexport const DEFAULT_COLLAB_CHANNEL = 'default';\n\n/** status_v2 run statuses, in the order a status filter offers them. */\nexport const SESSION_RUN_STATUSES = [\n 'needs_input',\n 'running',\n 'queued',\n 'scheduled',\n 'completed',\n 'failed',\n 'canceled',\n] as const;\nexport type SessionRunStatus = (typeof SESSION_RUN_STATUSES)[number];\n\n/** status_v2 session statuses. */\nexport const SESSION_SESSION_STATUSES = ['active', 'needs_input', 'idle', 'error'] as const;\nexport type SessionSessionStatus = (typeof SESSION_SESSION_STATUSES)[number];\n\n/**\n * What a session list shows. Multi-value fields match any of their values;\n * different fields combine (AND). Unset fields do not filter.\n */\nexport interface AthenaSessionsQuery {\n /** Case-insensitive title search. */\n search?: string;\n /** Collab agents the session started as. */\n collabAgentIds?: readonly string[];\n /** Agent channels (modes); `DEFAULT_COLLAB_CHANNEL` is the agent's default channel. Needs `collabAgentIds`. */\n collabChannelIds?: readonly string[];\n /** Channels the session started from (`web`, `github`, `email`, …). */\n startChannels?: readonly string[];\n /** ISO 8601 bounds; `*After` inclusive, `*Before` exclusive. */\n createdAfter?: string;\n createdBefore?: string;\n updatedAfter?: string;\n updatedBefore?: string;\n /** Only sessions the viewer pinned. */\n favoritesOnly?: boolean;\n /** Only sessions the viewer has not read since they last changed. */\n unreadOnly?: boolean;\n /** status_v2 run statuses (`running` excludes runs silent for 12 hours, as every list does). */\n runStatuses?: readonly SessionRunStatus[];\n /** status_v2 session statuses. */\n sessionStatuses?: readonly SessionSessionStatus[];\n /** `true` only sessions that opened a pull request; `false` only those that opened none. */\n hasPullRequests?: boolean;\n /** `true` only the viewer's own sessions; `false` only sessions shared with them. */\n createdByMe?: boolean;\n /** Leave out sessions dismissed from the inbox. */\n excludeDismissed?: boolean;\n /** Hide sessions started by an automation (a schedule, an email, …). */\n excludeTriggered?: boolean;\n /** Sort key (default `updated`). */\n sort?: AthenaSessionsSort;\n /** Sort direction (default `desc`, newest first). */\n direction?: AthenaSessionsDirection;\n}\n\nexport type AthenaSessionsQueryField = keyof AthenaSessionsQuery;\n\n/** The REST field each query field travels as. */\nconst SERVER_FIELD: Record<AthenaSessionsQueryField, string> = {\n search: 'search',\n collabAgentIds: 'collab_agent_ids',\n collabChannelIds: 'collab_channel_ids',\n startChannels: 'start_channels',\n createdAfter: 'created_after',\n createdBefore: 'created_before',\n updatedAfter: 'updated_after',\n updatedBefore: 'updated_before',\n favoritesOnly: 'favorites_only',\n unreadOnly: 'unread_only',\n runStatuses: 'run_statuses',\n sessionStatuses: 'session_statuses',\n hasPullRequests: 'has_pull_requests',\n createdByMe: 'created_by_me',\n excludeDismissed: 'exclude_dismissed',\n excludeTriggered: 'exclude_triggered',\n sort: 'sort',\n direction: 'direction',\n};\n\n/**\n * The fields every thread-list server has applied, including those that\n * predate `supported_filters` — what a response without the list supports.\n */\nexport const LEGACY_THREAD_LIST_FILTERS: ReadonlySet<string> = new Set([\n 'search',\n 'exclude_triggered',\n 'app_id',\n 'start_channel',\n 'created_after',\n 'include_pull_requests',\n]);\n\n/** The query with unset, empty and default-valued fields dropped and arrays canonicalized. */\nexport function normalizeSessionsQuery(query: AthenaSessionsQuery): AthenaSessionsQuery {\n const out: AthenaSessionsQuery = {};\n const search = query.search?.trim();\n if (search) out.search = search;\n const list = <T extends string>(values: readonly T[] | undefined): T[] | undefined => {\n if (!values || values.length === 0) return undefined;\n return [...new Set(values)].sort();\n };\n const collabAgentIds = list(query.collabAgentIds);\n if (collabAgentIds) out.collabAgentIds = collabAgentIds;\n const collabChannelIds = list(query.collabChannelIds);\n if (collabChannelIds && collabAgentIds) out.collabChannelIds = collabChannelIds;\n const startChannels = list(query.startChannels);\n if (startChannels) out.startChannels = startChannels;\n for (const bound of ['createdAfter', 'createdBefore', 'updatedAfter', 'updatedBefore'] as const) {\n const value = query[bound];\n if (value) out[bound] = value;\n }\n if (query.favoritesOnly) out.favoritesOnly = true;\n if (query.unreadOnly) out.unreadOnly = true;\n const runStatuses = list(query.runStatuses);\n if (runStatuses) out.runStatuses = runStatuses;\n const sessionStatuses = list(query.sessionStatuses);\n if (sessionStatuses) out.sessionStatuses = sessionStatuses;\n if (query.hasPullRequests !== undefined) out.hasPullRequests = query.hasPullRequests;\n if (query.createdByMe !== undefined) out.createdByMe = query.createdByMe;\n if (query.excludeDismissed) out.excludeDismissed = true;\n if (query.excludeTriggered) out.excludeTriggered = true;\n if (query.sort && query.sort !== 'updated') out.sort = query.sort;\n if (query.direction && query.direction !== 'desc') out.direction = query.direction;\n return out;\n}\n\n/** A stable cache identity: semantically equal queries share one key. */\nexport function sessionsQueryKey(query: AthenaSessionsQuery): string {\n const normalized = normalizeSessionsQuery(query) as Record<string, unknown>;\n return JSON.stringify(\n Object.keys(normalized)\n .sort()\n .map((key) => [key, normalized[key]]),\n );\n}\n\n/** The normalized query a `sessionsQueryKey` stands for. */\nexport function sessionsQueryFromKey(key: string): AthenaSessionsQuery {\n const entries: unknown = JSON.parse(key);\n if (!Array.isArray(entries)) return {};\n const query: Record<string, unknown> = {};\n for (const entry of entries) {\n if (Array.isArray(entry) && typeof entry[0] === 'string') query[entry[0]] = entry[1];\n }\n return normalizeSessionsQuery(query as AthenaSessionsQuery);\n}\n\n/** The fields a query sets (after normalization), in a fixed order. */\nexport function activeSessionsQueryFields(query: AthenaSessionsQuery): AthenaSessionsQueryField[] {\n const normalized = normalizeSessionsQuery(query);\n return (Object.keys(SERVER_FIELD) as AthenaSessionsQueryField[]).filter(\n (field) => normalized[field] !== undefined,\n );\n}\n\n/**\n * Every query field a backend can apply nowhere — what a filter UI disables\n * whatever is selected. `supportedFilters` as for `planSessionsQuery`.\n */\nexport function unavailableSessionsQueryFields(options: {\n supportedFilters: ReadonlySet<string> | null;\n includePullRequests: boolean;\n}): AthenaSessionsQueryField[] {\n const supported = options.supportedFilters ?? LEGACY_THREAD_LIST_FILTERS;\n const testable = {\n includePullRequests: options.includePullRequests,\n rowsCarryCreatedByMe: options.supportedFilters !== null,\n };\n return (Object.keys(SERVER_FIELD) as AthenaSessionsQueryField[]).filter(\n (field) =>\n field !== 'sort' &&\n field !== 'direction' &&\n !supported.has(SERVER_FIELD[field]) &&\n !locallyTestable(field, testable),\n );\n}\n\nexport interface SessionsQueryPlan {\n /** Sent to the server (`search` / `exclude_triggered` and `ThreadListFilterBody`). */\n body: ThreadListFilterBody;\n /** Applied to the loaded rows because the server cannot: exact per page, pages may be short. */\n degraded: AthenaSessionsQueryField[];\n /** Cannot be applied on this server at all (the rows carry nothing to test). */\n unavailable: AthenaSessionsQueryField[];\n /** The part of the query the loaded rows are checked against (`matchesSessionsQuery`). */\n local: AthenaSessionsQuery;\n}\n\n/**\n * Which fields a row can be tested on locally, given what this list fetches:\n * pull-request state only rides rows when the list asked for it, and\n * `createdByMe` only on servers new enough to send it.\n */\nfunction locallyTestable(\n field: AthenaSessionsQueryField,\n options: { includePullRequests: boolean; rowsCarryCreatedByMe: boolean },\n): boolean {\n switch (field) {\n case 'excludeDismissed':\n return false;\n case 'hasPullRequests':\n return options.includePullRequests;\n case 'createdByMe':\n return options.rowsCarryCreatedByMe;\n default:\n return true;\n }\n}\n\n/**\n * Split a query for one server. `supportedFilters` is the server's\n * `supported_filters` (`null` for a server that predates it: only\n * `LEGACY_THREAD_LIST_FILTERS` apply there).\n */\nexport function planSessionsQuery(\n query: AthenaSessionsQuery,\n options: { supportedFilters: ReadonlySet<string> | null; includePullRequests: boolean },\n): SessionsQueryPlan {\n const normalized = normalizeSessionsQuery(query);\n const supported = options.supportedFilters ?? LEGACY_THREAD_LIST_FILTERS;\n // A server that echoes `supported_filters` also sends `created_by_me` on rows.\n const rowsCarryCreatedByMe = options.supportedFilters !== null;\n const body: SessionsQueryPlan['body'] = {};\n const degraded: AthenaSessionsQueryField[] = [];\n const unavailable: AthenaSessionsQueryField[] = [];\n const local: AthenaSessionsQuery = {};\n const assignLocal = <K extends AthenaSessionsQueryField>(field: K) => {\n local[field] = normalized[field];\n };\n for (const field of activeSessionsQueryFields(normalized)) {\n const serverField = SERVER_FIELD[field];\n if (supported.has(serverField)) {\n Object.assign(body, { [serverField]: normalized[field] });\n // Server-applied fields are still checked on the loaded rows, so a row\n // a live push changed (read, unpinned, finished) leaves a view it no\n // longer matches; the server already guaranteed the fetched page. The\n // title search is not: the server matches the stored title, while a\n // row shows a display title that may come from its last message.\n if (\n field !== 'search' &&\n locallyTestable(field, {\n includePullRequests: options.includePullRequests,\n rowsCarryCreatedByMe,\n })\n ) {\n assignLocal(field);\n }\n continue;\n }\n if (field === 'sort' || field === 'direction') {\n // Sorting the loaded rows is always possible; it is degraded only in\n // that older pages arrived in the server's default order.\n degraded.push(field);\n assignLocal(field);\n continue;\n }\n if (\n locallyTestable(field, {\n includePullRequests: options.includePullRequests,\n rowsCarryCreatedByMe,\n })\n ) {\n degraded.push(field);\n assignLocal(field);\n } else {\n unavailable.push(field);\n }\n }\n // Sort/direction also order the loaded rows when the server applied them,\n // so a live update keeps its place.\n if (normalized.sort) local.sort = normalized.sort;\n if (normalized.direction) local.direction = normalized.direction;\n return { body, degraded, unavailable, local };\n}\n\nfunction timestamp(value: string | null | undefined): number | null {\n if (!value) return null;\n const parsed = Date.parse(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction withinBounds(\n value: string | null | undefined,\n after: string | undefined,\n before: string | undefined,\n): boolean {\n if (after === undefined && before === undefined) return true;\n const at = timestamp(value);\n if (at === null) return false;\n const afterMs = timestamp(after);\n const beforeMs = timestamp(before);\n if (afterMs !== null && at < afterMs) return false;\n if (beforeMs !== null && at >= beforeMs) return false;\n return true;\n}\n\n/** The fields of a row `matchesSessionsQuery` reads. */\nexport type SessionsQueryRow = Pick<\n ConversationSummary,\n | 'title'\n | 'updatedAt'\n | 'createdAt'\n | 'sourceChannel'\n | 'triggerType'\n | 'isUnread'\n | 'isFavorited'\n | 'runStatus'\n | 'sessionStatus'\n | 'collabAgentId'\n | 'collabChannelId'\n | 'pullRequests'\n | 'createdByMe'\n>;\n\n/**\n * Whether a loaded row matches the locally applicable part of a query\n * (`SessionsQueryPlan.local`). Fields the row does not carry pass, so a\n * missing value never hides a row the server returned.\n */\nexport function matchesSessionsQuery(row: SessionsQueryRow, query: AthenaSessionsQuery): boolean {\n if (query.search && !(row.title ?? '').toLowerCase().includes(query.search.toLowerCase())) {\n return false;\n }\n if (query.collabAgentIds && !query.collabAgentIds.includes(row.collabAgentId ?? '')) return false;\n if (query.collabChannelIds) {\n const channel = row.collabChannelId || DEFAULT_COLLAB_CHANNEL;\n if (!query.collabChannelIds.includes(channel)) return false;\n }\n if (query.startChannels && !query.startChannels.includes(row.sourceChannel ?? '')) return false;\n if (!withinBounds(row.createdAt, query.createdAfter, query.createdBefore)) return false;\n if (!withinBounds(row.updatedAt, query.updatedAfter, query.updatedBefore)) return false;\n if (query.favoritesOnly && row.isFavorited !== true) return false;\n if (query.unreadOnly && !row.isUnread) return false;\n if (query.runStatuses && !(query.runStatuses as readonly string[]).includes(row.runStatus ?? '')) {\n return false;\n }\n if (\n query.sessionStatuses &&\n !(query.sessionStatuses as readonly string[]).includes(row.sessionStatus ?? '')\n ) {\n return false;\n }\n if (query.hasPullRequests !== undefined && row.pullRequests !== undefined && row.pullRequests !== null) {\n if (query.hasPullRequests !== row.pullRequests.length > 0) return false;\n }\n if (query.createdByMe !== undefined && row.createdByMe !== undefined) {\n if (query.createdByMe !== row.createdByMe) return false;\n }\n if (query.excludeTriggered) {\n const trigger = row.triggerType?.trim().toLowerCase() ?? '';\n if (trigger && trigger !== 'manual') return false;\n }\n return true;\n}\n\n/** Rows in the query's order (stable; unparseable times last). */\nexport function sortSessions<T extends Pick<ConversationSummary, 'updatedAt' | 'createdAt'>>(\n rows: readonly T[],\n query: Pick<AthenaSessionsQuery, 'sort' | 'direction'>,\n): T[] {\n const key = query.sort === 'created' ? 'createdAt' : 'updatedAt';\n const sign = query.direction === 'asc' ? 1 : -1;\n return rows\n .map((row, index) => ({ row, index, at: timestamp(row[key]) }))\n .sort((a, b) => {\n if (a.at === null || b.at === null) {\n if (a.at === b.at) return a.index - b.index;\n return a.at === null ? 1 : -1;\n }\n return (a.at - b.at) * sign || a.index - b.index;\n })\n .map(({ row }) => row);\n}\n\n/** The server fields a response says it applies, or `null` when it predates the list. */\nexport function supportedFiltersFromResponse(\n supported: readonly string[] | undefined,\n): ReadonlySet<string> | null {\n return Array.isArray(supported) ? new Set(supported) : null;\n}\n"],"names":[],"mappings":";;AAsBO,MAAM,yBAAyB;AAG/B,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,2BAA2B,CAAC,UAAU,eAAe,QAAQ,OAAO;AA8CjF,MAAM,eAAyD;AAAA,EAC7D,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,WAAW;AACb;AAMO,MAAM,iDAAsD,IAAI;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,SAAS,uBAAuB,OAAiD;;AACtF,QAAM,MAA2B,CAAA;AACjC,QAAM,UAAS,WAAM,WAAN,mBAAc;AAC7B,MAAI,YAAY,SAAS;AACzB,QAAM,OAAO,CAAmB,WAAsD;AACpF,QAAI,CAAC,UAAU,OAAO,WAAW,EAAG,QAAO;AAC3C,WAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,KAAA;AAAA,EAC9B;AACA,QAAM,iBAAiB,KAAK,MAAM,cAAc;AAChD,MAAI,oBAAoB,iBAAiB;AACzC,QAAM,mBAAmB,KAAK,MAAM,gBAAgB;AACpD,MAAI,oBAAoB,eAAgB,KAAI,mBAAmB;AAC/D,QAAM,gBAAgB,KAAK,MAAM,aAAa;AAC9C,MAAI,mBAAmB,gBAAgB;AACvC,aAAW,SAAS,CAAC,gBAAgB,iBAAiB,gBAAgB,eAAe,GAAY;AAC/F,UAAM,QAAQ,MAAM,KAAK;AACzB,QAAI,MAAO,KAAI,KAAK,IAAI;AAAA,EAC1B;AACA,MAAI,MAAM,cAAe,KAAI,gBAAgB;AAC7C,MAAI,MAAM,WAAY,KAAI,aAAa;AACvC,QAAM,cAAc,KAAK,MAAM,WAAW;AAC1C,MAAI,iBAAiB,cAAc;AACnC,QAAM,kBAAkB,KAAK,MAAM,eAAe;AAClD,MAAI,qBAAqB,kBAAkB;AAC3C,MAAI,MAAM,oBAAoB,OAAW,KAAI,kBAAkB,MAAM;AACrE,MAAI,MAAM,gBAAgB,OAAW,KAAI,cAAc,MAAM;AAC7D,MAAI,MAAM,iBAAkB,KAAI,mBAAmB;AACnD,MAAI,MAAM,iBAAkB,KAAI,mBAAmB;AACnD,MAAI,MAAM,QAAQ,MAAM,SAAS,UAAW,KAAI,OAAO,MAAM;AAC7D,MAAI,MAAM,aAAa,MAAM,cAAc,OAAQ,KAAI,YAAY,MAAM;AACzE,SAAO;AACT;AAGO,SAAS,iBAAiB,OAAoC;AACnE,QAAM,aAAa,uBAAuB,KAAK;AAC/C,SAAO,KAAK;AAAA,IACV,OAAO,KAAK,UAAU,EACnB,OACA,IAAI,CAAC,QAAQ,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC;AAAA,EAAA;AAE1C;AAGO,SAAS,qBAAqB,KAAkC;AACrE,QAAM,UAAmB,KAAK,MAAM,GAAG;AACvC,MAAI,CAAC,MAAM,QAAQ,OAAO,UAAU,CAAA;AACpC,QAAM,QAAiC,CAAA;AACvC,aAAW,SAAS,SAAS;AAC3B,QAAI,MAAM,QAAQ,KAAK,KAAK,OAAO,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC;AAAA,EACrF;AACA,SAAO,uBAAuB,KAA4B;AAC5D;AAGO,SAAS,0BAA0B,OAAwD;AAChG,QAAM,aAAa,uBAAuB,KAAK;AAC/C,SAAQ,OAAO,KAAK,YAAY,EAAiC;AAAA,IAC/D,CAAC,UAAU,WAAW,KAAK,MAAM;AAAA,EAAA;AAErC;AAMO,SAAS,+BAA+B,SAGhB;AAC7B,QAAM,YAAY,QAAQ,oBAAoB;AAC9C,QAAM,WAAW;AAAA,IACf,qBAAqB,QAAQ;AAAA,IAC7B,sBAAsB,QAAQ,qBAAqB;AAAA,EAAA;AAErD,SAAQ,OAAO,KAAK,YAAY,EAAiC;AAAA,IAC/D,CAAC,UACC,UAAU,UACV,UAAU,eACV,CAAC,UAAU,IAAI,aAAa,KAAK,CAAC,KAClC,CAAC,gBAAgB,OAAO,QAAQ;AAAA,EAAA;AAEtC;AAkBA,SAAS,gBACP,OACA,SACS;AACT,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,QAAQ;AAAA,IACjB,KAAK;AACH,aAAO,QAAQ;AAAA,IACjB;AACE,aAAO;AAAA,EAAA;AAEb;AAOO,SAAS,kBACd,OACA,SACmB;AACnB,QAAM,aAAa,uBAAuB,KAAK;AAC/C,QAAM,YAAY,QAAQ,oBAAoB;AAE9C,QAAM,uBAAuB,QAAQ,qBAAqB;AAC1D,QAAM,OAAkC,CAAA;AACxC,QAAM,WAAuC,CAAA;AAC7C,QAAM,cAA0C,CAAA;AAChD,QAAM,QAA6B,CAAA;AACnC,QAAM,cAAc,CAAqC,UAAa;AACpE,UAAM,KAAK,IAAI,WAAW,KAAK;AAAA,EACjC;AACA,aAAW,SAAS,0BAA0B,UAAU,GAAG;AACzD,UAAM,cAAc,aAAa,KAAK;AACtC,QAAI,UAAU,IAAI,WAAW,GAAG;AAC9B,aAAO,OAAO,MAAM,EAAE,CAAC,WAAW,GAAG,WAAW,KAAK,GAAG;AAMxD,UACE,UAAU,YACV,gBAAgB,OAAO;AAAA,QACrB,qBAAqB,QAAQ;AAAA,QAC7B;AAAA,MAAA,CACD,GACD;AACA,oBAAY,KAAK;AAAA,MACnB;AACA;AAAA,IACF;AACA,QAAI,UAAU,UAAU,UAAU,aAAa;AAG7C,eAAS,KAAK,KAAK;AACnB,kBAAY,KAAK;AACjB;AAAA,IACF;AACA,QACE,gBAAgB,OAAO;AAAA,MACrB,qBAAqB,QAAQ;AAAA,MAC7B;AAAA,IAAA,CACD,GACD;AACA,eAAS,KAAK,KAAK;AACnB,kBAAY,KAAK;AAAA,IACnB,OAAO;AACL,kBAAY,KAAK,KAAK;AAAA,IACxB;AAAA,EACF;AAGA,MAAI,WAAW,KAAM,OAAM,OAAO,WAAW;AAC7C,MAAI,WAAW,UAAW,OAAM,YAAY,WAAW;AACvD,SAAO,EAAE,MAAM,UAAU,aAAa,MAAA;AACxC;AAEA,SAAS,UAAU,OAAiD;AAClE,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAEA,SAAS,aACP,OACA,OACA,QACS;AACT,MAAI,UAAU,UAAa,WAAW,OAAW,QAAO;AACxD,QAAM,KAAK,UAAU,KAAK;AAC1B,MAAI,OAAO,KAAM,QAAO;AACxB,QAAM,UAAU,UAAU,KAAK;AAC/B,QAAM,WAAW,UAAU,MAAM;AACjC,MAAI,YAAY,QAAQ,KAAK,QAAS,QAAO;AAC7C,MAAI,aAAa,QAAQ,MAAM,SAAU,QAAO;AAChD,SAAO;AACT;AAyBO,SAAS,qBAAqB,KAAuB,OAAqC;;AAC/F,MAAI,MAAM,UAAU,EAAE,IAAI,SAAS,IAAI,YAAA,EAAc,SAAS,MAAM,OAAO,YAAA,CAAa,GAAG;AACzF,WAAO;AAAA,EACT;AACA,MAAI,MAAM,kBAAkB,CAAC,MAAM,eAAe,SAAS,IAAI,iBAAiB,EAAE,EAAG,QAAO;AAC5F,MAAI,MAAM,kBAAkB;AAC1B,UAAM,UAAU,IAAI,mBAAmB;AACvC,QAAI,CAAC,MAAM,iBAAiB,SAAS,OAAO,EAAG,QAAO;AAAA,EACxD;AACA,MAAI,MAAM,iBAAiB,CAAC,MAAM,cAAc,SAAS,IAAI,iBAAiB,EAAE,EAAG,QAAO;AAC1F,MAAI,CAAC,aAAa,IAAI,WAAW,MAAM,cAAc,MAAM,aAAa,EAAG,QAAO;AAClF,MAAI,CAAC,aAAa,IAAI,WAAW,MAAM,cAAc,MAAM,aAAa,EAAG,QAAO;AAClF,MAAI,MAAM,iBAAiB,IAAI,gBAAgB,KAAM,QAAO;AAC5D,MAAI,MAAM,cAAc,CAAC,IAAI,SAAU,QAAO;AAC9C,MAAI,MAAM,eAAe,CAAE,MAAM,YAAkC,SAAS,IAAI,aAAa,EAAE,GAAG;AAChG,WAAO;AAAA,EACT;AACA,MACE,MAAM,mBACN,CAAE,MAAM,gBAAsC,SAAS,IAAI,iBAAiB,EAAE,GAC9E;AACA,WAAO;AAAA,EACT;AACA,MAAI,MAAM,oBAAoB,UAAa,IAAI,iBAAiB,UAAa,IAAI,iBAAiB,MAAM;AACtG,QAAI,MAAM,oBAAoB,IAAI,aAAa,SAAS,EAAG,QAAO;AAAA,EACpE;AACA,MAAI,MAAM,gBAAgB,UAAa,IAAI,gBAAgB,QAAW;AACpE,QAAI,MAAM,gBAAgB,IAAI,YAAa,QAAO;AAAA,EACpD;AACA,MAAI,MAAM,kBAAkB;AAC1B,UAAM,YAAU,SAAI,gBAAJ,mBAAiB,OAAO,kBAAiB;AACzD,QAAI,WAAW,YAAY,SAAU,QAAO;AAAA,EAC9C;AACA,SAAO;AACT;AAGO,SAAS,aACd,MACA,OACK;AACL,QAAM,MAAM,MAAM,SAAS,YAAY,cAAc;AACrD,QAAM,OAAO,MAAM,cAAc,QAAQ,IAAI;AAC7C,SAAO,KACJ,IAAI,CAAC,KAAK,WAAW,EAAE,KAAK,OAAO,IAAI,UAAU,IAAI,GAAG,CAAC,EAAA,EAAI,EAC7D,KAAK,CAAC,GAAG,MAAM;AACd,QAAI,EAAE,OAAO,QAAQ,EAAE,OAAO,MAAM;AAClC,UAAI,EAAE,OAAO,EAAE,GAAI,QAAO,EAAE,QAAQ,EAAE;AACtC,aAAO,EAAE,OAAO,OAAO,IAAI;AAAA,IAC7B;AACA,YAAQ,EAAE,KAAK,EAAE,MAAM,QAAQ,EAAE,QAAQ,EAAE;AAAA,EAC7C,CAAC,EACA,IAAI,CAAC,EAAE,IAAA,MAAU,GAAG;AACzB;AAGO,SAAS,6BACd,WAC4B;AAC5B,SAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI;AACzD;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session-list query behind `SessionsPage` and `Inbox`: what the person
|
|
3
|
+
* asked to see, how it maps onto `POST /api/conversations/threads/list`, and
|
|
4
|
+
* what happens on a server that cannot apply part of it.
|
|
5
|
+
*
|
|
6
|
+
* Every filter is applied by the server as a predicate of its one page
|
|
7
|
+
* statement, so a page is exact and `Load more` continues the filtered set.
|
|
8
|
+
* The server ignores request fields it does not know, so a filter an older
|
|
9
|
+
* agora cannot apply comes back unapplied; the list response names the fields
|
|
10
|
+
* the server applies (`supported_filters`). `planSessionsQuery` splits a query
|
|
11
|
+
* into what to send, what to apply to the loaded rows instead (`degraded`:
|
|
12
|
+
* exact per loaded page, but a page may come back short), and what cannot be
|
|
13
|
+
* applied at all on that server (`unavailable`: the UI disables those
|
|
14
|
+
* controls).
|
|
15
|
+
*/
|
|
16
|
+
import type { ConversationSummary } from '@athenaintel/agent-runtime';
|
|
17
|
+
import type { ThreadListFilterBody } from './api';
|
|
18
|
+
export type AthenaSessionsSort = 'updated' | 'created';
|
|
19
|
+
export type AthenaSessionsDirection = 'desc' | 'asc';
|
|
20
|
+
/** The collab-channel token for an agent's default channel (sessions with no channel stamp). */
|
|
21
|
+
export declare const DEFAULT_COLLAB_CHANNEL = "default";
|
|
22
|
+
/** status_v2 run statuses, in the order a status filter offers them. */
|
|
23
|
+
export declare const SESSION_RUN_STATUSES: readonly ['needs_input', 'running', 'queued', 'scheduled', 'completed', 'failed', 'canceled'];
|
|
24
|
+
export type SessionRunStatus = (typeof SESSION_RUN_STATUSES)[number];
|
|
25
|
+
/** status_v2 session statuses. */
|
|
26
|
+
export declare const SESSION_SESSION_STATUSES: readonly ['active', 'needs_input', 'idle', 'error'];
|
|
27
|
+
export type SessionSessionStatus = (typeof SESSION_SESSION_STATUSES)[number];
|
|
28
|
+
/**
|
|
29
|
+
* What a session list shows. Multi-value fields match any of their values;
|
|
30
|
+
* different fields combine (AND). Unset fields do not filter.
|
|
31
|
+
*/
|
|
32
|
+
export interface AthenaSessionsQuery {
|
|
33
|
+
/** Case-insensitive title search. */
|
|
34
|
+
search?: string;
|
|
35
|
+
/** Collab agents the session started as. */
|
|
36
|
+
collabAgentIds?: readonly string[];
|
|
37
|
+
/** Agent channels (modes); `DEFAULT_COLLAB_CHANNEL` is the agent's default channel. Needs `collabAgentIds`. */
|
|
38
|
+
collabChannelIds?: readonly string[];
|
|
39
|
+
/** Channels the session started from (`web`, `github`, `email`, …). */
|
|
40
|
+
startChannels?: readonly string[];
|
|
41
|
+
/** ISO 8601 bounds; `*After` inclusive, `*Before` exclusive. */
|
|
42
|
+
createdAfter?: string;
|
|
43
|
+
createdBefore?: string;
|
|
44
|
+
updatedAfter?: string;
|
|
45
|
+
updatedBefore?: string;
|
|
46
|
+
/** Only sessions the viewer pinned. */
|
|
47
|
+
favoritesOnly?: boolean;
|
|
48
|
+
/** Only sessions the viewer has not read since they last changed. */
|
|
49
|
+
unreadOnly?: boolean;
|
|
50
|
+
/** status_v2 run statuses (`running` excludes runs silent for 12 hours, as every list does). */
|
|
51
|
+
runStatuses?: readonly SessionRunStatus[];
|
|
52
|
+
/** status_v2 session statuses. */
|
|
53
|
+
sessionStatuses?: readonly SessionSessionStatus[];
|
|
54
|
+
/** `true` only sessions that opened a pull request; `false` only those that opened none. */
|
|
55
|
+
hasPullRequests?: boolean;
|
|
56
|
+
/** `true` only the viewer's own sessions; `false` only sessions shared with them. */
|
|
57
|
+
createdByMe?: boolean;
|
|
58
|
+
/** Leave out sessions dismissed from the inbox. */
|
|
59
|
+
excludeDismissed?: boolean;
|
|
60
|
+
/** Hide sessions started by an automation (a schedule, an email, …). */
|
|
61
|
+
excludeTriggered?: boolean;
|
|
62
|
+
/** Sort key (default `updated`). */
|
|
63
|
+
sort?: AthenaSessionsSort;
|
|
64
|
+
/** Sort direction (default `desc`, newest first). */
|
|
65
|
+
direction?: AthenaSessionsDirection;
|
|
66
|
+
}
|
|
67
|
+
export type AthenaSessionsQueryField = keyof AthenaSessionsQuery;
|
|
68
|
+
/**
|
|
69
|
+
* The fields every thread-list server has applied, including those that
|
|
70
|
+
* predate `supported_filters` — what a response without the list supports.
|
|
71
|
+
*/
|
|
72
|
+
export declare const LEGACY_THREAD_LIST_FILTERS: ReadonlySet<string>;
|
|
73
|
+
/** The query with unset, empty and default-valued fields dropped and arrays canonicalized. */
|
|
74
|
+
export declare function normalizeSessionsQuery(query: AthenaSessionsQuery): AthenaSessionsQuery;
|
|
75
|
+
/** A stable cache identity: semantically equal queries share one key. */
|
|
76
|
+
export declare function sessionsQueryKey(query: AthenaSessionsQuery): string;
|
|
77
|
+
/** The normalized query a `sessionsQueryKey` stands for. */
|
|
78
|
+
export declare function sessionsQueryFromKey(key: string): AthenaSessionsQuery;
|
|
79
|
+
/** The fields a query sets (after normalization), in a fixed order. */
|
|
80
|
+
export declare function activeSessionsQueryFields(query: AthenaSessionsQuery): AthenaSessionsQueryField[];
|
|
81
|
+
/**
|
|
82
|
+
* Every query field a backend can apply nowhere — what a filter UI disables
|
|
83
|
+
* whatever is selected. `supportedFilters` as for `planSessionsQuery`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function unavailableSessionsQueryFields(options: {
|
|
86
|
+
supportedFilters: ReadonlySet<string> | null;
|
|
87
|
+
includePullRequests: boolean;
|
|
88
|
+
}): AthenaSessionsQueryField[];
|
|
89
|
+
export interface SessionsQueryPlan {
|
|
90
|
+
/** Sent to the server (`search` / `exclude_triggered` and `ThreadListFilterBody`). */
|
|
91
|
+
body: ThreadListFilterBody;
|
|
92
|
+
/** Applied to the loaded rows because the server cannot: exact per page, pages may be short. */
|
|
93
|
+
degraded: AthenaSessionsQueryField[];
|
|
94
|
+
/** Cannot be applied on this server at all (the rows carry nothing to test). */
|
|
95
|
+
unavailable: AthenaSessionsQueryField[];
|
|
96
|
+
/** The part of the query the loaded rows are checked against (`matchesSessionsQuery`). */
|
|
97
|
+
local: AthenaSessionsQuery;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Split a query for one server. `supportedFilters` is the server's
|
|
101
|
+
* `supported_filters` (`null` for a server that predates it: only
|
|
102
|
+
* `LEGACY_THREAD_LIST_FILTERS` apply there).
|
|
103
|
+
*/
|
|
104
|
+
export declare function planSessionsQuery(query: AthenaSessionsQuery, options: {
|
|
105
|
+
supportedFilters: ReadonlySet<string> | null;
|
|
106
|
+
includePullRequests: boolean;
|
|
107
|
+
}): SessionsQueryPlan;
|
|
108
|
+
/** The fields of a row `matchesSessionsQuery` reads. */
|
|
109
|
+
export type SessionsQueryRow = Pick<ConversationSummary, 'title' | 'updatedAt' | 'createdAt' | 'sourceChannel' | 'triggerType' | 'isUnread' | 'isFavorited' | 'runStatus' | 'sessionStatus' | 'collabAgentId' | 'collabChannelId' | 'pullRequests' | 'createdByMe'>;
|
|
110
|
+
/**
|
|
111
|
+
* Whether a loaded row matches the locally applicable part of a query
|
|
112
|
+
* (`SessionsQueryPlan.local`). Fields the row does not carry pass, so a
|
|
113
|
+
* missing value never hides a row the server returned.
|
|
114
|
+
*/
|
|
115
|
+
export declare function matchesSessionsQuery(row: SessionsQueryRow, query: AthenaSessionsQuery): boolean;
|
|
116
|
+
/** Rows in the query's order (stable; unparseable times last). */
|
|
117
|
+
export declare function sortSessions<T extends Pick<ConversationSummary, 'updatedAt' | 'createdAt'>>(rows: readonly T[], query: Pick<AthenaSessionsQuery, 'sort' | 'direction'>): T[];
|
|
118
|
+
/** The server fields a response says it applies, or `null` when it predates the list. */
|
|
119
|
+
export declare function supportedFiltersFromResponse(supported: readonly string[] | undefined): ReadonlySet<string> | null;
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
const DEFAULT_COLLAB_CHANNEL = "default";
|
|
2
|
+
const SESSION_RUN_STATUSES = [
|
|
3
|
+
"needs_input",
|
|
4
|
+
"running",
|
|
5
|
+
"queued",
|
|
6
|
+
"scheduled",
|
|
7
|
+
"completed",
|
|
8
|
+
"failed",
|
|
9
|
+
"canceled"
|
|
10
|
+
];
|
|
11
|
+
const SESSION_SESSION_STATUSES = ["active", "needs_input", "idle", "error"];
|
|
12
|
+
const SERVER_FIELD = {
|
|
13
|
+
search: "search",
|
|
14
|
+
collabAgentIds: "collab_agent_ids",
|
|
15
|
+
collabChannelIds: "collab_channel_ids",
|
|
16
|
+
startChannels: "start_channels",
|
|
17
|
+
createdAfter: "created_after",
|
|
18
|
+
createdBefore: "created_before",
|
|
19
|
+
updatedAfter: "updated_after",
|
|
20
|
+
updatedBefore: "updated_before",
|
|
21
|
+
favoritesOnly: "favorites_only",
|
|
22
|
+
unreadOnly: "unread_only",
|
|
23
|
+
runStatuses: "run_statuses",
|
|
24
|
+
sessionStatuses: "session_statuses",
|
|
25
|
+
hasPullRequests: "has_pull_requests",
|
|
26
|
+
createdByMe: "created_by_me",
|
|
27
|
+
excludeDismissed: "exclude_dismissed",
|
|
28
|
+
excludeTriggered: "exclude_triggered",
|
|
29
|
+
sort: "sort",
|
|
30
|
+
direction: "direction"
|
|
31
|
+
};
|
|
32
|
+
const LEGACY_THREAD_LIST_FILTERS = /* @__PURE__ */ new Set([
|
|
33
|
+
"search",
|
|
34
|
+
"exclude_triggered",
|
|
35
|
+
"app_id",
|
|
36
|
+
"start_channel",
|
|
37
|
+
"created_after",
|
|
38
|
+
"include_pull_requests"
|
|
39
|
+
]);
|
|
40
|
+
function normalizeSessionsQuery(query) {
|
|
41
|
+
var _a;
|
|
42
|
+
const out = {};
|
|
43
|
+
const search = (_a = query.search) == null ? void 0 : _a.trim();
|
|
44
|
+
if (search) out.search = search;
|
|
45
|
+
const list = (values) => {
|
|
46
|
+
if (!values || values.length === 0) return void 0;
|
|
47
|
+
return [...new Set(values)].sort();
|
|
48
|
+
};
|
|
49
|
+
const collabAgentIds = list(query.collabAgentIds);
|
|
50
|
+
if (collabAgentIds) out.collabAgentIds = collabAgentIds;
|
|
51
|
+
const collabChannelIds = list(query.collabChannelIds);
|
|
52
|
+
if (collabChannelIds && collabAgentIds) out.collabChannelIds = collabChannelIds;
|
|
53
|
+
const startChannels = list(query.startChannels);
|
|
54
|
+
if (startChannels) out.startChannels = startChannels;
|
|
55
|
+
for (const bound of ["createdAfter", "createdBefore", "updatedAfter", "updatedBefore"]) {
|
|
56
|
+
const value = query[bound];
|
|
57
|
+
if (value) out[bound] = value;
|
|
58
|
+
}
|
|
59
|
+
if (query.favoritesOnly) out.favoritesOnly = true;
|
|
60
|
+
if (query.unreadOnly) out.unreadOnly = true;
|
|
61
|
+
const runStatuses = list(query.runStatuses);
|
|
62
|
+
if (runStatuses) out.runStatuses = runStatuses;
|
|
63
|
+
const sessionStatuses = list(query.sessionStatuses);
|
|
64
|
+
if (sessionStatuses) out.sessionStatuses = sessionStatuses;
|
|
65
|
+
if (query.hasPullRequests !== void 0) out.hasPullRequests = query.hasPullRequests;
|
|
66
|
+
if (query.createdByMe !== void 0) out.createdByMe = query.createdByMe;
|
|
67
|
+
if (query.excludeDismissed) out.excludeDismissed = true;
|
|
68
|
+
if (query.excludeTriggered) out.excludeTriggered = true;
|
|
69
|
+
if (query.sort && query.sort !== "updated") out.sort = query.sort;
|
|
70
|
+
if (query.direction && query.direction !== "desc") out.direction = query.direction;
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
function sessionsQueryKey(query) {
|
|
74
|
+
const normalized = normalizeSessionsQuery(query);
|
|
75
|
+
return JSON.stringify(
|
|
76
|
+
Object.keys(normalized).sort().map((key) => [key, normalized[key]])
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
function sessionsQueryFromKey(key) {
|
|
80
|
+
const entries = JSON.parse(key);
|
|
81
|
+
if (!Array.isArray(entries)) return {};
|
|
82
|
+
const query = {};
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
if (Array.isArray(entry) && typeof entry[0] === "string") query[entry[0]] = entry[1];
|
|
85
|
+
}
|
|
86
|
+
return normalizeSessionsQuery(query);
|
|
87
|
+
}
|
|
88
|
+
function activeSessionsQueryFields(query) {
|
|
89
|
+
const normalized = normalizeSessionsQuery(query);
|
|
90
|
+
return Object.keys(SERVER_FIELD).filter(
|
|
91
|
+
(field) => normalized[field] !== void 0
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
function unavailableSessionsQueryFields(options) {
|
|
95
|
+
const supported = options.supportedFilters ?? LEGACY_THREAD_LIST_FILTERS;
|
|
96
|
+
const testable = {
|
|
97
|
+
includePullRequests: options.includePullRequests,
|
|
98
|
+
rowsCarryCreatedByMe: options.supportedFilters !== null
|
|
99
|
+
};
|
|
100
|
+
return Object.keys(SERVER_FIELD).filter(
|
|
101
|
+
(field) => field !== "sort" && field !== "direction" && !supported.has(SERVER_FIELD[field]) && !locallyTestable(field, testable)
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
function locallyTestable(field, options) {
|
|
105
|
+
switch (field) {
|
|
106
|
+
case "excludeDismissed":
|
|
107
|
+
return false;
|
|
108
|
+
case "hasPullRequests":
|
|
109
|
+
return options.includePullRequests;
|
|
110
|
+
case "createdByMe":
|
|
111
|
+
return options.rowsCarryCreatedByMe;
|
|
112
|
+
default:
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function planSessionsQuery(query, options) {
|
|
117
|
+
const normalized = normalizeSessionsQuery(query);
|
|
118
|
+
const supported = options.supportedFilters ?? LEGACY_THREAD_LIST_FILTERS;
|
|
119
|
+
const rowsCarryCreatedByMe = options.supportedFilters !== null;
|
|
120
|
+
const body = {};
|
|
121
|
+
const degraded = [];
|
|
122
|
+
const unavailable = [];
|
|
123
|
+
const local = {};
|
|
124
|
+
const assignLocal = (field) => {
|
|
125
|
+
local[field] = normalized[field];
|
|
126
|
+
};
|
|
127
|
+
for (const field of activeSessionsQueryFields(normalized)) {
|
|
128
|
+
const serverField = SERVER_FIELD[field];
|
|
129
|
+
if (supported.has(serverField)) {
|
|
130
|
+
Object.assign(body, { [serverField]: normalized[field] });
|
|
131
|
+
if (field !== "search" && locallyTestable(field, {
|
|
132
|
+
includePullRequests: options.includePullRequests,
|
|
133
|
+
rowsCarryCreatedByMe
|
|
134
|
+
})) {
|
|
135
|
+
assignLocal(field);
|
|
136
|
+
}
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (field === "sort" || field === "direction") {
|
|
140
|
+
degraded.push(field);
|
|
141
|
+
assignLocal(field);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (locallyTestable(field, {
|
|
145
|
+
includePullRequests: options.includePullRequests,
|
|
146
|
+
rowsCarryCreatedByMe
|
|
147
|
+
})) {
|
|
148
|
+
degraded.push(field);
|
|
149
|
+
assignLocal(field);
|
|
150
|
+
} else {
|
|
151
|
+
unavailable.push(field);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (normalized.sort) local.sort = normalized.sort;
|
|
155
|
+
if (normalized.direction) local.direction = normalized.direction;
|
|
156
|
+
return { body, degraded, unavailable, local };
|
|
157
|
+
}
|
|
158
|
+
function timestamp(value) {
|
|
159
|
+
if (!value) return null;
|
|
160
|
+
const parsed = Date.parse(value);
|
|
161
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
162
|
+
}
|
|
163
|
+
function withinBounds(value, after, before) {
|
|
164
|
+
if (after === void 0 && before === void 0) return true;
|
|
165
|
+
const at = timestamp(value);
|
|
166
|
+
if (at === null) return false;
|
|
167
|
+
const afterMs = timestamp(after);
|
|
168
|
+
const beforeMs = timestamp(before);
|
|
169
|
+
if (afterMs !== null && at < afterMs) return false;
|
|
170
|
+
if (beforeMs !== null && at >= beforeMs) return false;
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
function matchesSessionsQuery(row, query) {
|
|
174
|
+
var _a;
|
|
175
|
+
if (query.search && !(row.title ?? "").toLowerCase().includes(query.search.toLowerCase())) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
if (query.collabAgentIds && !query.collabAgentIds.includes(row.collabAgentId ?? "")) return false;
|
|
179
|
+
if (query.collabChannelIds) {
|
|
180
|
+
const channel = row.collabChannelId || DEFAULT_COLLAB_CHANNEL;
|
|
181
|
+
if (!query.collabChannelIds.includes(channel)) return false;
|
|
182
|
+
}
|
|
183
|
+
if (query.startChannels && !query.startChannels.includes(row.sourceChannel ?? "")) return false;
|
|
184
|
+
if (!withinBounds(row.createdAt, query.createdAfter, query.createdBefore)) return false;
|
|
185
|
+
if (!withinBounds(row.updatedAt, query.updatedAfter, query.updatedBefore)) return false;
|
|
186
|
+
if (query.favoritesOnly && row.isFavorited !== true) return false;
|
|
187
|
+
if (query.unreadOnly && !row.isUnread) return false;
|
|
188
|
+
if (query.runStatuses && !query.runStatuses.includes(row.runStatus ?? "")) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
if (query.sessionStatuses && !query.sessionStatuses.includes(row.sessionStatus ?? "")) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
if (query.hasPullRequests !== void 0 && row.pullRequests !== void 0 && row.pullRequests !== null) {
|
|
195
|
+
if (query.hasPullRequests !== row.pullRequests.length > 0) return false;
|
|
196
|
+
}
|
|
197
|
+
if (query.createdByMe !== void 0 && row.createdByMe !== void 0) {
|
|
198
|
+
if (query.createdByMe !== row.createdByMe) return false;
|
|
199
|
+
}
|
|
200
|
+
if (query.excludeTriggered) {
|
|
201
|
+
const trigger = ((_a = row.triggerType) == null ? void 0 : _a.trim().toLowerCase()) ?? "";
|
|
202
|
+
if (trigger && trigger !== "manual") return false;
|
|
203
|
+
}
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
function sortSessions(rows, query) {
|
|
207
|
+
const key = query.sort === "created" ? "createdAt" : "updatedAt";
|
|
208
|
+
const sign = query.direction === "asc" ? 1 : -1;
|
|
209
|
+
return rows.map((row, index) => ({ row, index, at: timestamp(row[key]) })).sort((a, b) => {
|
|
210
|
+
if (a.at === null || b.at === null) {
|
|
211
|
+
if (a.at === b.at) return a.index - b.index;
|
|
212
|
+
return a.at === null ? 1 : -1;
|
|
213
|
+
}
|
|
214
|
+
return (a.at - b.at) * sign || a.index - b.index;
|
|
215
|
+
}).map(({ row }) => row);
|
|
216
|
+
}
|
|
217
|
+
function supportedFiltersFromResponse(supported) {
|
|
218
|
+
return Array.isArray(supported) ? new Set(supported) : null;
|
|
219
|
+
}
|
|
220
|
+
export {
|
|
221
|
+
DEFAULT_COLLAB_CHANNEL,
|
|
222
|
+
LEGACY_THREAD_LIST_FILTERS,
|
|
223
|
+
SESSION_RUN_STATUSES,
|
|
224
|
+
SESSION_SESSION_STATUSES,
|
|
225
|
+
activeSessionsQueryFields,
|
|
226
|
+
matchesSessionsQuery,
|
|
227
|
+
normalizeSessionsQuery,
|
|
228
|
+
planSessionsQuery,
|
|
229
|
+
sessionsQueryFromKey,
|
|
230
|
+
sessionsQueryKey,
|
|
231
|
+
sortSessions,
|
|
232
|
+
supportedFiltersFromResponse,
|
|
233
|
+
unavailableSessionsQueryFields
|
|
234
|
+
};
|
|
235
|
+
//# sourceMappingURL=sessions-query.js.map
|