@athenaintel/react 0.28.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +418 -10
- package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.js +124 -0
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
- package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
- package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
- package/dist/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
- package/dist/agent-runtime/src/errors.js.map +1 -0
- package/dist/agent-runtime/src/execute-output.cjs +41 -0
- package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
- package/dist/agent-runtime/src/execute-output.js +41 -0
- package/dist/agent-runtime/src/execute-output.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +10 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +10 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
- package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
- package/dist/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/agent-runtime/src/message-author.js.map +1 -0
- package/dist/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/agent-runtime/src/message-window.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
- package/dist/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
- package/dist/agent-runtime/src/messages.js.map +1 -0
- package/dist/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/agent-runtime/src/model-context.js.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/agent-runtime/src/protocol.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
- package/dist/agent-runtime/src/queue.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +23 -13
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +24 -14
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
- package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
- package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.js +43 -0
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +279 -3
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +279 -3
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/agent-runtime/src/tool-names.cjs +5 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-names.js +5 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
- package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
- package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +8 -2
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +8 -0
- package/dist/assets/AthenaAssetEmbed.js +8 -2
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/AthenaLayout.cjs +97 -31
- package/dist/assets/AthenaLayout.cjs.map +1 -1
- package/dist/assets/AthenaLayout.d.ts +13 -0
- package/dist/assets/AthenaLayout.js +98 -32
- package/dist/assets/AthenaLayout.js.map +1 -1
- package/dist/assets/asset-embed-messages.cjs.map +1 -1
- package/dist/assets/asset-embed-messages.d.ts +6 -0
- package/dist/assets/asset-embed-messages.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +68 -32
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +47 -1
- package/dist/assets/asset-panel-store.js +68 -32
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/assets/use-asset-embed.cjs +29 -8
- package/dist/assets/use-asset-embed.cjs.map +1 -1
- package/dist/assets/use-asset-embed.d.ts +7 -0
- package/dist/assets/use-asset-embed.js +29 -8
- package/dist/assets/use-asset-embed.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +152 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -0
- package/dist/catalog/chat-pickers.d.ts +22 -0
- package/dist/catalog/chat-pickers.js +152 -0
- package/dist/catalog/chat-pickers.js.map +1 -0
- package/dist/catalog/runtime-catalog.cjs +181 -0
- package/dist/catalog/runtime-catalog.cjs.map +1 -0
- package/dist/catalog/runtime-catalog.d.ts +100 -0
- package/dist/catalog/runtime-catalog.js +181 -0
- package/dist/catalog/runtime-catalog.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +86 -46
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +21 -4
- package/dist/chat/AthenaChat.js +88 -48
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +38 -37
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +2 -0
- package/dist/chat/StatewireApprovalCard.js +39 -38
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireClientToolBridge.cjs +2 -2
- package/dist/chat/StatewireClientToolBridge.js +2 -2
- package/dist/chat/StatewireQueuedMessages.cjs +15 -12
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
- package/dist/chat/StatewireQueuedMessages.js +15 -12
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
- package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
- package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
- package/dist/chat/StatewireRunRefusalNotice.js +48 -0
- package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
- package/dist/chat/WaitingOnYouBanner.cjs +2 -2
- package/dist/chat/WaitingOnYouBanner.js +2 -2
- package/dist/chat/athena-citation-links.cjs +19 -15
- package/dist/chat/athena-citation-links.cjs.map +1 -1
- package/dist/chat/athena-citation-links.js +19 -15
- package/dist/chat/athena-citation-links.js.map +1 -1
- package/dist/chat/run-activity.cjs +9 -1
- package/dist/chat/run-activity.cjs.map +1 -1
- package/dist/chat/run-activity.d.ts +6 -0
- package/dist/chat/run-activity.js +10 -2
- package/dist/chat/run-activity.js.map +1 -1
- package/dist/chat/statewire-banners.cjs +30 -1
- package/dist/chat/statewire-banners.cjs.map +1 -1
- package/dist/chat/statewire-banners.d.ts +20 -1
- package/dist/chat/statewire-banners.js +32 -3
- package/dist/chat/statewire-banners.js.map +1 -1
- package/dist/chat/statewire-client-tools.cjs +1 -1
- package/dist/chat/statewire-client-tools.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +7 -5
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +8 -2
- package/dist/chat/super-grouping/SuperGroupingCard.js +7 -5
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +350 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js +350 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
- package/dist/chat/super-grouping/ToolTimeline.js +13 -2
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.cjs +51 -26
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +40 -8
- package/dist/chat/super-grouping/activity-timeline.js +52 -27
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/index.cjs +12 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -1
- package/dist/chat/super-grouping/index.d.ts +7 -2
- package/dist/chat/super-grouping/index.js +14 -2
- package/dist/chat/super-grouping/index.js.map +1 -1
- package/dist/chat/super-grouping/timeline-step.cjs +14 -5
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
- package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
- package/dist/chat/super-grouping/timeline-step.js +15 -6
- package/dist/chat/super-grouping/timeline-step.js.map +1 -1
- package/dist/chat/super-grouping/turn-segments.cjs +82 -0
- package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
- package/dist/chat/super-grouping/turn-segments.js +82 -0
- package/dist/chat/super-grouping/turn-segments.js.map +1 -0
- package/dist/chat/super-grouping/turn-timing.cjs +110 -0
- package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
- package/dist/chat/super-grouping/turn-timing.js +110 -0
- package/dist/chat/super-grouping/turn-timing.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +1 -1
- package/dist/chat/tiptap-text.js +1 -1
- package/dist/chat/use-athena-run-live.cjs +1 -1
- package/dist/chat/use-athena-run-live.js +1 -1
- package/dist/chat/use-statewire-approval-request.cjs +73 -4
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
- package/dist/chat/use-statewire-approval-request.js +74 -5
- package/dist/chat/use-statewire-approval-request.js.map +1 -1
- package/dist/chat-ui/composer/composer-message.cjs +284 -0
- package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-message.d.ts +152 -0
- package/dist/chat-ui/composer/composer-message.js +284 -0
- package/dist/chat-ui/composer/composer-message.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +57 -11
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
- package/dist/chat-ui/composer/tiptap-composer.js +57 -11
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +4 -1
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +5 -2
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +3 -2
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +4 -3
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -2
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -2
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/messages/message-components.cjs +30 -10
- package/dist/chat-ui/messages/message-components.cjs.map +1 -1
- package/dist/chat-ui/messages/message-components.d.ts +21 -1
- package/dist/chat-ui/messages/message-components.js +30 -10
- package/dist/chat-ui/messages/message-components.js.map +1 -1
- package/dist/chat-ui/messages/runtime-message.cjs +1 -1
- package/dist/chat-ui/messages/runtime-message.js +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
- package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
- package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
- package/dist/chat-ui/messages/user-edit-composer.js +1 -1
- package/dist/chat-ui/messages/wake-marker.cjs +39 -4
- package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
- package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
- package/dist/chat-ui/messages/wake-marker.js +40 -5
- package/dist/chat-ui/messages/wake-marker.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
- package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
- package/dist/chat-ui/statewire.cjs +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/statewire.js +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
- package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
- package/dist/collab/client.cjs +218 -13
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +105 -2
- package/dist/collab/client.js +221 -17
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.cjs +2 -0
- package/dist/collab/index.cjs.map +1 -1
- package/dist/collab/index.d.ts +1 -1
- package/dist/collab/index.js +3 -1
- package/dist/composer/AttachmentContext.cjs +38 -12
- package/dist/composer/AttachmentContext.cjs.map +1 -1
- package/dist/composer/AttachmentContext.d.ts +22 -1
- package/dist/composer/AttachmentContext.js +40 -14
- package/dist/composer/AttachmentContext.js.map +1 -1
- package/dist/composer/QuoteContext.cjs +80 -28
- package/dist/composer/QuoteContext.cjs.map +1 -1
- package/dist/composer/QuoteContext.d.ts +35 -6
- package/dist/composer/QuoteContext.js +82 -30
- package/dist/composer/QuoteContext.js.map +1 -1
- package/dist/composer/build-composed-message.cjs +27 -0
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +21 -0
- package/dist/composer/build-composed-message.js +28 -1
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +13 -1
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +12 -0
- package/dist/composer/composer-handoff.js +15 -3
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/index.d.ts +6 -3
- package/dist/composer/useReadComposerDraft.cjs +16 -0
- package/dist/composer/useReadComposerDraft.cjs.map +1 -0
- package/dist/composer/useReadComposerDraft.d.ts +6 -0
- package/dist/composer/useReadComposerDraft.js +16 -0
- package/dist/composer/useReadComposerDraft.js.map +1 -0
- package/dist/diagnostics/errors.cjs +6 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +6 -0
- package/dist/diagnostics/errors.js +6 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +159 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +53 -12
- package/dist/index.js +166 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/owner-document.cjs +32 -0
- package/dist/lib/owner-document.cjs.map +1 -0
- package/dist/lib/owner-document.d.ts +17 -0
- package/dist/lib/owner-document.js +32 -0
- package/dist/lib/owner-document.js.map +1 -0
- package/dist/lib/portal-surface.cjs +55 -0
- package/dist/lib/portal-surface.cjs.map +1 -0
- package/dist/lib/portal-surface.d.ts +37 -0
- package/dist/lib/portal-surface.js +55 -0
- package/dist/lib/portal-surface.js.map +1 -0
- package/dist/lib/use-athena-rest-query.cjs +34 -0
- package/dist/lib/use-athena-rest-query.cjs.map +1 -0
- package/dist/lib/use-athena-rest-query.d.ts +31 -0
- package/dist/lib/use-athena-rest-query.js +34 -0
- package/dist/lib/use-athena-rest-query.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +36 -6
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +20 -1
- package/dist/provider/AthenaProvider.js +38 -8
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/provider/citation-links.d.ts +10 -2
- package/dist/{packages/react → react}/package.json.cjs +1 -1
- package/dist/{packages/react → react}/package.json.js +1 -1
- package/dist/runtime/statewire-lifecycle.cjs +15 -3
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.d.ts +6 -0
- package/dist/runtime/statewire-lifecycle.js +15 -3
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +11 -7
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +11 -7
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaRepoSearch.cjs +5 -13
- package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
- package/dist/search/useAthenaRepoSearch.d.ts +3 -3
- package/dist/search/useAthenaRepoSearch.js +6 -14
- package/dist/search/useAthenaRepoSearch.js.map +1 -1
- package/dist/sheet-range/a1.cjs +162 -0
- package/dist/sheet-range/a1.cjs.map +1 -0
- package/dist/sheet-range/a1.d.ts +91 -0
- package/dist/sheet-range/a1.js +162 -0
- package/dist/sheet-range/a1.js.map +1 -0
- package/dist/sheet-range/index.cjs +22 -0
- package/dist/sheet-range/index.cjs.map +1 -0
- package/dist/sheet-range/index.d.ts +12 -0
- package/dist/sheet-range/index.js +22 -0
- package/dist/sheet-range/index.js.map +1 -0
- package/dist/sheet-range/range-preview-table.cjs +75 -0
- package/dist/sheet-range/range-preview-table.cjs.map +1 -0
- package/dist/sheet-range/range-preview-table.d.ts +20 -0
- package/dist/sheet-range/range-preview-table.js +75 -0
- package/dist/sheet-range/range-preview-table.js.map +1 -0
- package/dist/sheet-range/range-preview.cjs +116 -0
- package/dist/sheet-range/range-preview.cjs.map +1 -0
- package/dist/sheet-range/range-preview.d.ts +67 -0
- package/dist/sheet-range/range-preview.js +116 -0
- package/dist/sheet-range/range-preview.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/threads/Inbox.cjs +289 -0
- package/dist/threads/Inbox.cjs.map +1 -0
- package/dist/threads/Inbox.d.ts +46 -0
- package/dist/threads/Inbox.js +289 -0
- package/dist/threads/Inbox.js.map +1 -0
- package/dist/threads/SessionList.cjs +51 -126
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.d.ts +26 -1
- package/dist/threads/SessionList.js +45 -120
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +753 -0
- package/dist/threads/SessionsPage.cjs.map +1 -0
- package/dist/threads/SessionsPage.d.ts +35 -0
- package/dist/threads/SessionsPage.js +753 -0
- package/dist/threads/SessionsPage.js.map +1 -0
- package/dist/threads/api.cjs +21 -1
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +59 -0
- package/dist/threads/api.js +21 -1
- package/dist/threads/api.js.map +1 -1
- package/dist/threads/conversation-list-fetcher.cjs +9 -2
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
- package/dist/threads/conversation-list-fetcher.d.ts +14 -1
- package/dist/threads/conversation-list-fetcher.js +9 -2
- package/dist/threads/conversation-list-fetcher.js.map +1 -1
- package/dist/threads/index.d.ts +2 -1
- package/dist/threads/pull-request-display.cjs +25 -0
- package/dist/threads/pull-request-display.cjs.map +1 -0
- package/dist/threads/pull-request-display.d.ts +15 -0
- package/dist/threads/pull-request-display.js +25 -0
- package/dist/threads/pull-request-display.js.map +1 -0
- package/dist/threads/session-list-model.cjs +16 -2
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +10 -0
- package/dist/threads/session-list-model.js +16 -2
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +152 -0
- package/dist/threads/session-row-parts.cjs.map +1 -0
- package/dist/threads/session-row-parts.d.ts +50 -0
- package/dist/threads/session-row-parts.js +152 -0
- package/dist/threads/session-row-parts.js.map +1 -0
- package/dist/threads/sessions-page-model.cjs +305 -0
- package/dist/threads/sessions-page-model.cjs.map +1 -0
- package/dist/threads/sessions-page-model.d.ts +86 -0
- package/dist/threads/sessions-page-model.js +305 -0
- package/dist/threads/sessions-page-model.js.map +1 -0
- package/dist/threads/sessions-page-storage.cjs +93 -0
- package/dist/threads/sessions-page-storage.cjs.map +1 -0
- package/dist/threads/sessions-page-storage.d.ts +23 -0
- package/dist/threads/sessions-page-storage.js +93 -0
- package/dist/threads/sessions-page-storage.js.map +1 -0
- package/dist/threads/sessions-query.cjs +235 -0
- package/dist/threads/sessions-query.cjs.map +1 -0
- package/dist/threads/sessions-query.d.ts +119 -0
- package/dist/threads/sessions-query.js +235 -0
- package/dist/threads/sessions-query.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +133 -40
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +83 -2
- package/dist/threads/statewire-thread-list.js +134 -41
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +198 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -0
- package/dist/threads/use-athena-sessions.d.ts +81 -0
- package/dist/threads/use-athena-sessions.js +198 -0
- package/dist/threads/use-athena-sessions.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +1 -1
- package/dist/threads/use-rest-conversation-history.js +1 -1
- package/dist/threads/use-statewire-conversation-history.cjs +1 -1
- package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
- package/dist/threads/use-statewire-conversation-history.js +1 -1
- package/dist/threads/use-thread-read-state.cjs +73 -0
- package/dist/threads/use-thread-read-state.cjs.map +1 -0
- package/dist/threads/use-thread-read-state.d.ts +51 -0
- package/dist/threads/use-thread-read-state.js +73 -0
- package/dist/threads/use-thread-read-state.js.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +2 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.js +2 -0
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/file-tool-uis.cjs +18 -43
- package/dist/tools/file-tool-uis.cjs.map +1 -1
- package/dist/tools/file-tool-uis.d.ts +1 -2
- package/dist/tools/file-tool-uis.js +18 -42
- package/dist/tools/file-tool-uis.js.map +1 -1
- package/dist/tools/index.cjs +6 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +6 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/misc-tool-uis.cjs +2 -2
- package/dist/tools/misc-tool-uis.js +2 -2
- package/dist/tools/primitives.cjs +1 -1
- package/dist/tools/primitives.js +1 -1
- package/dist/tools/read-asset-tool-ui.cjs +21 -70
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
- package/dist/tools/read-asset-tool-ui.js +21 -70
- package/dist/tools/read-asset-tool-ui.js.map +1 -1
- package/dist/tools/step-text.cjs +21 -0
- package/dist/tools/step-text.cjs.map +1 -0
- package/dist/tools/step-text.d.ts +10 -0
- package/dist/tools/step-text.js +21 -0
- package/dist/tools/step-text.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +24 -5
- package/dist/tools/tool-fallback.cjs.map +1 -1
- package/dist/tools/tool-fallback.d.ts +3 -1
- package/dist/tools/tool-fallback.js +24 -5
- package/dist/tools/tool-fallback.js.map +1 -1
- package/dist/tools/tool-summary.cjs +661 -0
- package/dist/tools/tool-summary.cjs.map +1 -0
- package/dist/tools/tool-summary.d.ts +99 -0
- package/dist/tools/tool-summary.js +661 -0
- package/dist/tools/tool-summary.js.map +1 -0
- package/dist/tools/tool-uis.cjs +37 -95
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.js +37 -95
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/tools/voice-update-tool-ui.cjs +1 -1
- package/dist/tools/voice-update-tool-ui.js +1 -1
- package/dist/tools/write-todos-tool-ui.cjs +3 -2
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
- package/dist/tools/write-todos-tool-ui.d.ts +5 -0
- package/dist/tools/write-todos-tool-ui.js +5 -4
- package/dist/tools/write-todos-tool-ui.js.map +1 -1
- package/dist/ui/popover.cjs +6 -6
- package/dist/ui/popover.cjs.map +1 -1
- package/dist/ui/popover.js +6 -6
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/tooltip.cjs +16 -2
- package/dist/ui/tooltip.cjs.map +1 -1
- package/dist/ui/tooltip.d.ts +1 -1
- package/dist/ui/tooltip.js +16 -2
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/use-athena-voice-session.cjs.map +1 -1
- package/dist/voice/use-athena-voice-session.d.ts +3 -3
- package/dist/voice/use-athena-voice-session.js.map +1 -1
- package/dist/workbench/SessionWorkbench.cjs +378 -0
- package/dist/workbench/SessionWorkbench.cjs.map +1 -0
- package/dist/workbench/SessionWorkbench.d.ts +30 -0
- package/dist/workbench/SessionWorkbench.js +378 -0
- package/dist/workbench/SessionWorkbench.js.map +1 -0
- package/dist/workbench/session-workbench-context.cjs +26 -0
- package/dist/workbench/session-workbench-context.cjs.map +1 -0
- package/dist/workbench/session-workbench-context.d.ts +55 -0
- package/dist/workbench/session-workbench-context.js +26 -0
- package/dist/workbench/session-workbench-context.js.map +1 -0
- package/dist/workbench/session-workbench-model.cjs +288 -0
- package/dist/workbench/session-workbench-model.cjs.map +1 -0
- package/dist/workbench/session-workbench-model.d.ts +168 -0
- package/dist/workbench/session-workbench-model.js +288 -0
- package/dist/workbench/session-workbench-model.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +580 -0
- package/dist/workbench/session-workbench-panes.cjs.map +1 -0
- package/dist/workbench/session-workbench-panes.d.ts +16 -0
- package/dist/workbench/session-workbench-panes.js +580 -0
- package/dist/workbench/session-workbench-panes.js.map +1 -0
- package/dist/workbench/session-workspace-api.cjs +157 -0
- package/dist/workbench/session-workspace-api.cjs.map +1 -0
- package/dist/workbench/session-workspace-api.d.ts +70 -0
- package/dist/workbench/session-workspace-api.js +157 -0
- package/dist/workbench/session-workspace-api.js.map +1 -0
- package/dist/workbench/use-session-workspace.cjs +100 -0
- package/dist/workbench/use-session-workspace.cjs.map +1 -0
- package/dist/workbench/use-session-workspace.d.ts +45 -0
- package/dist/workbench/use-session-workspace.js +100 -0
- package/dist/workbench/use-session-workspace.js.map +1 -0
- package/dist/workbench/workbench-layout-context.cjs +10 -0
- package/dist/workbench/workbench-layout-context.cjs.map +1 -0
- package/dist/workbench/workbench-layout-context.d.ts +17 -0
- package/dist/workbench/workbench-layout-context.js +10 -0
- package/dist/workbench/workbench-layout-context.js.map +1 -0
- package/package.json +20 -9
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
- package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/errors.js.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
- package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
- package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/queue.js.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-config.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
- /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
- /package/dist/{packages/react → react}/package.json.js.map +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useAuiState, MessagePrimitive, getExternalStoreMessages } from "@assistant-ui/react";
|
|
3
|
+
import { LoaderCircle, Circle, AlertCircle, Check, ChevronRight } from "lucide-react";
|
|
4
|
+
import { memo, useMemo, useId, useState, useRef, useEffect } from "react";
|
|
5
|
+
import { StepText } from "../../tools/step-text.js";
|
|
6
|
+
import { ToolFallback } from "../../tools/tool-fallback.js";
|
|
7
|
+
import { collectAssetTitles } from "../../tools/tool-summary.js";
|
|
8
|
+
import { readMessageCreatedAt } from "../message-time.js";
|
|
9
|
+
import { buildActivityTimeline, resolveActivityPhase, countActivityTools, getActivitySummary } from "./activity-timeline.js";
|
|
10
|
+
import { CollapsibleGroup, SuperGroupingProvider } from "./CollapsibleGroup.js";
|
|
11
|
+
import { createToolBasedGroupingFunction } from "./grouping-function.js";
|
|
12
|
+
import { useActivityExpansion } from "./SuperGroupingCard.js";
|
|
13
|
+
import { ToolTimeline } from "./ToolTimeline.js";
|
|
14
|
+
import { toTimelineStep } from "./timeline-step.js";
|
|
15
|
+
import { defaultGetToolGroupKey } from "./toolkit-map.js";
|
|
16
|
+
import { splitTurnSegments, summarizeSegment, scopeGroupingToSegment } from "./turn-segments.js";
|
|
17
|
+
import { observedTurnEndMs, recordObservedTurnEnd, workedDurationMs, formatWorkDuration, readTurnTiming, firstSeenMs, workingLabel } from "./turn-timing.js";
|
|
18
|
+
import { cn } from "cnfast";
|
|
19
|
+
const DEFAULT_MAX_VISIBLE_STEPS = 6;
|
|
20
|
+
const EMPTY_CONTENT = [];
|
|
21
|
+
const EMPTY_STEPS = [];
|
|
22
|
+
function useTurnTimingSources() {
|
|
23
|
+
const message = useAuiState((s) => s.message);
|
|
24
|
+
const promptCreatedAt = useAuiState((s) => {
|
|
25
|
+
var _a;
|
|
26
|
+
const previous = s.thread.messages[s.message.index - 1];
|
|
27
|
+
return (previous == null ? void 0 : previous.role) === "user" ? readMessageCreatedAt((_a = previous.metadata) == null ? void 0 : _a.custom) : null;
|
|
28
|
+
});
|
|
29
|
+
const promptId = useAuiState((s) => {
|
|
30
|
+
const previous = s.thread.messages[s.message.index - 1];
|
|
31
|
+
return (previous == null ? void 0 : previous.role) === "user" ? previous.id : "";
|
|
32
|
+
});
|
|
33
|
+
const timing = useMemo(
|
|
34
|
+
() => {
|
|
35
|
+
var _a;
|
|
36
|
+
return readTurnTiming({
|
|
37
|
+
promptCreatedAt,
|
|
38
|
+
custom: (_a = message.metadata) == null ? void 0 : _a.custom,
|
|
39
|
+
sourceMessages: getExternalStoreMessages(message)
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
[message, promptCreatedAt]
|
|
43
|
+
);
|
|
44
|
+
return { timing, clockKey: `${promptId}:${message.id}` };
|
|
45
|
+
}
|
|
46
|
+
function WorkingFor({ startMs, clockKey }) {
|
|
47
|
+
const [now, setNow] = useState(() => Date.now());
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
const timer = setInterval(() => setNow(Date.now()), 1e3);
|
|
50
|
+
return () => clearInterval(timer);
|
|
51
|
+
}, []);
|
|
52
|
+
const anchor = startMs ?? firstSeenMs(clockKey, now);
|
|
53
|
+
return /* @__PURE__ */ jsx(Fragment, { children: workingLabel(Math.max(0, now - anchor)) });
|
|
54
|
+
}
|
|
55
|
+
function TurnStatus({
|
|
56
|
+
phase,
|
|
57
|
+
cancelled,
|
|
58
|
+
activitySummary,
|
|
59
|
+
toolCount,
|
|
60
|
+
summaryDetails
|
|
61
|
+
}) {
|
|
62
|
+
const { timing, clockKey } = useTurnTimingSources();
|
|
63
|
+
const [observedEndMs, setObservedEndMs] = useState(() => observedTurnEndMs(clockKey));
|
|
64
|
+
const wasActive = useRef(phase === "running" || phase === "waiting");
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
const active = phase === "running" || phase === "waiting";
|
|
67
|
+
if (wasActive.current && !active) setObservedEndMs(recordObservedTurnEnd(clockKey));
|
|
68
|
+
wasActive.current = active;
|
|
69
|
+
}, [phase, clockKey]);
|
|
70
|
+
if (phase === "running") return /* @__PURE__ */ jsx(WorkingFor, { startMs: timing.startMs, clockKey });
|
|
71
|
+
if (phase === "waiting") return /* @__PURE__ */ jsx(Fragment, { children: "Waiting for you" });
|
|
72
|
+
const workedMs = workedDurationMs(timing, observedEndMs);
|
|
73
|
+
if (phase === "error") {
|
|
74
|
+
if (!cancelled) return /* @__PURE__ */ jsx(Fragment, { children: "Something went wrong" });
|
|
75
|
+
return /* @__PURE__ */ jsx(Fragment, { children: workedMs !== null ? `Run stopped after ${formatWorkDuration(workedMs)}` : "Run stopped" });
|
|
76
|
+
}
|
|
77
|
+
const label = [
|
|
78
|
+
...workedMs !== null ? [`Worked for ${formatWorkDuration(workedMs)}`] : [],
|
|
79
|
+
...workedMs === null || toolCount > 0 || activitySummary !== "Reasoning complete" ? [activitySummary] : [],
|
|
80
|
+
...summaryDetails ?? []
|
|
81
|
+
].join(" · ");
|
|
82
|
+
return /* @__PURE__ */ jsx(Fragment, { children: label });
|
|
83
|
+
}
|
|
84
|
+
function TurnGlyph({ phase }) {
|
|
85
|
+
const className = "size-3.5 shrink-0";
|
|
86
|
+
if (phase === "running") {
|
|
87
|
+
return /* @__PURE__ */ jsx(LoaderCircle, { "aria-hidden": "true", className: cn(className, "motion-safe:animate-spin") });
|
|
88
|
+
}
|
|
89
|
+
if (phase === "waiting") {
|
|
90
|
+
return /* @__PURE__ */ jsx(Circle, { "aria-hidden": "true", className: cn(className, "text-amber-600 dark:text-amber-400") });
|
|
91
|
+
}
|
|
92
|
+
if (phase === "error") {
|
|
93
|
+
return /* @__PURE__ */ jsx(AlertCircle, { "aria-hidden": "true", className: cn(className, "text-destructive") });
|
|
94
|
+
}
|
|
95
|
+
return /* @__PURE__ */ jsx(Check, { "aria-hidden": "true", className: cn(className, "opacity-70") });
|
|
96
|
+
}
|
|
97
|
+
const ProseSegment = memo(function ProseSegment2({
|
|
98
|
+
text,
|
|
99
|
+
TextComponent
|
|
100
|
+
}) {
|
|
101
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "transcript-prose", className: "min-w-0", children: /* @__PURE__ */ jsx(TextComponent, { type: "text", text, status: { type: "complete" } }) });
|
|
102
|
+
});
|
|
103
|
+
function ActivitySegment({
|
|
104
|
+
segment,
|
|
105
|
+
steps,
|
|
106
|
+
turnPhase,
|
|
107
|
+
expansionKey,
|
|
108
|
+
expandWhileWaiting,
|
|
109
|
+
mountDetails,
|
|
110
|
+
maxVisibleSteps,
|
|
111
|
+
grouping,
|
|
112
|
+
components,
|
|
113
|
+
classNames
|
|
114
|
+
}) {
|
|
115
|
+
var _a, _b, _c;
|
|
116
|
+
const summary = summarizeSegment(steps);
|
|
117
|
+
const phase = summary.phase;
|
|
118
|
+
const { expanded, toggleExpanded } = useActivityExpansion({
|
|
119
|
+
expansionKey: `${expansionKey}:${segment.key}`,
|
|
120
|
+
phase,
|
|
121
|
+
expandWhileWaiting
|
|
122
|
+
});
|
|
123
|
+
const { expanded: detailsExpanded, toggleExpanded: toggleDetails } = useActivityExpansion({
|
|
124
|
+
expansionKey: `${expansionKey}:${segment.key}:details`,
|
|
125
|
+
phase,
|
|
126
|
+
expandWhileWaiting
|
|
127
|
+
});
|
|
128
|
+
const indicesKey = segment.partIndices.join(",");
|
|
129
|
+
const scopedGrouping = useMemo(
|
|
130
|
+
() => scopeGroupingToSegment(grouping, indicesKey.split(",").map(Number)),
|
|
131
|
+
[grouping, indicesKey]
|
|
132
|
+
);
|
|
133
|
+
const groupingContext = useMemo(() => ({ groupingFunction: scopedGrouping }), [scopedGrouping]);
|
|
134
|
+
const detailsPanelId = `aui-sg-segment-${useId().replace(/[^A-Za-z0-9_-]/g, "")}`;
|
|
135
|
+
const isTurnActive = turnPhase === "running" || turnPhase === "waiting";
|
|
136
|
+
const detailsMounted = isTurnActive || mountDetails || expanded && detailsExpanded;
|
|
137
|
+
const hasToolSteps = steps.some((step) => step.kind === "tool");
|
|
138
|
+
const meta = [(_a = summary.step) == null ? void 0 : _a.chip, summary.meta].filter(Boolean).join(" · ");
|
|
139
|
+
if (steps.length === 0) {
|
|
140
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "transcript-parts", className: cn("flex min-w-0 flex-col gap-2", classNames == null ? void 0 : classNames.detailsParts), children: /* @__PURE__ */ jsx(SuperGroupingProvider, { value: groupingContext, children: /* @__PURE__ */ jsx(MessagePrimitive.Unstable_PartsGrouped, { groupingFunction: scopedGrouping, components }) }) });
|
|
141
|
+
}
|
|
142
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "activity-segment", "data-phase": phase, "data-segment-key": segment.key, className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
143
|
+
ToolTimeline,
|
|
144
|
+
{
|
|
145
|
+
steps,
|
|
146
|
+
open: expanded,
|
|
147
|
+
onOpenChange: toggleExpanded,
|
|
148
|
+
label: /* @__PURE__ */ jsx(StepText, { text: summary.label, code: (_b = summary.step) == null ? void 0 : _b.code }),
|
|
149
|
+
labelTitle: (_c = summary.step) == null ? void 0 : _c.detail,
|
|
150
|
+
phase,
|
|
151
|
+
maxVisibleSteps,
|
|
152
|
+
keepMounted: isTurnActive || mountDetails,
|
|
153
|
+
meta: meta ? /* @__PURE__ */ jsx("span", { "data-slot": "activity-segment-meta", children: meta }) : null,
|
|
154
|
+
children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 pl-5", children: [
|
|
155
|
+
/* @__PURE__ */ jsxs(
|
|
156
|
+
"button",
|
|
157
|
+
{
|
|
158
|
+
type: "button",
|
|
159
|
+
onClick: toggleDetails,
|
|
160
|
+
"aria-expanded": detailsExpanded,
|
|
161
|
+
"aria-controls": detailsPanelId,
|
|
162
|
+
className: "flex items-center gap-1.5 rounded py-1 text-xs text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
163
|
+
children: [
|
|
164
|
+
/* @__PURE__ */ jsx(
|
|
165
|
+
ChevronRight,
|
|
166
|
+
{
|
|
167
|
+
"aria-hidden": "true",
|
|
168
|
+
className: cn(
|
|
169
|
+
"size-3 transition-transform motion-reduce:transition-none",
|
|
170
|
+
detailsExpanded && "rotate-90"
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
),
|
|
174
|
+
detailsExpanded ? hasToolSteps ? "Hide tool details" : "Hide thinking" : hasToolSteps ? "Show tool details" : "Show thinking"
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
),
|
|
178
|
+
detailsMounted ? /* @__PURE__ */ jsx(
|
|
179
|
+
"section",
|
|
180
|
+
{
|
|
181
|
+
id: detailsPanelId,
|
|
182
|
+
"aria-label": "Step details",
|
|
183
|
+
hidden: !expanded || !detailsExpanded,
|
|
184
|
+
className: cn(
|
|
185
|
+
"min-w-0 overflow-hidden border-l border-border/60 py-2 pl-3",
|
|
186
|
+
classNames == null ? void 0 : classNames.details
|
|
187
|
+
),
|
|
188
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-2", classNames == null ? void 0 : classNames.detailsParts), children: /* @__PURE__ */ jsx(SuperGroupingProvider, { value: groupingContext, children: /* @__PURE__ */ jsx(MessagePrimitive.Unstable_PartsGrouped, { groupingFunction: scopedGrouping, components }) }) })
|
|
189
|
+
}
|
|
190
|
+
) : null
|
|
191
|
+
] })
|
|
192
|
+
}
|
|
193
|
+
) });
|
|
194
|
+
}
|
|
195
|
+
const SuperGroupingTranscript = memo(function SuperGroupingTranscript2({
|
|
196
|
+
toolUIs,
|
|
197
|
+
ToolFallback: ToolFallbackComponent = ToolFallback,
|
|
198
|
+
TextComponent,
|
|
199
|
+
ReasoningComponent,
|
|
200
|
+
GroupComponent = CollapsibleGroup,
|
|
201
|
+
getToolGroupKey = defaultGetToolGroupKey,
|
|
202
|
+
groupingFunction,
|
|
203
|
+
waitingTools,
|
|
204
|
+
passThroughTools,
|
|
205
|
+
waitingForInput = false,
|
|
206
|
+
resolveToolDisplayName,
|
|
207
|
+
expansionKey: expansionKeyProp,
|
|
208
|
+
expandWhileWaiting = false,
|
|
209
|
+
mountDetails = false,
|
|
210
|
+
maxVisibleSteps = DEFAULT_MAX_VISIBLE_STEPS,
|
|
211
|
+
summaryDetails,
|
|
212
|
+
renderHeaderActions,
|
|
213
|
+
renderRunningMeta,
|
|
214
|
+
className,
|
|
215
|
+
classNames
|
|
216
|
+
}) {
|
|
217
|
+
const messageId = useAuiState((s) => s.message.id);
|
|
218
|
+
const messageContent = useAuiState(
|
|
219
|
+
(s) => s.message.role === "assistant" ? s.message.content : EMPTY_CONTENT
|
|
220
|
+
);
|
|
221
|
+
const messageStatus = useAuiState((s) => s.message.status);
|
|
222
|
+
const timeline = useMemo(
|
|
223
|
+
() => buildActivityTimeline(messageContent, messageStatus, { waitingTools, passThroughTools }),
|
|
224
|
+
[messageContent, messageStatus, waitingTools, passThroughTools]
|
|
225
|
+
);
|
|
226
|
+
const phase = useMemo(
|
|
227
|
+
() => resolveActivityPhase(messageStatus, timeline, { waitingForInput }),
|
|
228
|
+
[messageStatus, timeline, waitingForInput]
|
|
229
|
+
);
|
|
230
|
+
const assetTitles = useMemo(() => collectAssetTitles(messageContent), [messageContent]);
|
|
231
|
+
const stepsByPart = useMemo(() => {
|
|
232
|
+
const byPart = /* @__PURE__ */ new Map();
|
|
233
|
+
timeline.forEach((item, index) => {
|
|
234
|
+
if (item.partIndex === void 0) return;
|
|
235
|
+
byPart.set(item.partIndex, toTimelineStep({ item, index, resolveToolDisplayName, assetTitles }));
|
|
236
|
+
});
|
|
237
|
+
return byPart;
|
|
238
|
+
}, [timeline, resolveToolDisplayName, assetTitles]);
|
|
239
|
+
const segments = useMemo(() => splitTurnSegments(messageContent), [messageContent]);
|
|
240
|
+
const grouping = useMemo(
|
|
241
|
+
() => groupingFunction ?? createToolBasedGroupingFunction(getToolGroupKey),
|
|
242
|
+
[groupingFunction, getToolGroupKey]
|
|
243
|
+
);
|
|
244
|
+
const components = useMemo(
|
|
245
|
+
() => ({
|
|
246
|
+
tools: {
|
|
247
|
+
...toolUIs ? { by_name: toolUIs } : {},
|
|
248
|
+
Fallback: ToolFallbackComponent
|
|
249
|
+
},
|
|
250
|
+
Text: TextComponent,
|
|
251
|
+
...ReasoningComponent ? { Reasoning: ReasoningComponent } : {},
|
|
252
|
+
Group: GroupComponent
|
|
253
|
+
}),
|
|
254
|
+
[toolUIs, ToolFallbackComponent, TextComponent, ReasoningComponent, GroupComponent]
|
|
255
|
+
);
|
|
256
|
+
const statusId = `aui-sg-turn-${useId().replace(/[^A-Za-z0-9_-]/g, "")}`;
|
|
257
|
+
const hasText = messageContent.some((part) => part.type === "text" && part.text.trim() !== "");
|
|
258
|
+
const isVisible = timeline.length > 0 || phase === "waiting" || phase === "error" || phase === "running" && !hasText;
|
|
259
|
+
if (!isVisible) return null;
|
|
260
|
+
const expansionKey = expansionKeyProp ?? messageId;
|
|
261
|
+
const toolCount = countActivityTools(timeline);
|
|
262
|
+
const runningStep = [...stepsByPart.values()].filter((step) => step.state === "running").at(-1);
|
|
263
|
+
const cancelled = (messageStatus == null ? void 0 : messageStatus.type) === "incomplete" && messageStatus.reason === "cancelled";
|
|
264
|
+
const activitySummary = getActivitySummary(timeline);
|
|
265
|
+
const announcement = phase === "running" ? (runningStep == null ? void 0 : runningStep.verb) ?? "Working" : phase === "waiting" ? "Waiting for your input" : phase === "error" ? cancelled ? "Run stopped" : "Something went wrong" : activitySummary;
|
|
266
|
+
const actions = renderHeaderActions == null ? void 0 : renderHeaderActions({ phase, messageContent });
|
|
267
|
+
const meta = phase === "running" ? renderRunningMeta == null ? void 0 : renderRunningMeta({ phase }) : null;
|
|
268
|
+
return /* @__PURE__ */ jsxs(
|
|
269
|
+
"section",
|
|
270
|
+
{
|
|
271
|
+
"data-slot": "super-grouping-transcript",
|
|
272
|
+
"data-phase": phase,
|
|
273
|
+
"data-tool-count": toolCount,
|
|
274
|
+
className: cn("my-3 flex min-w-0 flex-col gap-1", className, classNames == null ? void 0 : classNames.root),
|
|
275
|
+
"aria-busy": phase === "running" ? "true" : "false",
|
|
276
|
+
"aria-describedby": statusId,
|
|
277
|
+
children: [
|
|
278
|
+
/* @__PURE__ */ jsxs(
|
|
279
|
+
"div",
|
|
280
|
+
{
|
|
281
|
+
"data-slot": "turn-header",
|
|
282
|
+
className: cn(
|
|
283
|
+
"flex min-w-0 items-center gap-2 py-1 text-[13px] text-muted-foreground",
|
|
284
|
+
classNames == null ? void 0 : classNames.header
|
|
285
|
+
),
|
|
286
|
+
children: [
|
|
287
|
+
/* @__PURE__ */ jsx(TurnGlyph, { phase }),
|
|
288
|
+
/* @__PURE__ */ jsx(
|
|
289
|
+
"span",
|
|
290
|
+
{
|
|
291
|
+
"data-slot": "turn-status",
|
|
292
|
+
className: cn(
|
|
293
|
+
"min-w-0 flex-1 truncate tabular-nums leading-5",
|
|
294
|
+
phase === "error" && !cancelled && "text-destructive"
|
|
295
|
+
),
|
|
296
|
+
children: /* @__PURE__ */ jsx(
|
|
297
|
+
TurnStatus,
|
|
298
|
+
{
|
|
299
|
+
phase,
|
|
300
|
+
cancelled,
|
|
301
|
+
activitySummary,
|
|
302
|
+
toolCount,
|
|
303
|
+
summaryDetails
|
|
304
|
+
}
|
|
305
|
+
)
|
|
306
|
+
}
|
|
307
|
+
),
|
|
308
|
+
meta ? /* @__PURE__ */ jsx("div", { "data-slot": "turn-meta", className: "flex shrink-0 items-center text-xs tabular-nums", children: meta }) : null,
|
|
309
|
+
actions ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: actions }) : null
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
),
|
|
313
|
+
segments.length > 0 ? /* @__PURE__ */ jsx(
|
|
314
|
+
"div",
|
|
315
|
+
{
|
|
316
|
+
"data-slot": "super-grouping-transcript-body",
|
|
317
|
+
className: cn("flex min-w-0 flex-col gap-1.5", classNames == null ? void 0 : classNames.body),
|
|
318
|
+
children: segments.map(
|
|
319
|
+
(segment) => segment.kind === "prose" ? /* @__PURE__ */ jsx(ProseSegment, { text: segment.text, TextComponent }, segment.key) : /* @__PURE__ */ jsx(
|
|
320
|
+
ActivitySegment,
|
|
321
|
+
{
|
|
322
|
+
segment,
|
|
323
|
+
steps: segmentSteps(segment, stepsByPart),
|
|
324
|
+
turnPhase: phase,
|
|
325
|
+
expansionKey,
|
|
326
|
+
expandWhileWaiting,
|
|
327
|
+
mountDetails,
|
|
328
|
+
maxVisibleSteps,
|
|
329
|
+
grouping,
|
|
330
|
+
components,
|
|
331
|
+
classNames
|
|
332
|
+
},
|
|
333
|
+
segment.key
|
|
334
|
+
)
|
|
335
|
+
)
|
|
336
|
+
}
|
|
337
|
+
) : null,
|
|
338
|
+
/* @__PURE__ */ jsx("output", { id: statusId, "aria-live": "polite", "aria-atomic": "true", className: "sr-only", children: announcement })
|
|
339
|
+
]
|
|
340
|
+
}
|
|
341
|
+
);
|
|
342
|
+
});
|
|
343
|
+
function segmentSteps(segment, stepsByPart) {
|
|
344
|
+
const steps = segment.partIndices.map((index) => stepsByPart.get(index)).filter((step) => step !== void 0);
|
|
345
|
+
return steps.length > 0 ? steps : EMPTY_STEPS;
|
|
346
|
+
}
|
|
347
|
+
export {
|
|
348
|
+
SuperGroupingTranscript
|
|
349
|
+
};
|
|
350
|
+
//# sourceMappingURL=SuperGroupingTranscript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuperGroupingTranscript.js","sources":["../../../src/chat/super-grouping/SuperGroupingTranscript.tsx"],"sourcesContent":["'use client';\n\nimport {\n getExternalStoreMessages,\n MessagePrimitive,\n type TextMessagePartComponent,\n type ThreadAssistantMessagePart,\n useAuiState,\n} from '@assistant-ui/react';\nimport { AlertCircle, Check, ChevronRight, Circle, LoaderCircle } from 'lucide-react';\nimport { memo, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { StepText } from '../../tools/step-text';\nimport { ToolFallback } from '../../tools/tool-fallback';\nimport { collectAssetTitles } from '../../tools/tool-summary';\nimport { readMessageCreatedAt } from '../message-time';\nimport {\n type ActivityPhase,\n buildActivityTimeline,\n countActivityTools,\n getActivitySummary,\n resolveActivityPhase,\n} from './activity-timeline';\nimport { CollapsibleGroup, SuperGroupingProvider } from './CollapsibleGroup';\nimport { createToolBasedGroupingFunction, type GroupingFunction } from './grouping-function';\nimport { type SuperGroupingCardProps, useActivityExpansion } from './SuperGroupingCard';\nimport { ToolTimeline } from './ToolTimeline';\nimport { type TimelineStep, toTimelineStep } from './timeline-step';\nimport { defaultGetToolGroupKey } from './toolkit-map';\nimport {\n scopeGroupingToSegment,\n splitTurnSegments,\n summarizeSegment,\n type TurnSegment,\n} from './turn-segments';\nimport {\n firstSeenMs,\n formatWorkDuration,\n observedTurnEndMs,\n readTurnTiming,\n recordObservedTurnEnd,\n type TurnTiming,\n workedDurationMs,\n workingLabel,\n} from './turn-timing';\n\nconst DEFAULT_MAX_VISIBLE_STEPS = 6;\nconst EMPTY_CONTENT: readonly ThreadAssistantMessagePart[] = [];\nconst EMPTY_STEPS: readonly TimelineStep[] = [];\n\nexport interface SuperGroupingTranscriptProps\n extends Pick<\n SuperGroupingCardProps,\n | 'toolUIs'\n | 'ToolFallback'\n | 'TextComponent'\n | 'ReasoningComponent'\n | 'GroupComponent'\n | 'getToolGroupKey'\n | 'groupingFunction'\n | 'waitingTools'\n | 'passThroughTools'\n | 'waitingForInput'\n | 'resolveToolDisplayName'\n | 'expansionKey'\n | 'expandWhileWaiting'\n | 'mountDetails'\n | 'summaryDetails'\n | 'renderHeaderActions'\n | 'renderRunningMeta'\n | 'className'\n > {\n /** Steps an opened segment lists before older ones fold away; unresolved calls always show. */\n maxVisibleSteps?: number;\n classNames?: {\n root?: string;\n header?: string;\n body?: string;\n details?: string;\n /** The flex column a segment's parts render in; override its gap here. */\n detailsParts?: string;\n };\n}\n\n// ─── Turn timing ───────────────────────────────────────────────────────\n\n/**\n * The turn's stamps: the prompt it answers, its joined metadata, and the raw\n * messages behind it. Reads the whole message (the bound raw messages hang off\n * it), so only the small header status subscribes here, never the transcript.\n */\nfunction useTurnTimingSources(): { timing: TurnTiming; clockKey: string } {\n const message = useAuiState((s) => s.message);\n const promptCreatedAt = useAuiState((s) => {\n const previous = s.thread.messages[s.message.index - 1];\n return previous?.role === 'user' ? readMessageCreatedAt(previous.metadata?.custom) : null;\n });\n const promptId = useAuiState((s) => {\n const previous = s.thread.messages[s.message.index - 1];\n return previous?.role === 'user' ? previous.id : '';\n });\n const timing = useMemo(\n () =>\n readTurnTiming({\n promptCreatedAt,\n custom: message.metadata?.custom,\n sourceMessages: getExternalStoreMessages<unknown>(message),\n }),\n [message, promptCreatedAt],\n );\n return { timing, clockKey: `${promptId}:${message.id}` };\n}\n\n/** \"Working for 1m 12s\", re-rendered once a second by itself so the transcript does not. */\nfunction WorkingFor({ startMs, clockKey }: { startMs: number | null; clockKey: string }) {\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n const timer = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(timer);\n }, []);\n const anchor = startMs ?? firstSeenMs(clockKey, now);\n return <>{workingLabel(Math.max(0, now - anchor))}</>;\n}\n\n/**\n * The header's words: \"Working for 1m 12s\" while the turn runs, \"Worked for\n * 2m 30s · Used 7 tools\" once done, \"Waiting for you\", or how it ended.\n */\nfunction TurnStatus({\n phase,\n cancelled,\n activitySummary,\n toolCount,\n summaryDetails,\n}: {\n phase: ActivityPhase;\n cancelled: boolean;\n activitySummary: string;\n toolCount: number;\n summaryDetails: readonly string[] | undefined;\n}) {\n const { timing, clockKey } = useTurnTimingSources();\n const [observedEndMs, setObservedEndMs] = useState(() => observedTurnEndMs(clockKey));\n const wasActive = useRef(phase === 'running' || phase === 'waiting');\n useEffect(() => {\n const active = phase === 'running' || phase === 'waiting';\n if (wasActive.current && !active) setObservedEndMs(recordObservedTurnEnd(clockKey));\n wasActive.current = active;\n }, [phase, clockKey]);\n if (phase === 'running') return <WorkingFor startMs={timing.startMs} clockKey={clockKey} />;\n if (phase === 'waiting') return <>Waiting for you</>;\n const workedMs = workedDurationMs(timing, observedEndMs);\n if (phase === 'error') {\n if (!cancelled) return <>Something went wrong</>;\n return <>{workedMs !== null ? `Run stopped after ${formatWorkDuration(workedMs)}` : 'Run stopped'}</>;\n }\n const label = [\n ...(workedMs !== null ? [`Worked for ${formatWorkDuration(workedMs)}`] : []),\n ...(workedMs === null || toolCount > 0 || activitySummary !== 'Reasoning complete' ? [activitySummary] : []),\n ...(summaryDetails ?? []),\n ].join(' · ');\n return <>{label}</>;\n}\n\nfunction TurnGlyph({ phase }: { phase: ActivityPhase }) {\n const className = 'size-3.5 shrink-0';\n if (phase === 'running') {\n return <LoaderCircle aria-hidden=\"true\" className={cn(className, 'motion-safe:animate-spin')} />;\n }\n if (phase === 'waiting') {\n return <Circle aria-hidden=\"true\" className={cn(className, 'text-amber-600 dark:text-amber-400')} />;\n }\n if (phase === 'error') {\n return <AlertCircle aria-hidden=\"true\" className={cn(className, 'text-destructive')} />;\n }\n return <Check aria-hidden=\"true\" className={cn(className, 'opacity-70')} />;\n}\n\n// ─── Segments ──────────────────────────────────────────────────────────\n\nconst ProseSegment = memo(function ProseSegment({\n text,\n TextComponent,\n}: {\n text: string;\n TextComponent: TextMessagePartComponent;\n}) {\n return (\n <div data-slot=\"transcript-prose\" className=\"min-w-0\">\n <TextComponent type=\"text\" text={text} status={{ type: 'complete' }} />\n </div>\n );\n});\n\ninterface ActivitySegmentProps {\n segment: Extract<TurnSegment, { kind: 'activity' }>;\n steps: readonly TimelineStep[];\n turnPhase: ActivityPhase;\n expansionKey: string;\n expandWhileWaiting: boolean;\n mountDetails: boolean;\n maxVisibleSteps: number;\n grouping: GroupingFunction;\n components: Parameters<typeof MessagePrimitive.Unstable_PartsGrouped>[0]['components'];\n classNames: SuperGroupingTranscriptProps['classNames'];\n}\n\n/**\n * One collapsed run of work between two of the agent's sentences: the step in\n * progress (or the last one taken) on one line, the segment's steps when\n * opened, and the tool UIs of just this segment behind \"Show tool details\".\n * The tool UIs stay mounted (hidden) while the turn is live so their effects\n * run, as in `SuperGroupingCard`.\n */\nfunction ActivitySegment({\n segment,\n steps,\n turnPhase,\n expansionKey,\n expandWhileWaiting,\n mountDetails,\n maxVisibleSteps,\n grouping,\n components,\n classNames,\n}: ActivitySegmentProps) {\n const summary = summarizeSegment(steps);\n const phase = summary.phase;\n const { expanded, toggleExpanded } = useActivityExpansion({\n expansionKey: `${expansionKey}:${segment.key}`,\n phase,\n expandWhileWaiting,\n });\n const { expanded: detailsExpanded, toggleExpanded: toggleDetails } = useActivityExpansion({\n expansionKey: `${expansionKey}:${segment.key}:details`,\n phase,\n expandWhileWaiting,\n });\n const indicesKey = segment.partIndices.join(',');\n const scopedGrouping = useMemo(\n () => scopeGroupingToSegment(grouping, indicesKey.split(',').map(Number)),\n [grouping, indicesKey],\n );\n const groupingContext = useMemo(() => ({ groupingFunction: scopedGrouping }), [scopedGrouping]);\n const detailsPanelId = `aui-sg-segment-${useId().replace(/[^A-Za-z0-9_-]/g, '')}`;\n\n const isTurnActive = turnPhase === 'running' || turnPhase === 'waiting';\n const detailsMounted = isTurnActive || mountDetails || (expanded && detailsExpanded);\n const hasToolSteps = steps.some((step) => step.kind === 'tool');\n const meta = [summary.step?.chip, summary.meta].filter(Boolean).join(' · ');\n\n // Parts with no step of their own (an image the agent produced) are content, not work.\n if (steps.length === 0) {\n return (\n <div data-slot=\"transcript-parts\" className={cn('flex min-w-0 flex-col gap-2', classNames?.detailsParts)}>\n <SuperGroupingProvider value={groupingContext}>\n <MessagePrimitive.Unstable_PartsGrouped groupingFunction={scopedGrouping} components={components} />\n </SuperGroupingProvider>\n </div>\n );\n }\n\n return (\n <div data-slot=\"activity-segment\" data-phase={phase} data-segment-key={segment.key} className=\"min-w-0\">\n <ToolTimeline\n steps={steps}\n open={expanded}\n onOpenChange={toggleExpanded}\n label={<StepText text={summary.label} code={summary.step?.code} />}\n labelTitle={summary.step?.detail}\n phase={phase}\n maxVisibleSteps={maxVisibleSteps}\n keepMounted={isTurnActive || mountDetails}\n meta={meta ? <span data-slot=\"activity-segment-meta\">{meta}</span> : null}\n >\n <div className=\"min-w-0 pl-5\">\n <button\n type=\"button\"\n onClick={toggleDetails}\n aria-expanded={detailsExpanded}\n aria-controls={detailsPanelId}\n className=\"flex items-center gap-1.5 rounded py-1 text-xs text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight\n aria-hidden=\"true\"\n className={cn(\n 'size-3 transition-transform motion-reduce:transition-none',\n detailsExpanded && 'rotate-90',\n )}\n />\n {detailsExpanded\n ? hasToolSteps\n ? 'Hide tool details'\n : 'Hide thinking'\n : hasToolSteps\n ? 'Show tool details'\n : 'Show thinking'}\n </button>\n {detailsMounted ? (\n <section\n id={detailsPanelId}\n aria-label=\"Step details\"\n hidden={!expanded || !detailsExpanded}\n className={cn(\n 'min-w-0 overflow-hidden border-l border-border/60 py-2 pl-3',\n classNames?.details,\n )}\n >\n <div className={cn('flex flex-col gap-2', classNames?.detailsParts)}>\n <SuperGroupingProvider value={groupingContext}>\n <MessagePrimitive.Unstable_PartsGrouped groupingFunction={scopedGrouping} components={components} />\n </SuperGroupingProvider>\n </div>\n </section>\n ) : null}\n </div>\n </ToolTimeline>\n </div>\n );\n}\n\n// ─── Transcript ────────────────────────────────────────────────────────\n\n/**\n * The grouped (\"conversational\") view of an assistant turn as a transcript:\n * a header that says how long the turn has been working (\"Working for\n * 1m 12s\", then \"Worked for 2m 30s\"), then the agent's own sentences in the\n * order it wrote them, each run of work between them folded into one\n * collapsed activity segment that names its step (\"Ran `git log -1`\",\n * \"Read `config.ts`\"). The answer — the text after the last tool call —\n * renders below it through `SuperGroupingFinalText`, exactly as under\n * `SuperGroupingCard`, so no text renders twice.\n *\n * Takes the same renderer and host slots as `SuperGroupingCard`;\n * `renderRunningMeta` and `renderHeaderActions` sit on the header row.\n *\n * Selector discipline: raw reads only (`message`, `message.content`,\n * `message.status`, the previous message's stamp and id); every derivation\n * runs in `useMemo`.\n */\nexport const SuperGroupingTranscript = memo(function SuperGroupingTranscript({\n toolUIs,\n ToolFallback: ToolFallbackComponent = ToolFallback,\n TextComponent,\n ReasoningComponent,\n GroupComponent = CollapsibleGroup,\n getToolGroupKey = defaultGetToolGroupKey,\n groupingFunction,\n waitingTools,\n passThroughTools,\n waitingForInput = false,\n resolveToolDisplayName,\n expansionKey: expansionKeyProp,\n expandWhileWaiting = false,\n mountDetails = false,\n maxVisibleSteps = DEFAULT_MAX_VISIBLE_STEPS,\n summaryDetails,\n renderHeaderActions,\n renderRunningMeta,\n className,\n classNames,\n}: SuperGroupingTranscriptProps) {\n const messageId = useAuiState((s) => s.message.id);\n const messageContent = useAuiState((s) =>\n s.message.role === 'assistant' ? s.message.content : EMPTY_CONTENT,\n );\n const messageStatus = useAuiState((s) => s.message.status);\n\n const timeline = useMemo(\n () => buildActivityTimeline(messageContent, messageStatus, { waitingTools, passThroughTools }),\n [messageContent, messageStatus, waitingTools, passThroughTools],\n );\n const phase = useMemo(\n () => resolveActivityPhase(messageStatus, timeline, { waitingForInput }),\n [messageStatus, timeline, waitingForInput],\n );\n const assetTitles = useMemo(() => collectAssetTitles(messageContent), [messageContent]);\n const stepsByPart = useMemo(() => {\n const byPart = new Map<number, TimelineStep>();\n timeline.forEach((item, index) => {\n if (item.partIndex === undefined) return;\n byPart.set(item.partIndex, toTimelineStep({ item, index, resolveToolDisplayName, assetTitles }));\n });\n return byPart;\n }, [timeline, resolveToolDisplayName, assetTitles]);\n const segments = useMemo(() => splitTurnSegments(messageContent), [messageContent]);\n const grouping = useMemo(\n () => groupingFunction ?? createToolBasedGroupingFunction(getToolGroupKey),\n [groupingFunction, getToolGroupKey],\n );\n const components = useMemo(\n () => ({\n tools: {\n ...(toolUIs ? { by_name: toolUIs } : {}),\n Fallback: ToolFallbackComponent,\n },\n Text: TextComponent,\n ...(ReasoningComponent ? { Reasoning: ReasoningComponent } : {}),\n Group: GroupComponent,\n }),\n [toolUIs, ToolFallbackComponent, TextComponent, ReasoningComponent, GroupComponent],\n );\n const statusId = `aui-sg-turn-${useId().replace(/[^A-Za-z0-9_-]/g, '')}`;\n\n const hasText = messageContent.some((part) => part.type === 'text' && part.text.trim() !== '');\n const isVisible =\n timeline.length > 0 || phase === 'waiting' || phase === 'error' || (phase === 'running' && !hasText);\n if (!isVisible) return null;\n\n const expansionKey = expansionKeyProp ?? messageId;\n const toolCount = countActivityTools(timeline);\n const runningStep = [...stepsByPart.values()].filter((step) => step.state === 'running').at(-1);\n const cancelled = messageStatus?.type === 'incomplete' && messageStatus.reason === 'cancelled';\n const activitySummary = getActivitySummary(timeline);\n // The live region speaks what changed, never the ticking clock.\n const announcement =\n phase === 'running'\n ? (runningStep?.verb ?? 'Working')\n : phase === 'waiting'\n ? 'Waiting for your input'\n : phase === 'error'\n ? cancelled\n ? 'Run stopped'\n : 'Something went wrong'\n : activitySummary;\n const actions = renderHeaderActions?.({ phase, messageContent });\n const meta = phase === 'running' ? renderRunningMeta?.({ phase }) : null;\n\n return (\n <section\n data-slot=\"super-grouping-transcript\"\n data-phase={phase}\n data-tool-count={toolCount}\n className={cn('my-3 flex min-w-0 flex-col gap-1', className, classNames?.root)}\n aria-busy={phase === 'running' ? 'true' : 'false'}\n aria-describedby={statusId}\n >\n <div\n data-slot=\"turn-header\"\n className={cn(\n 'flex min-w-0 items-center gap-2 py-1 text-[13px] text-muted-foreground',\n classNames?.header,\n )}\n >\n <TurnGlyph phase={phase} />\n <span\n data-slot=\"turn-status\"\n className={cn(\n 'min-w-0 flex-1 truncate tabular-nums leading-5',\n phase === 'error' && !cancelled && 'text-destructive',\n )}\n >\n <TurnStatus\n phase={phase}\n cancelled={cancelled}\n activitySummary={activitySummary}\n toolCount={toolCount}\n summaryDetails={summaryDetails}\n />\n </span>\n {meta ? (\n <div data-slot=\"turn-meta\" className=\"flex shrink-0 items-center text-xs tabular-nums\">\n {meta}\n </div>\n ) : null}\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </div>\n {segments.length > 0 ? (\n <div\n data-slot=\"super-grouping-transcript-body\"\n className={cn('flex min-w-0 flex-col gap-1.5', classNames?.body)}\n >\n {segments.map((segment) =>\n segment.kind === 'prose' ? (\n <ProseSegment key={segment.key} text={segment.text} TextComponent={TextComponent} />\n ) : (\n <ActivitySegment\n key={segment.key}\n segment={segment}\n steps={segmentSteps(segment, stepsByPart)}\n turnPhase={phase}\n expansionKey={expansionKey}\n expandWhileWaiting={expandWhileWaiting}\n mountDetails={mountDetails}\n maxVisibleSteps={maxVisibleSteps}\n grouping={grouping}\n components={components}\n classNames={classNames}\n />\n ),\n )}\n </div>\n ) : null}\n <output id={statusId} aria-live=\"polite\" aria-atomic=\"true\" className=\"sr-only\">\n {announcement}\n </output>\n </section>\n );\n});\n\nfunction segmentSteps(\n segment: Extract<TurnSegment, { kind: 'activity' }>,\n stepsByPart: ReadonlyMap<number, TimelineStep>,\n): readonly TimelineStep[] {\n const steps = segment.partIndices\n .map((index) => stepsByPart.get(index))\n .filter((step): step is TimelineStep => step !== undefined);\n return steps.length > 0 ? steps : EMPTY_STEPS;\n}\n"],"names":["ProseSegment","SuperGroupingTranscript"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const lucideReact = require("lucide-react");
|
|
5
5
|
const react = require("react");
|
|
6
|
+
const stepText = require("../../tools/step-text.cjs");
|
|
6
7
|
const collapsible = require("../../ui/collapsible.cjs");
|
|
7
8
|
const timelineStep = require("./timeline-step.cjs");
|
|
8
9
|
const cnfast = require("cnfast");
|
|
@@ -25,6 +26,7 @@ function ToolTimeline({
|
|
|
25
26
|
open,
|
|
26
27
|
onOpenChange,
|
|
27
28
|
label,
|
|
29
|
+
labelTitle,
|
|
28
30
|
phase,
|
|
29
31
|
maxVisibleSteps,
|
|
30
32
|
keepMounted,
|
|
@@ -56,6 +58,7 @@ function ToolTimeline({
|
|
|
56
58
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
57
59
|
"span",
|
|
58
60
|
{
|
|
61
|
+
title: labelTitle,
|
|
59
62
|
className: cnfast.cn(
|
|
60
63
|
"min-w-0 break-words leading-5",
|
|
61
64
|
phase === "running" && "motion-safe:animate-pulse",
|
|
@@ -67,9 +70,16 @@ function ToolTimeline({
|
|
|
67
70
|
]
|
|
68
71
|
}
|
|
69
72
|
),
|
|
73
|
+
meta ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
"div",
|
|
75
|
+
{
|
|
76
|
+
"data-slot": "tool-timeline-meta",
|
|
77
|
+
className: "flex shrink-0 items-center text-xs text-muted-foreground tabular-nums",
|
|
78
|
+
children: meta
|
|
79
|
+
}
|
|
80
|
+
) : null,
|
|
70
81
|
actions ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-1", children: actions }) : null
|
|
71
82
|
] }),
|
|
72
|
-
meta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pl-5 text-xs text-muted-foreground", children: meta }) : null,
|
|
73
83
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
74
84
|
collapsible.CollapsibleContent,
|
|
75
85
|
{
|
|
@@ -99,12 +109,13 @@ function ToolTimeline({
|
|
|
99
109
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
110
|
"span",
|
|
101
111
|
{
|
|
112
|
+
title: step.detail,
|
|
102
113
|
className: cnfast.cn(
|
|
103
114
|
"min-w-0 break-words leading-5",
|
|
104
115
|
step.state === "error" && "text-destructive",
|
|
105
116
|
step.state === "running" && "text-foreground"
|
|
106
117
|
),
|
|
107
|
-
children: step.verb
|
|
118
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(stepText.StepText, { text: step.verb, code: step.code })
|
|
108
119
|
}
|
|
109
120
|
),
|
|
110
121
|
step.chip ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolTimeline.cjs","sources":["../../../src/chat/super-grouping/ToolTimeline.tsx"],"sourcesContent":["'use client';\n\n/*!\n * Adapted from assistant-ui's ToolTimeline element:\n * https://github.com/assistant-ui/assistant-ui/blob/main/packages/ui/src/components/react/assistant-ui/elements/tool-timeline.tsx\n * MIT License — Copyright (c) 2025 AgentbaseAI Inc.\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { AlertCircle, Check, ChevronRight, Circle, LoaderCircle, Pause, X } from 'lucide-react';\nimport { type ReactNode, useId, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../ui/collapsible';\nimport type { ActivityPhase } from './activity-timeline';\nimport { type TimelineStep, visibleTimelineSteps } from './timeline-step';\n\nfunction StepIcon({ state }: { state: TimelineStep['state'] }) {\n const Icon =\n state === 'running'\n ? LoaderCircle\n : state === 'complete'\n ? Check\n : state === 'error'\n ? AlertCircle\n : state === 'rejected'\n ? X\n : state === 'paused'\n ? Pause\n : Circle;\n return (\n <Icon\n aria-hidden=\"true\"\n className={cn(\n 'size-3.5 shrink-0',\n state === 'running' && 'motion-safe:animate-spin',\n state === 'error'\n ? 'text-destructive'\n : state === 'waiting' || state === 'paused'\n ? 'text-amber-600 dark:text-amber-400'\n : 'text-muted-foreground',\n )}\n />\n );\n}\n\n/** The upstream disclosure/verb/chip layout, with real per-call states and live tool UIs. */\nexport function ToolTimeline({\n steps,\n open,\n onOpenChange,\n label,\n phase,\n maxVisibleSteps,\n keepMounted,\n actions,\n meta,\n children,\n}: {\n steps: readonly TimelineStep[];\n open: boolean;\n onOpenChange: (open: boolean) => void;\n label: string;\n phase: ActivityPhase;\n maxVisibleSteps: number;\n keepMounted: boolean;\n actions?: ReactNode;\n meta?: ReactNode;\n children?: ReactNode;\n}) {\n const panelId = useId();\n const [showAll, setShowAll] = useState(false);\n const recentSteps = visibleTimelineSteps({ steps, limit: maxVisibleSteps });\n const shown = showAll ? steps : recentSteps;\n const hiddenCount = steps.length - recentSteps.length;\n return (\n <Collapsible data-slot=\"tool-timeline\" open={open} onOpenChange={onOpenChange} className=\"w-full min-w-0\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <CollapsibleTrigger\n aria-controls={panelId}\n className=\"group/trigger flex min-w-0 flex-1 items-center gap-1.5 rounded-md py-1 text-left text-[13px] text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"size-3.5 shrink-0 opacity-60 transition-transform duration-200 group-data-[state=open]/trigger:rotate-90 motion-reduce:transition-none\"\n />\n {phase === 'error' || phase === 'waiting' ? <StepIcon state={phase} /> : null}\n <span\n className={cn(\n 'min-w-0 break-words leading-5',\n phase === 'running' && 'motion-safe:animate-pulse',\n phase === 'error' && 'text-destructive',\n )}\n >\n {label}\n </span>\n </CollapsibleTrigger>\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </div>\n {meta ? <div className=\"pl-5 text-xs text-muted-foreground\">{meta}</div> : null}\n <CollapsibleContent\n id={panelId}\n forceMount={keepMounted ? true : undefined}\n hidden={!open}\n className=\"min-w-0\"\n >\n <ol aria-label=\"Work status updates\" className=\"flex list-none flex-col gap-2.5 py-2.5 pl-5\">\n {hiddenCount > 0 ? (\n <li>\n <button\n type=\"button\"\n onClick={() => setShowAll((previous) => !previous)}\n className=\"rounded text-xs text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {showAll\n ? 'Show recent steps'\n : `Show ${hiddenCount} earlier ${hiddenCount === 1 ? 'step' : 'steps'}`}\n </button>\n </li>\n ) : null}\n {shown.map((step) => (\n <li\n key={step.id}\n data-step-id={step.id}\n data-step-state={step.state}\n className=\"flex min-w-0 items-center gap-2 text-[13px] text-muted-foreground\"\n >\n <StepIcon state={step.state} />\n <span\n className={cn(\n 'min-w-0 break-words leading-5',\n step.state === 'error' && 'text-destructive',\n step.state === 'running' && 'text-foreground',\n )}\n >\n {step.verb}\n </span>\n {step.chip ? (\n <span\n title={step.chip}\n className=\"max-w-[45%] truncate rounded-md bg-foreground/[0.06] px-1.5 py-0.5 font-mono text-[11px] text-foreground/70\"\n >\n {step.chip}\n </span>\n ) : null}\n <span className=\"sr-only\">{step.state}</span>\n </li>\n ))}\n </ol>\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n}\n"],"names":["LoaderCircle","Check","AlertCircle","X","Pause","Circle","jsx","cn","useId","useState","visibleTimelineSteps","Collapsible","jsxs","CollapsibleTrigger","ChevronRight","CollapsibleContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToolTimeline.cjs","sources":["../../../src/chat/super-grouping/ToolTimeline.tsx"],"sourcesContent":["'use client';\n\n/*!\n * Adapted from assistant-ui's ToolTimeline element:\n * https://github.com/assistant-ui/assistant-ui/blob/main/packages/ui/src/components/react/assistant-ui/elements/tool-timeline.tsx\n * MIT License — Copyright (c) 2025 AgentbaseAI Inc.\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { AlertCircle, Check, ChevronRight, Circle, LoaderCircle, Pause, X } from 'lucide-react';\nimport { type ReactNode, useId, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { StepText } from '../../tools/step-text';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../ui/collapsible';\nimport type { ActivityPhase } from './activity-timeline';\nimport { type TimelineStep, visibleTimelineSteps } from './timeline-step';\n\nfunction StepIcon({ state }: { state: TimelineStep['state'] }) {\n const Icon =\n state === 'running'\n ? LoaderCircle\n : state === 'complete'\n ? Check\n : state === 'error'\n ? AlertCircle\n : state === 'rejected'\n ? X\n : state === 'paused'\n ? Pause\n : Circle;\n return (\n <Icon\n aria-hidden=\"true\"\n className={cn(\n 'size-3.5 shrink-0',\n state === 'running' && 'motion-safe:animate-spin',\n state === 'error'\n ? 'text-destructive'\n : state === 'waiting' || state === 'paused'\n ? 'text-amber-600 dark:text-amber-400'\n : 'text-muted-foreground',\n )}\n />\n );\n}\n\n/**\n * The upstream disclosure/verb/chip layout, with real per-call states and live\n * tool UIs. `meta` (a host's elapsed counter) sits on the header row itself,\n * right of the status and before `actions`, so a live card carries one status\n * line rather than a second row repeating what the header already says.\n */\nexport function ToolTimeline({\n steps,\n open,\n onOpenChange,\n label,\n labelTitle,\n phase,\n maxVisibleSteps,\n keepMounted,\n actions,\n meta,\n children,\n}: {\n steps: readonly TimelineStep[];\n open: boolean;\n onOpenChange: (open: boolean) => void;\n label: ReactNode;\n /** Tooltip for the header line (the full form of a clipped label). */\n labelTitle?: string;\n phase: ActivityPhase;\n maxVisibleSteps: number;\n keepMounted: boolean;\n actions?: ReactNode;\n meta?: ReactNode;\n children?: ReactNode;\n}) {\n const panelId = useId();\n const [showAll, setShowAll] = useState(false);\n const recentSteps = visibleTimelineSteps({ steps, limit: maxVisibleSteps });\n const shown = showAll ? steps : recentSteps;\n const hiddenCount = steps.length - recentSteps.length;\n return (\n <Collapsible data-slot=\"tool-timeline\" open={open} onOpenChange={onOpenChange} className=\"w-full min-w-0\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <CollapsibleTrigger\n aria-controls={panelId}\n className=\"group/trigger flex min-w-0 flex-1 items-center gap-1.5 rounded-md py-1 text-left text-[13px] text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"size-3.5 shrink-0 opacity-60 transition-transform duration-200 group-data-[state=open]/trigger:rotate-90 motion-reduce:transition-none\"\n />\n {phase === 'error' || phase === 'waiting' ? <StepIcon state={phase} /> : null}\n <span\n title={labelTitle}\n className={cn(\n 'min-w-0 break-words leading-5',\n phase === 'running' && 'motion-safe:animate-pulse',\n phase === 'error' && 'text-destructive',\n )}\n >\n {label}\n </span>\n </CollapsibleTrigger>\n {meta ? (\n <div\n data-slot=\"tool-timeline-meta\"\n className=\"flex shrink-0 items-center text-xs text-muted-foreground tabular-nums\"\n >\n {meta}\n </div>\n ) : null}\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </div>\n <CollapsibleContent\n id={panelId}\n forceMount={keepMounted ? true : undefined}\n hidden={!open}\n className=\"min-w-0\"\n >\n <ol aria-label=\"Work status updates\" className=\"flex list-none flex-col gap-2.5 py-2.5 pl-5\">\n {hiddenCount > 0 ? (\n <li>\n <button\n type=\"button\"\n onClick={() => setShowAll((previous) => !previous)}\n className=\"rounded text-xs text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {showAll\n ? 'Show recent steps'\n : `Show ${hiddenCount} earlier ${hiddenCount === 1 ? 'step' : 'steps'}`}\n </button>\n </li>\n ) : null}\n {shown.map((step) => (\n <li\n key={step.id}\n data-step-id={step.id}\n data-step-state={step.state}\n className=\"flex min-w-0 items-center gap-2 text-[13px] text-muted-foreground\"\n >\n <StepIcon state={step.state} />\n <span\n title={step.detail}\n className={cn(\n 'min-w-0 break-words leading-5',\n step.state === 'error' && 'text-destructive',\n step.state === 'running' && 'text-foreground',\n )}\n >\n <StepText text={step.verb} code={step.code} />\n </span>\n {step.chip ? (\n <span\n title={step.chip}\n className=\"max-w-[45%] truncate rounded-md bg-foreground/[0.06] px-1.5 py-0.5 font-mono text-[11px] text-foreground/70\"\n >\n {step.chip}\n </span>\n ) : null}\n <span className=\"sr-only\">{step.state}</span>\n </li>\n ))}\n </ol>\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n}\n"],"names":["LoaderCircle","Check","AlertCircle","X","Pause","Circle","jsx","cn","useId","useState","visibleTimelineSteps","Collapsible","jsxs","CollapsibleTrigger","ChevronRight","CollapsibleContent","StepText"],"mappings":"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"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { ActivityPhase } from './activity-timeline';
|
|
3
3
|
import { type TimelineStep } from './timeline-step';
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* The upstream disclosure/verb/chip layout, with real per-call states and live
|
|
6
|
+
* tool UIs. `meta` (a host's elapsed counter) sits on the header row itself,
|
|
7
|
+
* right of the status and before `actions`, so a live card carries one status
|
|
8
|
+
* line rather than a second row repeating what the header already says.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ToolTimeline({ steps, open, onOpenChange, label, labelTitle, phase, maxVisibleSteps, keepMounted, actions, meta, children, }: {
|
|
6
11
|
steps: readonly TimelineStep[];
|
|
7
12
|
open: boolean;
|
|
8
13
|
onOpenChange: (open: boolean) => void;
|
|
9
|
-
label:
|
|
14
|
+
label: ReactNode;
|
|
15
|
+
/** Tooltip for the header line (the full form of a clipped label). */
|
|
16
|
+
labelTitle?: string;
|
|
10
17
|
phase: ActivityPhase;
|
|
11
18
|
maxVisibleSteps: number;
|
|
12
19
|
keepMounted: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ChevronRight, LoaderCircle, Check, AlertCircle, X, Pause, Circle } from "lucide-react";
|
|
3
3
|
import { useId, useState } from "react";
|
|
4
|
+
import { StepText } from "../../tools/step-text.js";
|
|
4
5
|
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "../../ui/collapsible.js";
|
|
5
6
|
import { visibleTimelineSteps } from "./timeline-step.js";
|
|
6
7
|
import { cn } from "cnfast";
|
|
@@ -23,6 +24,7 @@ function ToolTimeline({
|
|
|
23
24
|
open,
|
|
24
25
|
onOpenChange,
|
|
25
26
|
label,
|
|
27
|
+
labelTitle,
|
|
26
28
|
phase,
|
|
27
29
|
maxVisibleSteps,
|
|
28
30
|
keepMounted,
|
|
@@ -54,6 +56,7 @@ function ToolTimeline({
|
|
|
54
56
|
/* @__PURE__ */ jsx(
|
|
55
57
|
"span",
|
|
56
58
|
{
|
|
59
|
+
title: labelTitle,
|
|
57
60
|
className: cn(
|
|
58
61
|
"min-w-0 break-words leading-5",
|
|
59
62
|
phase === "running" && "motion-safe:animate-pulse",
|
|
@@ -65,9 +68,16 @@ function ToolTimeline({
|
|
|
65
68
|
]
|
|
66
69
|
}
|
|
67
70
|
),
|
|
71
|
+
meta ? /* @__PURE__ */ jsx(
|
|
72
|
+
"div",
|
|
73
|
+
{
|
|
74
|
+
"data-slot": "tool-timeline-meta",
|
|
75
|
+
className: "flex shrink-0 items-center text-xs text-muted-foreground tabular-nums",
|
|
76
|
+
children: meta
|
|
77
|
+
}
|
|
78
|
+
) : null,
|
|
68
79
|
actions ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: actions }) : null
|
|
69
80
|
] }),
|
|
70
|
-
meta ? /* @__PURE__ */ jsx("div", { className: "pl-5 text-xs text-muted-foreground", children: meta }) : null,
|
|
71
81
|
/* @__PURE__ */ jsxs(
|
|
72
82
|
CollapsibleContent,
|
|
73
83
|
{
|
|
@@ -97,12 +107,13 @@ function ToolTimeline({
|
|
|
97
107
|
/* @__PURE__ */ jsx(
|
|
98
108
|
"span",
|
|
99
109
|
{
|
|
110
|
+
title: step.detail,
|
|
100
111
|
className: cn(
|
|
101
112
|
"min-w-0 break-words leading-5",
|
|
102
113
|
step.state === "error" && "text-destructive",
|
|
103
114
|
step.state === "running" && "text-foreground"
|
|
104
115
|
),
|
|
105
|
-
children: step.verb
|
|
116
|
+
children: /* @__PURE__ */ jsx(StepText, { text: step.verb, code: step.code })
|
|
106
117
|
}
|
|
107
118
|
),
|
|
108
119
|
step.chip ? /* @__PURE__ */ jsx(
|