@athenaintel/react 0.28.1 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +479 -10
- package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/agent-runtime/src/athena-asset-drag.cjs +44 -0
- package/dist/agent-runtime/src/athena-asset-drag.cjs.map +1 -0
- package/dist/agent-runtime/src/athena-asset-drag.js +44 -0
- package/dist/agent-runtime/src/athena-asset-drag.js.map +1 -0
- package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.js +124 -0
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
- package/dist/agent-runtime/src/config-mutations.cjs +59 -0
- package/dist/agent-runtime/src/config-mutations.cjs.map +1 -0
- package/dist/agent-runtime/src/config-mutations.js +59 -0
- package/dist/agent-runtime/src/config-mutations.js.map +1 -0
- package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
- package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
- package/dist/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
- package/dist/agent-runtime/src/errors.js.map +1 -0
- package/dist/agent-runtime/src/execute-output.cjs +41 -0
- package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
- package/dist/agent-runtime/src/execute-output.js +41 -0
- package/dist/agent-runtime/src/execute-output.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +16 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +16 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
- package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
- package/dist/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/agent-runtime/src/message-author.js.map +1 -0
- package/dist/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/agent-runtime/src/message-window.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
- package/dist/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
- package/dist/agent-runtime/src/messages.js.map +1 -0
- package/dist/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/agent-runtime/src/model-context.js.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/agent-runtime/src/protocol.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
- package/dist/agent-runtime/src/queue.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +71 -13
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +73 -15
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
- package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
- package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.js +43 -0
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +304 -9
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +304 -9
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/agent-runtime/src/tool-names.cjs +5 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-names.js +5 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs +129 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js +129 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
- package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
- package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +13 -2
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +10 -0
- package/dist/assets/AthenaAssetEmbed.js +14 -3
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/AthenaLayout.cjs +97 -31
- package/dist/assets/AthenaLayout.cjs.map +1 -1
- package/dist/assets/AthenaLayout.d.ts +13 -0
- package/dist/assets/AthenaLayout.js +98 -32
- package/dist/assets/AthenaLayout.js.map +1 -1
- package/dist/assets/asset-embed-messages.cjs +6 -0
- package/dist/assets/asset-embed-messages.cjs.map +1 -1
- package/dist/assets/asset-embed-messages.d.ts +13 -0
- package/dist/assets/asset-embed-messages.js +6 -0
- package/dist/assets/asset-embed-messages.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +68 -32
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +47 -1
- package/dist/assets/asset-panel-store.js +68 -32
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/assets/use-asset-embed.cjs +29 -8
- package/dist/assets/use-asset-embed.cjs.map +1 -1
- package/dist/assets/use-asset-embed.d.ts +7 -0
- package/dist/assets/use-asset-embed.js +29 -8
- package/dist/assets/use-asset-embed.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +152 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -0
- package/dist/catalog/chat-pickers.d.ts +22 -0
- package/dist/catalog/chat-pickers.js +152 -0
- package/dist/catalog/chat-pickers.js.map +1 -0
- package/dist/catalog/runtime-catalog.cjs +181 -0
- package/dist/catalog/runtime-catalog.cjs.map +1 -0
- package/dist/catalog/runtime-catalog.d.ts +100 -0
- package/dist/catalog/runtime-catalog.js +181 -0
- package/dist/catalog/runtime-catalog.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +122 -67
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +21 -4
- package/dist/chat/AthenaChat.js +124 -69
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +38 -37
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +2 -0
- package/dist/chat/StatewireApprovalCard.js +39 -38
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireClientToolBridge.cjs +2 -2
- package/dist/chat/StatewireClientToolBridge.js +2 -2
- package/dist/chat/StatewireQueuedMessages.cjs +15 -12
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
- package/dist/chat/StatewireQueuedMessages.js +15 -12
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
- package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
- package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
- package/dist/chat/StatewireRunRefusalNotice.js +48 -0
- package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
- package/dist/chat/WaitingOnYouBanner.cjs +2 -2
- package/dist/chat/WaitingOnYouBanner.js +2 -2
- package/dist/chat/athena-citation-links.cjs +19 -15
- package/dist/chat/athena-citation-links.cjs.map +1 -1
- package/dist/chat/athena-citation-links.js +19 -15
- package/dist/chat/athena-citation-links.js.map +1 -1
- package/dist/chat/run-activity.cjs +9 -1
- package/dist/chat/run-activity.cjs.map +1 -1
- package/dist/chat/run-activity.d.ts +6 -0
- package/dist/chat/run-activity.js +10 -2
- package/dist/chat/run-activity.js.map +1 -1
- package/dist/chat/statewire-banners.cjs +30 -1
- package/dist/chat/statewire-banners.cjs.map +1 -1
- package/dist/chat/statewire-banners.d.ts +20 -1
- package/dist/chat/statewire-banners.js +32 -3
- package/dist/chat/statewire-banners.js.map +1 -1
- package/dist/chat/statewire-client-tools.cjs +1 -1
- package/dist/chat/statewire-client-tools.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +38 -16
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +21 -4
- package/dist/chat/super-grouping/SuperGroupingCard.js +39 -17
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +377 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js +377 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
- package/dist/chat/super-grouping/ToolTimeline.js +13 -2
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.cjs +69 -29
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +60 -9
- package/dist/chat/super-grouping/activity-timeline.js +70 -30
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/index.cjs +14 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -1
- package/dist/chat/super-grouping/index.d.ts +7 -2
- package/dist/chat/super-grouping/index.js +16 -2
- package/dist/chat/super-grouping/index.js.map +1 -1
- package/dist/chat/super-grouping/timeline-step.cjs +14 -5
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
- package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
- package/dist/chat/super-grouping/timeline-step.js +15 -6
- package/dist/chat/super-grouping/timeline-step.js.map +1 -1
- package/dist/chat/super-grouping/toolkit-map.cjs +1 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -1
- package/dist/chat/super-grouping/toolkit-map.js +1 -0
- package/dist/chat/super-grouping/toolkit-map.js.map +1 -1
- package/dist/chat/super-grouping/turn-segments.cjs +82 -0
- package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
- package/dist/chat/super-grouping/turn-segments.js +82 -0
- package/dist/chat/super-grouping/turn-segments.js.map +1 -0
- package/dist/chat/super-grouping/turn-timing.cjs +110 -0
- package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
- package/dist/chat/super-grouping/turn-timing.js +110 -0
- package/dist/chat/super-grouping/turn-timing.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +1 -1
- package/dist/chat/tiptap-text.js +1 -1
- package/dist/chat/use-athena-run-live.cjs +1 -1
- package/dist/chat/use-athena-run-live.js +1 -1
- package/dist/chat/use-statewire-approval-request.cjs +73 -4
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
- package/dist/chat/use-statewire-approval-request.js +74 -5
- package/dist/chat/use-statewire-approval-request.js.map +1 -1
- package/dist/chat-ui/composer/composer-message.cjs +284 -0
- package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-message.d.ts +152 -0
- package/dist/chat-ui/composer/composer-message.js +284 -0
- package/dist/chat-ui/composer/composer-message.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +97 -15
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
- package/dist/chat-ui/composer/tiptap-composer.js +97 -15
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +4 -1
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +5 -2
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +31 -3
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.d.ts +2 -5
- package/dist/chat-ui/mentions/mention-chip.js +33 -5
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +9 -3
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +9 -3
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/use-account-workspace-id.cjs +61 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +3 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.js +61 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -0
- package/dist/chat-ui/mentions/use-member-avatar.cjs +75 -0
- package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-member-avatar.d.ts +2 -0
- package/dist/chat-ui/mentions/use-member-avatar.js +75 -0
- package/dist/chat-ui/mentions/use-member-avatar.js.map +1 -0
- package/dist/chat-ui/messages/message-components.cjs +30 -10
- package/dist/chat-ui/messages/message-components.cjs.map +1 -1
- package/dist/chat-ui/messages/message-components.d.ts +21 -1
- package/dist/chat-ui/messages/message-components.js +30 -10
- package/dist/chat-ui/messages/message-components.js.map +1 -1
- package/dist/chat-ui/messages/runtime-message.cjs +1 -1
- package/dist/chat-ui/messages/runtime-message.js +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
- package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
- package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
- package/dist/chat-ui/messages/user-edit-composer.js +1 -1
- package/dist/chat-ui/messages/wake-marker.cjs +39 -4
- package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
- package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
- package/dist/chat-ui/messages/wake-marker.js +40 -5
- package/dist/chat-ui/messages/wake-marker.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
- package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
- package/dist/chat-ui/statewire.cjs +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/statewire.js +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
- package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
- package/dist/collab/client.cjs +282 -16
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +127 -2
- package/dist/collab/client.js +285 -20
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.cjs +2 -0
- package/dist/collab/index.cjs.map +1 -1
- package/dist/collab/index.d.ts +1 -1
- package/dist/collab/index.js +3 -1
- package/dist/composer/AttachmentContext.cjs +38 -12
- package/dist/composer/AttachmentContext.cjs.map +1 -1
- package/dist/composer/AttachmentContext.d.ts +22 -1
- package/dist/composer/AttachmentContext.js +40 -14
- package/dist/composer/AttachmentContext.js.map +1 -1
- package/dist/composer/QuoteContext.cjs +80 -28
- package/dist/composer/QuoteContext.cjs.map +1 -1
- package/dist/composer/QuoteContext.d.ts +35 -6
- package/dist/composer/QuoteContext.js +82 -30
- package/dist/composer/QuoteContext.js.map +1 -1
- package/dist/composer/build-composed-message.cjs +27 -0
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +21 -0
- package/dist/composer/build-composed-message.js +28 -1
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +13 -1
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +12 -0
- package/dist/composer/composer-handoff.js +15 -3
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/index.d.ts +6 -3
- package/dist/composer/useReadComposerDraft.cjs +16 -0
- package/dist/composer/useReadComposerDraft.cjs.map +1 -0
- package/dist/composer/useReadComposerDraft.d.ts +6 -0
- package/dist/composer/useReadComposerDraft.js +16 -0
- package/dist/composer/useReadComposerDraft.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +3 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +6 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +6 -0
- package/dist/diagnostics/errors.js +6 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +163 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +55 -12
- package/dist/index.js +170 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/owner-document.cjs +32 -0
- package/dist/lib/owner-document.cjs.map +1 -0
- package/dist/lib/owner-document.d.ts +17 -0
- package/dist/lib/owner-document.js +32 -0
- package/dist/lib/owner-document.js.map +1 -0
- package/dist/lib/portal-surface.cjs +55 -0
- package/dist/lib/portal-surface.cjs.map +1 -0
- package/dist/lib/portal-surface.d.ts +37 -0
- package/dist/lib/portal-surface.js +55 -0
- package/dist/lib/portal-surface.js.map +1 -0
- package/dist/lib/use-athena-rest-query.cjs +34 -0
- package/dist/lib/use-athena-rest-query.cjs.map +1 -0
- package/dist/lib/use-athena-rest-query.d.ts +31 -0
- package/dist/lib/use-athena-rest-query.js +34 -0
- package/dist/lib/use-athena-rest-query.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +70 -10
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +27 -2
- package/dist/provider/AthenaProvider.js +74 -14
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/provider/citation-links.d.ts +10 -2
- package/dist/{packages/react → react}/package.json.cjs +1 -1
- package/dist/{packages/react → react}/package.json.js +1 -1
- package/dist/runtime/StatewireModelLaneSync.cjs +96 -0
- package/dist/runtime/StatewireModelLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewireModelLaneSync.d.ts +45 -0
- package/dist/runtime/StatewireModelLaneSync.js +96 -0
- package/dist/runtime/StatewireModelLaneSync.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +20 -5
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.d.ts +11 -0
- package/dist/runtime/statewire-lifecycle.js +20 -5
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/statewire-model-lane.cjs +28 -0
- package/dist/runtime/statewire-model-lane.cjs.map +1 -0
- package/dist/runtime/statewire-model-lane.d.ts +64 -0
- package/dist/runtime/statewire-model-lane.js +28 -0
- package/dist/runtime/statewire-model-lane.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +16 -2
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +10 -0
- package/dist/runtime/statewire-run-config.js +16 -2
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-server-lane-context.cjs +24 -0
- package/dist/runtime/statewire-server-lane-context.cjs.map +1 -0
- package/dist/runtime/statewire-server-lane-context.d.ts +30 -0
- package/dist/runtime/statewire-server-lane-context.js +24 -0
- package/dist/runtime/statewire-server-lane-context.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +47 -23
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +8 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +48 -24
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaRepoSearch.cjs +5 -13
- package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
- package/dist/search/useAthenaRepoSearch.d.ts +3 -3
- package/dist/search/useAthenaRepoSearch.js +6 -14
- package/dist/search/useAthenaRepoSearch.js.map +1 -1
- package/dist/sheet-range/a1.cjs +162 -0
- package/dist/sheet-range/a1.cjs.map +1 -0
- package/dist/sheet-range/a1.d.ts +91 -0
- package/dist/sheet-range/a1.js +162 -0
- package/dist/sheet-range/a1.js.map +1 -0
- package/dist/sheet-range/index.cjs +22 -0
- package/dist/sheet-range/index.cjs.map +1 -0
- package/dist/sheet-range/index.d.ts +12 -0
- package/dist/sheet-range/index.js +22 -0
- package/dist/sheet-range/index.js.map +1 -0
- package/dist/sheet-range/range-preview-table.cjs +75 -0
- package/dist/sheet-range/range-preview-table.cjs.map +1 -0
- package/dist/sheet-range/range-preview-table.d.ts +20 -0
- package/dist/sheet-range/range-preview-table.js +75 -0
- package/dist/sheet-range/range-preview-table.js.map +1 -0
- package/dist/sheet-range/range-preview.cjs +116 -0
- package/dist/sheet-range/range-preview.cjs.map +1 -0
- package/dist/sheet-range/range-preview.d.ts +67 -0
- package/dist/sheet-range/range-preview.js +116 -0
- package/dist/sheet-range/range-preview.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/threads/Inbox.cjs +289 -0
- package/dist/threads/Inbox.cjs.map +1 -0
- package/dist/threads/Inbox.d.ts +46 -0
- package/dist/threads/Inbox.js +289 -0
- package/dist/threads/Inbox.js.map +1 -0
- package/dist/threads/SessionList.cjs +51 -126
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.d.ts +26 -1
- package/dist/threads/SessionList.js +45 -120
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +753 -0
- package/dist/threads/SessionsPage.cjs.map +1 -0
- package/dist/threads/SessionsPage.d.ts +35 -0
- package/dist/threads/SessionsPage.js +753 -0
- package/dist/threads/SessionsPage.js.map +1 -0
- package/dist/threads/api.cjs +23 -2
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +60 -0
- package/dist/threads/api.js +23 -2
- package/dist/threads/api.js.map +1 -1
- package/dist/threads/conversation-list-fetcher.cjs +9 -2
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
- package/dist/threads/conversation-list-fetcher.d.ts +14 -1
- package/dist/threads/conversation-list-fetcher.js +9 -2
- package/dist/threads/conversation-list-fetcher.js.map +1 -1
- package/dist/threads/index.d.ts +2 -1
- package/dist/threads/pull-request-display.cjs +25 -0
- package/dist/threads/pull-request-display.cjs.map +1 -0
- package/dist/threads/pull-request-display.d.ts +15 -0
- package/dist/threads/pull-request-display.js +25 -0
- package/dist/threads/pull-request-display.js.map +1 -0
- package/dist/threads/session-list-model.cjs +16 -2
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +10 -0
- package/dist/threads/session-list-model.js +16 -2
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +152 -0
- package/dist/threads/session-row-parts.cjs.map +1 -0
- package/dist/threads/session-row-parts.d.ts +50 -0
- package/dist/threads/session-row-parts.js +152 -0
- package/dist/threads/session-row-parts.js.map +1 -0
- package/dist/threads/sessions-page-model.cjs +305 -0
- package/dist/threads/sessions-page-model.cjs.map +1 -0
- package/dist/threads/sessions-page-model.d.ts +86 -0
- package/dist/threads/sessions-page-model.js +305 -0
- package/dist/threads/sessions-page-model.js.map +1 -0
- package/dist/threads/sessions-page-storage.cjs +93 -0
- package/dist/threads/sessions-page-storage.cjs.map +1 -0
- package/dist/threads/sessions-page-storage.d.ts +23 -0
- package/dist/threads/sessions-page-storage.js +93 -0
- package/dist/threads/sessions-page-storage.js.map +1 -0
- package/dist/threads/sessions-query.cjs +235 -0
- package/dist/threads/sessions-query.cjs.map +1 -0
- package/dist/threads/sessions-query.d.ts +119 -0
- package/dist/threads/sessions-query.js +235 -0
- package/dist/threads/sessions-query.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +133 -40
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +83 -2
- package/dist/threads/statewire-thread-list.js +134 -41
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +198 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -0
- package/dist/threads/use-athena-sessions.d.ts +81 -0
- package/dist/threads/use-athena-sessions.js +198 -0
- package/dist/threads/use-athena-sessions.js.map +1 -0
- package/dist/threads/use-athena-thread-model.cjs +14 -0
- package/dist/threads/use-athena-thread-model.cjs.map +1 -0
- package/dist/threads/use-athena-thread-model.d.ts +22 -0
- package/dist/threads/use-athena-thread-model.js +14 -0
- package/dist/threads/use-athena-thread-model.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +1 -1
- package/dist/threads/use-rest-conversation-history.js +1 -1
- package/dist/threads/use-statewire-conversation-history.cjs +1 -1
- package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
- package/dist/threads/use-statewire-conversation-history.js +1 -1
- package/dist/threads/use-thread-read-state.cjs +73 -0
- package/dist/threads/use-thread-read-state.cjs.map +1 -0
- package/dist/threads/use-thread-read-state.d.ts +51 -0
- package/dist/threads/use-thread-read-state.js +73 -0
- package/dist/threads/use-thread-read-state.js.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +2 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.js +2 -0
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/file-tool-uis.cjs +18 -43
- package/dist/tools/file-tool-uis.cjs.map +1 -1
- package/dist/tools/file-tool-uis.d.ts +1 -2
- package/dist/tools/file-tool-uis.js +18 -42
- package/dist/tools/file-tool-uis.js.map +1 -1
- package/dist/tools/index.cjs +6 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +6 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/misc-tool-uis.cjs +2 -2
- package/dist/tools/misc-tool-uis.js +2 -2
- package/dist/tools/primitives.cjs +1 -1
- package/dist/tools/primitives.js +1 -1
- package/dist/tools/read-asset-tool-ui.cjs +21 -70
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
- package/dist/tools/read-asset-tool-ui.js +21 -70
- package/dist/tools/read-asset-tool-ui.js.map +1 -1
- package/dist/tools/step-text.cjs +21 -0
- package/dist/tools/step-text.cjs.map +1 -0
- package/dist/tools/step-text.d.ts +10 -0
- package/dist/tools/step-text.js +21 -0
- package/dist/tools/step-text.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +24 -5
- package/dist/tools/tool-fallback.cjs.map +1 -1
- package/dist/tools/tool-fallback.d.ts +3 -1
- package/dist/tools/tool-fallback.js +24 -5
- package/dist/tools/tool-fallback.js.map +1 -1
- package/dist/tools/tool-summary.cjs +661 -0
- package/dist/tools/tool-summary.cjs.map +1 -0
- package/dist/tools/tool-summary.d.ts +99 -0
- package/dist/tools/tool-summary.js +661 -0
- package/dist/tools/tool-summary.js.map +1 -0
- package/dist/tools/tool-uis.cjs +37 -95
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.js +37 -95
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/tools/voice-update-tool-ui.cjs +1 -1
- package/dist/tools/voice-update-tool-ui.js +1 -1
- package/dist/tools/write-todos-tool-ui.cjs +3 -2
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
- package/dist/tools/write-todos-tool-ui.d.ts +5 -0
- package/dist/tools/write-todos-tool-ui.js +5 -4
- package/dist/tools/write-todos-tool-ui.js.map +1 -1
- package/dist/ui/popover.cjs +6 -6
- package/dist/ui/popover.cjs.map +1 -1
- package/dist/ui/popover.js +6 -6
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/tooltip.cjs +16 -2
- package/dist/ui/tooltip.cjs.map +1 -1
- package/dist/ui/tooltip.d.ts +1 -1
- package/dist/ui/tooltip.js +16 -2
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/use-athena-voice-session.cjs.map +1 -1
- package/dist/voice/use-athena-voice-session.d.ts +3 -3
- package/dist/voice/use-athena-voice-session.js.map +1 -1
- package/dist/workbench/SessionWorkbench.cjs +378 -0
- package/dist/workbench/SessionWorkbench.cjs.map +1 -0
- package/dist/workbench/SessionWorkbench.d.ts +30 -0
- package/dist/workbench/SessionWorkbench.js +378 -0
- package/dist/workbench/SessionWorkbench.js.map +1 -0
- package/dist/workbench/session-workbench-context.cjs +26 -0
- package/dist/workbench/session-workbench-context.cjs.map +1 -0
- package/dist/workbench/session-workbench-context.d.ts +55 -0
- package/dist/workbench/session-workbench-context.js +26 -0
- package/dist/workbench/session-workbench-context.js.map +1 -0
- package/dist/workbench/session-workbench-model.cjs +288 -0
- package/dist/workbench/session-workbench-model.cjs.map +1 -0
- package/dist/workbench/session-workbench-model.d.ts +168 -0
- package/dist/workbench/session-workbench-model.js +288 -0
- package/dist/workbench/session-workbench-model.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +580 -0
- package/dist/workbench/session-workbench-panes.cjs.map +1 -0
- package/dist/workbench/session-workbench-panes.d.ts +16 -0
- package/dist/workbench/session-workbench-panes.js +580 -0
- package/dist/workbench/session-workbench-panes.js.map +1 -0
- package/dist/workbench/session-workspace-api.cjs +157 -0
- package/dist/workbench/session-workspace-api.cjs.map +1 -0
- package/dist/workbench/session-workspace-api.d.ts +70 -0
- package/dist/workbench/session-workspace-api.js +157 -0
- package/dist/workbench/session-workspace-api.js.map +1 -0
- package/dist/workbench/use-session-workspace.cjs +100 -0
- package/dist/workbench/use-session-workspace.cjs.map +1 -0
- package/dist/workbench/use-session-workspace.d.ts +45 -0
- package/dist/workbench/use-session-workspace.js +100 -0
- package/dist/workbench/use-session-workspace.js.map +1 -0
- package/dist/workbench/workbench-layout-context.cjs +10 -0
- package/dist/workbench/workbench-layout-context.cjs.map +1 -0
- package/dist/workbench/workbench-layout-context.d.ts +17 -0
- package/dist/workbench/workbench-layout-context.js +10 -0
- package/dist/workbench/workbench-layout-context.js.map +1 -0
- package/package.json +21 -10
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
- package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/errors.js.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
- package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
- package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/queue.js.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +0 -13
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js +0 -13
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
- /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
- /package/dist/{packages/react → react}/package.json.js.map +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
package/README.md
CHANGED
|
@@ -16,6 +16,18 @@ npm install @propelauth/react
|
|
|
16
16
|
|
|
17
17
|
## Upgrading
|
|
18
18
|
|
|
19
|
+
SDK0.29.0 uses native Statewire wire2026-09-30 with Athena application2026-09-13
|
|
20
|
+
when installed with public, unpatched dependencies, over HTTP/SSE: published
|
|
21
|
+
statewire0.20.0 pings a WebSocket with empty frames that Athena's hosts reject,
|
|
22
|
+
so the SDK opens a socket only over the patched client the monorepo's own apps
|
|
23
|
+
install. It requires a compatible backend. Publication is temporarily withheld until production HTTP+WebSocket
|
|
24
|
+
and authorization tests pass and a compatible backend rollback release is
|
|
25
|
+
retained. The publish workflow requires a manual
|
|
26
|
+
`PRODUCTION_NATIVE_CONTEXT_AND_ROLLBACK_QUALIFIED` acknowledgement; dry runs
|
|
27
|
+
remain available. Computer templates keep SDK0.28.0 until the qualified
|
|
28
|
+
release is published. The qualification steps and gate removal condition are
|
|
29
|
+
in the [coordinated release runbook](../../docs/runbooks/coordinated-client-releases.md#public-native-context-publication-gate).
|
|
30
|
+
|
|
19
31
|
The SDK pins its assistant-ui runtime (`@assistant-ui/tap`, `store`, `core`,
|
|
20
32
|
`react`, `react-statewire`, `statewire`) at exact versions, and those packages
|
|
21
33
|
carry React contexts and module singletons: an app must resolve exactly **one**
|
|
@@ -104,6 +116,78 @@ function App() {
|
|
|
104
116
|
|
|
105
117
|
`config` accepts `apiKey`, `token`, `getToken`, `apiUrl`, `backendUrl`, `appUrl`, `statewireSyncUrl`, `trustedParentOrigins`, `environment`, `extraRunConfig`, and `posthog`. Top-level `apiKey`, `token`, `apiUrl`, `backendUrl`, `appUrl`, and `environment` props remain supported as compatibility aliases, but `config` is now the preferred API.
|
|
106
118
|
|
|
119
|
+
### Several chats side by side
|
|
120
|
+
|
|
121
|
+
A host can show several chats at once: one `AthenaProvider` with `enableThreadList` drives the
|
|
122
|
+
session list and its chat, and each further chat is an `AthenaProvider` of its own, bound to one
|
|
123
|
+
thread with `threadId`, mounted anywhere in the tree (under the first one too):
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
const [thread] = useState(() => ({ threadId: mintThreadId(), isNew: true }));
|
|
127
|
+
|
|
128
|
+
<AthenaProvider config={config} threadId={thread.threadId} threadIsNew={thread.isNew}>
|
|
129
|
+
<AttachmentProvider store={attachments}>
|
|
130
|
+
<QuoteProvider store={quote}>
|
|
131
|
+
<AthenaChat />
|
|
132
|
+
</QuoteProvider>
|
|
133
|
+
</AttachmentProvider>
|
|
134
|
+
</AthenaProvider>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- `threadIsNew` says the host minted `threadId` (`mintThreadId`) for a chat that has not started:
|
|
138
|
+
it attaches as new until the host turns it false, once the session list has the thread.
|
|
139
|
+
- Each provider's assistant client is its own root, and one without a thread list hides any list
|
|
140
|
+
above it, so a chat never defines another's tools or follows its thread.
|
|
141
|
+
- `createAttachmentStore()` / `createQuoteStore()` give each chat's composer its own staged
|
|
142
|
+
attachments and quote (`<AttachmentProvider store>`, `<QuoteProvider store>`), kept outside React
|
|
143
|
+
so they survive the chat remounting in another window.
|
|
144
|
+
- ⌘L quotes a selection into the chat it was made in, and one made outside every chat (or an
|
|
145
|
+
embedded frame's text) into the chat the person last focused.
|
|
146
|
+
- `SessionList`'s `onOpenInNewTab` hands the host a session to open in such a chat.
|
|
147
|
+
|
|
148
|
+
### A model picker, and a session's own model
|
|
149
|
+
|
|
150
|
+
Pass the picked model as `model`. Changing it while a session is open applies
|
|
151
|
+
to that session's next turn:
|
|
152
|
+
|
|
153
|
+
- On a session that has not run yet, the next send carries it, and the server
|
|
154
|
+
keeps it as the session's model.
|
|
155
|
+
- On a session that has run, the server runs every turn with the model the
|
|
156
|
+
session's server config holds (another client, such as Athena itself, can
|
|
157
|
+
change it too), so the SDK writes the new model there
|
|
158
|
+
(`config/patch {model}`). Setting `model` back to `undefined` clears it, so
|
|
159
|
+
the collab agent's own model, or the default, applies again.
|
|
160
|
+
- The model a session is opened with is never written: opening a session never
|
|
161
|
+
overrides the model someone chose for it.
|
|
162
|
+
|
|
163
|
+
Show the session's real model when it opens with `useAthenaThreadModel()`
|
|
164
|
+
(inside `<AthenaProvider>`):
|
|
165
|
+
|
|
166
|
+
```tsx
|
|
167
|
+
import { useAthenaThreadModel, useAthenaStatewireThreadId } from '@athenaintel/react';
|
|
168
|
+
import { useEffect, useRef } from 'react';
|
|
169
|
+
|
|
170
|
+
function SessionModelSeed({ onSessionModel }: { onSessionModel: (model: string | null) => void }) {
|
|
171
|
+
const threadId = useAthenaStatewireThreadId();
|
|
172
|
+
const { model, configured, ready } = useAthenaThreadModel();
|
|
173
|
+
const seededFor = useRef<string | null>(null);
|
|
174
|
+
useEffect(() => {
|
|
175
|
+
// Once per session, after its snapshot lands; a session without server
|
|
176
|
+
// config keeps the picker's current value.
|
|
177
|
+
if (!ready || seededFor.current === threadId) return;
|
|
178
|
+
seededFor.current = threadId;
|
|
179
|
+
if (configured) onSessionModel(model); // null: the agent's / default model ("Auto")
|
|
180
|
+
}, [threadId, model, configured, ready, onSessionModel]);
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
`model` is `null` when the session pins no model; `configured` is `false` for
|
|
186
|
+
a session without server config yet; wait for `ready` before reading either. A
|
|
187
|
+
refused write (a view-only collaborator, or a workspace whose sessions cannot
|
|
188
|
+
hold server config) is reported as a `statewire.config` diagnostics event, and
|
|
189
|
+
the session keeps running with its own model.
|
|
190
|
+
|
|
107
191
|
If `config.appUrl` is omitted, the provider resolves it from the parent bridge or from the matching Athena environment defaults. Known Athena staging and production `apiUrl` and `backendUrl` values automatically fall back to the corresponding frontend origin.
|
|
108
192
|
|
|
109
193
|
Use `trustedParentOrigins` when the SDK runs inside an iframe on a private-cloud or custom parent domain and you want to explicitly allow postMessage auth/config from that parent. Only the window that frames the app is heard. By default `athenaintel.com` hosts, localhost and your own origin are trusted, except the hosts that serve customer-written code (`*.app.athenaintel.com`, `*.code-sandpack.athenaintel.com` and friends; see "What's new in 0.28.0").
|
|
@@ -174,8 +258,9 @@ What the statewire transport wires up in `AthenaChat`:
|
|
|
174
258
|
`icon`, `extraAction`, `notice`, `renderResult`, `onOpenAsset`,
|
|
175
259
|
`hideInternalIdArgs`) instead of being copied. `@athenaintel/react/super-grouping`
|
|
176
260
|
exports the grouped ("conversational") view of an assistant turn —
|
|
177
|
-
`
|
|
178
|
-
|
|
261
|
+
`SuperGroupingTranscript` (what `AthenaChat` renders), `SuperGroupingCard`,
|
|
262
|
+
`SuperGroupingFinalText`, `CollapsibleGroup`, the activity-timeline
|
|
263
|
+
derivation, and the tool-based grouping function — with
|
|
179
264
|
slots for the host's text/tool renderers and controls (`renderHeaderActions`,
|
|
180
265
|
`renderRunningMeta`, `summaryDetails`, `waitingTools`, `expansionKey`), so
|
|
181
266
|
Olympus and the Chrome extension mount one card instead of copies.
|
|
@@ -196,7 +281,17 @@ What the statewire transport wires up in `AthenaChat`:
|
|
|
196
281
|
paywall refusals) render as a dismissible banner; a degraded connection
|
|
197
282
|
shows a reconnect strip; a send into a thread created by the retired legacy
|
|
198
283
|
runtime is refused with a dismissible read-only notice (start a new chat).
|
|
199
|
-
|
|
284
|
+
A send the server admits but refuses to START — a session keeps the
|
|
285
|
+
collab-agent channel (the app's mode) it began on, so a send in the other
|
|
286
|
+
mode is refused with `collab_agent_channel_session_mismatch` — leaves the
|
|
287
|
+
message queued and the run in `error`; `StatewireRunRefusalNotice` (mounted
|
|
288
|
+
by `AthenaChat` above the queue) shows the server's `detail.message` and, for
|
|
289
|
+
that code, a "Start a new session" action (the thread list's `newThread`).
|
|
290
|
+
The same code on a rejected command reaches `StatewireErrorBanner` with the
|
|
291
|
+
same action (`AthenaStatewireErrorNotice.code`). `readRunStartRefusal` and
|
|
292
|
+
`COLLAB_AGENT_CHANNEL_SESSION_MISMATCH` are exported for hosts with their
|
|
293
|
+
own thread UI. Custom hosts can read all of it via
|
|
294
|
+
`useAthenaStatewireLifecycle`.
|
|
200
295
|
- **Thread list:** `enableThreadList` provides the persisted Agora session
|
|
201
296
|
list; switching threads (or starting a new chat) re-attaches the statewire
|
|
202
297
|
session to the selected thread while the host's own `children` stay
|
|
@@ -248,6 +343,7 @@ server omits them and the SDK reads `undefined`):
|
|
|
248
343
|
| `attention_source` | `attentionSource` | `interrupt` · `run` · `pull_request` · `termination` · `wake` · `handoff` |
|
|
249
344
|
| `is_favorited` | `isFavorited` | boolean — toggled through `setFavorited` / `POST /api/conversations/threads/favorite` |
|
|
250
345
|
| `last_wake` | `lastWake` | `{ source, reason, at }` |
|
|
346
|
+
| `created_by_me` | `createdByMe` | boolean — the viewer started the session (`false`: shared with them) |
|
|
251
347
|
| `pull_requests` (opt-in: `include_pull_requests`) | `pullRequests` | `[{ repoFullName, number, url, title, state OPEN/CLOSED/MERGED, isDraft, reviewDecision, checksState SUCCESS/FAILURE/PENDING/NONE, updatedAt }]` — `[]` none, `null` unreadable right now |
|
|
252
348
|
|
|
253
349
|
The per-user conversation index pushes `attention`, `next_action`,
|
|
@@ -277,6 +373,10 @@ Same visual language as `ThreadList` (Tailwind via `cn`, lucide icons), plus:
|
|
|
277
373
|
- a trailing action cluster per row, revealed on hover / focus (a pinned pin
|
|
278
374
|
and any action whose write is in flight stay visible) — every action a
|
|
279
375
|
labelled `<button>` that is a sibling of the row control, never nested:
|
|
376
|
+
- **Open in new tab** (prop `onOpenInNewTab`, absent by default): hands the
|
|
377
|
+
host `{ threadId, title }` instead of selecting the row, as does a
|
|
378
|
+
⌘-click (Ctrl-click) or middle-click on the row (see "Several chats side
|
|
379
|
+
by side");
|
|
280
380
|
- **Rename** (prop `showRename`, default `true`): the title becomes an
|
|
281
381
|
input in place; Enter commits, Escape cancels, blur commits; an unchanged
|
|
282
382
|
or empty title is never sent; the row shows the new title at once and
|
|
@@ -315,7 +415,10 @@ Same visual language as `ThreadList` (Tailwind via `cn`, lucide icons), plus:
|
|
|
315
415
|
answer (`hasResolvedFirstPage`); a background refresh keeps the rows it has;
|
|
316
416
|
- a search box wired to the server-side `search` (prop `showSearch`, default
|
|
317
417
|
`true`), `Load more` over the shared pager, and `New Chat` / refresh as in
|
|
318
|
-
`ThreadList
|
|
418
|
+
`ThreadList` (prop `showNewChat`, default `true`; `false` for a host with
|
|
419
|
+
its own new-session control);
|
|
420
|
+
- an origin badge per row (prop `originBadges`: `'all'` by default,
|
|
421
|
+
`'external'` to leave sessions started in the web app unbadged, `'none'`).
|
|
319
422
|
|
|
320
423
|
The pin writes `POST /api/conversations/threads/favorite`
|
|
321
424
|
(`{ thread_id, is_favorited }` → the server's state after the write) with the
|
|
@@ -385,6 +488,193 @@ only when it is an `https://github.com/<repo>/…` URL for that repository
|
|
|
385
488
|
The full message text always reaches the model; the marker is provenance for
|
|
386
489
|
rendering only.
|
|
387
490
|
|
|
491
|
+
## Sessions page and inbox
|
|
492
|
+
|
|
493
|
+
A full-page, Devin-style session list and a notifications inbox, both on top
|
|
494
|
+
of `enableThreadList` and live through the same conversation index as
|
|
495
|
+
`SessionList`:
|
|
496
|
+
|
|
497
|
+
```tsx
|
|
498
|
+
import { AthenaProvider, InboxButton, SessionsPage } from '@athenaintel/react';
|
|
499
|
+
|
|
500
|
+
<AthenaProvider enableThreadList config={{ token }}>
|
|
501
|
+
<header><InboxButton onOpenSession={() => showChat()} /></header>
|
|
502
|
+
<SessionsPage
|
|
503
|
+
onOpenSession={() => showChat()}
|
|
504
|
+
labels={{ agents: { asset_123: 'Athena Engineer' }, channels: { ask: 'Ask' } }}
|
|
505
|
+
/>
|
|
506
|
+
</AthenaProvider>
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### `SessionsPage`
|
|
510
|
+
|
|
511
|
+
- **Filters the server applies.** A Filter menu (status, pull requests,
|
|
512
|
+
unread, pinned, creator, who started it, agent, mode, origin, created /
|
|
513
|
+
updated date) and a title search. Each filter travels to
|
|
514
|
+
`POST /api/conversations/threads/list` as a predicate of the server's one
|
|
515
|
+
page statement, ANDed onto the list's unchanged permission gate — a filter
|
|
516
|
+
only narrows what the viewer already sees, and `Load more` continues the
|
|
517
|
+
filtered set. Active filters show as removable chips; **Save as default**
|
|
518
|
+
remembers them in this browser (`storageKey` namespaces it), **Reset to
|
|
519
|
+
default** goes back.
|
|
520
|
+
- **Display options.** Sort by last update or creation, newest or oldest
|
|
521
|
+
first; group by what each session needs (Needs you, Working, Ready,
|
|
522
|
+
Waiting, Error, Done), by run status, or not at all; show or hide the
|
|
523
|
+
Status, Origin, Mode, Pull requests, Creator, Created and Updated columns
|
|
524
|
+
(remembered per browser).
|
|
525
|
+
- **A status column that says what to do.** `sessionStatusChip`: the server's
|
|
526
|
+
next action where the person must act ("Approve send email", "Merge #12"),
|
|
527
|
+
else Working / Sleeping (a follow-up is pending) / Waiting / Error /
|
|
528
|
+
PR merged / Done — an orange, blue, green, violet, red or grey dot by
|
|
529
|
+
attention.
|
|
530
|
+
- **Row actions** (revealed on hover / focus): mark read / unread
|
|
531
|
+
(`setReadState` → `POST /api/conversations/threads/read-state`), pin,
|
|
532
|
+
archive — the provider's writes, so the row flips in every list at once.
|
|
533
|
+
- **Export CSV** of the loaded rows (`sessionsCsv`; cells a spreadsheet would
|
|
534
|
+
run as a formula are prefixed with `'`).
|
|
535
|
+
|
|
536
|
+
### `Inbox` / `InboxButton`
|
|
537
|
+
|
|
538
|
+
The inbox is the viewer's own sessions, newest activity first, minus the ones
|
|
539
|
+
dismissed from it — read through the same route with `created_by_me` +
|
|
540
|
+
`exclude_dismissed` (`INBOX_QUERY`; the Unread tab adds `unread_only`). No
|
|
541
|
+
endpoint of its own. Each row: an unread dot, the title, the latest message
|
|
542
|
+
(two lines), a state chip (`inboxStateChip`: Needs you, Working, PR ready,
|
|
543
|
+
Sleeping, Waiting, Error, PR merged, PR closed, Answered) and the time.
|
|
544
|
+
Opening a row selects the session and marks it read; **Mark all read** marks
|
|
545
|
+
the loaded unread rows; **Dismiss** uses
|
|
546
|
+
`POST /api/conversations/threads/notifications/dismiss` (EDIT on the
|
|
547
|
+
session — a dismissed session comes back with its next message).
|
|
548
|
+
`InboxButton` is a bell with the unread count (`useAthenaInboxUnreadCount`,
|
|
549
|
+
the Unread tab's first page: `50+` past one page) that opens the inbox in a
|
|
550
|
+
popover.
|
|
551
|
+
|
|
552
|
+
### Server filters and older servers
|
|
553
|
+
|
|
554
|
+
`useAthenaSessions({ query })` is the data layer both components use, for
|
|
555
|
+
hosts drawing their own rows. `query` is an `AthenaSessionsQuery`:
|
|
556
|
+
|
|
557
|
+
| Field | Server field | Meaning |
|
|
558
|
+
|---|---|---|
|
|
559
|
+
| `search` | `search` | case-insensitive title match |
|
|
560
|
+
| `runStatuses` / `sessionStatuses` | `run_statuses` / `session_statuses` | status_v2 planes (`running` leaves out runs silent for 12 hours, as every list does) |
|
|
561
|
+
| `unreadOnly` | `unread_only` | not read since it last changed (the read receipt) |
|
|
562
|
+
| `favoritesOnly` | `favorites_only` | pinned by the viewer |
|
|
563
|
+
| `hasPullRequests` | `has_pull_requests` | opened a pull request (`true`) or none (`false`) |
|
|
564
|
+
| `createdByMe` | `created_by_me` | the viewer's own (`true`) or shared with them (`false`) |
|
|
565
|
+
| `collabAgentIds` / `collabChannelIds` | `collab_agent_ids` / `collab_channel_ids` | the collab agent and its channel (mode); `'default'` (`DEFAULT_COLLAB_CHANNEL`) is the agent's default channel; channels need an agent |
|
|
566
|
+
| `startChannels` | `start_channels` | where it started (`web`, `github`, `email`, …) |
|
|
567
|
+
| `createdAfter` / `createdBefore` / `updatedAfter` / `updatedBefore` | same, snake_case | ISO bounds, after inclusive, before exclusive |
|
|
568
|
+
| `excludeDismissed` / `excludeTriggered` | `exclude_dismissed` / `exclude_triggered` | not dismissed from the inbox / started by a person |
|
|
569
|
+
| `sort` / `direction` | `sort` / `direction` | `updated` or `created`, `desc` or `asc` |
|
|
570
|
+
|
|
571
|
+
An agora ignores request fields it does not know, so every list response now
|
|
572
|
+
names the filters it applies (`supported_filters`). The hook reads that once
|
|
573
|
+
per identity (a one-row probe) and splits the query (`planSessionsQuery`):
|
|
574
|
+
fields the server applies are sent; fields it cannot are applied to the
|
|
575
|
+
loaded rows instead (`degradedFields` — exact per page, but a page can come
|
|
576
|
+
back short, and `SessionsPage` says so); fields the rows carry nothing to
|
|
577
|
+
test on (creator, dismissed; pull requests when the list does not fetch
|
|
578
|
+
them) are reported in `unsupportedFields` / `unavailableFields` and not
|
|
579
|
+
applied, so `SessionsPage` disables them rather than show wrong rows.
|
|
580
|
+
Server-applied filters are still checked on rows a live push changed, so a
|
|
581
|
+
session you just read leaves "Unread" and a finished one leaves "Running".
|
|
582
|
+
`listThreads` takes the server filters as `filters` (`ThreadListFilterBody`),
|
|
583
|
+
and `app_ids` (`additionalListAppIds`) now reaches the server: the request
|
|
584
|
+
body used to drop it.
|
|
585
|
+
|
|
586
|
+
## Session workbench
|
|
587
|
+
|
|
588
|
+
A Devin-style workspace pane beside the chat for the active session: a tab
|
|
589
|
+
strip of panes, a "+" menu right after the tabs to open more (with a search
|
|
590
|
+
box; Enter opens the first match), closable tabs, a collapse to a rail, a
|
|
591
|
+
maximize that gives the workspace the chat's width (the chat stays mounted,
|
|
592
|
+
hidden), and a resizable edge. With every tab closed, the column lists each
|
|
593
|
+
pane with its `description`, centred, to open one.
|
|
594
|
+
|
|
595
|
+
```tsx
|
|
596
|
+
import { AthenaChat, AthenaLayout, AthenaProvider, SessionList, SessionWorkbench } from '@athenaintel/react';
|
|
597
|
+
|
|
598
|
+
<AthenaProvider enableThreadList config={{ token }}>
|
|
599
|
+
<aside><SessionList /></aside>
|
|
600
|
+
<AthenaLayout workbench={<SessionWorkbench />}>
|
|
601
|
+
<AthenaChat />
|
|
602
|
+
</AthenaLayout>
|
|
603
|
+
</AthenaProvider>
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
`AthenaLayout`'s `workbench` prop puts it in a right-hand column
|
|
607
|
+
(`defaultWorkbenchPercent`, default 40; `defaultWorkbenchCollapsed`). With a
|
|
608
|
+
workbench the layout opens no asset column of its own: assets the agent or the
|
|
609
|
+
person opens show as the workbench's **Open assets** tab (closing the tab
|
|
610
|
+
closes the asset panel). Maximize is offered only inside `AthenaLayout`, which
|
|
611
|
+
owns the column's width; collapsing a maximized workspace brings the chat back
|
|
612
|
+
beside the rail. `SessionWorkbench` also works on its own anywhere under
|
|
613
|
+
`<AthenaProvider>`; it then keeps its collapsed state itself.
|
|
614
|
+
|
|
615
|
+
Built-in panes and what each reads:
|
|
616
|
+
|
|
617
|
+
| Pane | id | Source |
|
|
618
|
+
|---|---|---|
|
|
619
|
+
| Tasks | `tasks` | The thread state's `todos` channel (the deepagents plan), else the newest `write_todos` call in the loaded transcript — "N/M done" and numbered steps with their status |
|
|
620
|
+
| Shell | `shell` | Every `execute` call in the loaded transcript, newest first: first line of the command, the machine it ran on (`sandbox_asset_id` named through the workspace's computers, else "Session sandbox"), the exit status parsed from `[Command succeeded/failed with exit code N]`, the time; searchable; a row expands to its output (first 4,000 characters) |
|
|
621
|
+
| Computer | `computer` | `GET /api/conversations/threads/{id}/workspace`: the session computer, else the most recent computer — its state (`GET /api/sandbox/computer/{id}/status`, a read that never wakes it, re-read every 30 s while shown), "Open in Athena", and "Copy SSH command" (`GET /api/v0/computer/{id}/ssh-access`, offered only when the viewer may edit the computer); the other computers it used below |
|
|
622
|
+
| Pull requests | `pull-requests` | The thread list's live pull-request state for the session (`enableThreadList`): number, title, state, checks and review decision, each a link to GitHub |
|
|
623
|
+
| Attachments | `attachments` | The workspace's assets — what the session created or edited — with type, last update, "Open in Athena", and a click that opens it in the asset panel when an `AthenaLayout` hosts one |
|
|
624
|
+
|
|
625
|
+
"Open in Athena" links go to the deployment's Athena frontend
|
|
626
|
+
(`athenaLinkAppUrl`): in an app a computer serves, Marathon's `/_athena/auth`
|
|
627
|
+
mints the app's own origin as `appUrl`, so a known Athena backend's frontend is
|
|
628
|
+
used instead. Every workspace read is gated server-side (thread access, then
|
|
629
|
+
each asset's own permission), so a pane lists only what the viewer may open. One query
|
|
630
|
+
serves every pane; it is idle for a never-started chat, re-reads every 15 s
|
|
631
|
+
while the run is live and once more as it settles, and is keyed by the
|
|
632
|
+
signed-in principal and a one-way credential fingerprint, so one account's
|
|
633
|
+
cached workspace is never shown to another. Open assets stay mounted (hidden)
|
|
634
|
+
while another pane shows or the workbench is a rail, so their viewers keep
|
|
635
|
+
their state.
|
|
636
|
+
|
|
637
|
+
**Tabs per thread.** Each thread keeps its open tabs and its active tab for as
|
|
638
|
+
long as the workbench stays mounted (in memory only — nothing is written to
|
|
639
|
+
storage); a thread it has not seen opens `defaultOpenPaneIds` (Tasks, Shell,
|
|
640
|
+
Computer).
|
|
641
|
+
|
|
642
|
+
**Custom panes.** `panes` is a registry: spread the built-ins and add your own.
|
|
643
|
+
A pane is `{ id, title, description?, icon?, render(context) }` (`description`
|
|
644
|
+
is the one line the empty column shows under the title), where `context` is
|
|
645
|
+
`{ threadId, isPersisted, isRunning }`; inside a pane,
|
|
646
|
+
`useSessionWorkbench()` reads the same context and
|
|
647
|
+
`useSessionWorkbenchWorkspace()` the shared workspace query.
|
|
648
|
+
|
|
649
|
+
```tsx
|
|
650
|
+
import {
|
|
651
|
+
DEFAULT_SESSION_WORKBENCH_PANES,
|
|
652
|
+
SessionWorkbench,
|
|
653
|
+
type SessionWorkbenchPane,
|
|
654
|
+
} from '@athenaintel/react';
|
|
655
|
+
import { ScaleIcon } from 'lucide-react';
|
|
656
|
+
|
|
657
|
+
const MATTER_PANE: SessionWorkbenchPane = {
|
|
658
|
+
id: 'matter',
|
|
659
|
+
title: 'Matter',
|
|
660
|
+
icon: ScaleIcon,
|
|
661
|
+
render: ({ threadId, isPersisted }) =>
|
|
662
|
+
isPersisted && threadId ? <MatterSummary threadId={threadId} /> : <p>No matter yet.</p>,
|
|
663
|
+
};
|
|
664
|
+
|
|
665
|
+
<SessionWorkbench
|
|
666
|
+
panes={[...DEFAULT_SESSION_WORKBENCH_PANES, MATTER_PANE]}
|
|
667
|
+
defaultOpenPaneIds={['matter', 'tasks']}
|
|
668
|
+
/>
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
The built-in pane bodies (`SessionTasksPane`, `SessionShellPane`, …), their
|
|
672
|
+
registry entries (`SESSION_WORKBENCH_TASKS_PANE`, …), the data hooks
|
|
673
|
+
(`useAthenaSessionWorkspace`, `useAthenaComputerStatus`,
|
|
674
|
+
`useAthenaComputerSshAccess`) and the pure derivations behind them
|
|
675
|
+
(`deriveShellRows`, `filterShellRows`, `deriveTaskSteps`, `taskProgress`,
|
|
676
|
+
`workspaceComputers`) are exported for hosts composing their own.
|
|
677
|
+
|
|
388
678
|
## Voice Sessions (`@athenaintel/react/voice`)
|
|
389
679
|
|
|
390
680
|
`useAthenaVoiceSession` runs a real-time voice conversation with an Athena
|
|
@@ -420,10 +710,10 @@ const voice = useAthenaVoiceSession({
|
|
|
420
710
|
**Voice tools.** `enabled_tools` takes voice tool names (`AthenaVoiceToolId`),
|
|
421
711
|
not the chat `Toolkits` ids — `'web_search_browse_toolkit'` is not a voice tool,
|
|
422
712
|
`'web_search'` is. Available: `web_search` (`search_web` is a legacy alias),
|
|
423
|
-
`browse` (read a URL), `
|
|
424
|
-
(
|
|
425
|
-
`
|
|
426
|
-
|
|
713
|
+
`browse` (read a URL), `read_full_asset` and `search_assets` (as the viewer),
|
|
714
|
+
`ask_agent` (hand a question to the general agent), `save_note`,
|
|
715
|
+
`get_current_time_est`. `search_knowledge_base` and `search_knowledge_base_lr`
|
|
716
|
+
are retired: still accepted, and ignored. Tools that
|
|
427
717
|
call back into the client over room RPC (`write_to_clipboard`, the desktop and
|
|
428
718
|
mobile tools) are not part of the hook's contract. Omit the field for the
|
|
429
719
|
server's default set; pass `[]` for pure conversation. The server refuses
|
|
@@ -470,6 +760,56 @@ Both use the same bearer / API key as session creation. The full recipe
|
|
|
470
760
|
template skill `voice-session-guide.md`. `createAthenaVoiceSession` is also
|
|
471
761
|
exported if you hold the bridge state yourself.
|
|
472
762
|
|
|
763
|
+
## What's new in 0.32.0
|
|
764
|
+
|
|
765
|
+
**A model picked after mount reaches the server.** The provider registered its run config once per thread attach, so a `model` (or `channel`, `tools`, `systemPrompt`, …) changed after mount never reached the next send unless something else happened to re-sync the context. The registration is now keyed by the built run config's value: a changed value re-syncs before the next send, while fresh array literals per render still change nothing.
|
|
766
|
+
|
|
767
|
+
**A model changed on a session that has run applies.** Once a session has server config, the server runs every turn with the model that config holds and ignores the one a send carries, so a picker change after the first turn used to be dropped. Changing `model` while such a session is open now writes it there (`config/patch {model}`; `undefined` clears it so the collab agent's own model applies). The model a session is opened with is never written. See [A model picker, and a session's own model](#a-model-picker-and-a-sessions-own-model).
|
|
768
|
+
|
|
769
|
+
**`useAthenaThreadModel()`** returns `{ model, configured, ready }`: the model the open session's server config holds, so an app can show a session's real model when it opens. A refused write is reported as the new `statewire.config` diagnostics event.
|
|
770
|
+
|
|
771
|
+
**A collab agent's session no longer records the SDK default as its model.** With `agent` set and no `model`, the run config's `panel_config` (which the server stores on the session's first run and replays to every client) carried `DEFAULT_STATEWIRE_MODEL`, so Athena showed that model for sessions running the agent's own. It now names no model there.
|
|
772
|
+
|
|
773
|
+
## What's new in 0.31.0
|
|
774
|
+
|
|
775
|
+
**Draft tool cards stay in the conversation.** In the grouped view (`groupToolCalls`), a tool flagged `inline` in the shared display registry (`@athenaintel/agent-runtime` `ToolDisplayMeta.inline`; today the email and calendar-event draft tools) renders its card below the activity header, outside the "Used N tools" and "Show tool details" disclosures, and stays mounted whether the card is collapsed or not, so the person can edit and send the draft without opening anything. The call still appears as a step in the timeline, the run does not pause, and the card is not rendered a second time inside the details. The transcript view `AthenaChat` renders (`SuperGroupingTranscript`) does the same per activity segment: the draft card sits under its segment's step row, and a segment whose only step is a draft offers no empty "Show tool details". `SuperGroupingCard` and `SuperGroupingTranscript` take `isInlineTool` to override the registry per host; `excludePartsFromGroups` is exported for hosts that build their own grouped view.
|
|
776
|
+
|
|
777
|
+
## What's new in 0.30.1
|
|
778
|
+
|
|
779
|
+
**Spoken words no longer retype from an empty bubble while a voice turn speaks over a run.** In the grouped (conversational) view, the answer below the card is the text after the last tool call plus the words of every spoken voice turn. `SuperGroupingFinalText` used to join those parts into one string, so when a spoken turn kept streaming while the run's own reply streamed after it, the joined text changed in the middle rather than at its end. `MarkdownText`'s streaming reveal restarts whenever its text stops extending what it showed, so the whole answer was wiped and retyped on every spoken word. Each answer part now renders through its own `TextComponent` (keyed by its content index) inside a `data-slot="super-grouping-final-text"` column, and only the last part carries the running status and caret. `getFinalTextParts` (with `FinalTextSegment`) is exported beside `getFinalText`, which still returns the joined string. Nothing to change in your app.
|
|
780
|
+
|
|
781
|
+
## What's new in 0.30.0
|
|
782
|
+
|
|
783
|
+
**Session workbench, closer to Devin's.** The "+" menu now sits right after the tabs and has a search box (Enter opens the first match). Inside `AthenaLayout`, a maximize button gives the workspace the chat's width; the chat stays mounted, hidden, and collapsing a maximized workspace brings it back. With every tab closed, the column lists each pane centred with a one-line `description`, which is a new optional field on `SessionWorkbenchPane` that the built-in panes now carry. Tabs use 13px labels, and the close control stays quiet until the tab is hovered, focused or selected. Pure helper: `filterWorkbenchPanes`.
|
|
784
|
+
|
|
785
|
+
**`SessionList` options for hosts with their own chrome.** Set `showNewChat={false}` to drop the New Chat and refresh buttons when your sidebar has its own new-session control. `originBadges` picks which rows carry an origin badge: `'all'` (the default, as before), `'external'` (every origin except the web app, so sessions started in a browser tab of the app carry none, while Slack, GitHub, Chrome and the rest still do), or `'none'`. `sessionOriginBadge` and `WEB_APP_ORIGIN_LABEL` are exported.
|
|
786
|
+
|
|
787
|
+
**Composer hints.** `<AthenaChat composer={{ placeholder, runningPlaceholder }}>` sets the empty composer's hint. `runningPlaceholder` shows while a run is live, when a message steers or queues instead of starting a turn. The editor repaints a changed hint in place without being rebuilt.
|
|
788
|
+
|
|
789
|
+
**`@assistant-ui/store` 0.3.21.** Its client accessors answer `call`, `apply` and `bind` themselves, so apps whose bundler lowers optional chaining (Vite's default target) no longer crash on mount (#44102). No `build.target` workaround is needed.
|
|
790
|
+
|
|
791
|
+
## What's new in 0.29.5
|
|
792
|
+
|
|
793
|
+
**No more "linkifyjs: already initialized" warning.** The chat text schema no longer passes `protocols: ["athena-point"]` to Tiptap's Link extension. Link registers those schemes with linkifyjs in every editor's `onCreate`, and linkifyjs accepts a new scheme only before its first scan, so every composer or message body created after the first one logged `linkifyjs: already initialized - will not register custom scheme "athena-point"`. Chrome shows it on an extension's Errors page. Screen-point chips are unchanged: they arrive as markdown links (`[label](athena-point://…)`), which parse without linkify, and the chat link allow-list still accepts the scheme. Only a bare `athena-point://…` string typed into the composer is no longer turned into a link by itself. Nothing to change in your app.
|
|
794
|
+
|
|
795
|
+
## What's new in 0.29.4
|
|
796
|
+
|
|
797
|
+
**A streaming reply no longer jumps a line up and down in narrow panels.** The chat-ui message components no longer load `@assistant-ui/react-markdown/styles/dot.css`. That stylesheet put a pulsing "●" after the last block of every running message body, next to the body's own caret. The dot and its margins need about 17px at the end of the line, so in a narrow panel it wrapped onto its own line before the text did: the thread scrolled up one line, then the next word dropped down to join the dot. The caret is now the only streaming indicator. A message that has no text yet still shows the "Thinking..." indicator.
|
|
798
|
+
|
|
799
|
+
## What's new in 0.29.3
|
|
800
|
+
|
|
801
|
+
**Tooltips, popovers and the composer's agent and model menus draw their own background again, in any host.** They render outside the provider wrapper, under `document.body`, carrying the `.athena-sdk` scope class for their tokens. That class is `display: contents` for the wrapper's sake, and nothing on a tooltip undid it, so every SDK tooltip lost its box: no background, padding or radius, just the text and the arrow. Themed popovers and pickers also carried `.athena-themed`, whose unlayered `display: contents` beat their `block`. A host whose own Tailwind compiles the same utility names against tokens in another format also broke them: shadcn's HSL channels, for example, make `bg-popover` `hsl(var(--popover))`, and that is invalid for the SDK's full colours, so the menu was transparent over the page. The portaled roots now set their box (`display: block`) and colours (`var(--popover)` / `var(--popover-foreground)` / `var(--border)` for panels, `var(--foreground)` on `var(--background)` for tooltips) inline, which no stylesheet rule beats; the theme's variables still apply through the same inline style. What your own `className` on `TooltipContent` sets stays yours: a colour or display class (`bg-red-600`, `hover:text-white`, `flex`) keeps that property out of the inline defaults, as before, and `style` overrides any of them. A tooltip's arrow follows the tooltip's background when that background is inline, whether it is the default or your `style`. Nothing to change in your app.
|
|
802
|
+
|
|
803
|
+
## What's new in 0.29.2
|
|
804
|
+
|
|
805
|
+
Tool cards inside an expanded collapsible tool group and the super-grouping "Run details" panel are now spaced with flex `gap-2` instead of `space-y-2`, so cards wrapped in a `display: contents` element (e.g. a host's deep-link anchor) keep the 0.5rem gap between them; boxed children look the same as before. `SuperGroupingCard` also accepts `classNames.detailsParts` to tune the gap (or other classes) on the flex column the run's parts render in.
|
|
806
|
+
|
|
807
|
+
## What's new in 0.29.1
|
|
808
|
+
|
|
809
|
+
**A running grouped turn shows one status line.** The activity card's header already says what the run is doing ("Thinking", "Preparing response", "Searching the web"); the elapsed counter that used to sit beneath it as a second row ("Working… · 11s", with its own pulsing dot) is now just the counter ("11s", "1m 05s"), inline on the header row to the right of the status and before the Stop control. It still appears after three seconds, turns amber once nothing has streamed for thirty, and is not shown while the card reads "Waiting for you". `SuperGroupingCard`'s `renderRunningMeta` slot keeps its signature; whatever a host returns is now placed on the header row (small, right-aligned) rather than on a line of its own, and only while the phase is `running`. Ungrouped threads (`groupToolCalls={false}`) and the per-tool-row counters are unchanged.
|
|
810
|
+
|
|
811
|
+
Two related fixes in the grouped card: a tool whose only result so far is the backend's streaming placeholder (`artifact._tool_message_metadata.streaming === true` — task subagents, studio and Python execution, deep research) now stays a running step, so the header keeps naming the tool instead of flipping to "Preparing response" while it still runs (`isStreamingToolPlaceholder` is exported from `super-grouping`); and the thirty-second stall is announced to screen readers through a polite live region, while the ticking counter itself stays out of it.
|
|
812
|
+
|
|
473
813
|
## What's new in 0.28.0
|
|
474
814
|
|
|
475
815
|
**The iframe auth bridge only listens to the page that frames your app, and that page can no longer point the SDK's token at another server.** When the SDK runs inside an iframe, `useParentBridge` takes `athena-auth` (a token) and `athena-config` (URLs) from the parent window. Before this release it took them from any window on any `*.athenaintel.com` origin, including the hosts that serve customer computer and application apps, and an `athena-config` could replace `backendBaseUrl` / `statewireSyncUrl` at any time. A page on one of those hosts could frame or open another app and make its SDK send its token to a server of its choosing. Now:
|
|
@@ -1047,6 +1387,40 @@ function App() {
|
|
|
1047
1387
|
|
|
1048
1388
|
Set `linkClicks={{ interceptAthenaCitations: false }}` to keep Athena citation links opening in the browser while still letting your app observe all link clicks.
|
|
1049
1389
|
|
|
1390
|
+
### Opening assets the host's own way (`onOpenAsset`)
|
|
1391
|
+
|
|
1392
|
+
A host with its own place for assets (a desktop app's tabs, a route of its own) passes `onOpenAsset`
|
|
1393
|
+
to `<AthenaProvider>`. While it is set, every request to open an asset goes to it before the SDK's
|
|
1394
|
+
asset panel:
|
|
1395
|
+
|
|
1396
|
+
- a tool card's Open (and the open-asset link on a tool's card);
|
|
1397
|
+
- an Athena citation or asset link in a message, which the SDK then intercepts as it does with an
|
|
1398
|
+
asset panel mounted (`isAssetPanelAvailable` is true); a modified click (⌘, Ctrl, Shift, Alt)
|
|
1399
|
+
stays the browser's;
|
|
1400
|
+
- the auto-open after a tool created or touched an asset, marked `origin: 'auto'` (a person's open
|
|
1401
|
+
is `origin: 'user'`).
|
|
1402
|
+
|
|
1403
|
+
```tsx
|
|
1404
|
+
<AthenaProvider
|
|
1405
|
+
config={config}
|
|
1406
|
+
onOpenAsset={({ assetId, origin, reference, href }) => {
|
|
1407
|
+
if (origin === 'auto') return; // handled: open nothing the person did not ask for
|
|
1408
|
+
if (!canShowHere(assetId)) return false; // the asset panel (or the link's own navigation) takes it
|
|
1409
|
+
openTab({ assetId, reference }); // `reference`: the citation's anchor and excerpt
|
|
1410
|
+
}}
|
|
1411
|
+
>
|
|
1412
|
+
```
|
|
1413
|
+
|
|
1414
|
+
The request carries the asset id, the name and coarse type the card or link knew, the citation
|
|
1415
|
+
target (`reference`, for `AthenaAssetEmbed`), and for a link its own address (`href`), so a host that
|
|
1416
|
+
opens it on the web keeps every parameter it carried. Return `false` to leave the request to the
|
|
1417
|
+
asset panel, or, with no panel mounted, to the link's own navigation; anything else (returning
|
|
1418
|
+
nothing included) means the host opened it. Hosts that do not pass `onOpenAsset` behave as before.
|
|
1419
|
+
|
|
1420
|
+
`appendCitationReferenceParams({ params, reference })` writes a reference's place (its anchor and
|
|
1421
|
+
excerpt) into any URL's search params, the way `AthenaAssetEmbed` writes it into the embed URL; a
|
|
1422
|
+
host that opens a cited place in Athena on the web writes it into the Spaces link the same way.
|
|
1423
|
+
|
|
1050
1424
|
## Standalone Asset Embeds
|
|
1051
1425
|
|
|
1052
1426
|
Use `AthenaAssetEmbed` to render a native Athena asset without chat, thread history, tabs, or the SDK split-pane layout. It defaults to the editable, full native asset experience (`readOnly={false}` and `displayMode="full"`). The embed token and the current user must still have edit permission; otherwise Athena renders the asset read-only.
|
|
@@ -1093,6 +1467,22 @@ function AssetView() {
|
|
|
1093
1467
|
}
|
|
1094
1468
|
```
|
|
1095
1469
|
|
|
1470
|
+
A host that mints its own embed links (`POST /api/embed/generate-token` from its own backend, so
|
|
1471
|
+
its credentials never reach the page) passes the link as `embedUrl`: the component frames that page
|
|
1472
|
+
and mints none itself. `onReady` says when the framed page has answered (its bridge's first
|
|
1473
|
+
message), which tells a page that is still loading from one that never arrived (a frame its
|
|
1474
|
+
`frame-ancestors` refused, a network failure). Other iframe attributes (`sandbox`,
|
|
1475
|
+
`referrerPolicy`, `allow`) pass through to the frame.
|
|
1476
|
+
|
|
1477
|
+
```tsx
|
|
1478
|
+
<AthenaAssetEmbed
|
|
1479
|
+
assetId={assetId}
|
|
1480
|
+
embedUrl={embed.embedUrl}
|
|
1481
|
+
sandbox="allow-scripts allow-same-origin allow-forms allow-popups"
|
|
1482
|
+
onReady={() => setReady(true)}
|
|
1483
|
+
/>
|
|
1484
|
+
```
|
|
1485
|
+
|
|
1096
1486
|
When `onCitationClick` is provided, citation navigation is delegated to the host by default. Set `citationBehavior="browser"` to observe the event while preserving Athena's default new-tab navigation. Host mode requires `onCitationClick`; without a handler, the SDK safely falls back to browser navigation.
|
|
1097
1487
|
|
|
1098
1488
|
`onCitationAction` handles actions initiated from a citation popover. It currently receives `action: 'open-in-spaces'` when the user clicks the (+) button. Providing the handler delegates that action to the host by default. Set `citationActionBehavior="browser"` to observe the event while preserving Athena's default navigation; requesting host mode without a handler safely falls back to browser behavior.
|
|
@@ -1102,6 +1492,13 @@ Pass the callback's complete `reference` to the linked `AthenaAssetEmbed`, rathe
|
|
|
1102
1492
|
the cited excerpt or rectangular region. Updating the reference also navigates when the host opens
|
|
1103
1493
|
another citation in the same asset.
|
|
1104
1494
|
|
|
1495
|
+
`reference.anchor` may also be the anchor's raw query string, the form Athena links, citations and
|
|
1496
|
+
search results carry (`anchor=slide&slide_index=3&slide_id=…`, `anchor=time&time=0:42`,
|
|
1497
|
+
`anchor=pm_node&node_id=…`, or an asset ref such as `asset_x?anchor=cell&cell_id=…`). The embed
|
|
1498
|
+
receives its parameters as written, so it lands on any kind of place: a slide, a moment of a
|
|
1499
|
+
recording, an image region. A `meta.excerpt` with no anchor is forwarded too; the embed finds the
|
|
1500
|
+
passage by its words.
|
|
1501
|
+
|
|
1105
1502
|
If the host starts with an Athena citation URL/string instead of an
|
|
1106
1503
|
`onCitationAction` event, parse it and pass the returned `reference` directly to the embed:
|
|
1107
1504
|
|
|
@@ -1201,6 +1598,26 @@ The `collab` entry hosts the Keryx-backed live surfaces: `useGenericDoc` /
|
|
|
1201
1598
|
workspace presence feed below. Both mint short-lived room-bound tokens with the
|
|
1202
1599
|
provider's credentials and re-mint before expiry on their own.
|
|
1203
1600
|
|
|
1601
|
+
`connectGenericDoc` also serves hosts that keep a **local copy** of the document
|
|
1602
|
+
(Midas, through `@athenaintel/local-copy`):
|
|
1603
|
+
|
|
1604
|
+
- `localCopy.prepare({ doc, transport })` runs once, before the first mint: it
|
|
1605
|
+
applies the stored copy to the document and returns the local edits an earlier
|
|
1606
|
+
session never had acknowledged, which the handle sends and waits on like its
|
|
1607
|
+
own. `handle.prepared` flips once it has run; mount readers after it.
|
|
1608
|
+
- `localCopy.transportChanged()` is called whenever the handle's unconfirmed
|
|
1609
|
+
edits (`handle.unconfirmedEdits()`) or its sync state change.
|
|
1610
|
+
- `localCopy.beforeConnect({ grant, firstConnection, offlineForMs,
|
|
1611
|
+
hasUnsyncedEdits })` is asked after each mint and before the connection it
|
|
1612
|
+
would open: the first connection, a reconnect after an outage longer than
|
|
1613
|
+
`offlineGateAfterMs` (default 15 s, past which the handle reconnects itself,
|
|
1614
|
+
re-minting each time), and a re-mint after a revocation. `'hold'` keeps the
|
|
1615
|
+
handle disconnected (`handle.held`) until `handle.resume()`.
|
|
1616
|
+
- A mint that fails for want of the network (`retryMintError`, default
|
|
1617
|
+
`isRetryableMintError`: network errors, timeouts, 408, 429, 5xx) leaves the
|
|
1618
|
+
handle `disconnected` and is retried, immediately when the browser comes back
|
|
1619
|
+
online; a refusal (401/403/404) still ends it with `status: 'error'`.
|
|
1620
|
+
|
|
1204
1621
|
### Workspace presence (admin only)
|
|
1205
1622
|
|
|
1206
1623
|
`useWorkspacePresence(workspaceId)` is a **read-only** subscriber to the
|
|
@@ -1287,9 +1704,33 @@ For CSS-level theming without the `theme` prop, set the design-token custom prop
|
|
|
1287
1704
|
}
|
|
1288
1705
|
```
|
|
1289
1706
|
|
|
1707
|
+
## Pop-out windows
|
|
1708
|
+
|
|
1709
|
+
A host that shows SDK UI in a second browser window (the React tree stays in the main window while the DOM lives in the pop-out's document, as flexlayout pop-outs do) wraps that subtree in `OwnerDocumentProvider` with the pop-out's document. The SDK's popover, tooltip and composer mention menu then portal into that document's `body` instead of the main window's; with no provider (or the main document) they keep their default container.
|
|
1710
|
+
|
|
1711
|
+
```tsx
|
|
1712
|
+
import { OwnerDocumentProvider } from '@athenaintel/react/owner-document';
|
|
1713
|
+
|
|
1714
|
+
<OwnerDocumentProvider document={popoutWindow.document}>
|
|
1715
|
+
<AthenaChat />
|
|
1716
|
+
</OwnerDocumentProvider>
|
|
1717
|
+
```
|
|
1718
|
+
|
|
1719
|
+
Your own portals can read the same context: `usePortalContainer()` returns the pop-out's `body` (or `undefined` in the main window, so a library keeps its default), `useOwnerDocument()` the hosting document, and `useIsInPopoutDocument()` whether it is a pop-out. The same exports are on the root entry; `@athenaintel/react/owner-document` imports nothing else from the SDK, so a shell can provide the context without loading the chat. The pop-out document needs the SDK stylesheet too.
|
|
1720
|
+
|
|
1290
1721
|
## Tool cards in the thread
|
|
1291
1722
|
|
|
1292
|
-
`<AthenaChat>`
|
|
1723
|
+
`<AthenaChat>` renders each turn as a transcript (`groupToolCalls`, default `true`; pass `false` to list every tool card inline in call order):
|
|
1724
|
+
|
|
1725
|
+
- **The agent's sentences stay visible.** Every text part the agent writes before its last tool call ("I'll find your workstation, then check origin/staging.", "Started. Now I'll compare.") renders in the transcript, in order, as it streams. Only the work between two sentences folds: each run of tool calls and reasoning becomes one collapsed step row. The answer (the text after the last tool call) renders below, as before; no text renders twice.
|
|
1726
|
+
- **Each step says what it did.** A collapsed row names the step in progress, else the last one it took — "Ran `git log -1 origin/staging`", "Read `live_audio.py`", "Edited `upstream.py`" with "+4 −1", "Found 3 assets for "workstation"", "jevin-box is running", "Viewed pull request #43093", "Updated plan (3/7 done)" — with "+2 more" when the row folds several. Opening it lists every step, and "Show tool details" reveals that row's tool UIs.
|
|
1727
|
+
- **The header counts the turn.** "Working for 1m 12s" while it runs, "Worked for 2m 30s · Used 7 tools" once done (from the messages' own server stamps), "Waiting for you" on an approval. After thirty seconds without a streamed change the header adds "Nothing new for 42s" in amber.
|
|
1728
|
+
|
|
1729
|
+
The transcript is `SuperGroupingTranscript` from `@athenaintel/react/super-grouping`; it takes the same renderer and host slots as `SuperGroupingCard` (which keeps the single-card layout for hosts that mount it). `splitTurnSegments`, `readTurnTiming` and `formatWorkDuration` are exported for hosts that lay a turn out themselves.
|
|
1730
|
+
|
|
1731
|
+
Every step row and every thread tool card reads one summary registry, `summarizeToolCall({ toolName, args, result, status })` → `{ label, detail?, meta?, code? }` (also on `@athenaintel/react/tools`). It has rules for the deep agent's core tools (`execute`, the workspace file tools, `search_assets`, the computer and GitHub tools, web search and browse, `read_asset`, `write_todos`, `task`); other tools read the shared display registry, and a tool neither knows falls back to a host catalog name (`resolveToolDisplayName`), else its sentence-cased name. A call that targets a machine or document by id (`sandbox_asset_id`, `computer_asset_id`) is named by its title when an earlier result in the turn carried one (`collectAssetTitles`); nothing is fetched.
|
|
1732
|
+
|
|
1733
|
+
Every tool call it renders — the generic `ToolFallback`, the built-in tool UIs, nested sub-calls — shares one row anatomy: a status glyph (spinner / check / x / alert), the verb and its target on one line, a running call's elapsed seconds after three, a failed call tinted red, and a disclosure for the arguments and result.
|
|
1293
1734
|
|
|
1294
1735
|
That row is the `thread` appearance of `ToolFallback`. Hosts that render their own thread keep the boxed host card they render today (the default, `card`); to adopt the row, wrap the thread in the provider or set it per card:
|
|
1295
1736
|
|
|
@@ -1302,12 +1743,33 @@ import { ToolFallback, ToolFallbackAppearanceProvider } from '@athenaintel/react
|
|
|
1302
1743
|
|
|
1303
1744
|
Dedicated tool UIs built on `ToolCard` follow the provider automatically; `useToolAppearance()` reads the appearance in force for a custom tool UI.
|
|
1304
1745
|
|
|
1746
|
+
## Spreadsheet range previews (`@athenaintel/react/sheet-range`)
|
|
1747
|
+
|
|
1748
|
+
The sheet tool cards show a read-only preview of the range a tool read or wrote: column letters across the top, row numbers down the side, each cell on one line (its full text on hover), and the rows and columns left out counted under the table. The same pieces are on the `@athenaintel/react/sheet-range` entry (and the root entry) for a custom tool UI:
|
|
1749
|
+
|
|
1750
|
+
```tsx
|
|
1751
|
+
import { RangePreviewTable, rangePreviewFromCellMap } from '@athenaintel/react/sheet-range';
|
|
1752
|
+
|
|
1753
|
+
const preview = rangePreviewFromCellMap({
|
|
1754
|
+
range: "'Q1 Plan'!A1:F40", // the A1 range the cells were read from
|
|
1755
|
+
cells, // A1-keyed values: { A1: 'Region', B1: 1200, … }
|
|
1756
|
+
formatCell: (value) => (value == null ? '' : String(value)),
|
|
1757
|
+
maxRows: 20,
|
|
1758
|
+
});
|
|
1759
|
+
|
|
1760
|
+
{preview && <RangePreviewTable preview={preview} maxRows={20} caption="Q1 Plan A1:F40" />}
|
|
1761
|
+
```
|
|
1762
|
+
|
|
1763
|
+
`rangePreviewFromRows` previews rows of values written from an anchor cell instead. `parseA1Range` reads a cell (`B7`), a rectangle (`A1:C5`), whole columns (`A:C`) or whole rows (`3:5`), with an optional sheet prefix (`Sales!`, `'Q1 Plan'!`, `''` for a quote in a quoted name), `$` markers and any letter case, and returns `null` for anything else (a named range, a column past XFD, row 0). The entry imports nothing else from the SDK, so a shell can use it without loading the chat.
|
|
1764
|
+
|
|
1305
1765
|
## Key Components
|
|
1306
1766
|
|
|
1307
1767
|
- **`<AthenaProvider>`** — Runtime, auth, theming, and configuration
|
|
1308
1768
|
- **`<AthenaChat>`** — Full chat UI with composer, messages, and tool rendering
|
|
1309
|
-
- **`<AthenaLayout>`** — Split-pane layout with asset panel
|
|
1769
|
+
- **`<AthenaLayout>`** — Split-pane layout with asset panel (or a `workbench` column)
|
|
1770
|
+
- **`<SessionWorkbench>`** — Devin-style workspace pane: Tasks, Shell, Computer, Pull requests, Attachments, and your own panes (see [Session workbench](#session-workbench))
|
|
1310
1771
|
- **`<SessionList>`** — Session sidebar: attention, next action, pull-request chips, pin, search (see [Session list, attention and wake markers](#session-list-attention-and-wake-markers))
|
|
1772
|
+
- **`<SessionsPage>`** / **`<Inbox>`** / **`<InboxButton>`** — Full-page session list with server-side filters, display options and CSV export; the notifications inbox (see [Sessions page and inbox](#sessions-page-and-inbox))
|
|
1311
1773
|
- **`<ThreadList>`** — Plain conversation history sidebar (title rows only)
|
|
1312
1774
|
- **`Toolkits`** — Constants for all available backend toolkits
|
|
1313
1775
|
|
|
@@ -1347,6 +1809,13 @@ thread. `useComposerReady()` exposes the readiness for UI that wants to show a
|
|
|
1347
1809
|
"loading" state; `composer.handoff` records each deferred, applied and dropped
|
|
1348
1810
|
write.
|
|
1349
1811
|
|
|
1812
|
+
`useFocusComposer()` puts the caret at the end of the draft and leaves the draft
|
|
1813
|
+
as it is, for a host that shows the chat again and wants typing to land in it (a
|
|
1814
|
+
launcher window brought back by a shortcut). Asked before the editor has mounted,
|
|
1815
|
+
it focuses the editor as it mounts. `useReadComposerDraft()` returns a function
|
|
1816
|
+
that reads the draft's text when called, for a host that hands the chat to
|
|
1817
|
+
another window and carries the unsent text along.
|
|
1818
|
+
|
|
1350
1819
|
Use `useSendMessage()` for workflow buttons, sidebar shortcuts, and other UI that lives outside `<AthenaChat>` but still needs to submit a prompt. Its promise settles once the send has been dispatched, including a send that waited for the connection.
|
|
1351
1820
|
|
|
1352
1821
|
```tsx
|