@athenaintel/react 0.18.0 → 0.20.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 +195 -7
- package/dist/assets/AssetPanel.cjs +277 -0
- package/dist/assets/AssetPanel.cjs.map +1 -0
- package/dist/assets/AssetPanel.js +277 -0
- package/dist/assets/AssetPanel.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +151 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -0
- package/dist/assets/AthenaAssetEmbed.js +151 -0
- package/dist/assets/AthenaAssetEmbed.js.map +1 -0
- package/dist/assets/AthenaLayout.cjs +69 -0
- package/dist/assets/AthenaLayout.cjs.map +1 -0
- package/dist/assets/AthenaLayout.js +69 -0
- package/dist/assets/AthenaLayout.js.map +1 -0
- package/dist/assets/asset-embed-messages.cjs +39 -0
- package/dist/assets/asset-embed-messages.cjs.map +1 -0
- package/dist/assets/asset-embed-messages.js +39 -0
- package/dist/assets/asset-embed-messages.js.map +1 -0
- package/dist/assets/asset-panel-store.cjs +124 -0
- package/dist/assets/asset-panel-store.cjs.map +1 -0
- package/dist/assets/asset-panel-store.js +124 -0
- package/dist/assets/asset-panel-store.js.map +1 -0
- package/dist/assets/asset-panel-url.cjs +40 -0
- package/dist/assets/asset-panel-url.cjs.map +1 -0
- package/dist/assets/asset-panel-url.js +40 -0
- package/dist/assets/asset-panel-url.js.map +1 -0
- package/dist/assets/use-asset-embed.cjs +362 -0
- package/dist/assets/use-asset-embed.cjs.map +1 -0
- package/dist/assets/use-asset-embed.js +362 -0
- package/dist/assets/use-asset-embed.js.map +1 -0
- package/dist/{AthenaAuthContext-B3AwLA5Z.cjs → auth/AthenaAuthContext.cjs} +5 -4
- package/dist/auth/AthenaAuthContext.cjs.map +1 -0
- package/dist/{AthenaAuthContext-DQsdayH2.js → auth/AthenaAuthContext.js} +3 -3
- package/dist/auth/AthenaAuthContext.js.map +1 -0
- package/dist/auth/AthenaAuthProvider.cjs +141 -0
- package/dist/auth/AthenaAuthProvider.cjs.map +1 -0
- package/dist/auth/AthenaAuthProvider.js +141 -0
- package/dist/auth/AthenaAuthProvider.js.map +1 -0
- package/dist/{auth.cjs → auth/AthenaSSOProvider.cjs} +14 -151
- package/dist/auth/AthenaSSOProvider.cjs.map +1 -0
- package/dist/{auth.js → auth/AthenaSSOProvider.js} +4 -142
- package/dist/auth/AthenaSSOProvider.js.map +1 -0
- package/dist/auth/index.cjs +10 -0
- package/dist/auth/index.cjs.map +1 -0
- package/dist/auth/index.js +10 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +753 -0
- package/dist/chat/AthenaChat.cjs.map +1 -0
- package/dist/chat/AthenaChat.d.ts +3 -2
- package/dist/chat/AthenaChat.js +753 -0
- package/dist/chat/AthenaChat.js.map +1 -0
- package/dist/chat/AthenaChatErrorBoundary.cjs +53 -0
- package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -0
- package/dist/chat/AthenaChatErrorBoundary.js +53 -0
- package/dist/chat/AthenaChatErrorBoundary.js.map +1 -0
- package/dist/chat/StatewireApprovalCard.cjs +171 -0
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
- package/dist/chat/StatewireApprovalCard.d.ts +59 -2
- package/dist/chat/StatewireApprovalCard.js +171 -0
- package/dist/chat/StatewireApprovalCard.js.map +1 -0
- package/dist/chat/StatewireClientToolBridge.cjs +50 -0
- package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
- package/dist/chat/StatewireClientToolBridge.d.ts +3 -3
- package/dist/chat/StatewireClientToolBridge.js +50 -0
- package/dist/chat/StatewireClientToolBridge.js.map +1 -0
- package/dist/chat/StatewireQueuedMessages.cjs +432 -0
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
- package/dist/chat/StatewireQueuedMessages.d.ts +104 -6
- package/dist/chat/StatewireQueuedMessages.js +432 -0
- package/dist/chat/StatewireQueuedMessages.js.map +1 -0
- package/dist/chat/athena-citation-links.cjs +326 -0
- package/dist/chat/athena-citation-links.cjs.map +1 -0
- package/dist/chat/athena-citation-links.js +326 -0
- package/dist/chat/athena-citation-links.js.map +1 -0
- package/dist/chat/run-activity.cjs +28 -0
- package/dist/chat/run-activity.cjs.map +1 -0
- package/dist/chat/run-activity.js +28 -0
- package/dist/chat/run-activity.js.map +1 -0
- package/dist/chat/statewire-approval.d.ts +1 -1
- package/dist/chat/statewire-banners.cjs +83 -0
- package/dist/chat/statewire-banners.cjs.map +1 -0
- package/dist/chat/statewire-banners.js +83 -0
- package/dist/chat/statewire-banners.js.map +1 -0
- package/dist/chat/statewire-client-tools.cjs +73 -0
- package/dist/chat/statewire-client-tools.cjs.map +1 -0
- package/dist/chat/statewire-client-tools.d.ts +15 -21
- package/dist/chat/statewire-client-tools.js +73 -0
- package/dist/chat/statewire-client-tools.js.map +1 -0
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -0
- package/dist/chat/super-grouping/CollapsibleGroup.d.ts +52 -11
- package/dist/chat/super-grouping/CollapsibleGroup.js +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +361 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +81 -21
- package/dist/chat/super-grouping/SuperGroupingCard.js +361 -0
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.cjs +151 -0
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.d.ts +91 -0
- package/dist/chat/super-grouping/activity-timeline.js +151 -0
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -0
- package/dist/chat/super-grouping/grouping-function.cjs +55 -0
- package/dist/chat/super-grouping/grouping-function.cjs.map +1 -0
- package/dist/chat/super-grouping/grouping-function.d.ts +13 -10
- package/dist/chat/super-grouping/grouping-function.js +55 -0
- package/dist/chat/super-grouping/grouping-function.js.map +1 -0
- package/dist/chat/super-grouping/index.cjs +26 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -0
- package/dist/chat/super-grouping/index.d.ts +12 -0
- package/dist/chat/super-grouping/index.js +26 -0
- package/dist/chat/super-grouping/index.js.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.cjs +96 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.d.ts +8 -1
- package/dist/chat/super-grouping/toolkit-map.js +96 -0
- package/dist/chat/super-grouping/toolkit-map.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +101 -0
- package/dist/chat/tiptap-text.cjs.map +1 -0
- package/dist/chat/tiptap-text.js +101 -0
- package/dist/chat/tiptap-text.js.map +1 -0
- package/dist/chat/tooltip-icon-button.cjs +32 -0
- package/dist/chat/tooltip-icon-button.cjs.map +1 -0
- package/dist/chat/tooltip-icon-button.js +32 -0
- package/dist/chat/tooltip-icon-button.js.map +1 -0
- package/dist/chat/use-athena-run-live.cjs +23 -0
- package/dist/chat/use-athena-run-live.cjs.map +1 -0
- package/dist/chat/use-athena-run-live.d.ts +10 -0
- package/dist/chat/use-athena-run-live.js +23 -0
- package/dist/chat/use-athena-run-live.js.map +1 -0
- package/dist/chat/use-statewire-approval-request.cjs +46 -0
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
- package/dist/chat/use-statewire-approval-request.d.ts +44 -0
- package/dist/chat/use-statewire-approval-request.js +46 -0
- package/dist/chat/use-statewire-approval-request.js.map +1 -0
- package/dist/chat-ui/auth/sign-in-card.cjs +128 -0
- package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -0
- package/dist/chat-ui/auth/sign-in-card.js +128 -0
- package/dist/chat-ui/auth/sign-in-card.js.map +1 -0
- package/dist/chat-ui/composer/composer-action.cjs +11 -0
- package/dist/chat-ui/composer/composer-action.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-action.d.ts +5 -8
- package/dist/chat-ui/composer/composer-action.js +11 -0
- package/dist/chat-ui/composer/composer-action.js.map +1 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.cjs +25 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.cjs.map +1 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.js +25 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +590 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.d.ts +44 -7
- package/dist/chat-ui/composer/tiptap-composer.js +590 -0
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -0
- package/dist/chat-ui/header/chat-header.cjs +33 -0
- package/dist/chat-ui/header/chat-header.cjs.map +1 -0
- package/dist/chat-ui/header/chat-header.js +33 -0
- package/dist/chat-ui/header/chat-header.js.map +1 -0
- package/dist/chat-ui/header/conversation-history-panel.cjs +369 -0
- package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -0
- package/dist/chat-ui/header/conversation-history-panel.d.ts +11 -1
- package/dist/chat-ui/header/conversation-history-panel.js +369 -0
- package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
- package/dist/chat-ui/index.cjs +139 -0
- package/dist/chat-ui/index.cjs.map +1 -0
- package/dist/chat-ui/index.d.ts +11 -4
- package/dist/chat-ui/index.js +139 -0
- package/dist/chat-ui/index.js.map +1 -0
- package/dist/chat-ui/lib/asset-urls.cjs +18 -0
- package/dist/chat-ui/lib/asset-urls.cjs.map +1 -0
- package/dist/chat-ui/lib/asset-urls.js +18 -0
- package/dist/chat-ui/lib/asset-urls.js.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.cjs +208 -0
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.js +208 -0
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.cjs +184 -0
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.d.ts +24 -2
- package/dist/chat-ui/mentions/mention-extension.js +184 -0
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +35 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +35 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +95 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +5 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +95 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +116 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +116 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +31 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +31 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs +27 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js +27 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +62 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +62 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +63 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js +63 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs +11 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js +11 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs +33 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.js +33 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +58 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js +58 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +81 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js +81 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.cjs +18 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.js +18 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +123 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +10 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +123 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs +37 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.js +37 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +134 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +134 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs +91 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.js +91 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +137 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +137 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +375 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +16 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +375 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/types.cjs +9 -0
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +14 -0
- package/dist/chat-ui/mentions/suggestions/data/types.js +9 -0
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +173 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +14 -4
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +173 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +45 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +45 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs +43 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js +43 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs +14 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js +14 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs +48 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js +48 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +71 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +71 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/shims.d.ts +0 -4
- package/dist/chat-ui/messages/continue-pill.cjs +54 -0
- package/dist/chat-ui/messages/continue-pill.cjs.map +1 -0
- package/dist/chat-ui/messages/continue-pill.js +54 -0
- package/dist/chat-ui/messages/continue-pill.js.map +1 -0
- package/dist/chat-ui/messages/message-actions-config.cjs +12 -0
- package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -0
- package/dist/chat-ui/messages/message-actions-config.js +12 -0
- package/dist/chat-ui/messages/message-actions-config.js.map +1 -0
- package/dist/chat-ui/messages/message-components.cjs +343 -0
- package/dist/chat-ui/messages/message-components.cjs.map +1 -0
- package/dist/chat-ui/messages/message-components.d.ts +13 -1
- package/dist/chat-ui/messages/message-components.js +343 -0
- package/dist/chat-ui/messages/message-components.js.map +1 -0
- package/dist/chat-ui/messages/running-indicator.cjs +49 -0
- package/dist/chat-ui/messages/running-indicator.cjs.map +1 -0
- package/dist/chat-ui/messages/running-indicator.js +49 -0
- package/dist/chat-ui/messages/running-indicator.js.map +1 -0
- package/dist/chat-ui/messages/runtime-message.cjs +65 -0
- package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
- package/dist/chat-ui/messages/runtime-message.d.ts +2 -3
- package/dist/chat-ui/messages/runtime-message.js +65 -0
- package/dist/chat-ui/messages/runtime-message.js.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.cjs +154 -0
- package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.d.ts +52 -7
- package/dist/chat-ui/messages/statewire-continue-run.js +154 -0
- package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs +61 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.d.ts +5 -2
- package/dist/chat-ui/messages/user-edit-composer.js +61 -0
- package/dist/chat-ui/messages/user-edit-composer.js.map +1 -0
- package/dist/chat-ui/messages/voice-delegation-card.cjs +51 -0
- package/dist/chat-ui/messages/voice-delegation-card.cjs.map +1 -0
- package/dist/chat-ui/messages/voice-delegation-card.d.ts +26 -0
- package/dist/chat-ui/messages/voice-delegation-card.js +51 -0
- package/dist/chat-ui/messages/voice-delegation-card.js.map +1 -0
- package/dist/chat-ui/statewire.cjs +39 -0
- package/dist/chat-ui/statewire.cjs.map +1 -0
- package/dist/chat-ui/statewire.d.ts +19 -0
- package/dist/chat-ui/statewire.js +39 -0
- package/dist/chat-ui/statewire.js.map +1 -0
- package/dist/chat-ui/thread/chat-composer-dock.cjs +37 -0
- package/dist/chat-ui/thread/chat-composer-dock.cjs.map +1 -0
- package/dist/chat-ui/thread/chat-composer-dock.js +37 -0
- package/dist/chat-ui/thread/chat-composer-dock.js.map +1 -0
- package/dist/chat-ui/thread/chat-thread-shell.cjs +102 -0
- package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -0
- package/dist/chat-ui/thread/chat-thread-shell.d.ts +7 -1
- package/dist/chat-ui/thread/chat-thread-shell.js +102 -0
- package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -0
- package/dist/chat-ui/thread/composer-send-or-stop.cjs +75 -0
- package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -0
- package/dist/chat-ui/thread/composer-send-or-stop.d.ts +0 -6
- package/dist/chat-ui/thread/composer-send-or-stop.js +75 -0
- package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs +134 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +52 -0
- package/dist/chat-ui/thread/statewire-history-edge.js +134 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -0
- package/dist/{collab.cjs → collab/client.cjs} +6 -166
- package/dist/collab/client.cjs.map +1 -0
- package/dist/{collab.js → collab/client.js} +5 -164
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/close-policy.cjs +14 -0
- package/dist/collab/close-policy.cjs.map +1 -0
- package/dist/collab/close-policy.js +14 -0
- package/dist/collab/close-policy.js.map +1 -0
- package/dist/collab/index.cjs +17 -0
- package/dist/collab/index.cjs.map +1 -0
- package/dist/collab/index.js +17 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/mint.cjs +59 -0
- package/dist/collab/mint.cjs.map +1 -0
- package/dist/collab/mint.js +59 -0
- package/dist/collab/mint.js.map +1 -0
- package/dist/collab/react.cjs +58 -0
- package/dist/collab/react.cjs.map +1 -0
- package/dist/collab/react.js +58 -0
- package/dist/collab/react.js.map +1 -0
- package/dist/collab/shape.cjs +45 -0
- package/dist/collab/shape.cjs.map +1 -0
- package/dist/collab/shape.js +45 -0
- package/dist/collab/shape.js.map +1 -0
- package/dist/composer/AttachmentContext.cjs +40 -0
- package/dist/composer/AttachmentContext.cjs.map +1 -0
- package/dist/composer/AttachmentContext.js +40 -0
- package/dist/composer/AttachmentContext.js.map +1 -0
- package/dist/composer/ComposerAttachmentPreview.cjs +39 -0
- package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -0
- package/dist/composer/ComposerAttachmentPreview.js +39 -0
- package/dist/composer/ComposerAttachmentPreview.js.map +1 -0
- package/dist/composer/ComposerDropZone.cjs +61 -0
- package/dist/composer/ComposerDropZone.cjs.map +1 -0
- package/dist/composer/ComposerDropZone.d.ts +1 -1
- package/dist/composer/ComposerDropZone.js +61 -0
- package/dist/composer/ComposerDropZone.js.map +1 -0
- package/dist/composer/ComposerQuotePreview.cjs +42 -0
- package/dist/composer/ComposerQuotePreview.cjs.map +1 -0
- package/dist/composer/ComposerQuotePreview.js +42 -0
- package/dist/composer/ComposerQuotePreview.js.map +1 -0
- package/dist/composer/FileUploadButton.cjs +65 -0
- package/dist/composer/FileUploadButton.cjs.map +1 -0
- package/dist/composer/FileUploadButton.d.ts +1 -1
- package/dist/composer/FileUploadButton.js +65 -0
- package/dist/composer/FileUploadButton.js.map +1 -0
- package/dist/composer/QuoteContext.cjs +68 -0
- package/dist/composer/QuoteContext.cjs.map +1 -0
- package/dist/composer/QuoteContext.js +68 -0
- package/dist/composer/QuoteContext.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +25 -0
- package/dist/composer/build-composed-message.cjs.map +1 -0
- package/dist/composer/build-composed-message.js +25 -0
- package/dist/composer/build-composed-message.js.map +1 -0
- package/dist/composer/clipboard.cjs +62 -0
- package/dist/composer/clipboard.cjs.map +1 -0
- package/dist/composer/clipboard.d.ts +27 -3
- package/dist/composer/clipboard.js +62 -0
- package/dist/composer/clipboard.js.map +1 -0
- package/dist/composer/useAppendToComposer.cjs +21 -0
- package/dist/composer/useAppendToComposer.cjs.map +1 -0
- package/dist/composer/useAppendToComposer.js +21 -0
- package/dist/composer/useAppendToComposer.js.map +1 -0
- package/dist/composer/useAttachFiles.cjs +40 -0
- package/dist/composer/useAttachFiles.cjs.map +1 -0
- package/dist/composer/useAttachFiles.d.ts +24 -0
- package/dist/composer/useAttachFiles.js +40 -0
- package/dist/composer/useAttachFiles.js.map +1 -0
- package/dist/composer/useComposerAttachment.cjs +25 -0
- package/dist/composer/useComposerAttachment.cjs.map +1 -0
- package/dist/composer/useComposerAttachment.js +25 -0
- package/dist/composer/useComposerAttachment.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +123 -0
- package/dist/composer/useFileUpload.cjs.map +1 -0
- package/dist/composer/useFileUpload.js +123 -0
- package/dist/composer/useFileUpload.js.map +1 -0
- package/dist/composer/useSendMessage.cjs +22 -0
- package/dist/composer/useSendMessage.cjs.map +1 -0
- package/dist/composer/useSendMessage.js +22 -0
- package/dist/composer/useSendMessage.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs +329 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -0
- package/dist/diagnostics/athena-diagnostics.d.ts +1 -1
- package/dist/diagnostics/athena-diagnostics.js +329 -0
- package/dist/diagnostics/athena-diagnostics.js.map +1 -0
- package/dist/diagnostics/errors.cjs +89 -0
- package/dist/diagnostics/errors.cjs.map +1 -0
- package/dist/diagnostics/errors.d.ts +4 -0
- package/dist/diagnostics/errors.js +89 -0
- package/dist/diagnostics/errors.js.map +1 -0
- package/dist/diagnostics/useAthenaDiagnostics.cjs +16 -0
- package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -0
- package/dist/diagnostics/useAthenaDiagnostics.js +16 -0
- package/dist/diagnostics/useAthenaDiagnostics.js.map +1 -0
- package/dist/index.cjs +283 -30852
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +27 -10
- package/dist/index.js +155 -30711
- package/dist/index.js.map +1 -1
- package/dist/lib/athena-urls.cjs +194 -0
- package/dist/lib/athena-urls.cjs.map +1 -0
- package/dist/lib/athena-urls.d.ts +20 -5
- package/dist/lib/athena-urls.js +194 -0
- package/dist/lib/athena-urls.js.map +1 -0
- package/dist/lib/posthog/before-send.cjs +58 -0
- package/dist/lib/posthog/before-send.cjs.map +1 -0
- package/dist/lib/posthog/before-send.js +58 -0
- package/dist/lib/posthog/before-send.js.map +1 -0
- package/dist/lib/posthog/capture-gate.cjs +322 -0
- package/dist/lib/posthog/capture-gate.cjs.map +1 -0
- package/dist/lib/posthog/capture-gate.js +322 -0
- package/dist/lib/posthog/capture-gate.js.map +1 -0
- package/dist/lib/posthog/wrap-posthog-client.cjs +163 -0
- package/dist/lib/posthog/wrap-posthog-client.cjs.map +1 -0
- package/dist/lib/posthog/wrap-posthog-client.js +163 -0
- package/dist/lib/posthog/wrap-posthog-client.js.map +1 -0
- package/dist/lib/utils.cjs +12 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +77 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +77 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +181 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +181 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +1 -0
- package/dist/packages/agent-runtime/src/asset-attachment.cjs +19 -0
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/asset-attachment.js +19 -0
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/packages/agent-runtime/src/auth-denial.cjs +28 -0
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/auth-denial.js +28 -0
- package/dist/packages/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +270 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js +270 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tools.cjs +137 -0
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tools.js +137 -0
- package/dist/packages/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-index.cjs +80 -0
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-index.js +80 -0
- package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs +86 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.js +86 -0
- package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs +55 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js +55 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/packages/agent-runtime/src/edit-command.cjs +89 -0
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/edit-command.js +89 -0
- package/dist/packages/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/packages/agent-runtime/src/errors.cjs +95 -0
- package/dist/packages/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/errors.js +95 -0
- package/dist/packages/agent-runtime/src/errors.js.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +236 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +236 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs +117 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.js +117 -0
- package/dist/packages/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/packages/agent-runtime/src/message-author.cjs +31 -0
- package/dist/packages/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/message-author.js +31 -0
- package/dist/packages/agent-runtime/src/message-author.js.map +1 -0
- package/dist/packages/agent-runtime/src/message-window.cjs +85 -0
- package/dist/packages/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/message-window.js +85 -0
- package/dist/packages/agent-runtime/src/message-window.js.map +1 -0
- package/dist/packages/agent-runtime/src/messages.cjs +433 -0
- package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/messages.js +433 -0
- package/dist/packages/agent-runtime/src/messages.js.map +1 -0
- package/dist/packages/agent-runtime/src/model-context.cjs +13 -0
- package/dist/packages/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/model-context.js +13 -0
- package/dist/packages/agent-runtime/src/model-context.js.map +1 -0
- package/dist/packages/agent-runtime/src/optimistic-content.cjs +17 -0
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/optimistic-content.js +17 -0
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.cjs +33 -0
- package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.js +33 -0
- package/dist/packages/agent-runtime/src/protocol.js.map +1 -0
- package/dist/packages/agent-runtime/src/queue.cjs +67 -0
- package/dist/packages/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/queue.js +67 -0
- package/dist/packages/agent-runtime/src/queue.js.map +1 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +47 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +47 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/packages/agent-runtime/src/runtime-messages.cjs +187 -0
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/runtime-messages.js +187 -0
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/packages/agent-runtime/src/send-recovery.cjs +128 -0
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/send-recovery.js +128 -0
- package/dist/packages/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs +249 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js +249 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-state.cjs +16 -0
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-state.js +16 -0
- package/dist/packages/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs +41 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.js +41 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +6 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js +6 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs +214 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.js +214 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-extras.cjs +38 -0
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-extras.js +38 -0
- package/dist/packages/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +90 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +90 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-status.cjs +49 -0
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-status.js +49 -0
- package/dist/packages/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs +1802 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js +1802 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-outputs.cjs +46 -0
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-outputs.js +46 -0
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-result.cjs +151 -0
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-result.js +151 -0
- package/dist/packages/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs +139 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.js +139 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +28 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +28 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +138 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +138 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +387 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +387 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs +133 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js +133 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/packages/agent-runtime/src/voice-presentation.cjs +37 -0
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/voice-presentation.js +37 -0
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/packages/react/package.json.cjs +9 -0
- package/dist/packages/react/package.json.cjs.map +1 -0
- package/dist/packages/react/package.json.js +9 -0
- package/dist/packages/react/package.json.js.map +1 -0
- package/dist/{AthenaContext-B1QMhIP-.cjs → provider/AthenaContext.cjs} +5 -4
- package/dist/provider/AthenaContext.cjs.map +1 -0
- package/dist/{AthenaContext-MOslgOmE.js → provider/AthenaContext.js} +3 -3
- package/dist/provider/AthenaContext.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +403 -0
- package/dist/provider/AthenaProvider.cjs.map +1 -0
- package/dist/provider/AthenaProvider.d.ts +4 -2
- package/dist/provider/AthenaProvider.js +403 -0
- package/dist/provider/AthenaProvider.js.map +1 -0
- package/dist/provider/PostHogProvider.cjs +81 -0
- package/dist/provider/PostHogProvider.cjs.map +1 -0
- package/dist/provider/PostHogProvider.js +59 -0
- package/dist/provider/PostHogProvider.js.map +1 -0
- package/dist/provider/config.d.ts +17 -9
- package/dist/provider/statewire-lifecycle-context.cjs +10 -0
- package/dist/provider/statewire-lifecycle-context.cjs.map +1 -0
- package/dist/provider/statewire-lifecycle-context.js +10 -0
- package/dist/provider/statewire-lifecycle-context.js.map +1 -0
- package/dist/provider/statewire-window-context.cjs +10 -0
- package/dist/provider/statewire-window-context.cjs.map +1 -0
- package/dist/provider/statewire-window-context.d.ts +12 -0
- package/dist/provider/statewire-window-context.js +10 -0
- package/dist/provider/statewire-window-context.js.map +1 -0
- package/dist/runtime/auth.cjs +309 -0
- package/dist/runtime/auth.cjs.map +1 -0
- package/dist/runtime/auth.d.ts +19 -18
- package/dist/runtime/auth.js +309 -0
- package/dist/runtime/auth.js.map +1 -0
- package/dist/runtime/statewire-auth-headers.cjs +18 -0
- package/dist/runtime/statewire-auth-headers.cjs.map +1 -0
- package/dist/runtime/statewire-auth-headers.d.ts +38 -0
- package/dist/runtime/statewire-auth-headers.js +18 -0
- package/dist/runtime/statewire-auth-headers.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +67 -0
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
- package/dist/runtime/statewire-lifecycle.d.ts +25 -0
- package/dist/runtime/statewire-lifecycle.js +67 -0
- package/dist/runtime/statewire-lifecycle.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +68 -0
- package/dist/runtime/statewire-run-config.cjs.map +1 -0
- package/dist/runtime/statewire-run-config.js +68 -0
- package/dist/runtime/statewire-run-config.js.map +1 -0
- package/dist/runtime/statewire-session-key.cjs +11 -0
- package/dist/runtime/statewire-session-key.cjs.map +1 -0
- package/dist/runtime/statewire-session-key.d.ts +13 -0
- package/dist/runtime/statewire-session-key.js +11 -0
- package/dist/runtime/statewire-session-key.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +179 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +36 -5
- package/dist/runtime/useAthenaStatewireRuntime.js +180 -0
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/theme/index.cjs +182 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.js +182 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/threads/ThreadList.cjs +55 -0
- package/dist/threads/ThreadList.cjs.map +1 -0
- package/dist/threads/ThreadList.js +55 -0
- package/dist/threads/ThreadList.js.map +1 -0
- package/dist/threads/api.cjs +208 -0
- package/dist/threads/api.cjs.map +1 -0
- package/dist/threads/api.js +208 -0
- package/dist/threads/api.js.map +1 -0
- package/dist/threads/conversation-list-fetcher.cjs +70 -0
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
- package/dist/threads/conversation-list-fetcher.js +70 -0
- package/dist/threads/conversation-list-fetcher.js.map +1 -0
- package/dist/threads/mint-thread-id.cjs +7 -0
- package/dist/threads/mint-thread-id.cjs.map +1 -0
- package/dist/threads/mint-thread-id.d.ts +8 -0
- package/dist/threads/mint-thread-id.js +7 -0
- package/dist/threads/mint-thread-id.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +231 -0
- package/dist/threads/statewire-thread-list.cjs.map +1 -0
- package/dist/threads/statewire-thread-list.d.ts +20 -4
- package/dist/threads/statewire-thread-list.js +231 -0
- package/dist/threads/statewire-thread-list.js.map +1 -0
- package/dist/threads/thread-id-context.cjs +22 -0
- package/dist/threads/thread-id-context.cjs.map +1 -0
- package/dist/threads/thread-id-context.d.ts +9 -0
- package/dist/threads/thread-id-context.js +22 -0
- package/dist/threads/thread-id-context.js.map +1 -0
- package/dist/threads/title.cjs +95 -0
- package/dist/threads/title.cjs.map +1 -0
- package/dist/threads/title.js +95 -0
- package/dist/threads/title.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +79 -0
- package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
- package/dist/threads/use-rest-conversation-history.js +79 -0
- package/dist/threads/use-rest-conversation-history.js.map +1 -0
- package/dist/threads/use-statewire-conversation-history.cjs +243 -0
- package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
- package/dist/threads/use-statewire-conversation-history.js +243 -0
- package/dist/threads/use-statewire-conversation-history.js.map +1 -0
- package/dist/threads/useAthenaThreadManager.cjs +24 -0
- package/dist/threads/useAthenaThreadManager.cjs.map +1 -0
- package/dist/threads/useAthenaThreadManager.js +24 -0
- package/dist/threads/useAthenaThreadManager.js.map +1 -0
- package/dist/toolkits/index.cjs +279 -0
- package/dist/toolkits/index.cjs.map +1 -0
- package/dist/toolkits/index.js +279 -0
- package/dist/toolkits/index.js.map +1 -0
- package/dist/tools/NestedPtcMessages.cjs +46 -0
- package/dist/tools/NestedPtcMessages.cjs.map +1 -0
- package/dist/tools/NestedPtcMessages.js +46 -0
- package/dist/tools/NestedPtcMessages.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +145 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -0
- package/dist/tools/append-document-tool-ui.js +145 -0
- package/dist/tools/append-document-tool-ui.js.map +1 -0
- package/dist/tools/asset-utils.cjs +16 -0
- package/dist/tools/asset-utils.cjs.map +1 -0
- package/dist/tools/asset-utils.js +16 -0
- package/dist/tools/asset-utils.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +121 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -0
- package/dist/tools/auto-open-tools.js +121 -0
- package/dist/tools/auto-open-tools.js.map +1 -0
- package/dist/tools/file-tool-uis.cjs +108 -0
- package/dist/tools/file-tool-uis.cjs.map +1 -0
- package/dist/tools/file-tool-uis.js +108 -0
- package/dist/tools/file-tool-uis.js.map +1 -0
- package/dist/tools/index.cjs +56 -0
- package/dist/tools/index.cjs.map +1 -0
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/index.js +56 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/misc-tool-uis.cjs +54 -0
- package/dist/tools/misc-tool-uis.cjs.map +1 -0
- package/dist/tools/misc-tool-uis.d.ts +2 -0
- package/dist/tools/misc-tool-uis.js +54 -0
- package/dist/tools/misc-tool-uis.js.map +1 -0
- package/dist/tools/primitives.cjs +166 -0
- package/dist/tools/primitives.cjs.map +1 -0
- package/dist/tools/primitives.d.ts +41 -0
- package/dist/tools/primitives.js +166 -0
- package/dist/tools/primitives.js.map +1 -0
- package/dist/tools/read-asset-tool-ui.cjs +284 -0
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -0
- package/dist/tools/read-asset-tool-ui.js +284 -0
- package/dist/tools/read-asset-tool-ui.js.map +1 -0
- package/dist/tools/todo-plan-store.cjs +88 -0
- package/dist/tools/todo-plan-store.cjs.map +1 -0
- package/dist/tools/todo-plan-store.js +88 -0
- package/dist/tools/todo-plan-store.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +667 -0
- package/dist/tools/tool-fallback.cjs.map +1 -0
- package/dist/tools/tool-fallback.d.ts +78 -6
- package/dist/tools/tool-fallback.js +667 -0
- package/dist/tools/tool-fallback.js.map +1 -0
- package/dist/tools/tool-icons.cjs +61 -0
- package/dist/tools/tool-icons.cjs.map +1 -0
- package/dist/tools/tool-icons.d.ts +10 -0
- package/dist/tools/tool-icons.js +61 -0
- package/dist/tools/tool-icons.js.map +1 -0
- package/dist/tools/tool-uis.cjs +3049 -0
- package/dist/tools/tool-uis.cjs.map +1 -0
- package/dist/tools/tool-uis.d.ts +1 -23
- package/dist/tools/tool-uis.js +3049 -0
- package/dist/tools/tool-uis.js.map +1 -0
- package/dist/tools/voice-update-tool-ui.cjs +89 -0
- package/dist/tools/voice-update-tool-ui.cjs.map +1 -0
- package/dist/tools/voice-update-tool-ui.d.ts +27 -0
- package/dist/tools/voice-update-tool-ui.js +89 -0
- package/dist/tools/voice-update-tool-ui.js.map +1 -0
- package/dist/tools/write-todos-tool-ui.cjs +270 -0
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -0
- package/dist/tools/write-todos-tool-ui.js +270 -0
- package/dist/tools/write-todos-tool-ui.js.map +1 -0
- package/dist/ui/button.cjs +57 -0
- package/dist/ui/button.cjs.map +1 -0
- package/dist/ui/button.js +57 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/collapsible.cjs +17 -0
- package/dist/ui/collapsible.cjs.map +1 -0
- package/dist/ui/collapsible.js +17 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/tooltip.cjs +48 -0
- package/dist/ui/tooltip.cjs.map +1 -0
- package/dist/ui/tooltip.js +48 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/version.cjs +6 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +35 -19
- package/dist/AthenaAuthContext-B3AwLA5Z.cjs.map +0 -1
- package/dist/AthenaAuthContext-DQsdayH2.js.map +0 -1
- package/dist/AthenaContext-B1QMhIP-.cjs.map +0 -1
- package/dist/AthenaContext-MOslgOmE.js.map +0 -1
- package/dist/auth.cjs.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/chat/ComposerEditorContext.d.ts +0 -36
- package/dist/chat/super-grouping/tool-status-labels.d.ts +0 -1
- package/dist/chat/tiptap-composer.d.ts +0 -7
- package/dist/chat-ui.cjs +0 -2667
- package/dist/chat-ui.cjs.map +0 -1
- package/dist/chat-ui.js +0 -2668
- package/dist/chat-ui.js.map +0 -1
- package/dist/collab.cjs.map +0 -1
- package/dist/collab.js.map +0 -1
- package/dist/mentions/composer-keybinds.d.ts +0 -5
- package/dist/mentions/mention-extension.d.ts +0 -6
- package/dist/mentions/mention-icons.d.ts +0 -4
- package/dist/mentions/mention-node-view.d.ts +0 -2
- package/dist/mentions/mention-suggestion-list.d.ts +0 -14
- package/dist/mentions/mention-suggestion-popup.d.ts +0 -15
- package/dist/mentions/mention-suggestions-extension.d.ts +0 -11
- package/dist/mentions/mention-types.d.ts +0 -21
- package/dist/mentions/mention-utils.d.ts +0 -23
- package/dist/mentions/use-mention-suggestions.d.ts +0 -29
- package/dist/use-rest-conversation-history-Bs5qn5G3.js +0 -37322
- package/dist/use-rest-conversation-history-Bs5qn5G3.js.map +0 -1
- package/dist/use-rest-conversation-history-Dm0rdQgT.cjs +0 -37358
- package/dist/use-rest-conversation-history-Dm0rdQgT.cjs.map +0 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const MAX_RETRY_AFTER_MS = 3e4;
|
|
4
|
+
const clampRetryAfter = (ms) => {
|
|
5
|
+
if (!Number.isFinite(ms)) return null;
|
|
6
|
+
return Math.min(Math.max(0, Math.round(ms)), MAX_RETRY_AFTER_MS);
|
|
7
|
+
};
|
|
8
|
+
function parseRetryAfterHeaderMs(value, now = () => Date.now()) {
|
|
9
|
+
if (typeof value !== "string") return null;
|
|
10
|
+
const trimmed = value.trim();
|
|
11
|
+
if (trimmed === "") return null;
|
|
12
|
+
if (/^\d+$/.test(trimmed)) return clampRetryAfter(Number(trimmed) * 1e3);
|
|
13
|
+
if (!/[A-Za-z]/.test(trimmed)) return null;
|
|
14
|
+
const at = Date.parse(trimmed);
|
|
15
|
+
if (Number.isNaN(at)) return null;
|
|
16
|
+
return clampRetryAfter(at - now());
|
|
17
|
+
}
|
|
18
|
+
function parseRetryAfterFromCloseReason(reason) {
|
|
19
|
+
if (typeof reason !== "string" || reason === "") return null;
|
|
20
|
+
const match = /retry-after(-ms)?\s*[=:]\s*(\d+)/i.exec(reason);
|
|
21
|
+
if (!match) return null;
|
|
22
|
+
const amount = Number(match[2]);
|
|
23
|
+
return clampRetryAfter(match[1] ? amount : amount * 1e3);
|
|
24
|
+
}
|
|
25
|
+
function createAttachRetryGate({
|
|
26
|
+
now = () => Date.now(),
|
|
27
|
+
wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
28
|
+
} = {}) {
|
|
29
|
+
const floors = /* @__PURE__ */ new Map();
|
|
30
|
+
const remainingMs = (key) => {
|
|
31
|
+
const until = floors.get(key);
|
|
32
|
+
if (until === void 0) return 0;
|
|
33
|
+
const remaining = until - now();
|
|
34
|
+
if (remaining <= 0) {
|
|
35
|
+
floors.delete(key);
|
|
36
|
+
return 0;
|
|
37
|
+
}
|
|
38
|
+
return remaining;
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
noteRetryAfter(key, delayMs) {
|
|
42
|
+
const clamped = clampRetryAfter(delayMs);
|
|
43
|
+
if (clamped === null || clamped === 0) return;
|
|
44
|
+
const until = now() + clamped;
|
|
45
|
+
const existing = floors.get(key);
|
|
46
|
+
if (existing === void 0 || existing < until) floors.set(key, until);
|
|
47
|
+
},
|
|
48
|
+
async waitForDial(key) {
|
|
49
|
+
for (let remaining = remainingMs(key); remaining > 0; remaining = remainingMs(key)) {
|
|
50
|
+
await wait(remaining);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
remainingMs,
|
|
54
|
+
reset(key) {
|
|
55
|
+
if (key === void 0) floors.clear();
|
|
56
|
+
else floors.delete(key);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const attachRetryGate = createAttachRetryGate();
|
|
61
|
+
const defaultNow = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
62
|
+
const isHeartbeatFrame = (data) => {
|
|
63
|
+
const text = String(data);
|
|
64
|
+
return text === "" || text === "{}";
|
|
65
|
+
};
|
|
66
|
+
function instrumentAttachSocket({
|
|
67
|
+
socket,
|
|
68
|
+
url,
|
|
69
|
+
onEvent,
|
|
70
|
+
now = defaultNow
|
|
71
|
+
}) {
|
|
72
|
+
const createdAt = now();
|
|
73
|
+
let openedAt = null;
|
|
74
|
+
let helloSeen = false;
|
|
75
|
+
const emit = (event) => {
|
|
76
|
+
try {
|
|
77
|
+
onEvent(event);
|
|
78
|
+
} catch {
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
let openHandler = null;
|
|
82
|
+
let messageHandler = null;
|
|
83
|
+
let closeHandler = null;
|
|
84
|
+
socket.onopen = (event) => {
|
|
85
|
+
openedAt = now();
|
|
86
|
+
emit({ type: "socket-open", url, openMs: openedAt - createdAt });
|
|
87
|
+
openHandler == null ? void 0 : openHandler(event);
|
|
88
|
+
};
|
|
89
|
+
socket.onmessage = (event) => {
|
|
90
|
+
if (helloSeen || isHeartbeatFrame(event.data)) {
|
|
91
|
+
messageHandler == null ? void 0 : messageHandler(event);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
helloSeen = true;
|
|
95
|
+
const startedAt = now();
|
|
96
|
+
try {
|
|
97
|
+
messageHandler == null ? void 0 : messageHandler(event);
|
|
98
|
+
} finally {
|
|
99
|
+
const finishedAt = now();
|
|
100
|
+
emit({
|
|
101
|
+
type: "hello",
|
|
102
|
+
url,
|
|
103
|
+
bytes: String(event.data).length,
|
|
104
|
+
handlerMs: finishedAt - startedAt,
|
|
105
|
+
sinceOpenMs: openedAt === null ? null : startedAt - openedAt
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
socket.onclose = (event) => {
|
|
110
|
+
const closedAt = now();
|
|
111
|
+
emit({
|
|
112
|
+
type: "socket-close",
|
|
113
|
+
url,
|
|
114
|
+
code: event == null ? void 0 : event.code,
|
|
115
|
+
reason: event == null ? void 0 : event.reason,
|
|
116
|
+
sinceOpenMs: openedAt === null ? null : closedAt - openedAt
|
|
117
|
+
});
|
|
118
|
+
const retryAfter = parseRetryAfterFromCloseReason(event == null ? void 0 : event.reason);
|
|
119
|
+
if (retryAfter !== null) {
|
|
120
|
+
emit({
|
|
121
|
+
type: "retry-after",
|
|
122
|
+
url,
|
|
123
|
+
delayMs: retryAfter,
|
|
124
|
+
source: "ws-close"
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
closeHandler == null ? void 0 : closeHandler(event);
|
|
128
|
+
};
|
|
129
|
+
return {
|
|
130
|
+
get protocol() {
|
|
131
|
+
return socket.protocol;
|
|
132
|
+
},
|
|
133
|
+
get readyState() {
|
|
134
|
+
return socket.readyState;
|
|
135
|
+
},
|
|
136
|
+
get onopen() {
|
|
137
|
+
return openHandler;
|
|
138
|
+
},
|
|
139
|
+
set onopen(handler) {
|
|
140
|
+
openHandler = handler;
|
|
141
|
+
},
|
|
142
|
+
get onmessage() {
|
|
143
|
+
return messageHandler;
|
|
144
|
+
},
|
|
145
|
+
set onmessage(handler) {
|
|
146
|
+
messageHandler = handler;
|
|
147
|
+
},
|
|
148
|
+
get onclose() {
|
|
149
|
+
return closeHandler;
|
|
150
|
+
},
|
|
151
|
+
set onclose(handler) {
|
|
152
|
+
closeHandler = handler;
|
|
153
|
+
},
|
|
154
|
+
get onerror() {
|
|
155
|
+
return socket.onerror;
|
|
156
|
+
},
|
|
157
|
+
set onerror(handler) {
|
|
158
|
+
socket.onerror = handler;
|
|
159
|
+
},
|
|
160
|
+
send: (data) => socket.send(data),
|
|
161
|
+
close: (code, reason) => socket.close(code, reason)
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function instrumentedWebSocketConstructor({
|
|
165
|
+
Base,
|
|
166
|
+
url,
|
|
167
|
+
onEvent,
|
|
168
|
+
now
|
|
169
|
+
}) {
|
|
170
|
+
function InstrumentedWebSocket(socketUrl, protocols) {
|
|
171
|
+
return instrumentAttachSocket({
|
|
172
|
+
socket: new Base(socketUrl, protocols),
|
|
173
|
+
url,
|
|
174
|
+
onEvent,
|
|
175
|
+
...now && { now }
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return InstrumentedWebSocket;
|
|
179
|
+
}
|
|
180
|
+
function instrumentedAttachFetch({
|
|
181
|
+
baseFetch,
|
|
182
|
+
url,
|
|
183
|
+
onEvent,
|
|
184
|
+
now
|
|
185
|
+
}) {
|
|
186
|
+
const wrapped = async (input, init) => {
|
|
187
|
+
const response = await baseFetch(input, init);
|
|
188
|
+
if (!response.ok && (response.status === 503 || response.status === 429)) {
|
|
189
|
+
const delayMs = parseRetryAfterHeaderMs(
|
|
190
|
+
response.headers.get("retry-after"),
|
|
191
|
+
now
|
|
192
|
+
);
|
|
193
|
+
if (delayMs !== null) {
|
|
194
|
+
try {
|
|
195
|
+
onEvent({ type: "retry-after", url, delayMs, source: "http-header" });
|
|
196
|
+
} catch {
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return response;
|
|
201
|
+
};
|
|
202
|
+
return wrapped;
|
|
203
|
+
}
|
|
204
|
+
function createAttachInstrumentation({
|
|
205
|
+
url,
|
|
206
|
+
sse,
|
|
207
|
+
onEvent,
|
|
208
|
+
retryGate = attachRetryGate,
|
|
209
|
+
now
|
|
210
|
+
}) {
|
|
211
|
+
const globals = globalThis;
|
|
212
|
+
const observe = (event) => {
|
|
213
|
+
if (event.type === "retry-after")
|
|
214
|
+
retryGate.noteRetryAfter(url, event.delayMs);
|
|
215
|
+
onEvent == null ? void 0 : onEvent(event);
|
|
216
|
+
};
|
|
217
|
+
if (sse) {
|
|
218
|
+
const baseFetch = globals.fetch;
|
|
219
|
+
if (typeof baseFetch !== "function") return {};
|
|
220
|
+
return {
|
|
221
|
+
fetch: instrumentedAttachFetch({
|
|
222
|
+
baseFetch: (input, init) => baseFetch(input, init),
|
|
223
|
+
url,
|
|
224
|
+
onEvent: observe,
|
|
225
|
+
...now && { now }
|
|
226
|
+
})
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
const Base = globals.WebSocket;
|
|
230
|
+
if (typeof Base !== "function") return {};
|
|
231
|
+
return {
|
|
232
|
+
webSocket: instrumentedWebSocketConstructor({
|
|
233
|
+
Base,
|
|
234
|
+
url,
|
|
235
|
+
onEvent: observe,
|
|
236
|
+
...now && { now }
|
|
237
|
+
})
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
exports.MAX_RETRY_AFTER_MS = MAX_RETRY_AFTER_MS;
|
|
241
|
+
exports.attachRetryGate = attachRetryGate;
|
|
242
|
+
exports.createAttachInstrumentation = createAttachInstrumentation;
|
|
243
|
+
exports.createAttachRetryGate = createAttachRetryGate;
|
|
244
|
+
exports.instrumentAttachSocket = instrumentAttachSocket;
|
|
245
|
+
exports.instrumentedAttachFetch = instrumentedAttachFetch;
|
|
246
|
+
exports.instrumentedWebSocketConstructor = instrumentedWebSocketConstructor;
|
|
247
|
+
exports.parseRetryAfterFromCloseReason = parseRetryAfterFromCloseReason;
|
|
248
|
+
exports.parseRetryAfterHeaderMs = parseRetryAfterHeaderMs;
|
|
249
|
+
//# sourceMappingURL=statewire-attach-observer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statewire-attach-observer.cjs","sources":["../../../../../agent-runtime/src/statewire-attach-observer.ts"],"sourcesContent":["/**\n * Attach-path instrumentation for the deep-agent statewire transport, wired\n * through the two injection points statewire already exposes — the\n * `webSocket` constructor (`StatewireClient.WebsocketOptions`) and `fetch`\n * (`StatewireClient.HttpOptions`) — so the runtime can observe what the library\n * does not surface:\n *\n * - socket open latency (`ws_open_ms`), the hello frame's size and its\n * synchronous handler cost (`hello_bytes`, `hello_handler_ms`), and close\n * codes/reasons, for the thread-switch telemetry;\n * - a server `Retry-After` hint, honoured as a floor under the next dial.\n *\n * Retry-After today: statewire honours `retry-after` only on 429 command-frame\n * refusals (folded into the refusal `syn.retry`); its attach paths treat a 503\n * as a generic `HTTP 503` / `network` failure and back off exponentially with\n * no server input. Browsers never expose the response headers of a refused\n * WebSocket upgrade at all, so for the WS transport the hint can only ride\n * something the client can read: the close frame. The contract this module\n * reads is a close `reason` carrying `retry-after=<seconds>` (or\n * `retry-after-ms=<ms>`) — the pinboard half of that contract is a separate\n * change; until it lands the WS path simply sees no hint. The SSE attach\n * (`POST …/stream`) is a plain fetch, so its `Retry-After` header is read here\n * directly.\n *\n * This package compiles without the DOM lib (React Native honesty), so the\n * browser surface is typed structurally and resolved through `globalThis`.\n */\n\n/**\n * Who refused a wake (503/429), read off the response body against the two\n * refusal vocabularies the iris scaler also classifies data-plane 503s by\n * (`iris/scaler/src/v2AccessLog.ts`):\n *\n * - `\"placement\"` — the pinboard's own refusal, `{\"error\": …}` with one of its\n * known strings (\"no live workers for hostname\", \"registry cold start,\n * retry\", \"takeover in progress, retry\", …): the thread has no worker to\n * dial right now.\n * - `\"worker\"` — a pinned instance-lifecycle refusal, `{\"detail\": …}` with one\n * of its known strings (\"instance closing; retry\", \"activation queue full;\n * retry\", \"host draining; retry\", …): one instance on the worker the thread\n * is already placed on, cleared in the time a teardown takes.\n * - `\"unknown\"` — any other 503/429 body (unreadable, an unfamiliar string, a\n * real worker failure such as \"Thread history load failed\"): treated\n * conservatively — the full `Retry-After`, no dial dropped.\n * - `null` — not a refusal status.\n */\nexport type DeepAgentWakeRefusal = \"placement\" | \"worker\" | \"unknown\" | null;\n\nexport type DeepAgentAttachTimingEvent =\n | { type: \"socket-open\"; url: string; openMs: number }\n | {\n type: \"hello\";\n url: string;\n /** UTF-16 length of the hello frame — bytes for the ASCII JSON the wire carries. */\n bytes: number;\n /** Synchronous cost of statewire's message handler for the hello (parse + apply + flush). */\n handlerMs: number;\n /** Hello arrival relative to the socket open; `null` when the open was not observed. */\n sinceOpenMs: number | null;\n }\n | {\n type: \"socket-close\";\n url: string;\n code: number | undefined;\n reason: string | undefined;\n sinceOpenMs: number | null;\n }\n | {\n type: \"retry-after\";\n url: string;\n delayMs: number;\n source: \"ws-close\" | \"http-header\";\n }\n | {\n /** `POST …/prewarm` answered (see `wakeDeepAgentThread`). */\n type: \"wake\";\n url: string;\n status: number;\n durationMs: number;\n /** How the host sourced the history: already resident (`warm`) or loaded by this call. */\n history: \"fresh_load\" | \"warm\" | null;\n /** Who refused a 503/429 (see {@link DeepAgentWakeRefusal}); `null` otherwise. */\n refusal: DeepAgentWakeRefusal;\n };\n\n/** Longest server hint honoured — a buggy or hostile hint must not park a client. */\nexport const MAX_RETRY_AFTER_MS = 30_000;\n\nconst clampRetryAfter = (ms: number): number | null => {\n if (!Number.isFinite(ms)) return null;\n return Math.min(Math.max(0, Math.round(ms)), MAX_RETRY_AFTER_MS);\n};\n\n/**\n * Parse an HTTP `Retry-After` header value: delta-seconds or an HTTP-date.\n * Returns the delay in ms clamped to {@link MAX_RETRY_AFTER_MS}, or `null` when\n * the value is absent or unparseable.\n */\nexport function parseRetryAfterHeaderMs(\n value: string | null | undefined,\n now: () => number = () => Date.now(),\n): number | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (trimmed === \"\") return null;\n if (/^\\d+$/.test(trimmed)) return clampRetryAfter(Number(trimmed) * 1000);\n // An HTTP-date always names a weekday/month; anything else numeric-looking\n // (\"1.5\") would otherwise parse as some far-off calendar date.\n if (!/[A-Za-z]/.test(trimmed)) return null;\n const at = Date.parse(trimmed);\n if (Number.isNaN(at)) return null;\n return clampRetryAfter(at - now());\n}\n\n/**\n * Parse a retry hint off a WebSocket close reason: `retry-after=<seconds>` or\n * `retry-after-ms=<ms>` anywhere in the reason text (case-insensitive, `=` or\n * `:`). Returns ms clamped to {@link MAX_RETRY_AFTER_MS}, or `null`.\n */\nexport function parseRetryAfterFromCloseReason(\n reason: string | undefined,\n): number | null {\n if (typeof reason !== \"string\" || reason === \"\") return null;\n const match = /retry-after(-ms)?\\s*[=:]\\s*(\\d+)/i.exec(reason);\n if (!match) return null;\n const amount = Number(match[2]);\n return clampRetryAfter(match[1] ? amount : amount * 1000);\n}\n\nexport interface AttachRetryGate {\n /** Record a hint: no dial for `key` before `now + delayMs` (clamped). */\n noteRetryAfter(key: string, delayMs: number): void;\n /** Resolves once the recorded floor for `key` has passed (immediately when none). */\n waitForDial(key: string): Promise<void>;\n /** Remaining floor for `key` in ms (0 when none). */\n remainingMs(key: string): number;\n /** Drop one key's floor, or every floor. */\n reset(key?: string): void;\n}\n\n/**\n * Per-key dial floors. Keyed by the thread's attach URL so a hint delivered\n * for one thread never delays another. The floor is a minimum under\n * statewire's own backoff, never a replacement for it: the transport still\n * schedules its retry, and the dial simply waits out the remainder inside the\n * headers resolve (both attach paths resolve headers before they dial).\n */\nexport function createAttachRetryGate({\n now = () => Date.now(),\n wait = (ms: number) =>\n new Promise<void>((resolve) => setTimeout(resolve, ms)),\n}: {\n now?: () => number;\n wait?: (ms: number) => Promise<void>;\n} = {}): AttachRetryGate {\n const floors = new Map<string, number>();\n const remainingMs = (key: string): number => {\n const until = floors.get(key);\n if (until === undefined) return 0;\n const remaining = until - now();\n if (remaining <= 0) {\n floors.delete(key);\n return 0;\n }\n return remaining;\n };\n return {\n noteRetryAfter(key, delayMs) {\n const clamped = clampRetryAfter(delayMs);\n if (clamped === null || clamped === 0) return;\n const until = now() + clamped;\n const existing = floors.get(key);\n if (existing === undefined || existing < until) floors.set(key, until);\n },\n async waitForDial(key) {\n // A hint that arrives while the dial sleeps extends the floor; re-check\n // after every wait rather than trusting the deadline the sleep began with.\n for (\n let remaining = remainingMs(key);\n remaining > 0;\n remaining = remainingMs(key)\n ) {\n await wait(remaining);\n }\n },\n remainingMs,\n reset(key) {\n if (key === undefined) floors.clear();\n else floors.delete(key);\n },\n };\n}\n\n/** Process-wide gate shared by every deep-agent transport in the host. */\nexport const attachRetryGate: AttachRetryGate = createAttachRetryGate();\n\n/** Structural subset of the browser `WebSocket` that statewire's WS transport touches. */\nexport interface AttachSocketLike {\n readonly readyState: number;\n readonly protocol: string;\n onopen: ((event: unknown) => void) | null;\n onmessage: ((event: { data: unknown }) => void) | null;\n onclose: ((event: { code?: number; reason?: string }) => void) | null;\n onerror: ((event: unknown) => void) | null;\n send(data: string): void;\n close(code?: number, reason?: string): void;\n}\n\nexport type AttachWebSocketConstructor = new (\n url: string,\n protocols?: string | string[],\n) => AttachSocketLike;\n\nconst defaultNow = (): number =>\n typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n\n/** Statewire's keep-alive frame — never the hello. */\nconst isHeartbeatFrame = (data: unknown): boolean => {\n const text = String(data);\n return text === \"\" || text === \"{}\";\n};\n\n/**\n * Wrap a socket in a forwarding facade whose handler setters time the events\n * statewire attaches to (`onopen`, `onmessage`, `onclose`). A facade rather\n * than a subclass so the same instrumentation works over any host `WebSocket`\n * implementation, including test fakes.\n */\nexport function instrumentAttachSocket({\n socket,\n url,\n onEvent,\n now = defaultNow,\n}: {\n socket: AttachSocketLike;\n /** The thread attach URL the events are attributed to (not the socket URL). */\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): AttachSocketLike {\n const createdAt = now();\n let openedAt: number | null = null;\n let helloSeen = false;\n const emit = (event: DeepAgentAttachTimingEvent): void => {\n try {\n onEvent(event);\n } catch {\n // Observers are best-effort; the wire must never fail on telemetry.\n }\n };\n let openHandler: AttachSocketLike[\"onopen\"] = null;\n let messageHandler: AttachSocketLike[\"onmessage\"] = null;\n let closeHandler: AttachSocketLike[\"onclose\"] = null;\n socket.onopen = (event) => {\n openedAt = now();\n emit({ type: \"socket-open\", url, openMs: openedAt - createdAt });\n openHandler?.(event);\n };\n socket.onmessage = (event) => {\n if (helloSeen || isHeartbeatFrame(event.data)) {\n messageHandler?.(event);\n return;\n }\n helloSeen = true;\n const startedAt = now();\n try {\n messageHandler?.(event);\n } finally {\n const finishedAt = now();\n emit({\n type: \"hello\",\n url,\n bytes: String(event.data).length,\n handlerMs: finishedAt - startedAt,\n sinceOpenMs: openedAt === null ? null : startedAt - openedAt,\n });\n }\n };\n socket.onclose = (event) => {\n const closedAt = now();\n emit({\n type: \"socket-close\",\n url,\n code: event?.code,\n reason: event?.reason,\n sinceOpenMs: openedAt === null ? null : closedAt - openedAt,\n });\n const retryAfter = parseRetryAfterFromCloseReason(event?.reason);\n if (retryAfter !== null) {\n emit({\n type: \"retry-after\",\n url,\n delayMs: retryAfter,\n source: \"ws-close\",\n });\n }\n closeHandler?.(event);\n };\n return {\n get protocol() {\n return socket.protocol;\n },\n get readyState() {\n return socket.readyState;\n },\n get onopen() {\n return openHandler;\n },\n set onopen(handler) {\n openHandler = handler;\n },\n get onmessage() {\n return messageHandler;\n },\n set onmessage(handler) {\n messageHandler = handler;\n },\n get onclose() {\n return closeHandler;\n },\n set onclose(handler) {\n closeHandler = handler;\n },\n get onerror() {\n return socket.onerror;\n },\n set onerror(handler) {\n socket.onerror = handler;\n },\n send: (data) => socket.send(data),\n close: (code, reason) => socket.close(code, reason),\n };\n}\n\n/**\n * A `WebSocket`-shaped constructor that dials through `Base` and reports the\n * attach events for `url`. Constructor semantics (`new` returns the facade)\n * match what statewire's `webSocket` option expects.\n */\nexport function instrumentedWebSocketConstructor({\n Base,\n url,\n onEvent,\n now,\n}: {\n Base: AttachWebSocketConstructor;\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): AttachWebSocketConstructor {\n function InstrumentedWebSocket(\n socketUrl: string,\n protocols?: string | string[],\n ) {\n return instrumentAttachSocket({\n socket: new Base(socketUrl, protocols),\n url,\n onEvent,\n ...(now && { now }),\n });\n }\n return InstrumentedWebSocket as unknown as AttachWebSocketConstructor;\n}\n\n/** Structural `fetch` — what statewire's SSE transport calls. */\nexport type AttachFetch = (\n input: string | URL,\n init?: unknown,\n) => Promise<{\n ok: boolean;\n status: number;\n headers: { get(name: string): string | null };\n}>;\n\n/**\n * A `fetch` that reports a `Retry-After` header on refused attach requests\n * (the SSE `POST …/stream`) before handing the response back untouched.\n */\nexport function instrumentedAttachFetch<TFetch extends AttachFetch>({\n baseFetch,\n url,\n onEvent,\n now,\n}: {\n baseFetch: TFetch;\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): TFetch {\n const wrapped: AttachFetch = async (input, init) => {\n const response = await baseFetch(input, init);\n if (!response.ok && (response.status === 503 || response.status === 429)) {\n const delayMs = parseRetryAfterHeaderMs(\n response.headers.get(\"retry-after\"),\n now,\n );\n if (delayMs !== null) {\n try {\n onEvent({ type: \"retry-after\", url, delayMs, source: \"http-header\" });\n } catch {\n // Observers are best-effort.\n }\n }\n }\n return response;\n };\n return wrapped as TFetch;\n}\n\n/** Structural view of the host globals the instrumentation resolves. */\ntype AttachGlobals = {\n WebSocket?: AttachWebSocketConstructor;\n fetch?: AttachFetch;\n};\n\n/**\n * The transport option overrides for one attach: an instrumented `webSocket`\n * (WS) or `fetch` (SSE) that reports attach events for `url` and feeds\n * `Retry-After` hints into the gate. Returns `{}` where the host has no such\n * global (a server render, a non-browser runtime) so the transport keeps its\n * defaults.\n */\nexport function createAttachInstrumentation({\n url,\n sse,\n onEvent,\n retryGate = attachRetryGate,\n now,\n}: {\n url: string;\n sse: boolean;\n onEvent?: ((event: DeepAgentAttachTimingEvent) => void) | undefined;\n retryGate?: AttachRetryGate;\n now?: () => number;\n}): { webSocket?: AttachWebSocketConstructor; fetch?: AttachFetch } {\n const globals = globalThis as AttachGlobals;\n const observe = (event: DeepAgentAttachTimingEvent): void => {\n if (event.type === \"retry-after\")\n retryGate.noteRetryAfter(url, event.delayMs);\n onEvent?.(event);\n };\n if (sse) {\n const baseFetch = globals.fetch;\n if (typeof baseFetch !== \"function\") return {};\n return {\n fetch: instrumentedAttachFetch({\n baseFetch: (input, init) => baseFetch(input, init),\n url,\n onEvent: observe,\n ...(now && { now }),\n }),\n };\n }\n const Base = globals.WebSocket;\n if (typeof Base !== \"function\") return {};\n return {\n webSocket: instrumentedWebSocketConstructor({\n Base,\n url,\n onEvent: observe,\n ...(now && { now }),\n }),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
const MAX_RETRY_AFTER_MS = 3e4;
|
|
2
|
+
const clampRetryAfter = (ms) => {
|
|
3
|
+
if (!Number.isFinite(ms)) return null;
|
|
4
|
+
return Math.min(Math.max(0, Math.round(ms)), MAX_RETRY_AFTER_MS);
|
|
5
|
+
};
|
|
6
|
+
function parseRetryAfterHeaderMs(value, now = () => Date.now()) {
|
|
7
|
+
if (typeof value !== "string") return null;
|
|
8
|
+
const trimmed = value.trim();
|
|
9
|
+
if (trimmed === "") return null;
|
|
10
|
+
if (/^\d+$/.test(trimmed)) return clampRetryAfter(Number(trimmed) * 1e3);
|
|
11
|
+
if (!/[A-Za-z]/.test(trimmed)) return null;
|
|
12
|
+
const at = Date.parse(trimmed);
|
|
13
|
+
if (Number.isNaN(at)) return null;
|
|
14
|
+
return clampRetryAfter(at - now());
|
|
15
|
+
}
|
|
16
|
+
function parseRetryAfterFromCloseReason(reason) {
|
|
17
|
+
if (typeof reason !== "string" || reason === "") return null;
|
|
18
|
+
const match = /retry-after(-ms)?\s*[=:]\s*(\d+)/i.exec(reason);
|
|
19
|
+
if (!match) return null;
|
|
20
|
+
const amount = Number(match[2]);
|
|
21
|
+
return clampRetryAfter(match[1] ? amount : amount * 1e3);
|
|
22
|
+
}
|
|
23
|
+
function createAttachRetryGate({
|
|
24
|
+
now = () => Date.now(),
|
|
25
|
+
wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
26
|
+
} = {}) {
|
|
27
|
+
const floors = /* @__PURE__ */ new Map();
|
|
28
|
+
const remainingMs = (key) => {
|
|
29
|
+
const until = floors.get(key);
|
|
30
|
+
if (until === void 0) return 0;
|
|
31
|
+
const remaining = until - now();
|
|
32
|
+
if (remaining <= 0) {
|
|
33
|
+
floors.delete(key);
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
return remaining;
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
noteRetryAfter(key, delayMs) {
|
|
40
|
+
const clamped = clampRetryAfter(delayMs);
|
|
41
|
+
if (clamped === null || clamped === 0) return;
|
|
42
|
+
const until = now() + clamped;
|
|
43
|
+
const existing = floors.get(key);
|
|
44
|
+
if (existing === void 0 || existing < until) floors.set(key, until);
|
|
45
|
+
},
|
|
46
|
+
async waitForDial(key) {
|
|
47
|
+
for (let remaining = remainingMs(key); remaining > 0; remaining = remainingMs(key)) {
|
|
48
|
+
await wait(remaining);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
remainingMs,
|
|
52
|
+
reset(key) {
|
|
53
|
+
if (key === void 0) floors.clear();
|
|
54
|
+
else floors.delete(key);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const attachRetryGate = createAttachRetryGate();
|
|
59
|
+
const defaultNow = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
60
|
+
const isHeartbeatFrame = (data) => {
|
|
61
|
+
const text = String(data);
|
|
62
|
+
return text === "" || text === "{}";
|
|
63
|
+
};
|
|
64
|
+
function instrumentAttachSocket({
|
|
65
|
+
socket,
|
|
66
|
+
url,
|
|
67
|
+
onEvent,
|
|
68
|
+
now = defaultNow
|
|
69
|
+
}) {
|
|
70
|
+
const createdAt = now();
|
|
71
|
+
let openedAt = null;
|
|
72
|
+
let helloSeen = false;
|
|
73
|
+
const emit = (event) => {
|
|
74
|
+
try {
|
|
75
|
+
onEvent(event);
|
|
76
|
+
} catch {
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
let openHandler = null;
|
|
80
|
+
let messageHandler = null;
|
|
81
|
+
let closeHandler = null;
|
|
82
|
+
socket.onopen = (event) => {
|
|
83
|
+
openedAt = now();
|
|
84
|
+
emit({ type: "socket-open", url, openMs: openedAt - createdAt });
|
|
85
|
+
openHandler == null ? void 0 : openHandler(event);
|
|
86
|
+
};
|
|
87
|
+
socket.onmessage = (event) => {
|
|
88
|
+
if (helloSeen || isHeartbeatFrame(event.data)) {
|
|
89
|
+
messageHandler == null ? void 0 : messageHandler(event);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
helloSeen = true;
|
|
93
|
+
const startedAt = now();
|
|
94
|
+
try {
|
|
95
|
+
messageHandler == null ? void 0 : messageHandler(event);
|
|
96
|
+
} finally {
|
|
97
|
+
const finishedAt = now();
|
|
98
|
+
emit({
|
|
99
|
+
type: "hello",
|
|
100
|
+
url,
|
|
101
|
+
bytes: String(event.data).length,
|
|
102
|
+
handlerMs: finishedAt - startedAt,
|
|
103
|
+
sinceOpenMs: openedAt === null ? null : startedAt - openedAt
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
socket.onclose = (event) => {
|
|
108
|
+
const closedAt = now();
|
|
109
|
+
emit({
|
|
110
|
+
type: "socket-close",
|
|
111
|
+
url,
|
|
112
|
+
code: event == null ? void 0 : event.code,
|
|
113
|
+
reason: event == null ? void 0 : event.reason,
|
|
114
|
+
sinceOpenMs: openedAt === null ? null : closedAt - openedAt
|
|
115
|
+
});
|
|
116
|
+
const retryAfter = parseRetryAfterFromCloseReason(event == null ? void 0 : event.reason);
|
|
117
|
+
if (retryAfter !== null) {
|
|
118
|
+
emit({
|
|
119
|
+
type: "retry-after",
|
|
120
|
+
url,
|
|
121
|
+
delayMs: retryAfter,
|
|
122
|
+
source: "ws-close"
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
closeHandler == null ? void 0 : closeHandler(event);
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
get protocol() {
|
|
129
|
+
return socket.protocol;
|
|
130
|
+
},
|
|
131
|
+
get readyState() {
|
|
132
|
+
return socket.readyState;
|
|
133
|
+
},
|
|
134
|
+
get onopen() {
|
|
135
|
+
return openHandler;
|
|
136
|
+
},
|
|
137
|
+
set onopen(handler) {
|
|
138
|
+
openHandler = handler;
|
|
139
|
+
},
|
|
140
|
+
get onmessage() {
|
|
141
|
+
return messageHandler;
|
|
142
|
+
},
|
|
143
|
+
set onmessage(handler) {
|
|
144
|
+
messageHandler = handler;
|
|
145
|
+
},
|
|
146
|
+
get onclose() {
|
|
147
|
+
return closeHandler;
|
|
148
|
+
},
|
|
149
|
+
set onclose(handler) {
|
|
150
|
+
closeHandler = handler;
|
|
151
|
+
},
|
|
152
|
+
get onerror() {
|
|
153
|
+
return socket.onerror;
|
|
154
|
+
},
|
|
155
|
+
set onerror(handler) {
|
|
156
|
+
socket.onerror = handler;
|
|
157
|
+
},
|
|
158
|
+
send: (data) => socket.send(data),
|
|
159
|
+
close: (code, reason) => socket.close(code, reason)
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function instrumentedWebSocketConstructor({
|
|
163
|
+
Base,
|
|
164
|
+
url,
|
|
165
|
+
onEvent,
|
|
166
|
+
now
|
|
167
|
+
}) {
|
|
168
|
+
function InstrumentedWebSocket(socketUrl, protocols) {
|
|
169
|
+
return instrumentAttachSocket({
|
|
170
|
+
socket: new Base(socketUrl, protocols),
|
|
171
|
+
url,
|
|
172
|
+
onEvent,
|
|
173
|
+
...now && { now }
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
return InstrumentedWebSocket;
|
|
177
|
+
}
|
|
178
|
+
function instrumentedAttachFetch({
|
|
179
|
+
baseFetch,
|
|
180
|
+
url,
|
|
181
|
+
onEvent,
|
|
182
|
+
now
|
|
183
|
+
}) {
|
|
184
|
+
const wrapped = async (input, init) => {
|
|
185
|
+
const response = await baseFetch(input, init);
|
|
186
|
+
if (!response.ok && (response.status === 503 || response.status === 429)) {
|
|
187
|
+
const delayMs = parseRetryAfterHeaderMs(
|
|
188
|
+
response.headers.get("retry-after"),
|
|
189
|
+
now
|
|
190
|
+
);
|
|
191
|
+
if (delayMs !== null) {
|
|
192
|
+
try {
|
|
193
|
+
onEvent({ type: "retry-after", url, delayMs, source: "http-header" });
|
|
194
|
+
} catch {
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return response;
|
|
199
|
+
};
|
|
200
|
+
return wrapped;
|
|
201
|
+
}
|
|
202
|
+
function createAttachInstrumentation({
|
|
203
|
+
url,
|
|
204
|
+
sse,
|
|
205
|
+
onEvent,
|
|
206
|
+
retryGate = attachRetryGate,
|
|
207
|
+
now
|
|
208
|
+
}) {
|
|
209
|
+
const globals = globalThis;
|
|
210
|
+
const observe = (event) => {
|
|
211
|
+
if (event.type === "retry-after")
|
|
212
|
+
retryGate.noteRetryAfter(url, event.delayMs);
|
|
213
|
+
onEvent == null ? void 0 : onEvent(event);
|
|
214
|
+
};
|
|
215
|
+
if (sse) {
|
|
216
|
+
const baseFetch = globals.fetch;
|
|
217
|
+
if (typeof baseFetch !== "function") return {};
|
|
218
|
+
return {
|
|
219
|
+
fetch: instrumentedAttachFetch({
|
|
220
|
+
baseFetch: (input, init) => baseFetch(input, init),
|
|
221
|
+
url,
|
|
222
|
+
onEvent: observe,
|
|
223
|
+
...now && { now }
|
|
224
|
+
})
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
const Base = globals.WebSocket;
|
|
228
|
+
if (typeof Base !== "function") return {};
|
|
229
|
+
return {
|
|
230
|
+
webSocket: instrumentedWebSocketConstructor({
|
|
231
|
+
Base,
|
|
232
|
+
url,
|
|
233
|
+
onEvent: observe,
|
|
234
|
+
...now && { now }
|
|
235
|
+
})
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
export {
|
|
239
|
+
MAX_RETRY_AFTER_MS,
|
|
240
|
+
attachRetryGate,
|
|
241
|
+
createAttachInstrumentation,
|
|
242
|
+
createAttachRetryGate,
|
|
243
|
+
instrumentAttachSocket,
|
|
244
|
+
instrumentedAttachFetch,
|
|
245
|
+
instrumentedWebSocketConstructor,
|
|
246
|
+
parseRetryAfterFromCloseReason,
|
|
247
|
+
parseRetryAfterHeaderMs
|
|
248
|
+
};
|
|
249
|
+
//# sourceMappingURL=statewire-attach-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statewire-attach-observer.js","sources":["../../../../../agent-runtime/src/statewire-attach-observer.ts"],"sourcesContent":["/**\n * Attach-path instrumentation for the deep-agent statewire transport, wired\n * through the two injection points statewire already exposes — the\n * `webSocket` constructor (`StatewireClient.WebsocketOptions`) and `fetch`\n * (`StatewireClient.HttpOptions`) — so the runtime can observe what the library\n * does not surface:\n *\n * - socket open latency (`ws_open_ms`), the hello frame's size and its\n * synchronous handler cost (`hello_bytes`, `hello_handler_ms`), and close\n * codes/reasons, for the thread-switch telemetry;\n * - a server `Retry-After` hint, honoured as a floor under the next dial.\n *\n * Retry-After today: statewire honours `retry-after` only on 429 command-frame\n * refusals (folded into the refusal `syn.retry`); its attach paths treat a 503\n * as a generic `HTTP 503` / `network` failure and back off exponentially with\n * no server input. Browsers never expose the response headers of a refused\n * WebSocket upgrade at all, so for the WS transport the hint can only ride\n * something the client can read: the close frame. The contract this module\n * reads is a close `reason` carrying `retry-after=<seconds>` (or\n * `retry-after-ms=<ms>`) — the pinboard half of that contract is a separate\n * change; until it lands the WS path simply sees no hint. The SSE attach\n * (`POST …/stream`) is a plain fetch, so its `Retry-After` header is read here\n * directly.\n *\n * This package compiles without the DOM lib (React Native honesty), so the\n * browser surface is typed structurally and resolved through `globalThis`.\n */\n\n/**\n * Who refused a wake (503/429), read off the response body against the two\n * refusal vocabularies the iris scaler also classifies data-plane 503s by\n * (`iris/scaler/src/v2AccessLog.ts`):\n *\n * - `\"placement\"` — the pinboard's own refusal, `{\"error\": …}` with one of its\n * known strings (\"no live workers for hostname\", \"registry cold start,\n * retry\", \"takeover in progress, retry\", …): the thread has no worker to\n * dial right now.\n * - `\"worker\"` — a pinned instance-lifecycle refusal, `{\"detail\": …}` with one\n * of its known strings (\"instance closing; retry\", \"activation queue full;\n * retry\", \"host draining; retry\", …): one instance on the worker the thread\n * is already placed on, cleared in the time a teardown takes.\n * - `\"unknown\"` — any other 503/429 body (unreadable, an unfamiliar string, a\n * real worker failure such as \"Thread history load failed\"): treated\n * conservatively — the full `Retry-After`, no dial dropped.\n * - `null` — not a refusal status.\n */\nexport type DeepAgentWakeRefusal = \"placement\" | \"worker\" | \"unknown\" | null;\n\nexport type DeepAgentAttachTimingEvent =\n | { type: \"socket-open\"; url: string; openMs: number }\n | {\n type: \"hello\";\n url: string;\n /** UTF-16 length of the hello frame — bytes for the ASCII JSON the wire carries. */\n bytes: number;\n /** Synchronous cost of statewire's message handler for the hello (parse + apply + flush). */\n handlerMs: number;\n /** Hello arrival relative to the socket open; `null` when the open was not observed. */\n sinceOpenMs: number | null;\n }\n | {\n type: \"socket-close\";\n url: string;\n code: number | undefined;\n reason: string | undefined;\n sinceOpenMs: number | null;\n }\n | {\n type: \"retry-after\";\n url: string;\n delayMs: number;\n source: \"ws-close\" | \"http-header\";\n }\n | {\n /** `POST …/prewarm` answered (see `wakeDeepAgentThread`). */\n type: \"wake\";\n url: string;\n status: number;\n durationMs: number;\n /** How the host sourced the history: already resident (`warm`) or loaded by this call. */\n history: \"fresh_load\" | \"warm\" | null;\n /** Who refused a 503/429 (see {@link DeepAgentWakeRefusal}); `null` otherwise. */\n refusal: DeepAgentWakeRefusal;\n };\n\n/** Longest server hint honoured — a buggy or hostile hint must not park a client. */\nexport const MAX_RETRY_AFTER_MS = 30_000;\n\nconst clampRetryAfter = (ms: number): number | null => {\n if (!Number.isFinite(ms)) return null;\n return Math.min(Math.max(0, Math.round(ms)), MAX_RETRY_AFTER_MS);\n};\n\n/**\n * Parse an HTTP `Retry-After` header value: delta-seconds or an HTTP-date.\n * Returns the delay in ms clamped to {@link MAX_RETRY_AFTER_MS}, or `null` when\n * the value is absent or unparseable.\n */\nexport function parseRetryAfterHeaderMs(\n value: string | null | undefined,\n now: () => number = () => Date.now(),\n): number | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (trimmed === \"\") return null;\n if (/^\\d+$/.test(trimmed)) return clampRetryAfter(Number(trimmed) * 1000);\n // An HTTP-date always names a weekday/month; anything else numeric-looking\n // (\"1.5\") would otherwise parse as some far-off calendar date.\n if (!/[A-Za-z]/.test(trimmed)) return null;\n const at = Date.parse(trimmed);\n if (Number.isNaN(at)) return null;\n return clampRetryAfter(at - now());\n}\n\n/**\n * Parse a retry hint off a WebSocket close reason: `retry-after=<seconds>` or\n * `retry-after-ms=<ms>` anywhere in the reason text (case-insensitive, `=` or\n * `:`). Returns ms clamped to {@link MAX_RETRY_AFTER_MS}, or `null`.\n */\nexport function parseRetryAfterFromCloseReason(\n reason: string | undefined,\n): number | null {\n if (typeof reason !== \"string\" || reason === \"\") return null;\n const match = /retry-after(-ms)?\\s*[=:]\\s*(\\d+)/i.exec(reason);\n if (!match) return null;\n const amount = Number(match[2]);\n return clampRetryAfter(match[1] ? amount : amount * 1000);\n}\n\nexport interface AttachRetryGate {\n /** Record a hint: no dial for `key` before `now + delayMs` (clamped). */\n noteRetryAfter(key: string, delayMs: number): void;\n /** Resolves once the recorded floor for `key` has passed (immediately when none). */\n waitForDial(key: string): Promise<void>;\n /** Remaining floor for `key` in ms (0 when none). */\n remainingMs(key: string): number;\n /** Drop one key's floor, or every floor. */\n reset(key?: string): void;\n}\n\n/**\n * Per-key dial floors. Keyed by the thread's attach URL so a hint delivered\n * for one thread never delays another. The floor is a minimum under\n * statewire's own backoff, never a replacement for it: the transport still\n * schedules its retry, and the dial simply waits out the remainder inside the\n * headers resolve (both attach paths resolve headers before they dial).\n */\nexport function createAttachRetryGate({\n now = () => Date.now(),\n wait = (ms: number) =>\n new Promise<void>((resolve) => setTimeout(resolve, ms)),\n}: {\n now?: () => number;\n wait?: (ms: number) => Promise<void>;\n} = {}): AttachRetryGate {\n const floors = new Map<string, number>();\n const remainingMs = (key: string): number => {\n const until = floors.get(key);\n if (until === undefined) return 0;\n const remaining = until - now();\n if (remaining <= 0) {\n floors.delete(key);\n return 0;\n }\n return remaining;\n };\n return {\n noteRetryAfter(key, delayMs) {\n const clamped = clampRetryAfter(delayMs);\n if (clamped === null || clamped === 0) return;\n const until = now() + clamped;\n const existing = floors.get(key);\n if (existing === undefined || existing < until) floors.set(key, until);\n },\n async waitForDial(key) {\n // A hint that arrives while the dial sleeps extends the floor; re-check\n // after every wait rather than trusting the deadline the sleep began with.\n for (\n let remaining = remainingMs(key);\n remaining > 0;\n remaining = remainingMs(key)\n ) {\n await wait(remaining);\n }\n },\n remainingMs,\n reset(key) {\n if (key === undefined) floors.clear();\n else floors.delete(key);\n },\n };\n}\n\n/** Process-wide gate shared by every deep-agent transport in the host. */\nexport const attachRetryGate: AttachRetryGate = createAttachRetryGate();\n\n/** Structural subset of the browser `WebSocket` that statewire's WS transport touches. */\nexport interface AttachSocketLike {\n readonly readyState: number;\n readonly protocol: string;\n onopen: ((event: unknown) => void) | null;\n onmessage: ((event: { data: unknown }) => void) | null;\n onclose: ((event: { code?: number; reason?: string }) => void) | null;\n onerror: ((event: unknown) => void) | null;\n send(data: string): void;\n close(code?: number, reason?: string): void;\n}\n\nexport type AttachWebSocketConstructor = new (\n url: string,\n protocols?: string | string[],\n) => AttachSocketLike;\n\nconst defaultNow = (): number =>\n typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n\n/** Statewire's keep-alive frame — never the hello. */\nconst isHeartbeatFrame = (data: unknown): boolean => {\n const text = String(data);\n return text === \"\" || text === \"{}\";\n};\n\n/**\n * Wrap a socket in a forwarding facade whose handler setters time the events\n * statewire attaches to (`onopen`, `onmessage`, `onclose`). A facade rather\n * than a subclass so the same instrumentation works over any host `WebSocket`\n * implementation, including test fakes.\n */\nexport function instrumentAttachSocket({\n socket,\n url,\n onEvent,\n now = defaultNow,\n}: {\n socket: AttachSocketLike;\n /** The thread attach URL the events are attributed to (not the socket URL). */\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): AttachSocketLike {\n const createdAt = now();\n let openedAt: number | null = null;\n let helloSeen = false;\n const emit = (event: DeepAgentAttachTimingEvent): void => {\n try {\n onEvent(event);\n } catch {\n // Observers are best-effort; the wire must never fail on telemetry.\n }\n };\n let openHandler: AttachSocketLike[\"onopen\"] = null;\n let messageHandler: AttachSocketLike[\"onmessage\"] = null;\n let closeHandler: AttachSocketLike[\"onclose\"] = null;\n socket.onopen = (event) => {\n openedAt = now();\n emit({ type: \"socket-open\", url, openMs: openedAt - createdAt });\n openHandler?.(event);\n };\n socket.onmessage = (event) => {\n if (helloSeen || isHeartbeatFrame(event.data)) {\n messageHandler?.(event);\n return;\n }\n helloSeen = true;\n const startedAt = now();\n try {\n messageHandler?.(event);\n } finally {\n const finishedAt = now();\n emit({\n type: \"hello\",\n url,\n bytes: String(event.data).length,\n handlerMs: finishedAt - startedAt,\n sinceOpenMs: openedAt === null ? null : startedAt - openedAt,\n });\n }\n };\n socket.onclose = (event) => {\n const closedAt = now();\n emit({\n type: \"socket-close\",\n url,\n code: event?.code,\n reason: event?.reason,\n sinceOpenMs: openedAt === null ? null : closedAt - openedAt,\n });\n const retryAfter = parseRetryAfterFromCloseReason(event?.reason);\n if (retryAfter !== null) {\n emit({\n type: \"retry-after\",\n url,\n delayMs: retryAfter,\n source: \"ws-close\",\n });\n }\n closeHandler?.(event);\n };\n return {\n get protocol() {\n return socket.protocol;\n },\n get readyState() {\n return socket.readyState;\n },\n get onopen() {\n return openHandler;\n },\n set onopen(handler) {\n openHandler = handler;\n },\n get onmessage() {\n return messageHandler;\n },\n set onmessage(handler) {\n messageHandler = handler;\n },\n get onclose() {\n return closeHandler;\n },\n set onclose(handler) {\n closeHandler = handler;\n },\n get onerror() {\n return socket.onerror;\n },\n set onerror(handler) {\n socket.onerror = handler;\n },\n send: (data) => socket.send(data),\n close: (code, reason) => socket.close(code, reason),\n };\n}\n\n/**\n * A `WebSocket`-shaped constructor that dials through `Base` and reports the\n * attach events for `url`. Constructor semantics (`new` returns the facade)\n * match what statewire's `webSocket` option expects.\n */\nexport function instrumentedWebSocketConstructor({\n Base,\n url,\n onEvent,\n now,\n}: {\n Base: AttachWebSocketConstructor;\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): AttachWebSocketConstructor {\n function InstrumentedWebSocket(\n socketUrl: string,\n protocols?: string | string[],\n ) {\n return instrumentAttachSocket({\n socket: new Base(socketUrl, protocols),\n url,\n onEvent,\n ...(now && { now }),\n });\n }\n return InstrumentedWebSocket as unknown as AttachWebSocketConstructor;\n}\n\n/** Structural `fetch` — what statewire's SSE transport calls. */\nexport type AttachFetch = (\n input: string | URL,\n init?: unknown,\n) => Promise<{\n ok: boolean;\n status: number;\n headers: { get(name: string): string | null };\n}>;\n\n/**\n * A `fetch` that reports a `Retry-After` header on refused attach requests\n * (the SSE `POST …/stream`) before handing the response back untouched.\n */\nexport function instrumentedAttachFetch<TFetch extends AttachFetch>({\n baseFetch,\n url,\n onEvent,\n now,\n}: {\n baseFetch: TFetch;\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): TFetch {\n const wrapped: AttachFetch = async (input, init) => {\n const response = await baseFetch(input, init);\n if (!response.ok && (response.status === 503 || response.status === 429)) {\n const delayMs = parseRetryAfterHeaderMs(\n response.headers.get(\"retry-after\"),\n now,\n );\n if (delayMs !== null) {\n try {\n onEvent({ type: \"retry-after\", url, delayMs, source: \"http-header\" });\n } catch {\n // Observers are best-effort.\n }\n }\n }\n return response;\n };\n return wrapped as TFetch;\n}\n\n/** Structural view of the host globals the instrumentation resolves. */\ntype AttachGlobals = {\n WebSocket?: AttachWebSocketConstructor;\n fetch?: AttachFetch;\n};\n\n/**\n * The transport option overrides for one attach: an instrumented `webSocket`\n * (WS) or `fetch` (SSE) that reports attach events for `url` and feeds\n * `Retry-After` hints into the gate. Returns `{}` where the host has no such\n * global (a server render, a non-browser runtime) so the transport keeps its\n * defaults.\n */\nexport function createAttachInstrumentation({\n url,\n sse,\n onEvent,\n retryGate = attachRetryGate,\n now,\n}: {\n url: string;\n sse: boolean;\n onEvent?: ((event: DeepAgentAttachTimingEvent) => void) | undefined;\n retryGate?: AttachRetryGate;\n now?: () => number;\n}): { webSocket?: AttachWebSocketConstructor; fetch?: AttachFetch } {\n const globals = globalThis as AttachGlobals;\n const observe = (event: DeepAgentAttachTimingEvent): void => {\n if (event.type === \"retry-after\")\n retryGate.noteRetryAfter(url, event.delayMs);\n onEvent?.(event);\n };\n if (sse) {\n const baseFetch = globals.fetch;\n if (typeof baseFetch !== \"function\") return {};\n return {\n fetch: instrumentedAttachFetch({\n baseFetch: (input, init) => baseFetch(input, init),\n url,\n onEvent: observe,\n ...(now && { now }),\n }),\n };\n }\n const Base = globals.WebSocket;\n if (typeof Base !== \"function\") return {};\n return {\n webSocket: instrumentedWebSocketConstructor({\n Base,\n url,\n onEvent: observe,\n ...(now && { now }),\n }),\n };\n}\n"],"names":[],"mappings":"AAsFO,MAAM,qBAAqB;AAElC,MAAM,kBAAkB,CAAC,OAA8B;AACrD,MAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO;AACjC,SAAO,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC,GAAG,kBAAkB;AACjE;AAOO,SAAS,wBACd,OACA,MAAoB,MAAM,KAAK,OAChB;AACf,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAA;AACtB,MAAI,YAAY,GAAI,QAAO;AAC3B,MAAI,QAAQ,KAAK,OAAO,UAAU,gBAAgB,OAAO,OAAO,IAAI,GAAI;AAGxE,MAAI,CAAC,WAAW,KAAK,OAAO,EAAG,QAAO;AACtC,QAAM,KAAK,KAAK,MAAM,OAAO;AAC7B,MAAI,OAAO,MAAM,EAAE,EAAG,QAAO;AAC7B,SAAO,gBAAgB,KAAK,KAAK;AACnC;AAOO,SAAS,+BACd,QACe;AACf,MAAI,OAAO,WAAW,YAAY,WAAW,GAAI,QAAO;AACxD,QAAM,QAAQ,oCAAoC,KAAK,MAAM;AAC7D,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,OAAO,MAAM,CAAC,CAAC;AAC9B,SAAO,gBAAgB,MAAM,CAAC,IAAI,SAAS,SAAS,GAAI;AAC1D;AAoBO,SAAS,sBAAsB;AAAA,EACpC,MAAM,MAAM,KAAK,IAAA;AAAA,EACjB,OAAO,CAAC,OACN,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAC1D,IAGI,IAAqB;AACvB,QAAM,6BAAa,IAAA;AACnB,QAAM,cAAc,CAAC,QAAwB;AAC3C,UAAM,QAAQ,OAAO,IAAI,GAAG;AAC5B,QAAI,UAAU,OAAW,QAAO;AAChC,UAAM,YAAY,QAAQ,IAAA;AAC1B,QAAI,aAAa,GAAG;AAClB,aAAO,OAAO,GAAG;AACjB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,eAAe,KAAK,SAAS;AAC3B,YAAM,UAAU,gBAAgB,OAAO;AACvC,UAAI,YAAY,QAAQ,YAAY,EAAG;AACvC,YAAM,QAAQ,QAAQ;AACtB,YAAM,WAAW,OAAO,IAAI,GAAG;AAC/B,UAAI,aAAa,UAAa,WAAW,MAAO,QAAO,IAAI,KAAK,KAAK;AAAA,IACvE;AAAA,IACA,MAAM,YAAY,KAAK;AAGrB,eACM,YAAY,YAAY,GAAG,GAC/B,YAAY,GACZ,YAAY,YAAY,GAAG,GAC3B;AACA,cAAM,KAAK,SAAS;AAAA,MACtB;AAAA,IACF;AAAA,IACA;AAAA,IACA,MAAM,KAAK;AACT,UAAI,QAAQ,OAAW,QAAO,MAAA;AAAA,UACzB,QAAO,OAAO,GAAG;AAAA,IACxB;AAAA,EAAA;AAEJ;AAGO,MAAM,kBAAmC,sBAAA;AAmBhD,MAAM,aAAa,MACjB,OAAO,gBAAgB,eAAe,OAAO,YAAY,QAAQ,aAC7D,YAAY,QACZ,KAAK,IAAA;AAGX,MAAM,mBAAmB,CAAC,SAA2B;AACnD,QAAM,OAAO,OAAO,IAAI;AACxB,SAAO,SAAS,MAAM,SAAS;AACjC;AAQO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AACR,GAMqB;AACnB,QAAM,YAAY,IAAA;AAClB,MAAI,WAA0B;AAC9B,MAAI,YAAY;AAChB,QAAM,OAAO,CAAC,UAA4C;AACxD,QAAI;AACF,cAAQ,KAAK;AAAA,IACf,QAAQ;AAAA,IAER;AAAA,EACF;AACA,MAAI,cAA0C;AAC9C,MAAI,iBAAgD;AACpD,MAAI,eAA4C;AAChD,SAAO,SAAS,CAAC,UAAU;AACzB,eAAW,IAAA;AACX,SAAK,EAAE,MAAM,eAAe,KAAK,QAAQ,WAAW,WAAW;AAC/D,+CAAc;AAAA,EAChB;AACA,SAAO,YAAY,CAAC,UAAU;AAC5B,QAAI,aAAa,iBAAiB,MAAM,IAAI,GAAG;AAC7C,uDAAiB;AACjB;AAAA,IACF;AACA,gBAAY;AACZ,UAAM,YAAY,IAAA;AAClB,QAAI;AACF,uDAAiB;AAAA,IACnB,UAAA;AACE,YAAM,aAAa,IAAA;AACnB,WAAK;AAAA,QACH,MAAM;AAAA,QACN;AAAA,QACA,OAAO,OAAO,MAAM,IAAI,EAAE;AAAA,QAC1B,WAAW,aAAa;AAAA,QACxB,aAAa,aAAa,OAAO,OAAO,YAAY;AAAA,MAAA,CACrD;AAAA,IACH;AAAA,EACF;AACA,SAAO,UAAU,CAAC,UAAU;AAC1B,UAAM,WAAW,IAAA;AACjB,SAAK;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,MAAM,+BAAO;AAAA,MACb,QAAQ,+BAAO;AAAA,MACf,aAAa,aAAa,OAAO,OAAO,WAAW;AAAA,IAAA,CACpD;AACD,UAAM,aAAa,+BAA+B,+BAAO,MAAM;AAC/D,QAAI,eAAe,MAAM;AACvB,WAAK;AAAA,QACH,MAAM;AAAA,QACN;AAAA,QACA,SAAS;AAAA,QACT,QAAQ;AAAA,MAAA,CACT;AAAA,IACH;AACA,iDAAe;AAAA,EACjB;AACA,SAAO;AAAA,IACL,IAAI,WAAW;AACb,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,IAAI,aAAa;AACf,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,IAAI,SAAS;AACX,aAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,SAAS;AAClB,oBAAc;AAAA,IAChB;AAAA,IACA,IAAI,YAAY;AACd,aAAO;AAAA,IACT;AAAA,IACA,IAAI,UAAU,SAAS;AACrB,uBAAiB;AAAA,IACnB;AAAA,IACA,IAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAAA,IACA,IAAI,QAAQ,SAAS;AACnB,qBAAe;AAAA,IACjB;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,IAAI,QAAQ,SAAS;AACnB,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,MAAM,CAAC,SAAS,OAAO,KAAK,IAAI;AAAA,IAChC,OAAO,CAAC,MAAM,WAAW,OAAO,MAAM,MAAM,MAAM;AAAA,EAAA;AAEtD;AAOO,SAAS,iCAAiC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAK+B;AAC7B,WAAS,sBACP,WACA,WACA;AACA,WAAO,uBAAuB;AAAA,MAC5B,QAAQ,IAAI,KAAK,WAAW,SAAS;AAAA,MACrC;AAAA,MACA;AAAA,MACA,GAAI,OAAO,EAAE,IAAA;AAAA,IAAI,CAClB;AAAA,EACH;AACA,SAAO;AACT;AAgBO,SAAS,wBAAoD;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKW;AACT,QAAM,UAAuB,OAAO,OAAO,SAAS;AAClD,UAAM,WAAW,MAAM,UAAU,OAAO,IAAI;AAC5C,QAAI,CAAC,SAAS,OAAO,SAAS,WAAW,OAAO,SAAS,WAAW,MAAM;AACxE,YAAM,UAAU;AAAA,QACd,SAAS,QAAQ,IAAI,aAAa;AAAA,QAClC;AAAA,MAAA;AAEF,UAAI,YAAY,MAAM;AACpB,YAAI;AACF,kBAAQ,EAAE,MAAM,eAAe,KAAK,SAAS,QAAQ,eAAe;AAAA,QACtE,QAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAeO,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AACF,GAMoE;AAClE,QAAM,UAAU;AAChB,QAAM,UAAU,CAAC,UAA4C;AAC3D,QAAI,MAAM,SAAS;AACjB,gBAAU,eAAe,KAAK,MAAM,OAAO;AAC7C,uCAAU;AAAA,EACZ;AACA,MAAI,KAAK;AACP,UAAM,YAAY,QAAQ;AAC1B,QAAI,OAAO,cAAc,WAAY,QAAO,CAAA;AAC5C,WAAO;AAAA,MACL,OAAO,wBAAwB;AAAA,QAC7B,WAAW,CAAC,OAAO,SAAS,UAAU,OAAO,IAAI;AAAA,QACjD;AAAA,QACA,SAAS;AAAA,QACT,GAAI,OAAO,EAAE,IAAA;AAAA,MAAI,CAClB;AAAA,IAAA;AAAA,EAEL;AACA,QAAM,OAAO,QAAQ;AACrB,MAAI,OAAO,SAAS,WAAY,QAAO,CAAA;AACvC,SAAO;AAAA,IACL,WAAW,iCAAiC;AAAA,MAC1C;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,GAAI,OAAO,EAAE,IAAA;AAAA,IAAI,CAClB;AAAA,EAAA;AAEL;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const preStreamState = { messages: [], todos: [] };
|
|
4
|
+
Object.freeze(preStreamState.messages);
|
|
5
|
+
Object.freeze(preStreamState.todos);
|
|
6
|
+
const DEEP_AGENT_PRE_STREAM_STATE = Object.freeze(preStreamState);
|
|
7
|
+
function readDeepAgentStreamValues(state) {
|
|
8
|
+
return typeof state === "object" && state !== null ? state : DEEP_AGENT_PRE_STREAM_STATE;
|
|
9
|
+
}
|
|
10
|
+
function isDeepAgentStateHydrated(state) {
|
|
11
|
+
return typeof state === "object" && state !== null && state !== DEEP_AGENT_PRE_STREAM_STATE;
|
|
12
|
+
}
|
|
13
|
+
exports.DEEP_AGENT_PRE_STREAM_STATE = DEEP_AGENT_PRE_STREAM_STATE;
|
|
14
|
+
exports.isDeepAgentStateHydrated = isDeepAgentStateHydrated;
|
|
15
|
+
exports.readDeepAgentStreamValues = readDeepAgentStreamValues;
|
|
16
|
+
//# sourceMappingURL=statewire-state.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statewire-state.cjs","sources":["../../../../../agent-runtime/src/statewire-state.ts"],"sourcesContent":["import type { DeepAgentStreamValues } from './types';\n\n/**\n * Typed pre-stream default for the deep-agent statewire state.\n *\n * The statewire client's replicated state is `undefined` (and can transiently\n * be `null`/non-object on a replay boundary) until an attach snapshot applies —\n * `@assistant-ui/react-statewire` derives its `\"loading\"` thread status from\n * exactly that absence, so the raw wire value must keep carrying it. Consumers\n * of OUR conversion layer, however, should never have to null-check the whole\n * state: they read through {@link readDeepAgentStreamValues}, which substitutes\n * this constant while the state is not hydrated.\n *\n * Module-level constant on purpose: selector fallbacks must be referentially\n * stable (`useStatewireState` compares selector results with `Object.is`, so a\n * fresh `[]`/`{}` per call re-renders forever). Frozen so a consumer cannot\n * mutate the shared default.\n */\nconst preStreamState: DeepAgentStreamValues = { messages: [], todos: [] };\nObject.freeze(preStreamState.messages);\nObject.freeze(preStreamState.todos);\nexport const DEEP_AGENT_PRE_STREAM_STATE: DeepAgentStreamValues = Object.freeze(preStreamState);\n\n/**\n * Read the deep-agent stream values off a raw statewire state, substituting\n * {@link DEEP_AGENT_PRE_STREAM_STATE} while the state is not an object yet\n * (pre-attach, or a replay boundary republishing `undefined`).\n *\n * Identity-preserving: a hydrated state returns the same object reference it\n * was given and the pre-stream branch always returns the same module constant,\n * so this is safe to call inside `useStatewireState` selectors.\n */\nexport function readDeepAgentStreamValues(state: unknown): DeepAgentStreamValues {\n return typeof state === 'object' && state !== null\n ? (state as DeepAgentStreamValues)\n : DEEP_AGENT_PRE_STREAM_STATE;\n}\n\n/**\n * Whether a state (raw, or already normalized through\n * {@link readDeepAgentStreamValues}) carries a real wire payload. `false`\n * exactly while the pre-stream default stands in — the explicit signal for\n * code that must distinguish \"empty thread\" from \"no snapshot yet\".\n */\nexport function isDeepAgentStateHydrated(state: unknown): boolean {\n return typeof state === 'object' && state !== null && state !== DEEP_AGENT_PRE_STREAM_STATE;\n}\n"],"names":[],"mappings":";;AAkBA,MAAM,iBAAwC,EAAE,UAAU,IAAI,OAAO,CAAA,EAAC;AACtE,OAAO,OAAO,eAAe,QAAQ;AACrC,OAAO,OAAO,eAAe,KAAK;AAC3B,MAAM,8BAAqD,OAAO,OAAO,cAAc;AAWvF,SAAS,0BAA0B,OAAuC;AAC/E,SAAO,OAAO,UAAU,YAAY,UAAU,OACzC,QACD;AACN;AAQO,SAAS,yBAAyB,OAAyB;AAChE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU;AAClE;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const preStreamState = { messages: [], todos: [] };
|
|
2
|
+
Object.freeze(preStreamState.messages);
|
|
3
|
+
Object.freeze(preStreamState.todos);
|
|
4
|
+
const DEEP_AGENT_PRE_STREAM_STATE = Object.freeze(preStreamState);
|
|
5
|
+
function readDeepAgentStreamValues(state) {
|
|
6
|
+
return typeof state === "object" && state !== null ? state : DEEP_AGENT_PRE_STREAM_STATE;
|
|
7
|
+
}
|
|
8
|
+
function isDeepAgentStateHydrated(state) {
|
|
9
|
+
return typeof state === "object" && state !== null && state !== DEEP_AGENT_PRE_STREAM_STATE;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
DEEP_AGENT_PRE_STREAM_STATE,
|
|
13
|
+
isDeepAgentStateHydrated,
|
|
14
|
+
readDeepAgentStreamValues
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=statewire-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statewire-state.js","sources":["../../../../../agent-runtime/src/statewire-state.ts"],"sourcesContent":["import type { DeepAgentStreamValues } from './types';\n\n/**\n * Typed pre-stream default for the deep-agent statewire state.\n *\n * The statewire client's replicated state is `undefined` (and can transiently\n * be `null`/non-object on a replay boundary) until an attach snapshot applies —\n * `@assistant-ui/react-statewire` derives its `\"loading\"` thread status from\n * exactly that absence, so the raw wire value must keep carrying it. Consumers\n * of OUR conversion layer, however, should never have to null-check the whole\n * state: they read through {@link readDeepAgentStreamValues}, which substitutes\n * this constant while the state is not hydrated.\n *\n * Module-level constant on purpose: selector fallbacks must be referentially\n * stable (`useStatewireState` compares selector results with `Object.is`, so a\n * fresh `[]`/`{}` per call re-renders forever). Frozen so a consumer cannot\n * mutate the shared default.\n */\nconst preStreamState: DeepAgentStreamValues = { messages: [], todos: [] };\nObject.freeze(preStreamState.messages);\nObject.freeze(preStreamState.todos);\nexport const DEEP_AGENT_PRE_STREAM_STATE: DeepAgentStreamValues = Object.freeze(preStreamState);\n\n/**\n * Read the deep-agent stream values off a raw statewire state, substituting\n * {@link DEEP_AGENT_PRE_STREAM_STATE} while the state is not an object yet\n * (pre-attach, or a replay boundary republishing `undefined`).\n *\n * Identity-preserving: a hydrated state returns the same object reference it\n * was given and the pre-stream branch always returns the same module constant,\n * so this is safe to call inside `useStatewireState` selectors.\n */\nexport function readDeepAgentStreamValues(state: unknown): DeepAgentStreamValues {\n return typeof state === 'object' && state !== null\n ? (state as DeepAgentStreamValues)\n : DEEP_AGENT_PRE_STREAM_STATE;\n}\n\n/**\n * Whether a state (raw, or already normalized through\n * {@link readDeepAgentStreamValues}) carries a real wire payload. `false`\n * exactly while the pre-stream default stands in — the explicit signal for\n * code that must distinguish \"empty thread\" from \"no snapshot yet\".\n */\nexport function isDeepAgentStateHydrated(state: unknown): boolean {\n return typeof state === 'object' && state !== null && state !== DEEP_AGENT_PRE_STREAM_STATE;\n}\n"],"names":[],"mappings":"AAkBA,MAAM,iBAAwC,EAAE,UAAU,IAAI,OAAO,CAAA,EAAC;AACtE,OAAO,OAAO,eAAe,QAAQ;AACrC,OAAO,OAAO,eAAe,KAAK;AAC3B,MAAM,8BAAqD,OAAO,OAAO,cAAc;AAWvF,SAAS,0BAA0B,OAAuC;AAC/E,SAAO,OAAO,UAAU,YAAY,UAAU,OACzC,QACD;AACN;AAQO,SAAS,yBAAyB,OAAyB;AAChE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU;AAClE;"}
|