@athenaintel/react 0.28.1 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +479 -10
- package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/agent-runtime/src/athena-asset-drag.cjs +44 -0
- package/dist/agent-runtime/src/athena-asset-drag.cjs.map +1 -0
- package/dist/agent-runtime/src/athena-asset-drag.js +44 -0
- package/dist/agent-runtime/src/athena-asset-drag.js.map +1 -0
- package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/composer-markdown.js +124 -0
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
- package/dist/agent-runtime/src/config-mutations.cjs +59 -0
- package/dist/agent-runtime/src/config-mutations.cjs.map +1 -0
- package/dist/agent-runtime/src/config-mutations.js +59 -0
- package/dist/agent-runtime/src/config-mutations.js.map +1 -0
- package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
- package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
- package/dist/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
- package/dist/agent-runtime/src/errors.js.map +1 -0
- package/dist/agent-runtime/src/execute-output.cjs +41 -0
- package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
- package/dist/agent-runtime/src/execute-output.js +41 -0
- package/dist/agent-runtime/src/execute-output.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +16 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +16 -2
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
- package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
- package/dist/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/agent-runtime/src/message-author.js.map +1 -0
- package/dist/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/agent-runtime/src/message-window.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
- package/dist/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
- package/dist/agent-runtime/src/messages.js.map +1 -0
- package/dist/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/agent-runtime/src/model-context.js.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/agent-runtime/src/protocol.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
- package/dist/agent-runtime/src/queue.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +71 -13
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +73 -15
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
- package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
- package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-transport.js +43 -0
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
- package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
- package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +304 -9
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +304 -9
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/agent-runtime/src/tool-names.cjs +5 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-names.js +5 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs +129 -0
- package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js +129 -0
- package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
- package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
- package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
- package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
- package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
- package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +13 -2
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +10 -0
- package/dist/assets/AthenaAssetEmbed.js +14 -3
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/AthenaLayout.cjs +97 -31
- package/dist/assets/AthenaLayout.cjs.map +1 -1
- package/dist/assets/AthenaLayout.d.ts +13 -0
- package/dist/assets/AthenaLayout.js +98 -32
- package/dist/assets/AthenaLayout.js.map +1 -1
- package/dist/assets/asset-embed-messages.cjs +6 -0
- package/dist/assets/asset-embed-messages.cjs.map +1 -1
- package/dist/assets/asset-embed-messages.d.ts +13 -0
- package/dist/assets/asset-embed-messages.js +6 -0
- package/dist/assets/asset-embed-messages.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +68 -32
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +47 -1
- package/dist/assets/asset-panel-store.js +68 -32
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/assets/use-asset-embed.cjs +29 -8
- package/dist/assets/use-asset-embed.cjs.map +1 -1
- package/dist/assets/use-asset-embed.d.ts +7 -0
- package/dist/assets/use-asset-embed.js +29 -8
- package/dist/assets/use-asset-embed.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +152 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -0
- package/dist/catalog/chat-pickers.d.ts +22 -0
- package/dist/catalog/chat-pickers.js +152 -0
- package/dist/catalog/chat-pickers.js.map +1 -0
- package/dist/catalog/runtime-catalog.cjs +181 -0
- package/dist/catalog/runtime-catalog.cjs.map +1 -0
- package/dist/catalog/runtime-catalog.d.ts +100 -0
- package/dist/catalog/runtime-catalog.js +181 -0
- package/dist/catalog/runtime-catalog.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +122 -67
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +21 -4
- package/dist/chat/AthenaChat.js +124 -69
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +38 -37
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +2 -0
- package/dist/chat/StatewireApprovalCard.js +39 -38
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireClientToolBridge.cjs +2 -2
- package/dist/chat/StatewireClientToolBridge.js +2 -2
- package/dist/chat/StatewireQueuedMessages.cjs +15 -12
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
- package/dist/chat/StatewireQueuedMessages.js +15 -12
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
- package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
- package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
- package/dist/chat/StatewireRunRefusalNotice.js +48 -0
- package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
- package/dist/chat/WaitingOnYouBanner.cjs +2 -2
- package/dist/chat/WaitingOnYouBanner.js +2 -2
- package/dist/chat/athena-citation-links.cjs +19 -15
- package/dist/chat/athena-citation-links.cjs.map +1 -1
- package/dist/chat/athena-citation-links.js +19 -15
- package/dist/chat/athena-citation-links.js.map +1 -1
- package/dist/chat/run-activity.cjs +9 -1
- package/dist/chat/run-activity.cjs.map +1 -1
- package/dist/chat/run-activity.d.ts +6 -0
- package/dist/chat/run-activity.js +10 -2
- package/dist/chat/run-activity.js.map +1 -1
- package/dist/chat/statewire-banners.cjs +30 -1
- package/dist/chat/statewire-banners.cjs.map +1 -1
- package/dist/chat/statewire-banners.d.ts +20 -1
- package/dist/chat/statewire-banners.js +32 -3
- package/dist/chat/statewire-banners.js.map +1 -1
- package/dist/chat/statewire-client-tools.cjs +1 -1
- package/dist/chat/statewire-client-tools.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +38 -16
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +21 -4
- package/dist/chat/super-grouping/SuperGroupingCard.js +39 -17
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +377 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js +377 -0
- package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
- package/dist/chat/super-grouping/ToolTimeline.js +13 -2
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.cjs +69 -29
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +60 -9
- package/dist/chat/super-grouping/activity-timeline.js +70 -30
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/index.cjs +14 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -1
- package/dist/chat/super-grouping/index.d.ts +7 -2
- package/dist/chat/super-grouping/index.js +16 -2
- package/dist/chat/super-grouping/index.js.map +1 -1
- package/dist/chat/super-grouping/timeline-step.cjs +14 -5
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
- package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
- package/dist/chat/super-grouping/timeline-step.js +15 -6
- package/dist/chat/super-grouping/timeline-step.js.map +1 -1
- package/dist/chat/super-grouping/toolkit-map.cjs +1 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -1
- package/dist/chat/super-grouping/toolkit-map.js +1 -0
- package/dist/chat/super-grouping/toolkit-map.js.map +1 -1
- package/dist/chat/super-grouping/turn-segments.cjs +82 -0
- package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
- package/dist/chat/super-grouping/turn-segments.js +82 -0
- package/dist/chat/super-grouping/turn-segments.js.map +1 -0
- package/dist/chat/super-grouping/turn-timing.cjs +110 -0
- package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
- package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
- package/dist/chat/super-grouping/turn-timing.js +110 -0
- package/dist/chat/super-grouping/turn-timing.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +1 -1
- package/dist/chat/tiptap-text.js +1 -1
- package/dist/chat/use-athena-run-live.cjs +1 -1
- package/dist/chat/use-athena-run-live.js +1 -1
- package/dist/chat/use-statewire-approval-request.cjs +73 -4
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
- package/dist/chat/use-statewire-approval-request.js +74 -5
- package/dist/chat/use-statewire-approval-request.js.map +1 -1
- package/dist/chat-ui/composer/composer-message.cjs +284 -0
- package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-message.d.ts +152 -0
- package/dist/chat-ui/composer/composer-message.js +284 -0
- package/dist/chat-ui/composer/composer-message.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +97 -15
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
- package/dist/chat-ui/composer/tiptap-composer.js +97 -15
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +4 -1
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +5 -2
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +31 -3
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.d.ts +2 -5
- package/dist/chat-ui/mentions/mention-chip.js +33 -5
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +9 -3
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +9 -3
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/use-account-workspace-id.cjs +61 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +3 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.js +61 -0
- package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -0
- package/dist/chat-ui/mentions/use-member-avatar.cjs +75 -0
- package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-member-avatar.d.ts +2 -0
- package/dist/chat-ui/mentions/use-member-avatar.js +75 -0
- package/dist/chat-ui/mentions/use-member-avatar.js.map +1 -0
- package/dist/chat-ui/messages/message-components.cjs +30 -10
- package/dist/chat-ui/messages/message-components.cjs.map +1 -1
- package/dist/chat-ui/messages/message-components.d.ts +21 -1
- package/dist/chat-ui/messages/message-components.js +30 -10
- package/dist/chat-ui/messages/message-components.js.map +1 -1
- package/dist/chat-ui/messages/runtime-message.cjs +1 -1
- package/dist/chat-ui/messages/runtime-message.js +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
- package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
- package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
- package/dist/chat-ui/messages/user-edit-composer.js +1 -1
- package/dist/chat-ui/messages/wake-marker.cjs +39 -4
- package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
- package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
- package/dist/chat-ui/messages/wake-marker.js +40 -5
- package/dist/chat-ui/messages/wake-marker.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
- package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
- package/dist/chat-ui/statewire.cjs +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/statewire.js +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
- package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
- package/dist/collab/client.cjs +282 -16
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +127 -2
- package/dist/collab/client.js +285 -20
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.cjs +2 -0
- package/dist/collab/index.cjs.map +1 -1
- package/dist/collab/index.d.ts +1 -1
- package/dist/collab/index.js +3 -1
- package/dist/composer/AttachmentContext.cjs +38 -12
- package/dist/composer/AttachmentContext.cjs.map +1 -1
- package/dist/composer/AttachmentContext.d.ts +22 -1
- package/dist/composer/AttachmentContext.js +40 -14
- package/dist/composer/AttachmentContext.js.map +1 -1
- package/dist/composer/QuoteContext.cjs +80 -28
- package/dist/composer/QuoteContext.cjs.map +1 -1
- package/dist/composer/QuoteContext.d.ts +35 -6
- package/dist/composer/QuoteContext.js +82 -30
- package/dist/composer/QuoteContext.js.map +1 -1
- package/dist/composer/build-composed-message.cjs +27 -0
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +21 -0
- package/dist/composer/build-composed-message.js +28 -1
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +13 -1
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +12 -0
- package/dist/composer/composer-handoff.js +15 -3
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/index.d.ts +6 -3
- package/dist/composer/useReadComposerDraft.cjs +16 -0
- package/dist/composer/useReadComposerDraft.cjs.map +1 -0
- package/dist/composer/useReadComposerDraft.d.ts +6 -0
- package/dist/composer/useReadComposerDraft.js +16 -0
- package/dist/composer/useReadComposerDraft.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +3 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +6 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +6 -0
- package/dist/diagnostics/errors.js +6 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +163 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +55 -12
- package/dist/index.js +170 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/owner-document.cjs +32 -0
- package/dist/lib/owner-document.cjs.map +1 -0
- package/dist/lib/owner-document.d.ts +17 -0
- package/dist/lib/owner-document.js +32 -0
- package/dist/lib/owner-document.js.map +1 -0
- package/dist/lib/portal-surface.cjs +55 -0
- package/dist/lib/portal-surface.cjs.map +1 -0
- package/dist/lib/portal-surface.d.ts +37 -0
- package/dist/lib/portal-surface.js +55 -0
- package/dist/lib/portal-surface.js.map +1 -0
- package/dist/lib/use-athena-rest-query.cjs +34 -0
- package/dist/lib/use-athena-rest-query.cjs.map +1 -0
- package/dist/lib/use-athena-rest-query.d.ts +31 -0
- package/dist/lib/use-athena-rest-query.js +34 -0
- package/dist/lib/use-athena-rest-query.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +70 -10
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +27 -2
- package/dist/provider/AthenaProvider.js +74 -14
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/provider/citation-links.d.ts +10 -2
- package/dist/{packages/react → react}/package.json.cjs +1 -1
- package/dist/{packages/react → react}/package.json.js +1 -1
- package/dist/runtime/StatewireModelLaneSync.cjs +96 -0
- package/dist/runtime/StatewireModelLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewireModelLaneSync.d.ts +45 -0
- package/dist/runtime/StatewireModelLaneSync.js +96 -0
- package/dist/runtime/StatewireModelLaneSync.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +20 -5
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.d.ts +11 -0
- package/dist/runtime/statewire-lifecycle.js +20 -5
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/statewire-model-lane.cjs +28 -0
- package/dist/runtime/statewire-model-lane.cjs.map +1 -0
- package/dist/runtime/statewire-model-lane.d.ts +64 -0
- package/dist/runtime/statewire-model-lane.js +28 -0
- package/dist/runtime/statewire-model-lane.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +16 -2
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +10 -0
- package/dist/runtime/statewire-run-config.js +16 -2
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-server-lane-context.cjs +24 -0
- package/dist/runtime/statewire-server-lane-context.cjs.map +1 -0
- package/dist/runtime/statewire-server-lane-context.d.ts +30 -0
- package/dist/runtime/statewire-server-lane-context.js +24 -0
- package/dist/runtime/statewire-server-lane-context.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +47 -23
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +8 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +48 -24
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaRepoSearch.cjs +5 -13
- package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
- package/dist/search/useAthenaRepoSearch.d.ts +3 -3
- package/dist/search/useAthenaRepoSearch.js +6 -14
- package/dist/search/useAthenaRepoSearch.js.map +1 -1
- package/dist/sheet-range/a1.cjs +162 -0
- package/dist/sheet-range/a1.cjs.map +1 -0
- package/dist/sheet-range/a1.d.ts +91 -0
- package/dist/sheet-range/a1.js +162 -0
- package/dist/sheet-range/a1.js.map +1 -0
- package/dist/sheet-range/index.cjs +22 -0
- package/dist/sheet-range/index.cjs.map +1 -0
- package/dist/sheet-range/index.d.ts +12 -0
- package/dist/sheet-range/index.js +22 -0
- package/dist/sheet-range/index.js.map +1 -0
- package/dist/sheet-range/range-preview-table.cjs +75 -0
- package/dist/sheet-range/range-preview-table.cjs.map +1 -0
- package/dist/sheet-range/range-preview-table.d.ts +20 -0
- package/dist/sheet-range/range-preview-table.js +75 -0
- package/dist/sheet-range/range-preview-table.js.map +1 -0
- package/dist/sheet-range/range-preview.cjs +116 -0
- package/dist/sheet-range/range-preview.cjs.map +1 -0
- package/dist/sheet-range/range-preview.d.ts +67 -0
- package/dist/sheet-range/range-preview.js +116 -0
- package/dist/sheet-range/range-preview.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/threads/Inbox.cjs +289 -0
- package/dist/threads/Inbox.cjs.map +1 -0
- package/dist/threads/Inbox.d.ts +46 -0
- package/dist/threads/Inbox.js +289 -0
- package/dist/threads/Inbox.js.map +1 -0
- package/dist/threads/SessionList.cjs +51 -126
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.d.ts +26 -1
- package/dist/threads/SessionList.js +45 -120
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +753 -0
- package/dist/threads/SessionsPage.cjs.map +1 -0
- package/dist/threads/SessionsPage.d.ts +35 -0
- package/dist/threads/SessionsPage.js +753 -0
- package/dist/threads/SessionsPage.js.map +1 -0
- package/dist/threads/api.cjs +23 -2
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +60 -0
- package/dist/threads/api.js +23 -2
- package/dist/threads/api.js.map +1 -1
- package/dist/threads/conversation-list-fetcher.cjs +9 -2
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
- package/dist/threads/conversation-list-fetcher.d.ts +14 -1
- package/dist/threads/conversation-list-fetcher.js +9 -2
- package/dist/threads/conversation-list-fetcher.js.map +1 -1
- package/dist/threads/index.d.ts +2 -1
- package/dist/threads/pull-request-display.cjs +25 -0
- package/dist/threads/pull-request-display.cjs.map +1 -0
- package/dist/threads/pull-request-display.d.ts +15 -0
- package/dist/threads/pull-request-display.js +25 -0
- package/dist/threads/pull-request-display.js.map +1 -0
- package/dist/threads/session-list-model.cjs +16 -2
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +10 -0
- package/dist/threads/session-list-model.js +16 -2
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +152 -0
- package/dist/threads/session-row-parts.cjs.map +1 -0
- package/dist/threads/session-row-parts.d.ts +50 -0
- package/dist/threads/session-row-parts.js +152 -0
- package/dist/threads/session-row-parts.js.map +1 -0
- package/dist/threads/sessions-page-model.cjs +305 -0
- package/dist/threads/sessions-page-model.cjs.map +1 -0
- package/dist/threads/sessions-page-model.d.ts +86 -0
- package/dist/threads/sessions-page-model.js +305 -0
- package/dist/threads/sessions-page-model.js.map +1 -0
- package/dist/threads/sessions-page-storage.cjs +93 -0
- package/dist/threads/sessions-page-storage.cjs.map +1 -0
- package/dist/threads/sessions-page-storage.d.ts +23 -0
- package/dist/threads/sessions-page-storage.js +93 -0
- package/dist/threads/sessions-page-storage.js.map +1 -0
- package/dist/threads/sessions-query.cjs +235 -0
- package/dist/threads/sessions-query.cjs.map +1 -0
- package/dist/threads/sessions-query.d.ts +119 -0
- package/dist/threads/sessions-query.js +235 -0
- package/dist/threads/sessions-query.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +133 -40
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +83 -2
- package/dist/threads/statewire-thread-list.js +134 -41
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +198 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -0
- package/dist/threads/use-athena-sessions.d.ts +81 -0
- package/dist/threads/use-athena-sessions.js +198 -0
- package/dist/threads/use-athena-sessions.js.map +1 -0
- package/dist/threads/use-athena-thread-model.cjs +14 -0
- package/dist/threads/use-athena-thread-model.cjs.map +1 -0
- package/dist/threads/use-athena-thread-model.d.ts +22 -0
- package/dist/threads/use-athena-thread-model.js +14 -0
- package/dist/threads/use-athena-thread-model.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +1 -1
- package/dist/threads/use-rest-conversation-history.js +1 -1
- package/dist/threads/use-statewire-conversation-history.cjs +1 -1
- package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
- package/dist/threads/use-statewire-conversation-history.js +1 -1
- package/dist/threads/use-thread-read-state.cjs +73 -0
- package/dist/threads/use-thread-read-state.cjs.map +1 -0
- package/dist/threads/use-thread-read-state.d.ts +51 -0
- package/dist/threads/use-thread-read-state.js +73 -0
- package/dist/threads/use-thread-read-state.js.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
- package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +2 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.js +2 -0
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/file-tool-uis.cjs +18 -43
- package/dist/tools/file-tool-uis.cjs.map +1 -1
- package/dist/tools/file-tool-uis.d.ts +1 -2
- package/dist/tools/file-tool-uis.js +18 -42
- package/dist/tools/file-tool-uis.js.map +1 -1
- package/dist/tools/index.cjs +6 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +6 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/misc-tool-uis.cjs +2 -2
- package/dist/tools/misc-tool-uis.js +2 -2
- package/dist/tools/primitives.cjs +1 -1
- package/dist/tools/primitives.js +1 -1
- package/dist/tools/read-asset-tool-ui.cjs +21 -70
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
- package/dist/tools/read-asset-tool-ui.js +21 -70
- package/dist/tools/read-asset-tool-ui.js.map +1 -1
- package/dist/tools/step-text.cjs +21 -0
- package/dist/tools/step-text.cjs.map +1 -0
- package/dist/tools/step-text.d.ts +10 -0
- package/dist/tools/step-text.js +21 -0
- package/dist/tools/step-text.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +24 -5
- package/dist/tools/tool-fallback.cjs.map +1 -1
- package/dist/tools/tool-fallback.d.ts +3 -1
- package/dist/tools/tool-fallback.js +24 -5
- package/dist/tools/tool-fallback.js.map +1 -1
- package/dist/tools/tool-summary.cjs +661 -0
- package/dist/tools/tool-summary.cjs.map +1 -0
- package/dist/tools/tool-summary.d.ts +99 -0
- package/dist/tools/tool-summary.js +661 -0
- package/dist/tools/tool-summary.js.map +1 -0
- package/dist/tools/tool-uis.cjs +37 -95
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.js +37 -95
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/tools/voice-update-tool-ui.cjs +1 -1
- package/dist/tools/voice-update-tool-ui.js +1 -1
- package/dist/tools/write-todos-tool-ui.cjs +3 -2
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
- package/dist/tools/write-todos-tool-ui.d.ts +5 -0
- package/dist/tools/write-todos-tool-ui.js +5 -4
- package/dist/tools/write-todos-tool-ui.js.map +1 -1
- package/dist/ui/popover.cjs +6 -6
- package/dist/ui/popover.cjs.map +1 -1
- package/dist/ui/popover.js +6 -6
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/tooltip.cjs +16 -2
- package/dist/ui/tooltip.cjs.map +1 -1
- package/dist/ui/tooltip.d.ts +1 -1
- package/dist/ui/tooltip.js +16 -2
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/use-athena-voice-session.cjs.map +1 -1
- package/dist/voice/use-athena-voice-session.d.ts +3 -3
- package/dist/voice/use-athena-voice-session.js.map +1 -1
- package/dist/workbench/SessionWorkbench.cjs +378 -0
- package/dist/workbench/SessionWorkbench.cjs.map +1 -0
- package/dist/workbench/SessionWorkbench.d.ts +30 -0
- package/dist/workbench/SessionWorkbench.js +378 -0
- package/dist/workbench/SessionWorkbench.js.map +1 -0
- package/dist/workbench/session-workbench-context.cjs +26 -0
- package/dist/workbench/session-workbench-context.cjs.map +1 -0
- package/dist/workbench/session-workbench-context.d.ts +55 -0
- package/dist/workbench/session-workbench-context.js +26 -0
- package/dist/workbench/session-workbench-context.js.map +1 -0
- package/dist/workbench/session-workbench-model.cjs +288 -0
- package/dist/workbench/session-workbench-model.cjs.map +1 -0
- package/dist/workbench/session-workbench-model.d.ts +168 -0
- package/dist/workbench/session-workbench-model.js +288 -0
- package/dist/workbench/session-workbench-model.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +580 -0
- package/dist/workbench/session-workbench-panes.cjs.map +1 -0
- package/dist/workbench/session-workbench-panes.d.ts +16 -0
- package/dist/workbench/session-workbench-panes.js +580 -0
- package/dist/workbench/session-workbench-panes.js.map +1 -0
- package/dist/workbench/session-workspace-api.cjs +157 -0
- package/dist/workbench/session-workspace-api.cjs.map +1 -0
- package/dist/workbench/session-workspace-api.d.ts +70 -0
- package/dist/workbench/session-workspace-api.js +157 -0
- package/dist/workbench/session-workspace-api.js.map +1 -0
- package/dist/workbench/use-session-workspace.cjs +100 -0
- package/dist/workbench/use-session-workspace.cjs.map +1 -0
- package/dist/workbench/use-session-workspace.d.ts +45 -0
- package/dist/workbench/use-session-workspace.js +100 -0
- package/dist/workbench/use-session-workspace.js.map +1 -0
- package/dist/workbench/workbench-layout-context.cjs +10 -0
- package/dist/workbench/workbench-layout-context.cjs.map +1 -0
- package/dist/workbench/workbench-layout-context.d.ts +17 -0
- package/dist/workbench/workbench-layout-context.js +10 -0
- package/dist/workbench/workbench-layout-context.js.map +1 -0
- package/package.json +21 -10
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
- package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/errors.js.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
- package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
- package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/queue.js.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +0 -13
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js +0 -13
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
- package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
- package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
- /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
- /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
- /package/dist/{packages/react → react}/package.json.js.map +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
- /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const reactQuery = require("@tanstack/react-query");
|
|
4
|
+
const useAthenaRestQuery = require("../lib/use-athena-rest-query.cjs");
|
|
5
|
+
const AthenaContext = require("../provider/AthenaContext.cjs");
|
|
6
|
+
const sessionWorkspaceApi = require("./session-workspace-api.cjs");
|
|
7
|
+
const SESSION_WORKSPACE_QUERY_KEY = ["athena-sdk", "session-workspace"];
|
|
8
|
+
const COMPUTER_STATUS_REFRESH_MS = 3e4;
|
|
9
|
+
const NO_RETRY_STATUSES = /* @__PURE__ */ new Set([401, 403, 404, 405, 409]);
|
|
10
|
+
function retryTransient(failureCount, error) {
|
|
11
|
+
const status = error.status;
|
|
12
|
+
if (typeof status === "number" && NO_RETRY_STATUSES.has(status)) return false;
|
|
13
|
+
return failureCount < 2;
|
|
14
|
+
}
|
|
15
|
+
function useAthenaSessionWorkspace({
|
|
16
|
+
threadId,
|
|
17
|
+
enabled = true,
|
|
18
|
+
refetchIntervalMs = false
|
|
19
|
+
}) {
|
|
20
|
+
const config = AthenaContext.useAthenaConfig();
|
|
21
|
+
const { backendUrl, apiKey, getToken } = config;
|
|
22
|
+
const identity = useAthenaRestQuery.useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
|
|
23
|
+
const queryClient = useAthenaRestQuery.useAthenaQueryClient();
|
|
24
|
+
return reactQuery.useQuery(
|
|
25
|
+
{
|
|
26
|
+
queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],
|
|
27
|
+
// `config.token` is read at fetch time: the provider serves the latest
|
|
28
|
+
// token through a getter, so rotations reach the request.
|
|
29
|
+
queryFn: ({ signal }) => sessionWorkspaceApi.fetchSessionWorkspace({
|
|
30
|
+
backendUrl,
|
|
31
|
+
auth: { apiKey, token: config.token, getToken },
|
|
32
|
+
threadId: threadId ?? "",
|
|
33
|
+
signal
|
|
34
|
+
}),
|
|
35
|
+
enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,
|
|
36
|
+
staleTime: 15e3,
|
|
37
|
+
refetchInterval: refetchIntervalMs,
|
|
38
|
+
refetchOnWindowFocus: false,
|
|
39
|
+
retry: retryTransient
|
|
40
|
+
},
|
|
41
|
+
queryClient
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
function useAthenaComputerStatus({
|
|
45
|
+
assetId,
|
|
46
|
+
enabled = true
|
|
47
|
+
}) {
|
|
48
|
+
const config = AthenaContext.useAthenaConfig();
|
|
49
|
+
const { backendUrl, apiKey, getToken } = config;
|
|
50
|
+
const identity = useAthenaRestQuery.useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
|
|
51
|
+
const queryClient = useAthenaRestQuery.useAthenaQueryClient();
|
|
52
|
+
return reactQuery.useQuery(
|
|
53
|
+
{
|
|
54
|
+
queryKey: ["athena-sdk", "computer-status", backendUrl, ...identity, assetId],
|
|
55
|
+
queryFn: ({ signal }) => sessionWorkspaceApi.fetchComputerRuntimeStatus({
|
|
56
|
+
backendUrl,
|
|
57
|
+
auth: { apiKey, token: config.token, getToken },
|
|
58
|
+
assetId: assetId ?? "",
|
|
59
|
+
signal
|
|
60
|
+
}),
|
|
61
|
+
enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
|
|
62
|
+
staleTime: COMPUTER_STATUS_REFRESH_MS,
|
|
63
|
+
refetchInterval: COMPUTER_STATUS_REFRESH_MS,
|
|
64
|
+
refetchOnWindowFocus: false,
|
|
65
|
+
retry: retryTransient
|
|
66
|
+
},
|
|
67
|
+
queryClient
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
function useAthenaComputerSshAccess({
|
|
71
|
+
assetId,
|
|
72
|
+
enabled = true
|
|
73
|
+
}) {
|
|
74
|
+
const config = AthenaContext.useAthenaConfig();
|
|
75
|
+
const { backendUrl, apiKey, getToken } = config;
|
|
76
|
+
const identity = useAthenaRestQuery.useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
|
|
77
|
+
const queryClient = useAthenaRestQuery.useAthenaQueryClient();
|
|
78
|
+
return reactQuery.useQuery(
|
|
79
|
+
{
|
|
80
|
+
queryKey: ["athena-sdk", "computer-ssh-access", backendUrl, ...identity, assetId],
|
|
81
|
+
queryFn: ({ signal }) => sessionWorkspaceApi.fetchComputerSshAccess({
|
|
82
|
+
backendUrl,
|
|
83
|
+
auth: { apiKey, token: config.token, getToken },
|
|
84
|
+
assetId: assetId ?? "",
|
|
85
|
+
signal
|
|
86
|
+
}),
|
|
87
|
+
enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
|
|
88
|
+
staleTime: 5 * 6e4,
|
|
89
|
+
refetchOnWindowFocus: false,
|
|
90
|
+
retry: retryTransient
|
|
91
|
+
},
|
|
92
|
+
queryClient
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
exports.COMPUTER_STATUS_REFRESH_MS = COMPUTER_STATUS_REFRESH_MS;
|
|
96
|
+
exports.SESSION_WORKSPACE_QUERY_KEY = SESSION_WORKSPACE_QUERY_KEY;
|
|
97
|
+
exports.useAthenaComputerSshAccess = useAthenaComputerSshAccess;
|
|
98
|
+
exports.useAthenaComputerStatus = useAthenaComputerStatus;
|
|
99
|
+
exports.useAthenaSessionWorkspace = useAthenaSessionWorkspace;
|
|
100
|
+
//# sourceMappingURL=use-session-workspace.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-workspace.cjs","sources":["../../src/workbench/use-session-workspace.ts"],"sourcesContent":["/**\n * TanStack Query hooks over the session workbench's Agora reads (see\n * `session-workspace-api.ts`), with the provider's `backendUrl` and\n * credentials. Keyed by the non-secret request, the signed-in principal and\n * a credential generation (`useAthenaQueryIdentity`), never by the\n * credential: one user's cached workspace is never another's.\n */\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { useAthenaQueryClient, useAthenaQueryIdentity } from '../lib/use-athena-rest-query';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport {\n type ComputerRuntimeStatus,\n type ComputerSshAccess,\n fetchComputerRuntimeStatus,\n fetchComputerSshAccess,\n fetchSessionWorkspace,\n type SessionWorkspace,\n} from './session-workspace-api';\n\n/** The key prefix of every session workspace query — what a settle invalidates. */\nexport const SESSION_WORKSPACE_QUERY_KEY = ['athena-sdk', 'session-workspace'] as const;\n\n/** How often a mounted computer badge re-reads the computer's state. */\nexport const COMPUTER_STATUS_REFRESH_MS = 30_000;\n\nconst NO_RETRY_STATUSES: ReadonlySet<number> = new Set([401, 403, 404, 405, 409]);\n\n/** Retry transient failures twice; a refusal or a missing route answers the same way again. */\nfunction retryTransient(failureCount: number, error: Error): boolean {\n const status = (error as { status?: unknown }).status;\n if (typeof status === 'number' && NO_RETRY_STATUSES.has(status)) return false;\n return failureCount < 2;\n}\n\nexport interface UseAthenaSessionWorkspaceOptions {\n /** The thread to read; `null` holds the query idle. */\n threadId: string | null;\n /** `false` holds the query idle (a never-started chat has no workspace yet). Default `true`. */\n enabled?: boolean;\n /** Re-read on this interval (ms) — e.g. while the session's run is live. Default off. */\n refetchIntervalMs?: number | false;\n}\n\n/**\n * The computers and assets a session works with\n * (`GET /api/conversations/threads/{id}/workspace`).\n */\nexport function useAthenaSessionWorkspace({\n threadId,\n enabled = true,\n refetchIntervalMs = false,\n}: UseAthenaSessionWorkspaceOptions): UseQueryResult<SessionWorkspace, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],\n // `config.token` is read at fetch time: the provider serves the latest\n // token through a getter, so rotations reach the request.\n queryFn: ({ signal }) =>\n fetchSessionWorkspace({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n threadId: threadId ?? '',\n signal,\n }),\n enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,\n staleTime: 15_000,\n refetchInterval: refetchIntervalMs,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's runtime state (`GET /api/sandbox/computer/{id}/status`), for a\n * badge: re-read every {@link COMPUTER_STATUS_REFRESH_MS} while a badge shows\n * and the page is visible (the read never wakes the computer), never retried\n * past a refusal.\n */\nexport function useAthenaComputerStatus({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerRuntimeStatus | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-status', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerRuntimeStatus({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: COMPUTER_STATUS_REFRESH_MS,\n refetchInterval: COMPUTER_STATUS_REFRESH_MS,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's SSH command (`GET /api/v0/computer/{id}/ssh-access`). Needs\n * EDIT on the computer: a viewer without it reads an `auth_rejected` error and\n * the caller offers no command.\n */\nexport function useAthenaComputerSshAccess({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerSshAccess | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-ssh-access', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerSshAccess({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: 5 * 60_000,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n"],"names":["useAthenaConfig","useAthenaQueryIdentity","useAthenaQueryClient","useQuery","fetchSessionWorkspace","fetchComputerRuntimeStatus","fetchComputerSshAccess"],"mappings":";;;;;;AAoBO,MAAM,8BAA8B,CAAC,cAAc,mBAAmB;AAGtE,MAAM,6BAA6B;AAE1C,MAAM,wCAA6C,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAGhF,SAAS,eAAe,cAAsB,OAAuB;AACnE,QAAM,SAAU,MAA+B;AAC/C,MAAI,OAAO,WAAW,YAAY,kBAAkB,IAAI,MAAM,EAAG,QAAO;AACxE,SAAO,eAAe;AACxB;AAeO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA,UAAU;AAAA,EACV,oBAAoB;AACtB,GAA8E;AAC5E,QAAM,SAASA,cAAAA,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAWC,mBAAAA,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAcC,mBAAAA,qBAAA;AACpB,SAAOC,WAAAA;AAAAA,IACL;AAAA,MACE,UAAU,CAAC,GAAG,6BAA6B,YAAY,GAAG,UAAU,QAAQ;AAAA;AAAA;AAAA,MAG5E,SAAS,CAAC,EAAE,OAAA,MACVC,0CAAsB;AAAA,QACpB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,UAAU,YAAY;AAAA,QACtB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,aAAa,QAAQ,SAAS,SAAS,KAAK,WAAW,SAAS;AAAA,MACpF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAQO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,UAAU;AACZ,GAGwD;AACtD,QAAM,SAASJ,cAAAA,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAWC,mBAAAA,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAcC,mBAAAA,qBAAA;AACpB,SAAOC,WAAAA;AAAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,mBAAmB,YAAY,GAAG,UAAU,OAAO;AAAA,MAC5E,SAAS,CAAC,EAAE,OAAA,MACVE,+CAA2B;AAAA,QACzB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAOO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA,UAAU;AACZ,GAGoD;AAClD,QAAM,SAASL,cAAAA,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAWC,mBAAAA,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAcC,mBAAAA,qBAAA;AACpB,SAAOC,WAAAA;AAAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,uBAAuB,YAAY,GAAG,UAAU,OAAO;AAAA,MAChF,SAAS,CAAC,EAAE,OAAA,MACVG,2CAAuB;AAAA,QACrB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW,IAAI;AAAA,MACf,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;;;;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TanStack Query hooks over the session workbench's Agora reads (see
|
|
3
|
+
* `session-workspace-api.ts`), with the provider's `backendUrl` and
|
|
4
|
+
* credentials. Keyed by the non-secret request, the signed-in principal and
|
|
5
|
+
* a credential generation (`useAthenaQueryIdentity`), never by the
|
|
6
|
+
* credential: one user's cached workspace is never another's.
|
|
7
|
+
*/
|
|
8
|
+
import { type UseQueryResult } from '@tanstack/react-query';
|
|
9
|
+
import { type ComputerRuntimeStatus, type ComputerSshAccess, type SessionWorkspace } from './session-workspace-api';
|
|
10
|
+
/** The key prefix of every session workspace query — what a settle invalidates. */
|
|
11
|
+
export declare const SESSION_WORKSPACE_QUERY_KEY: readonly ['athena-sdk', 'session-workspace'];
|
|
12
|
+
/** How often a mounted computer badge re-reads the computer's state. */
|
|
13
|
+
export declare const COMPUTER_STATUS_REFRESH_MS = 30000;
|
|
14
|
+
export interface UseAthenaSessionWorkspaceOptions {
|
|
15
|
+
/** The thread to read; `null` holds the query idle. */
|
|
16
|
+
threadId: string | null;
|
|
17
|
+
/** `false` holds the query idle (a never-started chat has no workspace yet). Default `true`. */
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
/** Re-read on this interval (ms) — e.g. while the session's run is live. Default off. */
|
|
20
|
+
refetchIntervalMs?: number | false;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The computers and assets a session works with
|
|
24
|
+
* (`GET /api/conversations/threads/{id}/workspace`).
|
|
25
|
+
*/
|
|
26
|
+
export declare function useAthenaSessionWorkspace({ threadId, enabled, refetchIntervalMs, }: UseAthenaSessionWorkspaceOptions): UseQueryResult<SessionWorkspace, Error>;
|
|
27
|
+
/**
|
|
28
|
+
* A computer's runtime state (`GET /api/sandbox/computer/{id}/status`), for a
|
|
29
|
+
* badge: re-read every {@link COMPUTER_STATUS_REFRESH_MS} while a badge shows
|
|
30
|
+
* and the page is visible (the read never wakes the computer), never retried
|
|
31
|
+
* past a refusal.
|
|
32
|
+
*/
|
|
33
|
+
export declare function useAthenaComputerStatus({ assetId, enabled, }: {
|
|
34
|
+
assetId: string | null;
|
|
35
|
+
enabled?: boolean;
|
|
36
|
+
}): UseQueryResult<ComputerRuntimeStatus | null, Error>;
|
|
37
|
+
/**
|
|
38
|
+
* A computer's SSH command (`GET /api/v0/computer/{id}/ssh-access`). Needs
|
|
39
|
+
* EDIT on the computer: a viewer without it reads an `auth_rejected` error and
|
|
40
|
+
* the caller offers no command.
|
|
41
|
+
*/
|
|
42
|
+
export declare function useAthenaComputerSshAccess({ assetId, enabled, }: {
|
|
43
|
+
assetId: string | null;
|
|
44
|
+
enabled?: boolean;
|
|
45
|
+
}): UseQueryResult<ComputerSshAccess | null, Error>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { useAthenaQueryIdentity, useAthenaQueryClient } from "../lib/use-athena-rest-query.js";
|
|
3
|
+
import { useAthenaConfig } from "../provider/AthenaContext.js";
|
|
4
|
+
import { fetchComputerSshAccess, fetchComputerRuntimeStatus, fetchSessionWorkspace } from "./session-workspace-api.js";
|
|
5
|
+
const SESSION_WORKSPACE_QUERY_KEY = ["athena-sdk", "session-workspace"];
|
|
6
|
+
const COMPUTER_STATUS_REFRESH_MS = 3e4;
|
|
7
|
+
const NO_RETRY_STATUSES = /* @__PURE__ */ new Set([401, 403, 404, 405, 409]);
|
|
8
|
+
function retryTransient(failureCount, error) {
|
|
9
|
+
const status = error.status;
|
|
10
|
+
if (typeof status === "number" && NO_RETRY_STATUSES.has(status)) return false;
|
|
11
|
+
return failureCount < 2;
|
|
12
|
+
}
|
|
13
|
+
function useAthenaSessionWorkspace({
|
|
14
|
+
threadId,
|
|
15
|
+
enabled = true,
|
|
16
|
+
refetchIntervalMs = false
|
|
17
|
+
}) {
|
|
18
|
+
const config = useAthenaConfig();
|
|
19
|
+
const { backendUrl, apiKey, getToken } = config;
|
|
20
|
+
const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
|
|
21
|
+
const queryClient = useAthenaQueryClient();
|
|
22
|
+
return useQuery(
|
|
23
|
+
{
|
|
24
|
+
queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],
|
|
25
|
+
// `config.token` is read at fetch time: the provider serves the latest
|
|
26
|
+
// token through a getter, so rotations reach the request.
|
|
27
|
+
queryFn: ({ signal }) => fetchSessionWorkspace({
|
|
28
|
+
backendUrl,
|
|
29
|
+
auth: { apiKey, token: config.token, getToken },
|
|
30
|
+
threadId: threadId ?? "",
|
|
31
|
+
signal
|
|
32
|
+
}),
|
|
33
|
+
enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,
|
|
34
|
+
staleTime: 15e3,
|
|
35
|
+
refetchInterval: refetchIntervalMs,
|
|
36
|
+
refetchOnWindowFocus: false,
|
|
37
|
+
retry: retryTransient
|
|
38
|
+
},
|
|
39
|
+
queryClient
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function useAthenaComputerStatus({
|
|
43
|
+
assetId,
|
|
44
|
+
enabled = true
|
|
45
|
+
}) {
|
|
46
|
+
const config = useAthenaConfig();
|
|
47
|
+
const { backendUrl, apiKey, getToken } = config;
|
|
48
|
+
const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
|
|
49
|
+
const queryClient = useAthenaQueryClient();
|
|
50
|
+
return useQuery(
|
|
51
|
+
{
|
|
52
|
+
queryKey: ["athena-sdk", "computer-status", backendUrl, ...identity, assetId],
|
|
53
|
+
queryFn: ({ signal }) => fetchComputerRuntimeStatus({
|
|
54
|
+
backendUrl,
|
|
55
|
+
auth: { apiKey, token: config.token, getToken },
|
|
56
|
+
assetId: assetId ?? "",
|
|
57
|
+
signal
|
|
58
|
+
}),
|
|
59
|
+
enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
|
|
60
|
+
staleTime: COMPUTER_STATUS_REFRESH_MS,
|
|
61
|
+
refetchInterval: COMPUTER_STATUS_REFRESH_MS,
|
|
62
|
+
refetchOnWindowFocus: false,
|
|
63
|
+
retry: retryTransient
|
|
64
|
+
},
|
|
65
|
+
queryClient
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
function useAthenaComputerSshAccess({
|
|
69
|
+
assetId,
|
|
70
|
+
enabled = true
|
|
71
|
+
}) {
|
|
72
|
+
const config = useAthenaConfig();
|
|
73
|
+
const { backendUrl, apiKey, getToken } = config;
|
|
74
|
+
const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });
|
|
75
|
+
const queryClient = useAthenaQueryClient();
|
|
76
|
+
return useQuery(
|
|
77
|
+
{
|
|
78
|
+
queryKey: ["athena-sdk", "computer-ssh-access", backendUrl, ...identity, assetId],
|
|
79
|
+
queryFn: ({ signal }) => fetchComputerSshAccess({
|
|
80
|
+
backendUrl,
|
|
81
|
+
auth: { apiKey, token: config.token, getToken },
|
|
82
|
+
assetId: assetId ?? "",
|
|
83
|
+
signal
|
|
84
|
+
}),
|
|
85
|
+
enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,
|
|
86
|
+
staleTime: 5 * 6e4,
|
|
87
|
+
refetchOnWindowFocus: false,
|
|
88
|
+
retry: retryTransient
|
|
89
|
+
},
|
|
90
|
+
queryClient
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
export {
|
|
94
|
+
COMPUTER_STATUS_REFRESH_MS,
|
|
95
|
+
SESSION_WORKSPACE_QUERY_KEY,
|
|
96
|
+
useAthenaComputerSshAccess,
|
|
97
|
+
useAthenaComputerStatus,
|
|
98
|
+
useAthenaSessionWorkspace
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=use-session-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-workspace.js","sources":["../../src/workbench/use-session-workspace.ts"],"sourcesContent":["/**\n * TanStack Query hooks over the session workbench's Agora reads (see\n * `session-workspace-api.ts`), with the provider's `backendUrl` and\n * credentials. Keyed by the non-secret request, the signed-in principal and\n * a credential generation (`useAthenaQueryIdentity`), never by the\n * credential: one user's cached workspace is never another's.\n */\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { useAthenaQueryClient, useAthenaQueryIdentity } from '../lib/use-athena-rest-query';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport {\n type ComputerRuntimeStatus,\n type ComputerSshAccess,\n fetchComputerRuntimeStatus,\n fetchComputerSshAccess,\n fetchSessionWorkspace,\n type SessionWorkspace,\n} from './session-workspace-api';\n\n/** The key prefix of every session workspace query — what a settle invalidates. */\nexport const SESSION_WORKSPACE_QUERY_KEY = ['athena-sdk', 'session-workspace'] as const;\n\n/** How often a mounted computer badge re-reads the computer's state. */\nexport const COMPUTER_STATUS_REFRESH_MS = 30_000;\n\nconst NO_RETRY_STATUSES: ReadonlySet<number> = new Set([401, 403, 404, 405, 409]);\n\n/** Retry transient failures twice; a refusal or a missing route answers the same way again. */\nfunction retryTransient(failureCount: number, error: Error): boolean {\n const status = (error as { status?: unknown }).status;\n if (typeof status === 'number' && NO_RETRY_STATUSES.has(status)) return false;\n return failureCount < 2;\n}\n\nexport interface UseAthenaSessionWorkspaceOptions {\n /** The thread to read; `null` holds the query idle. */\n threadId: string | null;\n /** `false` holds the query idle (a never-started chat has no workspace yet). Default `true`. */\n enabled?: boolean;\n /** Re-read on this interval (ms) — e.g. while the session's run is live. Default off. */\n refetchIntervalMs?: number | false;\n}\n\n/**\n * The computers and assets a session works with\n * (`GET /api/conversations/threads/{id}/workspace`).\n */\nexport function useAthenaSessionWorkspace({\n threadId,\n enabled = true,\n refetchIntervalMs = false,\n}: UseAthenaSessionWorkspaceOptions): UseQueryResult<SessionWorkspace, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: [...SESSION_WORKSPACE_QUERY_KEY, backendUrl, ...identity, threadId],\n // `config.token` is read at fetch time: the provider serves the latest\n // token through a getter, so rotations reach the request.\n queryFn: ({ signal }) =>\n fetchSessionWorkspace({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n threadId: threadId ?? '',\n signal,\n }),\n enabled: enabled && threadId !== null && threadId.length > 0 && backendUrl.length > 0,\n staleTime: 15_000,\n refetchInterval: refetchIntervalMs,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's runtime state (`GET /api/sandbox/computer/{id}/status`), for a\n * badge: re-read every {@link COMPUTER_STATUS_REFRESH_MS} while a badge shows\n * and the page is visible (the read never wakes the computer), never retried\n * past a refusal.\n */\nexport function useAthenaComputerStatus({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerRuntimeStatus | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-status', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerRuntimeStatus({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: COMPUTER_STATUS_REFRESH_MS,\n refetchInterval: COMPUTER_STATUS_REFRESH_MS,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n\n/**\n * A computer's SSH command (`GET /api/v0/computer/{id}/ssh-access`). Needs\n * EDIT on the computer: a viewer without it reads an `auth_rejected` error and\n * the caller offers no command.\n */\nexport function useAthenaComputerSshAccess({\n assetId,\n enabled = true,\n}: {\n assetId: string | null;\n enabled?: boolean;\n}): UseQueryResult<ComputerSshAccess | null, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'computer-ssh-access', backendUrl, ...identity, assetId],\n queryFn: ({ signal }) =>\n fetchComputerSshAccess({\n backendUrl,\n auth: { apiKey, token: config.token, getToken },\n assetId: assetId ?? '',\n signal,\n }),\n enabled: enabled && assetId !== null && assetId.length > 0 && backendUrl.length > 0,\n staleTime: 5 * 60_000,\n refetchOnWindowFocus: false,\n retry: retryTransient,\n },\n queryClient,\n );\n}\n"],"names":[],"mappings":";;;;AAoBO,MAAM,8BAA8B,CAAC,cAAc,mBAAmB;AAGtE,MAAM,6BAA6B;AAE1C,MAAM,wCAA6C,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAGhF,SAAS,eAAe,cAAsB,OAAuB;AACnE,QAAM,SAAU,MAA+B;AAC/C,MAAI,OAAO,WAAW,YAAY,kBAAkB,IAAI,MAAM,EAAG,QAAO;AACxE,SAAO,eAAe;AACxB;AAeO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA,UAAU;AAAA,EACV,oBAAoB;AACtB,GAA8E;AAC5E,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,GAAG,6BAA6B,YAAY,GAAG,UAAU,QAAQ;AAAA;AAAA;AAAA,MAG5E,SAAS,CAAC,EAAE,OAAA,MACV,sBAAsB;AAAA,QACpB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,UAAU,YAAY;AAAA,QACtB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,aAAa,QAAQ,SAAS,SAAS,KAAK,WAAW,SAAS;AAAA,MACpF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAQO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,UAAU;AACZ,GAGwD;AACtD,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,mBAAmB,YAAY,GAAG,UAAU,OAAO;AAAA,MAC5E,SAAS,CAAC,EAAE,OAAA,MACV,2BAA2B;AAAA,QACzB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;AAOO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA,UAAU;AACZ,GAGoD;AAClD,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,uBAAuB,YAAY,GAAG,UAAU,OAAO;AAAA,MAChF,SAAS,CAAC,EAAE,OAAA,MACV,uBAAuB;AAAA,QACrB;AAAA,QACA,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA;AAAA,QACrC,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,MACH,SAAS,WAAW,YAAY,QAAQ,QAAQ,SAAS,KAAK,WAAW,SAAS;AAAA,MAClF,WAAW,IAAI;AAAA,MACf,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const WorkbenchLayoutContext = react.createContext(null);
|
|
5
|
+
function useWorkbenchLayout() {
|
|
6
|
+
return react.useContext(WorkbenchLayoutContext);
|
|
7
|
+
}
|
|
8
|
+
exports.WorkbenchLayoutContext = WorkbenchLayoutContext;
|
|
9
|
+
exports.useWorkbenchLayout = useWorkbenchLayout;
|
|
10
|
+
//# sourceMappingURL=workbench-layout-context.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbench-layout-context.cjs","sources":["../../src/workbench/workbench-layout-context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * What `AthenaLayout` tells the `SessionWorkbench` it hosts in its right-hand\n * column: whether that column is collapsed to a rail or maximized over the\n * chat (the layout owns its width), and that the open assets render inside\n * the workbench (as its \"Open assets\" tab) instead of in a column of their own.\n */\nexport interface WorkbenchLayoutState {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n /** The column fills the layout and the chat is hidden until it is restored. */\n maximized: boolean;\n setMaximized: (maximized: boolean) => void;\n hostsAssetPanel: boolean;\n}\n\nexport const WorkbenchLayoutContext = createContext<WorkbenchLayoutState | null>(null);\n\n/** The hosting layout's state, or `null` for a workbench the host placed itself. */\nexport function useWorkbenchLayout(): WorkbenchLayoutState | null {\n return useContext(WorkbenchLayoutContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;AAiBO,MAAM,yBAAyBA,MAAAA,cAA2C,IAAI;AAG9E,SAAS,qBAAkD;AAChE,SAAOC,MAAAA,WAAW,sBAAsB;AAC1C;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `AthenaLayout` tells the `SessionWorkbench` it hosts in its right-hand
|
|
3
|
+
* column: whether that column is collapsed to a rail or maximized over the
|
|
4
|
+
* chat (the layout owns its width), and that the open assets render inside
|
|
5
|
+
* the workbench (as its "Open assets" tab) instead of in a column of their own.
|
|
6
|
+
*/
|
|
7
|
+
export interface WorkbenchLayoutState {
|
|
8
|
+
collapsed: boolean;
|
|
9
|
+
setCollapsed: (collapsed: boolean) => void;
|
|
10
|
+
/** The column fills the layout and the chat is hidden until it is restored. */
|
|
11
|
+
maximized: boolean;
|
|
12
|
+
setMaximized: (maximized: boolean) => void;
|
|
13
|
+
hostsAssetPanel: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const WorkbenchLayoutContext: import("react").Context<WorkbenchLayoutState | null>;
|
|
16
|
+
/** The hosting layout's state, or `null` for a workbench the host placed itself. */
|
|
17
|
+
export declare function useWorkbenchLayout(): WorkbenchLayoutState | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
const WorkbenchLayoutContext = createContext(null);
|
|
3
|
+
function useWorkbenchLayout() {
|
|
4
|
+
return useContext(WorkbenchLayoutContext);
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
WorkbenchLayoutContext,
|
|
8
|
+
useWorkbenchLayout
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=workbench-layout-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbench-layout-context.js","sources":["../../src/workbench/workbench-layout-context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * What `AthenaLayout` tells the `SessionWorkbench` it hosts in its right-hand\n * column: whether that column is collapsed to a rail or maximized over the\n * chat (the layout owns its width), and that the open assets render inside\n * the workbench (as its \"Open assets\" tab) instead of in a column of their own.\n */\nexport interface WorkbenchLayoutState {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n /** The column fills the layout and the chat is hidden until it is restored. */\n maximized: boolean;\n setMaximized: (maximized: boolean) => void;\n hostsAssetPanel: boolean;\n}\n\nexport const WorkbenchLayoutContext = createContext<WorkbenchLayoutState | null>(null);\n\n/** The hosting layout's state, or `null` for a workbench the host placed itself. */\nexport function useWorkbenchLayout(): WorkbenchLayoutState | null {\n return useContext(WorkbenchLayoutContext);\n}\n"],"names":[],"mappings":";AAiBO,MAAM,yBAAyB,cAA2C,IAAI;AAG9E,SAAS,qBAAkD;AAChE,SAAO,WAAW,sBAAsB;AAC1C;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@athenaintel/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Athena React SDK — Build AI-powered chat applications with the Athena platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -48,6 +48,16 @@
|
|
|
48
48
|
"import": "./dist/chat/super-grouping/index.js",
|
|
49
49
|
"require": "./dist/chat/super-grouping/index.cjs"
|
|
50
50
|
},
|
|
51
|
+
"./owner-document": {
|
|
52
|
+
"types": "./dist/lib/owner-document.d.ts",
|
|
53
|
+
"import": "./dist/lib/owner-document.js",
|
|
54
|
+
"require": "./dist/lib/owner-document.cjs"
|
|
55
|
+
},
|
|
56
|
+
"./sheet-range": {
|
|
57
|
+
"types": "./dist/sheet-range/index.d.ts",
|
|
58
|
+
"import": "./dist/sheet-range/index.js",
|
|
59
|
+
"require": "./dist/sheet-range/index.cjs"
|
|
60
|
+
},
|
|
51
61
|
"./src/chat-ui/styles/theme.css": "./src/chat-ui/styles/theme.css",
|
|
52
62
|
"./chat-ui/tailwind-preset": "./src/chat-ui/tailwind-preset.js"
|
|
53
63
|
},
|
|
@@ -85,12 +95,13 @@
|
|
|
85
95
|
}
|
|
86
96
|
},
|
|
87
97
|
"dependencies": {
|
|
88
|
-
"@assistant-ui/core": "0.3.
|
|
89
|
-
"@assistant-ui/react": "0.15.
|
|
90
|
-
"@assistant-ui/react-
|
|
91
|
-
"@assistant-ui/react-
|
|
92
|
-
"@assistant-ui/
|
|
93
|
-
"@assistant-ui/
|
|
98
|
+
"@assistant-ui/core": "0.3.27",
|
|
99
|
+
"@assistant-ui/react": "0.15.28",
|
|
100
|
+
"@assistant-ui/react-langgraph": "0.14.34",
|
|
101
|
+
"@assistant-ui/react-markdown": "0.14.21",
|
|
102
|
+
"@assistant-ui/react-statewire": "0.30.0",
|
|
103
|
+
"@assistant-ui/store": "0.3.21",
|
|
104
|
+
"@assistant-ui/tap": "0.9.23",
|
|
94
105
|
"@floating-ui/react": "^0.27.7",
|
|
95
106
|
"@tailwindcss/typography": "^0.5.19",
|
|
96
107
|
"@tanstack/react-query": "5.99.2",
|
|
@@ -109,14 +120,14 @@
|
|
|
109
120
|
"@tiptap/starter-kit": "^3.31.3",
|
|
110
121
|
"@tiptap/suggestion": "^3.31.3",
|
|
111
122
|
"@y/websocket": "4.0.0-rc.2",
|
|
112
|
-
"@y/y": "14.0.0-rc.
|
|
113
|
-
"assistant-stream": "0.3.
|
|
123
|
+
"@y/y": "14.0.0-rc.29",
|
|
124
|
+
"assistant-stream": "0.3.50",
|
|
114
125
|
"class-variance-authority": "^0.7.1",
|
|
115
126
|
"cnfast": "0.0.8",
|
|
116
127
|
"lucide-react": "^0.575.0",
|
|
117
128
|
"radix-ui": "^1.4.3",
|
|
118
129
|
"remark-gfm": "^4.0.0",
|
|
119
|
-
"statewire": "0.
|
|
130
|
+
"statewire": "0.20.0",
|
|
120
131
|
"tiptap-markdown": "^0.9.0",
|
|
121
132
|
"zustand": "^5.0.11"
|
|
122
133
|
},
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
require("@assistant-ui/core/internal");
|
|
4
|
-
const convertLangChainContentBlock = (part) => {
|
|
5
|
-
var _a, _b;
|
|
6
|
-
switch (part.type) {
|
|
7
|
-
case "text":
|
|
8
|
-
case "text_delta":
|
|
9
|
-
return {
|
|
10
|
-
type: "text",
|
|
11
|
-
text: part.text
|
|
12
|
-
};
|
|
13
|
-
case "image_url": {
|
|
14
|
-
const image = typeof part.image_url === "string" ? part.image_url : (_a = part.image_url) == null ? void 0 : _a.url;
|
|
15
|
-
if (!image) return null;
|
|
16
|
-
return {
|
|
17
|
-
type: "image",
|
|
18
|
-
image
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
case "file":
|
|
22
|
-
return {
|
|
23
|
-
type: "file",
|
|
24
|
-
filename: ((_b = part.metadata) == null ? void 0 : _b.filename) ?? "file",
|
|
25
|
-
data: part.source_type === "url" ? part.url : part.source_type === "id" ? part.id : part.data,
|
|
26
|
-
mimeType: part.mime_type ?? "application/octet-stream",
|
|
27
|
-
...(part.source_type === "url" || part.source_type === "id") && { sourceType: part.source_type }
|
|
28
|
-
};
|
|
29
|
-
case "audio": {
|
|
30
|
-
const mimeType = part.mime_type ?? "application/octet-stream";
|
|
31
|
-
const subtype = mimeType.startsWith("audio/") ? mimeType.slice(6) : void 0;
|
|
32
|
-
return {
|
|
33
|
-
type: "file",
|
|
34
|
-
filename: subtype ? `audio.${subtype}` : "audio",
|
|
35
|
-
data: part.data,
|
|
36
|
-
mimeType
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
case "thinking":
|
|
40
|
-
return {
|
|
41
|
-
type: "reasoning",
|
|
42
|
-
text: part.thinking
|
|
43
|
-
};
|
|
44
|
-
case "reasoning":
|
|
45
|
-
return {
|
|
46
|
-
type: "reasoning",
|
|
47
|
-
text: part.summary && part.summary.length > 0 ? part.summary.map((s) => (s == null ? void 0 : s.text) ?? "").join("\n\n\n") : part.reasoning ?? ""
|
|
48
|
-
};
|
|
49
|
-
case "tool_use":
|
|
50
|
-
case "input_json_delta":
|
|
51
|
-
return null;
|
|
52
|
-
default:
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const hasVisibleText = (text) => typeof text === "string" && text.trim() !== "";
|
|
57
|
-
const withAudioTranscript = (parts, additionalKwargs) => {
|
|
58
|
-
var _a;
|
|
59
|
-
const transcript = (_a = additionalKwargs == null ? void 0 : additionalKwargs.audio) == null ? void 0 : _a.transcript;
|
|
60
|
-
if (typeof transcript !== "string" || !hasVisibleText(transcript)) return parts;
|
|
61
|
-
if (parts.some((part) => part.type === "text" && hasVisibleText(part.text))) return parts;
|
|
62
|
-
return [...parts.filter((part) => part.type !== "text"), {
|
|
63
|
-
type: "text",
|
|
64
|
-
text: transcript
|
|
65
|
-
}];
|
|
66
|
-
};
|
|
67
|
-
const getCustomMetadata = (additionalKwargs) => (additionalKwargs == null ? void 0 : additionalKwargs.metadata) ?? {};
|
|
68
|
-
const uiMessageToDataPart = (ui) => ({
|
|
69
|
-
type: "data",
|
|
70
|
-
name: ui.name,
|
|
71
|
-
data: ui.props
|
|
72
|
-
});
|
|
73
|
-
exports.convertLangChainContentBlock = convertLangChainContentBlock;
|
|
74
|
-
exports.getCustomMetadata = getCustomMetadata;
|
|
75
|
-
exports.uiMessageToDataPart = uiMessageToDataPart;
|
|
76
|
-
exports.withAudioTranscript = withAudioTranscript;
|
|
77
|
-
//# sourceMappingURL=converter.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converter.cjs","sources":["../../../../../../../node_modules/@assistant-ui/react-langchain/dist/converter.js"],"sourcesContent":["import { parseDataUrl, resolveFilePartSource } from \"@assistant-ui/core/internal\";\n//#region src/converter.ts\nconst convertLangChainContentBlock = (part) => {\n\tswitch (part.type) {\n\t\tcase \"text\":\n\t\tcase \"text_delta\": return {\n\t\t\ttype: \"text\",\n\t\t\ttext: part.text\n\t\t};\n\t\tcase \"image_url\": {\n\t\t\tconst image = typeof part.image_url === \"string\" ? part.image_url : part.image_url?.url;\n\t\t\tif (!image) return null;\n\t\t\treturn {\n\t\t\t\ttype: \"image\",\n\t\t\t\timage\n\t\t\t};\n\t\t}\n\t\tcase \"file\": return {\n\t\t\ttype: \"file\",\n\t\t\tfilename: part.metadata?.filename ?? \"file\",\n\t\t\tdata: part.source_type === \"url\" ? part.url : part.source_type === \"id\" ? part.id : part.data,\n\t\t\tmimeType: part.mime_type ?? \"application/octet-stream\",\n\t\t\t...(part.source_type === \"url\" || part.source_type === \"id\") && { sourceType: part.source_type }\n\t\t};\n\t\tcase \"audio\": {\n\t\t\tconst mimeType = part.mime_type ?? \"application/octet-stream\";\n\t\t\tconst subtype = mimeType.startsWith(\"audio/\") ? mimeType.slice(6) : void 0;\n\t\t\treturn {\n\t\t\t\ttype: \"file\",\n\t\t\t\tfilename: subtype ? `audio.${subtype}` : \"audio\",\n\t\t\t\tdata: part.data,\n\t\t\t\tmimeType\n\t\t\t};\n\t\t}\n\t\tcase \"thinking\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.thinking\n\t\t};\n\t\tcase \"reasoning\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.summary && part.summary.length > 0 ? part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\") : part.reasoning ?? \"\"\n\t\t};\n\t\tcase \"tool_use\":\n\t\tcase \"input_json_delta\": return null;\n\t\tdefault: return;\n\t}\n};\nconst hasVisibleText = (text) => typeof text === \"string\" && text.trim() !== \"\";\n/**\n* Audio output arrives outside the content array: providers leave `content`\n* empty and put the spoken text in `additional_kwargs.audio.transcript`. The\n* audio bytes stay behind because no provider reports their media type, and a\n* streamed response carries raw PCM rather than a playable file.\n*/\nconst withAudioTranscript = (parts, additionalKwargs) => {\n\tconst transcript = (additionalKwargs?.audio)?.transcript;\n\tif (typeof transcript !== \"string\" || !hasVisibleText(transcript)) return parts;\n\tif (parts.some((part) => part.type === \"text\" && hasVisibleText(part.text))) return parts;\n\treturn [...parts.filter((part) => part.type !== \"text\"), {\n\t\ttype: \"text\",\n\t\ttext: transcript\n\t}];\n};\nconst getCustomMetadata = (additionalKwargs) => additionalKwargs?.metadata ?? {};\nconst uiMessageToDataPart = (ui) => ({\n\ttype: \"data\",\n\tname: ui.name,\n\tdata: ui.props\n});\n/**\n* Audio media types that reach a provider's audio input through the LangChain\n* `audio` block. langchain-core derives OpenAI's `input_audio.format` by\n* splitting `mime_type` on `/`, and that format is a wav-or-mp3 enum, so\n* `audio/mpeg` passes the converter and is rejected at the provider.\n*/\nconst audioBlockMimeTypes = /* @__PURE__ */ new Map([\n\t[\"audio/mp3\", \"audio/mp3\"],\n\t[\"audio/mpeg\", \"audio/mp3\"],\n\t[\"audio/wav\", \"audio/wav\"],\n\t[\"audio/wave\", \"audio/wav\"],\n\t[\"audio/x-wav\", \"audio/wav\"]\n]);\nconst getMessageContent = (msg) => {\n\tconst allContent = [...msg.content, ...msg.attachments?.flatMap((a) => a.content) ?? []];\n\tconst hasNonText = allContent.some((part) => part.type === \"file\" || part.type === \"image\" || part.type === \"audio\");\n\tconst hasText = allContent.some((part) => part.type === \"text\");\n\tif (hasNonText && !hasText) allContent.unshift({\n\t\ttype: \"text\",\n\t\ttext: \" \"\n\t});\n\tconst content = allContent.flatMap((part) => {\n\t\tconst type = part.type;\n\t\tswitch (type) {\n\t\t\tcase \"text\": return {\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: part.text\n\t\t\t};\n\t\t\tcase \"image\": return {\n\t\t\t\ttype: \"image_url\",\n\t\t\t\timage_url: { url: part.image }\n\t\t\t};\n\t\t\tcase \"file\": {\n\t\t\t\tconst metadata = { filename: part.filename ?? \"file\" };\n\t\t\t\tif (part.sourceType === \"id\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tid: part.data,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"id\"\n\t\t\t\t};\n\t\t\t\tconst source = resolveFilePartSource(part);\n\t\t\t\tif (source.kind === \"url\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\turl: source.url,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"url\"\n\t\t\t\t};\n\t\t\t\tconst audioMimeType = audioBlockMimeTypes.get(source.mimeType.toLowerCase());\n\t\t\t\tif (audioMimeType) return {\n\t\t\t\t\ttype: \"audio\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: audioMimeType,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: source.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"audio\": return {\n\t\t\t\ttype: \"audio\",\n\t\t\t\tdata: parseDataUrl(part.audio.data)?.data ?? part.audio.data,\n\t\t\t\tmime_type: `audio/${part.audio.format}`,\n\t\t\t\tsource_type: \"base64\"\n\t\t\t};\n\t\t\tcase \"data\": return [];\n\t\t\tcase \"tool-call\": throw new Error(\"Tool call appends are not supported.\");\n\t\t\tdefault: throw new Error(`Unsupported append message part type: ${type}`);\n\t\t}\n\t});\n\tif (content.length === 1 && content[0]?.type === \"text\") return content[0].text ?? \"\";\n\treturn content;\n};\nconst reasoningTextLength = (part) => {\n\tif (part.summary && part.summary.length > 0) return part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\").length;\n\treturn part.reasoning?.length ?? 0;\n};\nconst createLangChainStreamingTimingAccessors = (getType) => {\n\tconst findAiMessage = (messages, messageId) => messages.find((message) => getType(message) === \"ai\" && message.id === messageId);\n\tconst getTextLength = (messages, messageId) => {\n\t\tconst message = findAiMessage(messages, messageId);\n\t\tif (!message) return 0;\n\t\tconst content = message.content;\n\t\tif (typeof content === \"string\") return content.length;\n\t\tif (!Array.isArray(content)) return 0;\n\t\tlet len = 0;\n\t\tfor (const part of content) switch (part.type) {\n\t\t\tcase \"text\":\n\t\t\tcase \"text_delta\":\n\t\t\t\tif (typeof part.text === \"string\") len += part.text.length;\n\t\t\t\tbreak;\n\t\t\tcase \"thinking\":\n\t\t\t\tif (typeof part.thinking === \"string\") len += part.thinking.length;\n\t\t\t\tbreak;\n\t\t\tcase \"reasoning\": len += reasoningTextLength(part);\n\t\t}\n\t\treturn len;\n\t};\n\tconst getToolCallCount = (messages, messageId) => findAiMessage(messages, messageId)?.tool_calls?.length ?? 0;\n\tconst getAssistantMessageId = (messages) => {\n\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\tconst message = messages[i];\n\t\t\tif (message && getType(message) === \"ai\" && message.id) return message.id;\n\t\t}\n\t};\n\treturn {\n\t\tgetAssistantMessageId,\n\t\tgetTextLength,\n\t\tgetToolCallCount\n\t};\n};\n/**\n* Resolve the assistant message a `UIMessage` belongs to: the parent id comes\n* from `metadata.message_id` (Python SDK) or `metadata.id` (JS SDK).\n*/\nconst getUIMessageParentId = (ui) => ui.metadata?.message_id ?? ui.metadata?.id;\n/**\n* Group the graph's accumulated `UIMessage`s by the assistant message they\n* belong to. Non-array state and entries without a parent link are dropped.\n*/\nconst groupUIMessagesByParent = (value) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tif (!Array.isArray(value)) return map;\n\tfor (const ui of value) {\n\t\tconst parentId = getUIMessageParentId(ui);\n\t\tif (!parentId) continue;\n\t\tconst existing = map.get(parentId);\n\t\tif (existing) existing.push(ui);\n\t\telse map.set(parentId, [ui]);\n\t}\n\treturn map;\n};\n//#endregion\nexport { convertLangChainContentBlock, createLangChainStreamingTimingAccessors, getCustomMetadata, getMessageContent, getUIMessageParentId, groupUIMessagesByParent, uiMessageToDataPart, withAudioTranscript };\n\n//# sourceMappingURL=converter.js.map"],"names":[],"mappings":";;;AAEK,MAAC,+BAA+B,CAAC,SAAS;;AAC9C,UAAQ,KAAK,MAAI;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAc,aAAO;AAAA,QACzB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK,aAAa;AACjB,YAAM,QAAQ,OAAO,KAAK,cAAc,WAAW,KAAK,aAAY,UAAK,cAAL,mBAAgB;AACpF,UAAI,CAAC,MAAO,QAAO;AACnB,aAAO;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAQ,aAAO;AAAA,QACnB,MAAM;AAAA,QACN,YAAU,UAAK,aAAL,mBAAe,aAAY;AAAA,QACrC,MAAM,KAAK,gBAAgB,QAAQ,KAAK,MAAM,KAAK,gBAAgB,OAAO,KAAK,KAAK,KAAK;AAAA,QACzF,UAAU,KAAK,aAAa;AAAA,QAC5B,IAAI,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,SAAS,EAAE,YAAY,KAAK,YAAW;AAAA,MACjG;AAAA,IACE,KAAK,SAAS;AACb,YAAM,WAAW,KAAK,aAAa;AACnC,YAAM,UAAU,SAAS,WAAW,QAAQ,IAAI,SAAS,MAAM,CAAC,IAAI;AACpE,aAAO;AAAA,QACN,MAAM;AAAA,QACN,UAAU,UAAU,SAAS,OAAO,KAAK;AAAA,QACzC,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAY,aAAO;AAAA,QACvB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK;AAAa,aAAO;AAAA,QACxB,MAAM;AAAA,QACN,MAAM,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAM,uBAAG,SAAQ,EAAE,EAAE,KAAK,QAAQ,IAAI,KAAK,aAAa;AAAA,MAC7H;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAoB,aAAO;AAAA,IAChC;AAAS;AAAA,EACX;AACA;AACA,MAAM,iBAAiB,CAAC,SAAS,OAAO,SAAS,YAAY,KAAK,KAAI,MAAO;AAOxE,MAAC,sBAAsB,CAAC,OAAO,qBAAqB;;AACxD,QAAM,cAAc,0DAAkB,UAAlB,mBAA0B;AAC9C,MAAI,OAAO,eAAe,YAAY,CAAC,eAAe,UAAU,EAAG,QAAO;AAC1E,MAAI,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,UAAU,eAAe,KAAK,IAAI,CAAC,EAAG,QAAO;AACpF,SAAO,CAAC,GAAG,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,GAAG;AAAA,IACxD,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAE;AACF;AACK,MAAC,oBAAoB,CAAC,sBAAqB,qDAAkB,aAAY,CAAA;AACzE,MAAC,sBAAsB,CAAC,QAAQ;AAAA,EACpC,MAAM;AAAA,EACN,MAAM,GAAG;AAAA,EACT,MAAM,GAAG;AACV;;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import "@assistant-ui/core/internal";
|
|
2
|
-
const convertLangChainContentBlock = (part) => {
|
|
3
|
-
var _a, _b;
|
|
4
|
-
switch (part.type) {
|
|
5
|
-
case "text":
|
|
6
|
-
case "text_delta":
|
|
7
|
-
return {
|
|
8
|
-
type: "text",
|
|
9
|
-
text: part.text
|
|
10
|
-
};
|
|
11
|
-
case "image_url": {
|
|
12
|
-
const image = typeof part.image_url === "string" ? part.image_url : (_a = part.image_url) == null ? void 0 : _a.url;
|
|
13
|
-
if (!image) return null;
|
|
14
|
-
return {
|
|
15
|
-
type: "image",
|
|
16
|
-
image
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
case "file":
|
|
20
|
-
return {
|
|
21
|
-
type: "file",
|
|
22
|
-
filename: ((_b = part.metadata) == null ? void 0 : _b.filename) ?? "file",
|
|
23
|
-
data: part.source_type === "url" ? part.url : part.source_type === "id" ? part.id : part.data,
|
|
24
|
-
mimeType: part.mime_type ?? "application/octet-stream",
|
|
25
|
-
...(part.source_type === "url" || part.source_type === "id") && { sourceType: part.source_type }
|
|
26
|
-
};
|
|
27
|
-
case "audio": {
|
|
28
|
-
const mimeType = part.mime_type ?? "application/octet-stream";
|
|
29
|
-
const subtype = mimeType.startsWith("audio/") ? mimeType.slice(6) : void 0;
|
|
30
|
-
return {
|
|
31
|
-
type: "file",
|
|
32
|
-
filename: subtype ? `audio.${subtype}` : "audio",
|
|
33
|
-
data: part.data,
|
|
34
|
-
mimeType
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
case "thinking":
|
|
38
|
-
return {
|
|
39
|
-
type: "reasoning",
|
|
40
|
-
text: part.thinking
|
|
41
|
-
};
|
|
42
|
-
case "reasoning":
|
|
43
|
-
return {
|
|
44
|
-
type: "reasoning",
|
|
45
|
-
text: part.summary && part.summary.length > 0 ? part.summary.map((s) => (s == null ? void 0 : s.text) ?? "").join("\n\n\n") : part.reasoning ?? ""
|
|
46
|
-
};
|
|
47
|
-
case "tool_use":
|
|
48
|
-
case "input_json_delta":
|
|
49
|
-
return null;
|
|
50
|
-
default:
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
const hasVisibleText = (text) => typeof text === "string" && text.trim() !== "";
|
|
55
|
-
const withAudioTranscript = (parts, additionalKwargs) => {
|
|
56
|
-
var _a;
|
|
57
|
-
const transcript = (_a = additionalKwargs == null ? void 0 : additionalKwargs.audio) == null ? void 0 : _a.transcript;
|
|
58
|
-
if (typeof transcript !== "string" || !hasVisibleText(transcript)) return parts;
|
|
59
|
-
if (parts.some((part) => part.type === "text" && hasVisibleText(part.text))) return parts;
|
|
60
|
-
return [...parts.filter((part) => part.type !== "text"), {
|
|
61
|
-
type: "text",
|
|
62
|
-
text: transcript
|
|
63
|
-
}];
|
|
64
|
-
};
|
|
65
|
-
const getCustomMetadata = (additionalKwargs) => (additionalKwargs == null ? void 0 : additionalKwargs.metadata) ?? {};
|
|
66
|
-
const uiMessageToDataPart = (ui) => ({
|
|
67
|
-
type: "data",
|
|
68
|
-
name: ui.name,
|
|
69
|
-
data: ui.props
|
|
70
|
-
});
|
|
71
|
-
export {
|
|
72
|
-
convertLangChainContentBlock,
|
|
73
|
-
getCustomMetadata,
|
|
74
|
-
uiMessageToDataPart,
|
|
75
|
-
withAudioTranscript
|
|
76
|
-
};
|
|
77
|
-
//# sourceMappingURL=converter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converter.js","sources":["../../../../../../../node_modules/@assistant-ui/react-langchain/dist/converter.js"],"sourcesContent":["import { parseDataUrl, resolveFilePartSource } from \"@assistant-ui/core/internal\";\n//#region src/converter.ts\nconst convertLangChainContentBlock = (part) => {\n\tswitch (part.type) {\n\t\tcase \"text\":\n\t\tcase \"text_delta\": return {\n\t\t\ttype: \"text\",\n\t\t\ttext: part.text\n\t\t};\n\t\tcase \"image_url\": {\n\t\t\tconst image = typeof part.image_url === \"string\" ? part.image_url : part.image_url?.url;\n\t\t\tif (!image) return null;\n\t\t\treturn {\n\t\t\t\ttype: \"image\",\n\t\t\t\timage\n\t\t\t};\n\t\t}\n\t\tcase \"file\": return {\n\t\t\ttype: \"file\",\n\t\t\tfilename: part.metadata?.filename ?? \"file\",\n\t\t\tdata: part.source_type === \"url\" ? part.url : part.source_type === \"id\" ? part.id : part.data,\n\t\t\tmimeType: part.mime_type ?? \"application/octet-stream\",\n\t\t\t...(part.source_type === \"url\" || part.source_type === \"id\") && { sourceType: part.source_type }\n\t\t};\n\t\tcase \"audio\": {\n\t\t\tconst mimeType = part.mime_type ?? \"application/octet-stream\";\n\t\t\tconst subtype = mimeType.startsWith(\"audio/\") ? mimeType.slice(6) : void 0;\n\t\t\treturn {\n\t\t\t\ttype: \"file\",\n\t\t\t\tfilename: subtype ? `audio.${subtype}` : \"audio\",\n\t\t\t\tdata: part.data,\n\t\t\t\tmimeType\n\t\t\t};\n\t\t}\n\t\tcase \"thinking\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.thinking\n\t\t};\n\t\tcase \"reasoning\": return {\n\t\t\ttype: \"reasoning\",\n\t\t\ttext: part.summary && part.summary.length > 0 ? part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\") : part.reasoning ?? \"\"\n\t\t};\n\t\tcase \"tool_use\":\n\t\tcase \"input_json_delta\": return null;\n\t\tdefault: return;\n\t}\n};\nconst hasVisibleText = (text) => typeof text === \"string\" && text.trim() !== \"\";\n/**\n* Audio output arrives outside the content array: providers leave `content`\n* empty and put the spoken text in `additional_kwargs.audio.transcript`. The\n* audio bytes stay behind because no provider reports their media type, and a\n* streamed response carries raw PCM rather than a playable file.\n*/\nconst withAudioTranscript = (parts, additionalKwargs) => {\n\tconst transcript = (additionalKwargs?.audio)?.transcript;\n\tif (typeof transcript !== \"string\" || !hasVisibleText(transcript)) return parts;\n\tif (parts.some((part) => part.type === \"text\" && hasVisibleText(part.text))) return parts;\n\treturn [...parts.filter((part) => part.type !== \"text\"), {\n\t\ttype: \"text\",\n\t\ttext: transcript\n\t}];\n};\nconst getCustomMetadata = (additionalKwargs) => additionalKwargs?.metadata ?? {};\nconst uiMessageToDataPart = (ui) => ({\n\ttype: \"data\",\n\tname: ui.name,\n\tdata: ui.props\n});\n/**\n* Audio media types that reach a provider's audio input through the LangChain\n* `audio` block. langchain-core derives OpenAI's `input_audio.format` by\n* splitting `mime_type` on `/`, and that format is a wav-or-mp3 enum, so\n* `audio/mpeg` passes the converter and is rejected at the provider.\n*/\nconst audioBlockMimeTypes = /* @__PURE__ */ new Map([\n\t[\"audio/mp3\", \"audio/mp3\"],\n\t[\"audio/mpeg\", \"audio/mp3\"],\n\t[\"audio/wav\", \"audio/wav\"],\n\t[\"audio/wave\", \"audio/wav\"],\n\t[\"audio/x-wav\", \"audio/wav\"]\n]);\nconst getMessageContent = (msg) => {\n\tconst allContent = [...msg.content, ...msg.attachments?.flatMap((a) => a.content) ?? []];\n\tconst hasNonText = allContent.some((part) => part.type === \"file\" || part.type === \"image\" || part.type === \"audio\");\n\tconst hasText = allContent.some((part) => part.type === \"text\");\n\tif (hasNonText && !hasText) allContent.unshift({\n\t\ttype: \"text\",\n\t\ttext: \" \"\n\t});\n\tconst content = allContent.flatMap((part) => {\n\t\tconst type = part.type;\n\t\tswitch (type) {\n\t\t\tcase \"text\": return {\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: part.text\n\t\t\t};\n\t\t\tcase \"image\": return {\n\t\t\t\ttype: \"image_url\",\n\t\t\t\timage_url: { url: part.image }\n\t\t\t};\n\t\t\tcase \"file\": {\n\t\t\t\tconst metadata = { filename: part.filename ?? \"file\" };\n\t\t\t\tif (part.sourceType === \"id\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tid: part.data,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"id\"\n\t\t\t\t};\n\t\t\t\tconst source = resolveFilePartSource(part);\n\t\t\t\tif (source.kind === \"url\") return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\turl: source.url,\n\t\t\t\t\tmime_type: part.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"url\"\n\t\t\t\t};\n\t\t\t\tconst audioMimeType = audioBlockMimeTypes.get(source.mimeType.toLowerCase());\n\t\t\t\tif (audioMimeType) return {\n\t\t\t\t\ttype: \"audio\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: audioMimeType,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tdata: source.data,\n\t\t\t\t\tmime_type: source.mimeType,\n\t\t\t\t\tfilename: metadata.filename,\n\t\t\t\t\tmetadata,\n\t\t\t\t\tsource_type: \"base64\"\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"audio\": return {\n\t\t\t\ttype: \"audio\",\n\t\t\t\tdata: parseDataUrl(part.audio.data)?.data ?? part.audio.data,\n\t\t\t\tmime_type: `audio/${part.audio.format}`,\n\t\t\t\tsource_type: \"base64\"\n\t\t\t};\n\t\t\tcase \"data\": return [];\n\t\t\tcase \"tool-call\": throw new Error(\"Tool call appends are not supported.\");\n\t\t\tdefault: throw new Error(`Unsupported append message part type: ${type}`);\n\t\t}\n\t});\n\tif (content.length === 1 && content[0]?.type === \"text\") return content[0].text ?? \"\";\n\treturn content;\n};\nconst reasoningTextLength = (part) => {\n\tif (part.summary && part.summary.length > 0) return part.summary.map((s) => s?.text ?? \"\").join(\"\\n\\n\\n\").length;\n\treturn part.reasoning?.length ?? 0;\n};\nconst createLangChainStreamingTimingAccessors = (getType) => {\n\tconst findAiMessage = (messages, messageId) => messages.find((message) => getType(message) === \"ai\" && message.id === messageId);\n\tconst getTextLength = (messages, messageId) => {\n\t\tconst message = findAiMessage(messages, messageId);\n\t\tif (!message) return 0;\n\t\tconst content = message.content;\n\t\tif (typeof content === \"string\") return content.length;\n\t\tif (!Array.isArray(content)) return 0;\n\t\tlet len = 0;\n\t\tfor (const part of content) switch (part.type) {\n\t\t\tcase \"text\":\n\t\t\tcase \"text_delta\":\n\t\t\t\tif (typeof part.text === \"string\") len += part.text.length;\n\t\t\t\tbreak;\n\t\t\tcase \"thinking\":\n\t\t\t\tif (typeof part.thinking === \"string\") len += part.thinking.length;\n\t\t\t\tbreak;\n\t\t\tcase \"reasoning\": len += reasoningTextLength(part);\n\t\t}\n\t\treturn len;\n\t};\n\tconst getToolCallCount = (messages, messageId) => findAiMessage(messages, messageId)?.tool_calls?.length ?? 0;\n\tconst getAssistantMessageId = (messages) => {\n\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\tconst message = messages[i];\n\t\t\tif (message && getType(message) === \"ai\" && message.id) return message.id;\n\t\t}\n\t};\n\treturn {\n\t\tgetAssistantMessageId,\n\t\tgetTextLength,\n\t\tgetToolCallCount\n\t};\n};\n/**\n* Resolve the assistant message a `UIMessage` belongs to: the parent id comes\n* from `metadata.message_id` (Python SDK) or `metadata.id` (JS SDK).\n*/\nconst getUIMessageParentId = (ui) => ui.metadata?.message_id ?? ui.metadata?.id;\n/**\n* Group the graph's accumulated `UIMessage`s by the assistant message they\n* belong to. Non-array state and entries without a parent link are dropped.\n*/\nconst groupUIMessagesByParent = (value) => {\n\tconst map = /* @__PURE__ */ new Map();\n\tif (!Array.isArray(value)) return map;\n\tfor (const ui of value) {\n\t\tconst parentId = getUIMessageParentId(ui);\n\t\tif (!parentId) continue;\n\t\tconst existing = map.get(parentId);\n\t\tif (existing) existing.push(ui);\n\t\telse map.set(parentId, [ui]);\n\t}\n\treturn map;\n};\n//#endregion\nexport { convertLangChainContentBlock, createLangChainStreamingTimingAccessors, getCustomMetadata, getMessageContent, getUIMessageParentId, groupUIMessagesByParent, uiMessageToDataPart, withAudioTranscript };\n\n//# sourceMappingURL=converter.js.map"],"names":[],"mappings":";AAEK,MAAC,+BAA+B,CAAC,SAAS;;AAC9C,UAAQ,KAAK,MAAI;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAc,aAAO;AAAA,QACzB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK,aAAa;AACjB,YAAM,QAAQ,OAAO,KAAK,cAAc,WAAW,KAAK,aAAY,UAAK,cAAL,mBAAgB;AACpF,UAAI,CAAC,MAAO,QAAO;AACnB,aAAO;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAQ,aAAO;AAAA,QACnB,MAAM;AAAA,QACN,YAAU,UAAK,aAAL,mBAAe,aAAY;AAAA,QACrC,MAAM,KAAK,gBAAgB,QAAQ,KAAK,MAAM,KAAK,gBAAgB,OAAO,KAAK,KAAK,KAAK;AAAA,QACzF,UAAU,KAAK,aAAa;AAAA,QAC5B,IAAI,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,SAAS,EAAE,YAAY,KAAK,YAAW;AAAA,MACjG;AAAA,IACE,KAAK,SAAS;AACb,YAAM,WAAW,KAAK,aAAa;AACnC,YAAM,UAAU,SAAS,WAAW,QAAQ,IAAI,SAAS,MAAM,CAAC,IAAI;AACpE,aAAO;AAAA,QACN,MAAM;AAAA,QACN,UAAU,UAAU,SAAS,OAAO,KAAK;AAAA,QACzC,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACE;AAAA,IACA,KAAK;AAAY,aAAO;AAAA,QACvB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,MACd;AAAA,IACE,KAAK;AAAa,aAAO;AAAA,QACxB,MAAM;AAAA,QACN,MAAM,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAM,uBAAG,SAAQ,EAAE,EAAE,KAAK,QAAQ,IAAI,KAAK,aAAa;AAAA,MAC7H;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAoB,aAAO;AAAA,IAChC;AAAS;AAAA,EACX;AACA;AACA,MAAM,iBAAiB,CAAC,SAAS,OAAO,SAAS,YAAY,KAAK,KAAI,MAAO;AAOxE,MAAC,sBAAsB,CAAC,OAAO,qBAAqB;;AACxD,QAAM,cAAc,0DAAkB,UAAlB,mBAA0B;AAC9C,MAAI,OAAO,eAAe,YAAY,CAAC,eAAe,UAAU,EAAG,QAAO;AAC1E,MAAI,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,UAAU,eAAe,KAAK,IAAI,CAAC,EAAG,QAAO;AACpF,SAAO,CAAC,GAAG,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,GAAG;AAAA,IACxD,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAE;AACF;AACK,MAAC,oBAAoB,CAAC,sBAAqB,qDAAkB,aAAY,CAAA;AACzE,MAAC,sBAAsB,CAAC,QAAQ;AAAA,EACpC,MAAM;AAAA,EACN,MAAM,GAAG;AAAA,EACT,MAAM,GAAG;AACV;","x_google_ignoreList":[0]}
|