@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
|
@@ -4,6 +4,9 @@ const activityTimeline = require("./activity-timeline.cjs");
|
|
|
4
4
|
const CollapsibleGroup = require("./CollapsibleGroup.cjs");
|
|
5
5
|
const groupingFunction = require("./grouping-function.cjs");
|
|
6
6
|
const SuperGroupingCard = require("./SuperGroupingCard.cjs");
|
|
7
|
+
const SuperGroupingTranscript = require("./SuperGroupingTranscript.cjs");
|
|
8
|
+
const turnSegments = require("./turn-segments.cjs");
|
|
9
|
+
const turnTiming = require("./turn-timing.cjs");
|
|
7
10
|
const toolkitMap = require("./toolkit-map.cjs");
|
|
8
11
|
exports.buildActivityTimeline = activityTimeline.buildActivityTimeline;
|
|
9
12
|
exports.countActivityTools = activityTimeline.countActivityTools;
|
|
@@ -12,6 +15,8 @@ exports.getActivityItemLabel = activityTimeline.getActivityItemLabel;
|
|
|
12
15
|
exports.getActivitySummary = activityTimeline.getActivitySummary;
|
|
13
16
|
exports.getActivityToolState = activityTimeline.getActivityToolState;
|
|
14
17
|
exports.getFinalText = activityTimeline.getFinalText;
|
|
18
|
+
exports.getReasoningLabel = activityTimeline.getReasoningLabel;
|
|
19
|
+
exports.isStreamingToolPlaceholder = activityTimeline.isStreamingToolPlaceholder;
|
|
15
20
|
exports.resolveActivityPhase = activityTimeline.resolveActivityPhase;
|
|
16
21
|
exports.CollapsibleGroup = CollapsibleGroup.CollapsibleGroup;
|
|
17
22
|
exports.DEFAULT_TOOLKIT_THEME = CollapsibleGroup.DEFAULT_TOOLKIT_THEME;
|
|
@@ -22,5 +27,12 @@ exports.SuperGroupingCard = SuperGroupingCard.SuperGroupingCard;
|
|
|
22
27
|
exports.SuperGroupingFinalText = SuperGroupingCard.SuperGroupingFinalText;
|
|
23
28
|
exports.resetRememberedExpansionsForTests = SuperGroupingCard.resetRememberedExpansionsForTests;
|
|
24
29
|
exports.useActivityExpansion = SuperGroupingCard.useActivityExpansion;
|
|
30
|
+
exports.SuperGroupingTranscript = SuperGroupingTranscript.SuperGroupingTranscript;
|
|
31
|
+
exports.scopeGroupingToSegment = turnSegments.scopeGroupingToSegment;
|
|
32
|
+
exports.splitTurnSegments = turnSegments.splitTurnSegments;
|
|
33
|
+
exports.summarizeSegment = turnSegments.summarizeSegment;
|
|
34
|
+
exports.formatWorkDuration = turnTiming.formatWorkDuration;
|
|
35
|
+
exports.readTurnTiming = turnTiming.readTurnTiming;
|
|
36
|
+
exports.workedDurationMs = turnTiming.workedDurationMs;
|
|
25
37
|
exports.defaultGetToolGroupKey = toolkitMap.defaultGetToolGroupKey;
|
|
26
38
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@athenaintel/react/super-grouping` — the grouped ("conversational") view of
|
|
3
3
|
* an assistant turn: the activity card, its per-toolkit collapsible blocks,
|
|
4
|
-
* the timeline derivation behind them,
|
|
4
|
+
* the timeline derivation behind them, the tool-based grouping function, and
|
|
5
|
+
* the transcript layout (the agent's sentences in order with the work between
|
|
6
|
+
* them folded, under a "Working for …" header).
|
|
5
7
|
* A lean entry so hosts with their own thread (Olympus, the Chrome extension)
|
|
6
8
|
* mount it from source without the SDK's composer stack.
|
|
7
9
|
*/
|
|
8
|
-
export { type ActivityItem, type ActivityPhase, type ActivityTimelineOptions, type ActivityToolState, buildActivityTimeline, countActivityTools, excludeFinalTextFromGroups, type FinalTextPart, getActivityItemLabel, getActivitySummary, getActivityToolState, getFinalText, resolveActivityPhase, } from './activity-timeline';
|
|
10
|
+
export { type ActivityItem, type ActivityPhase, type ActivityTimelineOptions, type ActivityToolState, buildActivityTimeline, countActivityTools, excludeFinalTextFromGroups, type FinalTextPart, getActivityItemLabel, getActivitySummary, getReasoningLabel, getActivityToolState, isStreamingToolPlaceholder, getFinalText, resolveActivityPhase, } from './activity-timeline';
|
|
9
11
|
export { CollapsibleGroup, type CollapsibleGroupProps, DEFAULT_TOOLKIT_THEME, SuperGroupingProvider, TOOLKIT_THEMES, type ToolkitTheme, } from './CollapsibleGroup';
|
|
10
12
|
export { createToolBasedGroupingFunction, type GroupablePart, type GroupingFunction, type MessagePartGroup, } from './grouping-function';
|
|
11
13
|
export { resetRememberedExpansionsForTests, SuperGroupingCard, type SuperGroupingCardProps, SuperGroupingFinalText, useActivityExpansion, } from './SuperGroupingCard';
|
|
14
|
+
export { SuperGroupingTranscript, type SuperGroupingTranscriptProps } from './SuperGroupingTranscript';
|
|
15
|
+
export { scopeGroupingToSegment, type SegmentablePart, type SegmentSummary, splitTurnSegments, summarizeSegment, type TurnSegment, } from './turn-segments';
|
|
16
|
+
export { formatWorkDuration, readTurnTiming, type TurnTiming, type TurnTimingSources, workedDurationMs, } from './turn-timing';
|
|
12
17
|
export { defaultGetToolGroupKey, type GetToolGroupKey, type ToolGroupKeyOptions } from './toolkit-map';
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { buildActivityTimeline, countActivityTools, excludeFinalTextFromGroups, getActivityItemLabel, getActivitySummary, getActivityToolState, getFinalText, resolveActivityPhase } from "./activity-timeline.js";
|
|
1
|
+
import { buildActivityTimeline, countActivityTools, excludeFinalTextFromGroups, getActivityItemLabel, getActivitySummary, getActivityToolState, getFinalText, getReasoningLabel, isStreamingToolPlaceholder, resolveActivityPhase } from "./activity-timeline.js";
|
|
2
2
|
import { CollapsibleGroup, DEFAULT_TOOLKIT_THEME, SuperGroupingProvider, TOOLKIT_THEMES } from "./CollapsibleGroup.js";
|
|
3
3
|
import { createToolBasedGroupingFunction } from "./grouping-function.js";
|
|
4
4
|
import { SuperGroupingCard, SuperGroupingFinalText, resetRememberedExpansionsForTests, useActivityExpansion } from "./SuperGroupingCard.js";
|
|
5
|
+
import { SuperGroupingTranscript } from "./SuperGroupingTranscript.js";
|
|
6
|
+
import { scopeGroupingToSegment, splitTurnSegments, summarizeSegment } from "./turn-segments.js";
|
|
7
|
+
import { formatWorkDuration, readTurnTiming, workedDurationMs } from "./turn-timing.js";
|
|
5
8
|
import { defaultGetToolGroupKey } from "./toolkit-map.js";
|
|
6
9
|
export {
|
|
7
10
|
CollapsibleGroup,
|
|
@@ -9,18 +12,27 @@ export {
|
|
|
9
12
|
SuperGroupingCard,
|
|
10
13
|
SuperGroupingFinalText,
|
|
11
14
|
SuperGroupingProvider,
|
|
15
|
+
SuperGroupingTranscript,
|
|
12
16
|
TOOLKIT_THEMES,
|
|
13
17
|
buildActivityTimeline,
|
|
14
18
|
countActivityTools,
|
|
15
19
|
createToolBasedGroupingFunction,
|
|
16
20
|
defaultGetToolGroupKey,
|
|
17
21
|
excludeFinalTextFromGroups,
|
|
22
|
+
formatWorkDuration,
|
|
18
23
|
getActivityItemLabel,
|
|
19
24
|
getActivitySummary,
|
|
20
25
|
getActivityToolState,
|
|
21
26
|
getFinalText,
|
|
27
|
+
getReasoningLabel,
|
|
28
|
+
isStreamingToolPlaceholder,
|
|
29
|
+
readTurnTiming,
|
|
22
30
|
resetRememberedExpansionsForTests,
|
|
23
31
|
resolveActivityPhase,
|
|
24
|
-
|
|
32
|
+
scopeGroupingToSegment,
|
|
33
|
+
splitTurnSegments,
|
|
34
|
+
summarizeSegment,
|
|
35
|
+
useActivityExpansion,
|
|
36
|
+
workedDurationMs
|
|
25
37
|
};
|
|
26
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -29,14 +29,23 @@ function pageTarget(value) {
|
|
|
29
29
|
function toTimelineStep({
|
|
30
30
|
item,
|
|
31
31
|
index,
|
|
32
|
-
resolveToolDisplayName
|
|
32
|
+
resolveToolDisplayName,
|
|
33
|
+
assetTitles
|
|
33
34
|
}) {
|
|
35
|
+
const id = item.id ?? `${item.kind}-${index}`;
|
|
36
|
+
if (item.kind !== "tool") {
|
|
37
|
+
return { id, verb: activityTimeline.getReasoningLabel(item.text, item.state), state: item.state, kind: item.kind };
|
|
38
|
+
}
|
|
39
|
+
const summary = activityTimeline.summarizeActivityTool(item, resolveToolDisplayName, assetTitles);
|
|
34
40
|
const step = {
|
|
35
|
-
id
|
|
36
|
-
verb:
|
|
37
|
-
|
|
41
|
+
id,
|
|
42
|
+
verb: summary.label,
|
|
43
|
+
...summary.code ? { code: summary.code } : {},
|
|
44
|
+
...summary.detail ? { detail: summary.detail } : {},
|
|
45
|
+
...summary.meta ? { chip: summary.meta } : {},
|
|
46
|
+
state: item.state,
|
|
47
|
+
kind: item.kind
|
|
38
48
|
};
|
|
39
|
-
if (item.kind !== "tool") return step;
|
|
40
49
|
const args = item.args;
|
|
41
50
|
if (!args || !item.toolName.startsWith("chrome_")) return step;
|
|
42
51
|
const tabId = args.tabId ?? args.tab_id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-step.cjs","sources":["../../../src/chat/super-grouping/timeline-step.ts"],"sourcesContent":["import { type ActivityItem,
|
|
1
|
+
{"version":3,"file":"timeline-step.cjs","sources":["../../../src/chat/super-grouping/timeline-step.ts"],"sourcesContent":["import { type ActivityItem, getReasoningLabel, summarizeActivityTool } from './activity-timeline';\n\nexport interface TimelineStep {\n id: string;\n /** The row's line (\"Ran git status\"); `code` marks the literal part of it. */\n verb: string;\n /** The span of `verb` that is literal code (a command, a file name, a pattern). */\n code?: string;\n /** Longer form for the row's tooltip (the full path, the whole command line). */\n detail?: string;\n /** A short chip after the line (\"+4 −1\", \"on jevin-box\", \"Tab 7\"). */\n chip?: string;\n state: ActivityItem['state'];\n kind: ActivityItem['kind'];\n}\n\nconst COMPUTER_ACTIONS: Record<string, readonly [string, string]> = {\n screenshot: ['Taking screenshot', 'Took screenshot'],\n left_click: ['Clicking', 'Clicked'],\n right_click: ['Right-clicking', 'Right-clicked'],\n double_click: ['Double-clicking', 'Double-clicked'],\n triple_click: ['Triple-clicking', 'Triple-clicked'],\n type: ['Typing', 'Typed'],\n key: ['Pressing keys', 'Pressed keys'],\n scroll: ['Scrolling', 'Scrolled'],\n scroll_to: ['Scrolling to element', 'Scrolled to element'],\n zoom: ['Zooming', 'Zoomed'],\n hover: ['Hovering', 'Hovered'],\n left_click_drag: ['Dragging', 'Dragged'],\n wait: ['Waiting', 'Waited'],\n};\n\n/** Keep credentials, query strings, fragments, and typed input out of summary chips. */\nfunction pageTarget(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined;\n try {\n const url = new URL(value);\n if (url.protocol !== 'http:' && url.protocol !== 'https:') return undefined;\n return url.hostname;\n } catch {\n return undefined;\n }\n}\n\nexport function toTimelineStep({\n item,\n index,\n resolveToolDisplayName,\n assetTitles,\n}: {\n item: ActivityItem;\n index: number;\n resolveToolDisplayName?: (toolName: string) => string | undefined;\n /** Titles for asset ids earlier results in the turn named (see `collectAssetTitles`). */\n assetTitles?: ReadonlyMap<string, string>;\n}): TimelineStep {\n const id = item.id ?? `${item.kind}-${index}`;\n if (item.kind !== 'tool') {\n return { id, verb: getReasoningLabel(item.text, item.state), state: item.state, kind: item.kind };\n }\n const summary = summarizeActivityTool(item, resolveToolDisplayName, assetTitles);\n const step: TimelineStep = {\n id,\n verb: summary.label,\n ...(summary.code ? { code: summary.code } : {}),\n ...(summary.detail ? { detail: summary.detail } : {}),\n ...(summary.meta ? { chip: summary.meta } : {}),\n state: item.state,\n kind: item.kind,\n };\n const args = item.args;\n if (!args || !item.toolName.startsWith('chrome_')) return step;\n\n const tabId = args.tabId ?? args.tab_id;\n step.chip = pageTarget(args.url) ?? (typeof tabId === 'number' ? `Tab ${tabId}` : undefined);\n // Only successful/live actions get action-specific tense. Failure, rejection,\n // cancellation and approval copy continues to come from the shared classifier.\n if (item.state !== 'running' && item.state !== 'complete') return step;\n if (item.toolName === 'chrome_computer' && typeof args.action === 'string') {\n const action = COMPUTER_ACTIONS[args.action];\n if (action) step.verb = action[item.state === 'running' ? 0 : 1];\n } else if (item.toolName === 'chrome_navigate') {\n step.verb = item.state === 'running' ? 'Navigating to' : 'Navigated to';\n } else if (item.toolName === 'chrome_batch' && Array.isArray(args.steps)) {\n const count = args.steps.length;\n step.verb = item.state === 'running' ? 'Running Chrome actions' : 'Completed Chrome actions';\n step.chip = `${count} ${count === 1 ? 'action' : 'actions'}`;\n }\n return step;\n}\n\n/** Every unresolved parallel call stays visible even when older settled steps fold away. */\nexport function visibleTimelineSteps({ steps, limit }: { steps: readonly TimelineStep[]; limit: number }) {\n const safeLimit = Number.isFinite(limit) ? Math.max(1, Math.floor(limit)) : 3;\n return steps.filter(\n (step, index) =>\n index >= steps.length - safeLimit || step.state === 'running' || step.state === 'waiting',\n );\n}\n"],"names":["getReasoningLabel","summarizeActivityTool"],"mappings":"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"}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import { type ActivityItem } from './activity-timeline';
|
|
2
2
|
export interface TimelineStep {
|
|
3
3
|
id: string;
|
|
4
|
+
/** The row's line ("Ran git status"); `code` marks the literal part of it. */
|
|
4
5
|
verb: string;
|
|
6
|
+
/** The span of `verb` that is literal code (a command, a file name, a pattern). */
|
|
7
|
+
code?: string;
|
|
8
|
+
/** Longer form for the row's tooltip (the full path, the whole command line). */
|
|
9
|
+
detail?: string;
|
|
10
|
+
/** A short chip after the line ("+4 −1", "on jevin-box", "Tab 7"). */
|
|
5
11
|
chip?: string;
|
|
6
12
|
state: ActivityItem['state'];
|
|
13
|
+
kind: ActivityItem['kind'];
|
|
7
14
|
}
|
|
8
|
-
export declare function toTimelineStep({ item, index, resolveToolDisplayName, }: {
|
|
15
|
+
export declare function toTimelineStep({ item, index, resolveToolDisplayName, assetTitles, }: {
|
|
9
16
|
item: ActivityItem;
|
|
10
17
|
index: number;
|
|
11
18
|
resolveToolDisplayName?: (toolName: string) => string | undefined;
|
|
19
|
+
/** Titles for asset ids earlier results in the turn named (see `collectAssetTitles`). */
|
|
20
|
+
assetTitles?: ReadonlyMap<string, string>;
|
|
12
21
|
}): TimelineStep;
|
|
13
22
|
/** Every unresolved parallel call stays visible even when older settled steps fold away. */
|
|
14
23
|
export declare function visibleTimelineSteps({ steps, limit }: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getReasoningLabel, summarizeActivityTool } from "./activity-timeline.js";
|
|
2
2
|
const COMPUTER_ACTIONS = {
|
|
3
3
|
screenshot: ["Taking screenshot", "Took screenshot"],
|
|
4
4
|
left_click: ["Clicking", "Clicked"],
|
|
@@ -27,14 +27,23 @@ function pageTarget(value) {
|
|
|
27
27
|
function toTimelineStep({
|
|
28
28
|
item,
|
|
29
29
|
index,
|
|
30
|
-
resolveToolDisplayName
|
|
30
|
+
resolveToolDisplayName,
|
|
31
|
+
assetTitles
|
|
31
32
|
}) {
|
|
33
|
+
const id = item.id ?? `${item.kind}-${index}`;
|
|
34
|
+
if (item.kind !== "tool") {
|
|
35
|
+
return { id, verb: getReasoningLabel(item.text, item.state), state: item.state, kind: item.kind };
|
|
36
|
+
}
|
|
37
|
+
const summary = summarizeActivityTool(item, resolveToolDisplayName, assetTitles);
|
|
32
38
|
const step = {
|
|
33
|
-
id
|
|
34
|
-
verb:
|
|
35
|
-
|
|
39
|
+
id,
|
|
40
|
+
verb: summary.label,
|
|
41
|
+
...summary.code ? { code: summary.code } : {},
|
|
42
|
+
...summary.detail ? { detail: summary.detail } : {},
|
|
43
|
+
...summary.meta ? { chip: summary.meta } : {},
|
|
44
|
+
state: item.state,
|
|
45
|
+
kind: item.kind
|
|
36
46
|
};
|
|
37
|
-
if (item.kind !== "tool") return step;
|
|
38
47
|
const args = item.args;
|
|
39
48
|
if (!args || !item.toolName.startsWith("chrome_")) return step;
|
|
40
49
|
const tabId = args.tabId ?? args.tab_id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-step.js","sources":["../../../src/chat/super-grouping/timeline-step.ts"],"sourcesContent":["import { type ActivityItem,
|
|
1
|
+
{"version":3,"file":"timeline-step.js","sources":["../../../src/chat/super-grouping/timeline-step.ts"],"sourcesContent":["import { type ActivityItem, getReasoningLabel, summarizeActivityTool } from './activity-timeline';\n\nexport interface TimelineStep {\n id: string;\n /** The row's line (\"Ran git status\"); `code` marks the literal part of it. */\n verb: string;\n /** The span of `verb` that is literal code (a command, a file name, a pattern). */\n code?: string;\n /** Longer form for the row's tooltip (the full path, the whole command line). */\n detail?: string;\n /** A short chip after the line (\"+4 −1\", \"on jevin-box\", \"Tab 7\"). */\n chip?: string;\n state: ActivityItem['state'];\n kind: ActivityItem['kind'];\n}\n\nconst COMPUTER_ACTIONS: Record<string, readonly [string, string]> = {\n screenshot: ['Taking screenshot', 'Took screenshot'],\n left_click: ['Clicking', 'Clicked'],\n right_click: ['Right-clicking', 'Right-clicked'],\n double_click: ['Double-clicking', 'Double-clicked'],\n triple_click: ['Triple-clicking', 'Triple-clicked'],\n type: ['Typing', 'Typed'],\n key: ['Pressing keys', 'Pressed keys'],\n scroll: ['Scrolling', 'Scrolled'],\n scroll_to: ['Scrolling to element', 'Scrolled to element'],\n zoom: ['Zooming', 'Zoomed'],\n hover: ['Hovering', 'Hovered'],\n left_click_drag: ['Dragging', 'Dragged'],\n wait: ['Waiting', 'Waited'],\n};\n\n/** Keep credentials, query strings, fragments, and typed input out of summary chips. */\nfunction pageTarget(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined;\n try {\n const url = new URL(value);\n if (url.protocol !== 'http:' && url.protocol !== 'https:') return undefined;\n return url.hostname;\n } catch {\n return undefined;\n }\n}\n\nexport function toTimelineStep({\n item,\n index,\n resolveToolDisplayName,\n assetTitles,\n}: {\n item: ActivityItem;\n index: number;\n resolveToolDisplayName?: (toolName: string) => string | undefined;\n /** Titles for asset ids earlier results in the turn named (see `collectAssetTitles`). */\n assetTitles?: ReadonlyMap<string, string>;\n}): TimelineStep {\n const id = item.id ?? `${item.kind}-${index}`;\n if (item.kind !== 'tool') {\n return { id, verb: getReasoningLabel(item.text, item.state), state: item.state, kind: item.kind };\n }\n const summary = summarizeActivityTool(item, resolveToolDisplayName, assetTitles);\n const step: TimelineStep = {\n id,\n verb: summary.label,\n ...(summary.code ? { code: summary.code } : {}),\n ...(summary.detail ? { detail: summary.detail } : {}),\n ...(summary.meta ? { chip: summary.meta } : {}),\n state: item.state,\n kind: item.kind,\n };\n const args = item.args;\n if (!args || !item.toolName.startsWith('chrome_')) return step;\n\n const tabId = args.tabId ?? args.tab_id;\n step.chip = pageTarget(args.url) ?? (typeof tabId === 'number' ? `Tab ${tabId}` : undefined);\n // Only successful/live actions get action-specific tense. Failure, rejection,\n // cancellation and approval copy continues to come from the shared classifier.\n if (item.state !== 'running' && item.state !== 'complete') return step;\n if (item.toolName === 'chrome_computer' && typeof args.action === 'string') {\n const action = COMPUTER_ACTIONS[args.action];\n if (action) step.verb = action[item.state === 'running' ? 0 : 1];\n } else if (item.toolName === 'chrome_navigate') {\n step.verb = item.state === 'running' ? 'Navigating to' : 'Navigated to';\n } else if (item.toolName === 'chrome_batch' && Array.isArray(args.steps)) {\n const count = args.steps.length;\n step.verb = item.state === 'running' ? 'Running Chrome actions' : 'Completed Chrome actions';\n step.chip = `${count} ${count === 1 ? 'action' : 'actions'}`;\n }\n return step;\n}\n\n/** Every unresolved parallel call stays visible even when older settled steps fold away. */\nexport function visibleTimelineSteps({ steps, limit }: { steps: readonly TimelineStep[]; limit: number }) {\n const safeLimit = Number.isFinite(limit) ? Math.max(1, Math.floor(limit)) : 3;\n return steps.filter(\n (step, index) =>\n index >= steps.length - safeLimit || step.state === 'running' || step.state === 'waiting',\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function lastToolCallIndex(content) {
|
|
4
|
+
var _a;
|
|
5
|
+
for (let index = content.length - 1; index >= 0; index -= 1) {
|
|
6
|
+
if (((_a = content[index]) == null ? void 0 : _a.type) === "tool-call") return index;
|
|
7
|
+
}
|
|
8
|
+
return -1;
|
|
9
|
+
}
|
|
10
|
+
function splitTurnSegments(content) {
|
|
11
|
+
if (!(content == null ? void 0 : content.length)) return [];
|
|
12
|
+
const answerStart = lastToolCallIndex(content) + 1;
|
|
13
|
+
const segments = [];
|
|
14
|
+
let lastActivity = null;
|
|
15
|
+
for (let index = 0; index < content.length; index += 1) {
|
|
16
|
+
const part = content[index];
|
|
17
|
+
if (!part) continue;
|
|
18
|
+
if (part.type === "text") {
|
|
19
|
+
if (index >= answerStart) continue;
|
|
20
|
+
const text = typeof part.text === "string" ? part.text : "";
|
|
21
|
+
if (text.trim() === "") continue;
|
|
22
|
+
segments.push({ kind: "prose", key: `prose-${index}`, partIndex: index, text });
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const previous = segments.at(-1);
|
|
26
|
+
if (index < answerStart && (previous == null ? void 0 : previous.kind) === "activity") {
|
|
27
|
+
previous.partIndices.push(index);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (index >= answerStart && lastActivity) {
|
|
31
|
+
lastActivity.partIndices.push(index);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
lastActivity = { kind: "activity", key: `activity-${index}`, partIndices: [index] };
|
|
35
|
+
segments.push(lastActivity);
|
|
36
|
+
}
|
|
37
|
+
return segments;
|
|
38
|
+
}
|
|
39
|
+
function scopeGroupingToSegment(grouping, partIndices) {
|
|
40
|
+
const indices = new Set(partIndices);
|
|
41
|
+
return (parts) => grouping(parts).map((group) => ({
|
|
42
|
+
...group,
|
|
43
|
+
indices: group.indices.filter((index) => {
|
|
44
|
+
var _a;
|
|
45
|
+
return indices.has(index) && ((_a = parts[index]) == null ? void 0 : _a.type) !== "text";
|
|
46
|
+
})
|
|
47
|
+
})).filter((group) => group.indices.length > 0);
|
|
48
|
+
}
|
|
49
|
+
function summarizeSegment(steps) {
|
|
50
|
+
const toolSteps = steps.filter((step) => step.kind === "tool");
|
|
51
|
+
const running = steps.filter((step) => step.state === "running");
|
|
52
|
+
const waiting = steps.find((step) => step.state === "waiting");
|
|
53
|
+
if (waiting) {
|
|
54
|
+
return { step: waiting, label: waiting.verb, meta: void 0, phase: "waiting" };
|
|
55
|
+
}
|
|
56
|
+
if (running.length > 0) {
|
|
57
|
+
const current = running.at(-1);
|
|
58
|
+
const doneTools = toolSteps.filter((step) => step.state !== "running").length;
|
|
59
|
+
return {
|
|
60
|
+
step: current,
|
|
61
|
+
label: (current == null ? void 0 : current.verb) ?? "Working",
|
|
62
|
+
meta: running.length > 1 ? `${running.length} in progress` : doneTools > 0 ? `${doneTools} done` : void 0,
|
|
63
|
+
phase: "running"
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const primary = toolSteps.at(-1) ?? steps.at(-1);
|
|
67
|
+
const earlierFailures = toolSteps.filter((step) => step !== primary && step.state === "error").length;
|
|
68
|
+
const meta = [
|
|
69
|
+
toolSteps.length > 1 ? `+${toolSteps.length - 1} more` : null,
|
|
70
|
+
earlierFailures > 0 ? `${earlierFailures} failed` : null
|
|
71
|
+
].filter(Boolean).join(" · ");
|
|
72
|
+
return {
|
|
73
|
+
step: primary,
|
|
74
|
+
label: (primary == null ? void 0 : primary.verb) ?? "Thought through the next step",
|
|
75
|
+
meta: meta || void 0,
|
|
76
|
+
phase: (primary == null ? void 0 : primary.state) === "error" ? "error" : "complete"
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.scopeGroupingToSegment = scopeGroupingToSegment;
|
|
80
|
+
exports.splitTurnSegments = splitTurnSegments;
|
|
81
|
+
exports.summarizeSegment = summarizeSegment;
|
|
82
|
+
//# sourceMappingURL=turn-segments.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-segments.cjs","sources":["../../../src/chat/super-grouping/turn-segments.ts"],"sourcesContent":["/**\n * The grouped transcript's layout of one assistant turn: the agent's own\n * sentences in the order it wrote them, with the work between them (tool calls\n * and reasoning) folded into collapsed activity segments. Pure functions over\n * assistant-ui message parts; `SuperGroupingTranscript` renders them.\n *\n * Text is never folded away. The text after the final tool call is the turn's\n * answer and renders below the transcript (`SuperGroupingFinalText`, the same\n * read `getFinalText` makes), so it is left out of the segments here: every\n * text part renders exactly once, either as prose here or as the answer there.\n */\nimport type { ActivityItem, ActivityPhase } from './activity-timeline';\nimport type { GroupingFunction } from './grouping-function';\nimport type { TimelineStep } from './timeline-step';\n\n/** The part shape segmentation needs; assistant-ui's `ThreadAssistantMessagePart` satisfies it. */\nexport type SegmentablePart = { readonly type: string; readonly text?: string };\n\nexport type TurnSegment =\n | {\n kind: 'prose';\n /** Stable across streaming: parts only ever append. */\n key: string;\n partIndex: number;\n text: string;\n }\n | {\n kind: 'activity';\n key: string;\n /** The tool-call, reasoning and other non-text parts this segment folds, in order. */\n partIndices: number[];\n };\n\nfunction lastToolCallIndex(content: readonly SegmentablePart[]): number {\n for (let index = content.length - 1; index >= 0; index -= 1) {\n if (content[index]?.type === 'tool-call') return index;\n }\n return -1;\n}\n\n/**\n * Split a turn into prose and activity segments.\n *\n * - Before the last tool call, each non-blank text part is a prose segment and\n * every run of other parts between them is one activity segment.\n * - After the last tool call, text is the answer (left to the final-text\n * renderer), and any other part — a thought streaming before the next\n * sentence — joins the last activity segment, so it reads as part of the\n * work that led to the answer.\n */\nexport function splitTurnSegments(content: readonly SegmentablePart[] | undefined): TurnSegment[] {\n if (!content?.length) return [];\n const answerStart = lastToolCallIndex(content) + 1;\n const segments: TurnSegment[] = [];\n let lastActivity: Extract<TurnSegment, { kind: 'activity' }> | null = null;\n\n for (let index = 0; index < content.length; index += 1) {\n const part = content[index];\n if (!part) continue;\n if (part.type === 'text') {\n if (index >= answerStart) continue;\n const text = typeof part.text === 'string' ? part.text : '';\n if (text.trim() === '') continue;\n segments.push({ kind: 'prose', key: `prose-${index}`, partIndex: index, text });\n continue;\n }\n const previous = segments.at(-1);\n if (index < answerStart && previous?.kind === 'activity') {\n previous.partIndices.push(index);\n continue;\n }\n if (index >= answerStart && lastActivity) {\n lastActivity.partIndices.push(index);\n continue;\n }\n lastActivity = { kind: 'activity', key: `activity-${index}`, partIndices: [index] };\n segments.push(lastActivity);\n }\n return segments;\n}\n\n/** The timeline items whose parts a segment folds, in stream order. */\nexport function segmentItems(\n segment: Extract<TurnSegment, { kind: 'activity' }>,\n timeline: readonly ActivityItem[],\n): ActivityItem[] {\n const indices = new Set(segment.partIndices);\n return timeline.filter((item) => item.partIndex !== undefined && indices.has(item.partIndex));\n}\n\n/**\n * The details-panel grouping for one segment: the host's grouping restricted\n * to the segment's parts, with every text part dropped (prose renders in the\n * transcript, the answer below it) and any group left empty removed.\n */\nexport function scopeGroupingToSegment(\n grouping: GroupingFunction,\n partIndices: readonly number[],\n): GroupingFunction {\n const indices = new Set(partIndices);\n return (parts) =>\n grouping(parts)\n .map((group) => ({\n ...group,\n indices: group.indices.filter((index) => indices.has(index) && parts[index]?.type !== 'text'),\n }))\n .filter((group) => group.indices.length > 0);\n}\n\nexport interface SegmentSummary {\n /** The collapsed row's line: the step in progress, else the segment's last tool step. */\n step: TimelineStep | undefined;\n /** \"Waiting for your input\" when a step waits on the person. */\n label: string;\n /** \"+2 more\" / \"2 in progress\" beside the line. */\n meta: string | undefined;\n phase: ActivityPhase;\n}\n\n/**\n * What a collapsed activity segment says: the step in progress while one runs\n * (\"Running git fetch\", with \"2 done\" or \"2 in progress\" for parallel calls), the step\n * waiting on the person, else the last tool step it took (\"Ran git log -1\",\n * \"+2 more\", and how many earlier steps failed). The row reads as failed only\n * when that last step did. A segment that only thought reads as its thought.\n */\nexport function summarizeSegment(steps: readonly TimelineStep[]): SegmentSummary {\n const toolSteps = steps.filter((step) => step.kind === 'tool');\n const running = steps.filter((step) => step.state === 'running');\n const waiting = steps.find((step) => step.state === 'waiting');\n\n if (waiting) {\n return { step: waiting, label: waiting.verb, meta: undefined, phase: 'waiting' };\n }\n if (running.length > 0) {\n const current = running.at(-1);\n const doneTools = toolSteps.filter((step) => step.state !== 'running').length;\n return {\n step: current,\n label: current?.verb ?? 'Working',\n meta:\n running.length > 1\n ? `${running.length} in progress`\n : doneTools > 0\n ? `${doneTools} done`\n : undefined,\n phase: 'running',\n };\n }\n const primary = toolSteps.at(-1) ?? steps.at(-1);\n const earlierFailures = toolSteps.filter((step) => step !== primary && step.state === 'error').length;\n const meta = [\n toolSteps.length > 1 ? `+${toolSteps.length - 1} more` : null,\n earlierFailures > 0 ? `${earlierFailures} failed` : null,\n ]\n .filter(Boolean)\n .join(' · ');\n return {\n step: primary,\n label: primary?.verb ?? 'Thought through the next step',\n meta: meta || undefined,\n phase: primary?.state === 'error' ? 'error' : 'complete',\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The grouped transcript's layout of one assistant turn: the agent's own
|
|
3
|
+
* sentences in the order it wrote them, with the work between them (tool calls
|
|
4
|
+
* and reasoning) folded into collapsed activity segments. Pure functions over
|
|
5
|
+
* assistant-ui message parts; `SuperGroupingTranscript` renders them.
|
|
6
|
+
*
|
|
7
|
+
* Text is never folded away. The text after the final tool call is the turn's
|
|
8
|
+
* answer and renders below the transcript (`SuperGroupingFinalText`, the same
|
|
9
|
+
* read `getFinalText` makes), so it is left out of the segments here: every
|
|
10
|
+
* text part renders exactly once, either as prose here or as the answer there.
|
|
11
|
+
*/
|
|
12
|
+
import type { ActivityItem, ActivityPhase } from './activity-timeline';
|
|
13
|
+
import type { GroupingFunction } from './grouping-function';
|
|
14
|
+
import type { TimelineStep } from './timeline-step';
|
|
15
|
+
/** The part shape segmentation needs; assistant-ui's `ThreadAssistantMessagePart` satisfies it. */
|
|
16
|
+
export type SegmentablePart = {
|
|
17
|
+
readonly type: string;
|
|
18
|
+
readonly text?: string;
|
|
19
|
+
};
|
|
20
|
+
export type TurnSegment = {
|
|
21
|
+
kind: 'prose';
|
|
22
|
+
/** Stable across streaming: parts only ever append. */
|
|
23
|
+
key: string;
|
|
24
|
+
partIndex: number;
|
|
25
|
+
text: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'activity';
|
|
28
|
+
key: string;
|
|
29
|
+
/** The tool-call, reasoning and other non-text parts this segment folds, in order. */
|
|
30
|
+
partIndices: number[];
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Split a turn into prose and activity segments.
|
|
34
|
+
*
|
|
35
|
+
* - Before the last tool call, each non-blank text part is a prose segment and
|
|
36
|
+
* every run of other parts between them is one activity segment.
|
|
37
|
+
* - After the last tool call, text is the answer (left to the final-text
|
|
38
|
+
* renderer), and any other part — a thought streaming before the next
|
|
39
|
+
* sentence — joins the last activity segment, so it reads as part of the
|
|
40
|
+
* work that led to the answer.
|
|
41
|
+
*/
|
|
42
|
+
export declare function splitTurnSegments(content: readonly SegmentablePart[] | undefined): TurnSegment[];
|
|
43
|
+
/** The timeline items whose parts a segment folds, in stream order. */
|
|
44
|
+
export declare function segmentItems(segment: Extract<TurnSegment, {
|
|
45
|
+
kind: 'activity';
|
|
46
|
+
}>, timeline: readonly ActivityItem[]): ActivityItem[];
|
|
47
|
+
/**
|
|
48
|
+
* The details-panel grouping for one segment: the host's grouping restricted
|
|
49
|
+
* to the segment's parts, with every text part dropped (prose renders in the
|
|
50
|
+
* transcript, the answer below it) and any group left empty removed.
|
|
51
|
+
*/
|
|
52
|
+
export declare function scopeGroupingToSegment(grouping: GroupingFunction, partIndices: readonly number[]): GroupingFunction;
|
|
53
|
+
export interface SegmentSummary {
|
|
54
|
+
/** The collapsed row's line: the step in progress, else the segment's last tool step. */
|
|
55
|
+
step: TimelineStep | undefined;
|
|
56
|
+
/** "Waiting for your input" when a step waits on the person. */
|
|
57
|
+
label: string;
|
|
58
|
+
/** "+2 more" / "2 in progress" beside the line. */
|
|
59
|
+
meta: string | undefined;
|
|
60
|
+
phase: ActivityPhase;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* What a collapsed activity segment says: the step in progress while one runs
|
|
64
|
+
* ("Running git fetch", with "2 done" or "2 in progress" for parallel calls), the step
|
|
65
|
+
* waiting on the person, else the last tool step it took ("Ran git log -1",
|
|
66
|
+
* "+2 more", and how many earlier steps failed). The row reads as failed only
|
|
67
|
+
* when that last step did. A segment that only thought reads as its thought.
|
|
68
|
+
*/
|
|
69
|
+
export declare function summarizeSegment(steps: readonly TimelineStep[]): SegmentSummary;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
function lastToolCallIndex(content) {
|
|
2
|
+
var _a;
|
|
3
|
+
for (let index = content.length - 1; index >= 0; index -= 1) {
|
|
4
|
+
if (((_a = content[index]) == null ? void 0 : _a.type) === "tool-call") return index;
|
|
5
|
+
}
|
|
6
|
+
return -1;
|
|
7
|
+
}
|
|
8
|
+
function splitTurnSegments(content) {
|
|
9
|
+
if (!(content == null ? void 0 : content.length)) return [];
|
|
10
|
+
const answerStart = lastToolCallIndex(content) + 1;
|
|
11
|
+
const segments = [];
|
|
12
|
+
let lastActivity = null;
|
|
13
|
+
for (let index = 0; index < content.length; index += 1) {
|
|
14
|
+
const part = content[index];
|
|
15
|
+
if (!part) continue;
|
|
16
|
+
if (part.type === "text") {
|
|
17
|
+
if (index >= answerStart) continue;
|
|
18
|
+
const text = typeof part.text === "string" ? part.text : "";
|
|
19
|
+
if (text.trim() === "") continue;
|
|
20
|
+
segments.push({ kind: "prose", key: `prose-${index}`, partIndex: index, text });
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const previous = segments.at(-1);
|
|
24
|
+
if (index < answerStart && (previous == null ? void 0 : previous.kind) === "activity") {
|
|
25
|
+
previous.partIndices.push(index);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (index >= answerStart && lastActivity) {
|
|
29
|
+
lastActivity.partIndices.push(index);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
lastActivity = { kind: "activity", key: `activity-${index}`, partIndices: [index] };
|
|
33
|
+
segments.push(lastActivity);
|
|
34
|
+
}
|
|
35
|
+
return segments;
|
|
36
|
+
}
|
|
37
|
+
function scopeGroupingToSegment(grouping, partIndices) {
|
|
38
|
+
const indices = new Set(partIndices);
|
|
39
|
+
return (parts) => grouping(parts).map((group) => ({
|
|
40
|
+
...group,
|
|
41
|
+
indices: group.indices.filter((index) => {
|
|
42
|
+
var _a;
|
|
43
|
+
return indices.has(index) && ((_a = parts[index]) == null ? void 0 : _a.type) !== "text";
|
|
44
|
+
})
|
|
45
|
+
})).filter((group) => group.indices.length > 0);
|
|
46
|
+
}
|
|
47
|
+
function summarizeSegment(steps) {
|
|
48
|
+
const toolSteps = steps.filter((step) => step.kind === "tool");
|
|
49
|
+
const running = steps.filter((step) => step.state === "running");
|
|
50
|
+
const waiting = steps.find((step) => step.state === "waiting");
|
|
51
|
+
if (waiting) {
|
|
52
|
+
return { step: waiting, label: waiting.verb, meta: void 0, phase: "waiting" };
|
|
53
|
+
}
|
|
54
|
+
if (running.length > 0) {
|
|
55
|
+
const current = running.at(-1);
|
|
56
|
+
const doneTools = toolSteps.filter((step) => step.state !== "running").length;
|
|
57
|
+
return {
|
|
58
|
+
step: current,
|
|
59
|
+
label: (current == null ? void 0 : current.verb) ?? "Working",
|
|
60
|
+
meta: running.length > 1 ? `${running.length} in progress` : doneTools > 0 ? `${doneTools} done` : void 0,
|
|
61
|
+
phase: "running"
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const primary = toolSteps.at(-1) ?? steps.at(-1);
|
|
65
|
+
const earlierFailures = toolSteps.filter((step) => step !== primary && step.state === "error").length;
|
|
66
|
+
const meta = [
|
|
67
|
+
toolSteps.length > 1 ? `+${toolSteps.length - 1} more` : null,
|
|
68
|
+
earlierFailures > 0 ? `${earlierFailures} failed` : null
|
|
69
|
+
].filter(Boolean).join(" · ");
|
|
70
|
+
return {
|
|
71
|
+
step: primary,
|
|
72
|
+
label: (primary == null ? void 0 : primary.verb) ?? "Thought through the next step",
|
|
73
|
+
meta: meta || void 0,
|
|
74
|
+
phase: (primary == null ? void 0 : primary.state) === "error" ? "error" : "complete"
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export {
|
|
78
|
+
scopeGroupingToSegment,
|
|
79
|
+
splitTurnSegments,
|
|
80
|
+
summarizeSegment
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=turn-segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-segments.js","sources":["../../../src/chat/super-grouping/turn-segments.ts"],"sourcesContent":["/**\n * The grouped transcript's layout of one assistant turn: the agent's own\n * sentences in the order it wrote them, with the work between them (tool calls\n * and reasoning) folded into collapsed activity segments. Pure functions over\n * assistant-ui message parts; `SuperGroupingTranscript` renders them.\n *\n * Text is never folded away. The text after the final tool call is the turn's\n * answer and renders below the transcript (`SuperGroupingFinalText`, the same\n * read `getFinalText` makes), so it is left out of the segments here: every\n * text part renders exactly once, either as prose here or as the answer there.\n */\nimport type { ActivityItem, ActivityPhase } from './activity-timeline';\nimport type { GroupingFunction } from './grouping-function';\nimport type { TimelineStep } from './timeline-step';\n\n/** The part shape segmentation needs; assistant-ui's `ThreadAssistantMessagePart` satisfies it. */\nexport type SegmentablePart = { readonly type: string; readonly text?: string };\n\nexport type TurnSegment =\n | {\n kind: 'prose';\n /** Stable across streaming: parts only ever append. */\n key: string;\n partIndex: number;\n text: string;\n }\n | {\n kind: 'activity';\n key: string;\n /** The tool-call, reasoning and other non-text parts this segment folds, in order. */\n partIndices: number[];\n };\n\nfunction lastToolCallIndex(content: readonly SegmentablePart[]): number {\n for (let index = content.length - 1; index >= 0; index -= 1) {\n if (content[index]?.type === 'tool-call') return index;\n }\n return -1;\n}\n\n/**\n * Split a turn into prose and activity segments.\n *\n * - Before the last tool call, each non-blank text part is a prose segment and\n * every run of other parts between them is one activity segment.\n * - After the last tool call, text is the answer (left to the final-text\n * renderer), and any other part — a thought streaming before the next\n * sentence — joins the last activity segment, so it reads as part of the\n * work that led to the answer.\n */\nexport function splitTurnSegments(content: readonly SegmentablePart[] | undefined): TurnSegment[] {\n if (!content?.length) return [];\n const answerStart = lastToolCallIndex(content) + 1;\n const segments: TurnSegment[] = [];\n let lastActivity: Extract<TurnSegment, { kind: 'activity' }> | null = null;\n\n for (let index = 0; index < content.length; index += 1) {\n const part = content[index];\n if (!part) continue;\n if (part.type === 'text') {\n if (index >= answerStart) continue;\n const text = typeof part.text === 'string' ? part.text : '';\n if (text.trim() === '') continue;\n segments.push({ kind: 'prose', key: `prose-${index}`, partIndex: index, text });\n continue;\n }\n const previous = segments.at(-1);\n if (index < answerStart && previous?.kind === 'activity') {\n previous.partIndices.push(index);\n continue;\n }\n if (index >= answerStart && lastActivity) {\n lastActivity.partIndices.push(index);\n continue;\n }\n lastActivity = { kind: 'activity', key: `activity-${index}`, partIndices: [index] };\n segments.push(lastActivity);\n }\n return segments;\n}\n\n/** The timeline items whose parts a segment folds, in stream order. */\nexport function segmentItems(\n segment: Extract<TurnSegment, { kind: 'activity' }>,\n timeline: readonly ActivityItem[],\n): ActivityItem[] {\n const indices = new Set(segment.partIndices);\n return timeline.filter((item) => item.partIndex !== undefined && indices.has(item.partIndex));\n}\n\n/**\n * The details-panel grouping for one segment: the host's grouping restricted\n * to the segment's parts, with every text part dropped (prose renders in the\n * transcript, the answer below it) and any group left empty removed.\n */\nexport function scopeGroupingToSegment(\n grouping: GroupingFunction,\n partIndices: readonly number[],\n): GroupingFunction {\n const indices = new Set(partIndices);\n return (parts) =>\n grouping(parts)\n .map((group) => ({\n ...group,\n indices: group.indices.filter((index) => indices.has(index) && parts[index]?.type !== 'text'),\n }))\n .filter((group) => group.indices.length > 0);\n}\n\nexport interface SegmentSummary {\n /** The collapsed row's line: the step in progress, else the segment's last tool step. */\n step: TimelineStep | undefined;\n /** \"Waiting for your input\" when a step waits on the person. */\n label: string;\n /** \"+2 more\" / \"2 in progress\" beside the line. */\n meta: string | undefined;\n phase: ActivityPhase;\n}\n\n/**\n * What a collapsed activity segment says: the step in progress while one runs\n * (\"Running git fetch\", with \"2 done\" or \"2 in progress\" for parallel calls), the step\n * waiting on the person, else the last tool step it took (\"Ran git log -1\",\n * \"+2 more\", and how many earlier steps failed). The row reads as failed only\n * when that last step did. A segment that only thought reads as its thought.\n */\nexport function summarizeSegment(steps: readonly TimelineStep[]): SegmentSummary {\n const toolSteps = steps.filter((step) => step.kind === 'tool');\n const running = steps.filter((step) => step.state === 'running');\n const waiting = steps.find((step) => step.state === 'waiting');\n\n if (waiting) {\n return { step: waiting, label: waiting.verb, meta: undefined, phase: 'waiting' };\n }\n if (running.length > 0) {\n const current = running.at(-1);\n const doneTools = toolSteps.filter((step) => step.state !== 'running').length;\n return {\n step: current,\n label: current?.verb ?? 'Working',\n meta:\n running.length > 1\n ? `${running.length} in progress`\n : doneTools > 0\n ? `${doneTools} done`\n : undefined,\n phase: 'running',\n };\n }\n const primary = toolSteps.at(-1) ?? steps.at(-1);\n const earlierFailures = toolSteps.filter((step) => step !== primary && step.state === 'error').length;\n const meta = [\n toolSteps.length > 1 ? `+${toolSteps.length - 1} more` : null,\n earlierFailures > 0 ? `${earlierFailures} failed` : null,\n ]\n .filter(Boolean)\n .join(' · ');\n return {\n step: primary,\n label: primary?.verb ?? 'Thought through the next step',\n meta: meta || undefined,\n phase: primary?.state === 'error' ? 'error' : 'complete',\n };\n}\n"],"names":[],"mappings":"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"}
|