@athenaintel/react 0.19.0 → 0.21.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 +171 -11
- 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 +370 -0
- package/dist/assets/use-asset-embed.cjs.map +1 -0
- package/dist/assets/use-asset-embed.js +370 -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 +189 -0
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
- package/dist/chat/StatewireApprovalCard.d.ts +14 -0
- package/dist/chat/StatewireApprovalCard.js +189 -0
- package/dist/chat/StatewireApprovalCard.js.map +1 -0
- package/dist/chat/StatewireClientToolBridge.cjs +51 -0
- package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
- package/dist/chat/StatewireClientToolBridge.js +51 -0
- package/dist/chat/StatewireClientToolBridge.js.map +1 -0
- package/dist/chat/StatewireQueuedMessages.cjs +433 -0
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
- package/dist/chat/StatewireQueuedMessages.d.ts +3 -4
- package/dist/chat/StatewireQueuedMessages.js +433 -0
- package/dist/chat/StatewireQueuedMessages.js.map +1 -0
- package/dist/chat/athena-citation-links.cjs +342 -0
- package/dist/chat/athena-citation-links.cjs.map +1 -0
- package/dist/chat/athena-citation-links.js +342 -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-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 +74 -0
- package/dist/chat/statewire-client-tools.cjs.map +1 -0
- package/dist/chat/statewire-client-tools.js +74 -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.js +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +243 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +14 -7
- package/dist/chat/super-grouping/SuperGroupingCard.js +243 -0
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +131 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.d.ts +16 -0
- package/dist/chat/super-grouping/ToolTimeline.js +131 -0
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.cjs +157 -0
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.d.ts +6 -3
- package/dist/chat/super-grouping/activity-timeline.js +157 -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.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.js +26 -0
- package/dist/chat/super-grouping/index.js.map +1 -0
- package/dist/chat/super-grouping/timeline-step.cjs +65 -0
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -0
- package/dist/chat/super-grouping/timeline-step.d.ts +17 -0
- package/dist/chat/super-grouping/timeline-step.js +65 -0
- package/dist/chat/super-grouping/timeline-step.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.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 +24 -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 +24 -0
- package/dist/chat/use-athena-run-live.js.map +1 -0
- package/dist/chat/use-statewire-approval-request.cjs +51 -0
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
- package/dist/chat/use-statewire-approval-request.d.ts +12 -2
- package/dist/chat/use-statewire-approval-request.js +51 -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 +549 -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 +549 -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.js +369 -0
- package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
- package/dist/chat-ui/index.cjs +140 -0
- package/dist/chat-ui/index.cjs.map +1 -0
- package/dist/chat-ui/index.d.ts +4 -3
- package/dist/chat-ui/index.js +140 -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 +253 -0
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.d.ts +11 -0
- package/dist/chat-ui/mentions/mention-chip.js +253 -0
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.cjs +196 -0
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.d.ts +26 -2
- package/dist/chat-ui/mentions/mention-extension.js +196 -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 +65 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.d.ts +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +65 -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.d.ts +2 -2
- 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 +124 -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 +13 -2
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +124 -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/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 +320 -0
- package/dist/chat-ui/messages/message-components.cjs.map +1 -0
- package/dist/chat-ui/messages/message-components.d.ts +1 -1
- package/dist/chat-ui/messages/message-components.js +320 -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 +66 -0
- package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
- package/dist/chat-ui/messages/runtime-message.js +66 -0
- package/dist/chat-ui/messages/runtime-message.js.map +1 -0
- package/dist/{statewire-continue-run-nE9VCKUh.cjs → chat-ui/messages/statewire-continue-run.cjs} +61 -23
- package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.d.ts +19 -5
- package/dist/{statewire-continue-run-D34gS7_1.js → chat-ui/messages/statewire-continue-run.js} +51 -14
- package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs +62 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.js +62 -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/rich-text/chat-message-body.cjs +76 -0
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-message-body.js +76 -0
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs +51 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.d.ts +13 -0
- package/dist/chat-ui/rich-text/chat-node-views.js +51 -0
- package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +70 -0
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +7 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +70 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -0
- package/dist/chat-ui/rich-text/dom-output-spec.cjs +83 -0
- package/dist/chat-ui/rich-text/dom-output-spec.cjs.map +1 -0
- package/dist/chat-ui/rich-text/dom-output-spec.d.ts +11 -0
- package/dist/chat-ui/rich-text/dom-output-spec.js +83 -0
- package/dist/chat-ui/rich-text/dom-output-spec.js.map +1 -0
- package/dist/chat-ui/statewire.cjs +40 -0
- package/dist/chat-ui/statewire.cjs.map +1 -0
- package/dist/chat-ui/statewire.js +40 -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.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 +135 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.js +135 -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.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.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 +275 -27882
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +162 -27759
- 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/node_modules/qrcode-generator/dist/qrcode.cjs +32 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.cjs.map +1 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.js +31 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs +44 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.js +44 -0
- package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs +43 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.js +43 -0
- package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs +29 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.js +29 -0
- package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs +871 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +871 -0
- package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/api.cjs +570 -0
- package/dist/node_modules/zod/v4/core/api.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/api.js +570 -0
- package/dist/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.cjs +411 -0
- package/dist/node_modules/zod/v4/core/checks.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.js +411 -0
- package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/zod/v4/core/core.cjs +77 -0
- package/dist/node_modules/zod/v4/core/core.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/core.js +77 -0
- package/dist/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.cjs +38 -0
- package/dist/node_modules/zod/v4/core/doc.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.js +38 -0
- package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.cjs +76 -0
- package/dist/node_modules/zod/v4/core/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.js +76 -0
- package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +312 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +312 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.cjs +96 -0
- package/dist/node_modules/zod/v4/core/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.js +96 -0
- package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs +86 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.js +86 -0
- package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.cjs +52 -0
- package/dist/node_modules/zod/v4/core/registries.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.js +52 -0
- package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs +1412 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.js +1413 -0
- package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs +370 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js +370 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
- package/dist/node_modules/zod/v4/core/util.cjs +444 -0
- package/dist/node_modules/zod/v4/core/util.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/util.js +444 -0
- package/dist/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.cjs +9 -0
- package/dist/node_modules/zod/v4/core/versions.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.js +9 -0
- package/dist/node_modules/zod/v4/core/versions.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 +276 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js +276 -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 +90 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.js +90 -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 +238 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +238 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs +141 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.js +141 -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 +463 -0
- package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/messages.js +463 -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 +31 -0
- package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.js +31 -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 +329 -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 +329 -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/screen-point.cjs +68 -0
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/screen-point.js +68 -0
- package/dist/packages/agent-runtime/src/screen-point.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 +11 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js +11 -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-handoff.cjs +85 -0
- package/dist/packages/agent-runtime/src/thread-handoff.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-handoff.js +85 -0
- package/dist/packages/agent-runtime/src/thread-handoff.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 +1794 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js +1794 -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-config.cjs +14 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js +14 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +44 -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 +44 -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 +148 -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 +148 -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 +407 -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 +407 -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 +404 -0
- package/dist/provider/AthenaProvider.cjs.map +1 -0
- package/dist/provider/AthenaProvider.js +404 -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 +8 -7
- 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.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.js +18 -0
- package/dist/runtime/statewire-auth-headers.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +68 -0
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
- package/dist/runtime/statewire-lifecycle.js +68 -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.js +11 -0
- package/dist/runtime/statewire-session-key.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +180 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.js +181 -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 +74 -0
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
- package/dist/threads/conversation-list-fetcher.js +74 -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.js +7 -0
- package/dist/threads/mint-thread-id.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +232 -0
- package/dist/threads/statewire-thread-list.cjs.map +1 -0
- package/dist/threads/statewire-thread-list.js +232 -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 +80 -0
- package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
- package/dist/threads/use-rest-conversation-history.js +80 -0
- package/dist/threads/use-rest-conversation-history.js.map +1 -0
- package/dist/threads/use-statewire-conversation-history.cjs +244 -0
- package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
- package/dist/threads/use-statewire-conversation-history.d.ts +1 -0
- package/dist/threads/use-statewire-conversation-history.js +244 -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 +57 -0
- package/dist/tools/index.cjs.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +57 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/misc-tool-uis.cjs +55 -0
- package/dist/tools/misc-tool-uis.cjs.map +1 -0
- package/dist/{misc-tool-uis-gAiQw0Yl.js → tools/misc-tool-uis.js} +18 -7
- package/dist/tools/misc-tool-uis.js.map +1 -0
- package/dist/tools/primitives.cjs +167 -0
- package/dist/tools/primitives.cjs.map +1 -0
- package/dist/tools/primitives.js +167 -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 +668 -0
- package/dist/tools/tool-fallback.cjs.map +1 -0
- package/dist/tools/tool-fallback.js +668 -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.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.js +3049 -0
- package/dist/tools/tool-uis.js.map +1 -0
- package/dist/tools/voice-update-tool-ui.cjs +90 -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 +90 -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/dist/voice/index.cjs +6 -0
- package/dist/voice/index.cjs.map +1 -0
- package/dist/voice/index.d.ts +2 -0
- package/dist/voice/index.js +6 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/use-athena-voice-session.cjs +315 -0
- package/dist/voice/use-athena-voice-session.cjs.map +1 -0
- package/dist/voice/use-athena-voice-session.d.ts +145 -0
- package/dist/voice/use-athena-voice-session.js +315 -0
- package/dist/voice/use-athena-voice-session.js.map +1 -0
- package/package.json +32 -20
- 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/SuperGroupingCard-BsWbHyV_.js +0 -795
- package/dist/SuperGroupingCard-BsWbHyV_.js.map +0 -1
- package/dist/SuperGroupingCard-CRRFUgjN.cjs +0 -794
- package/dist/SuperGroupingCard-CRRFUgjN.cjs.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/tiptap-composer.d.ts +0 -7
- package/dist/chat-ui-statewire.cjs +0 -25
- package/dist/chat-ui-statewire.cjs.map +0 -1
- package/dist/chat-ui-statewire.js +0 -25
- package/dist/chat-ui-statewire.js.map +0 -1
- package/dist/chat-ui.cjs +0 -2484
- package/dist/chat-ui.cjs.map +0 -1
- package/dist/chat-ui.js +0 -2486
- 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/misc-tool-uis-B2e0Okkn.cjs +0 -43
- package/dist/misc-tool-uis-B2e0Okkn.cjs.map +0 -1
- package/dist/misc-tool-uis-gAiQw0Yl.js.map +0 -1
- package/dist/statewire-continue-run-D34gS7_1.js.map +0 -1
- package/dist/statewire-continue-run-nE9VCKUh.cjs.map +0 -1
- package/dist/statewire-history-edge-C8uyTEjX.cjs +0 -1711
- package/dist/statewire-history-edge-C8uyTEjX.cjs.map +0 -1
- package/dist/statewire-history-edge-CPohUKMt.js +0 -1712
- package/dist/statewire-history-edge-CPohUKMt.js.map +0 -1
- package/dist/super-grouping.cjs +0 -22
- package/dist/super-grouping.cjs.map +0 -1
- package/dist/super-grouping.js +0 -22
- package/dist/super-grouping.js.map +0 -1
- package/dist/tool-fallback-DkQ3DLkn.js +0 -4281
- package/dist/tool-fallback-DkQ3DLkn.js.map +0 -1
- package/dist/tool-fallback-kfhpJQZa.cjs +0 -4297
- package/dist/tool-fallback-kfhpJQZa.cjs.map +0 -1
- package/dist/tools.cjs +0 -41
- package/dist/tools.cjs.map +0 -1
- package/dist/tools.js +0 -41
- package/dist/tools.js.map +0 -1
- package/dist/trash-2-B5OaNAL7.cjs +0 -5096
- package/dist/trash-2-B5OaNAL7.cjs.map +0 -1
- package/dist/trash-2-CCwSURL-.js +0 -5081
- package/dist/trash-2-CCwSURL-.js.map +0 -1
- package/dist/use-rest-conversation-history-Cm8qMRxp.cjs +0 -32397
- package/dist/use-rest-conversation-history-Cm8qMRxp.cjs.map +0 -1
- package/dist/use-rest-conversation-history-veDZS-oL.js +0 -32361
- package/dist/use-rest-conversation-history-veDZS-oL.js.map +0 -1
- package/dist/wrench-BEf72cyP.cjs +0 -417
- package/dist/wrench-BEf72cyP.cjs.map +0 -1
- package/dist/wrench-CbrOlVYm.js +0 -418
- package/dist/wrench-CbrOlVYm.js.map +0 -1
- package/dist/x-Dfd2NzK0.cjs +0 -42
- package/dist/x-Dfd2NzK0.cjs.map +0 -1
- package/dist/x-_DntAa_a.js +0 -43
- package/dist/x-_DntAa_a.js.map +0 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const UNTERMINATED_LABEL_HOLD_LIMIT = 200;
|
|
4
|
+
const UNTERMINATED_LINK_HOLD_LIMIT = 1500;
|
|
5
|
+
const FENCE_LINE = /^\s*(`{3,}|~{3,})(.*)$/;
|
|
6
|
+
const BLOCKQUOTE_PREFIX = /^(?: {0,3}>[ \t]?)+/;
|
|
7
|
+
const LIST_MARKER = /^([ \t]*)([-*+]|\d{1,9}[.)])([ \t]+)/;
|
|
8
|
+
function hideUnterminatedMarkdownLink(text) {
|
|
9
|
+
if (!text.includes("[")) return text;
|
|
10
|
+
const start = scanTrailingLink(text);
|
|
11
|
+
return start === null ? text : text.slice(0, start);
|
|
12
|
+
}
|
|
13
|
+
function runLength(text, index, char) {
|
|
14
|
+
let end = index;
|
|
15
|
+
while (end < text.length && text[end] === char) end += 1;
|
|
16
|
+
return end - index;
|
|
17
|
+
}
|
|
18
|
+
function codeSpanEnd(text, from, length) {
|
|
19
|
+
const blankLine = text.indexOf("\n\n", from);
|
|
20
|
+
const paragraphEnd = blankLine === -1 ? text.length : blankLine;
|
|
21
|
+
let cursor = from;
|
|
22
|
+
while (cursor < paragraphEnd) {
|
|
23
|
+
const next = text.indexOf("`", cursor);
|
|
24
|
+
if (next === -1 || next >= paragraphEnd) return -1;
|
|
25
|
+
const run = runLength(text, next, "`");
|
|
26
|
+
if (run === length) return next + run;
|
|
27
|
+
cursor = next + run;
|
|
28
|
+
}
|
|
29
|
+
return -1;
|
|
30
|
+
}
|
|
31
|
+
function fenceRun(line) {
|
|
32
|
+
const match = FENCE_LINE.exec(line);
|
|
33
|
+
if (!match) return null;
|
|
34
|
+
if (match[1][0] === "`" && match[2].includes("`")) return null;
|
|
35
|
+
return match[1];
|
|
36
|
+
}
|
|
37
|
+
function leadingIndent(line) {
|
|
38
|
+
let indent = 0;
|
|
39
|
+
for (const char of line) {
|
|
40
|
+
if (char === " ") indent += 1;
|
|
41
|
+
else if (char === " ") indent += 4;
|
|
42
|
+
else break;
|
|
43
|
+
}
|
|
44
|
+
return indent;
|
|
45
|
+
}
|
|
46
|
+
function createBlockTracker() {
|
|
47
|
+
let fence = null;
|
|
48
|
+
let indentedCode = false;
|
|
49
|
+
let previousBlank = true;
|
|
50
|
+
const listContentIndents = [];
|
|
51
|
+
return (line) => {
|
|
52
|
+
const content = line.replace(BLOCKQUOTE_PREFIX, "");
|
|
53
|
+
const blank = content.trim() === "";
|
|
54
|
+
try {
|
|
55
|
+
const run = fenceRun(content);
|
|
56
|
+
if (fence !== null) {
|
|
57
|
+
if (run !== null && run[0] === fence[0] && run.length >= fence.length) fence = null;
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (run !== null) {
|
|
61
|
+
fence = run;
|
|
62
|
+
indentedCode = false;
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const indent = leadingIndent(line);
|
|
66
|
+
const codeIndent = (listContentIndents.at(-1) ?? 0) + 4;
|
|
67
|
+
if (indentedCode) {
|
|
68
|
+
if (blank || indent >= codeIndent) return false;
|
|
69
|
+
indentedCode = false;
|
|
70
|
+
} else if (!blank && previousBlank && indent >= codeIndent) {
|
|
71
|
+
indentedCode = true;
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (blank) return true;
|
|
75
|
+
const marker = LIST_MARKER.exec(line);
|
|
76
|
+
if (marker) {
|
|
77
|
+
const markerIndent = leadingIndent(marker[1]);
|
|
78
|
+
while ((listContentIndents.at(-1) ?? -1) > markerIndent) listContentIndents.pop();
|
|
79
|
+
const gap = marker[3].length;
|
|
80
|
+
const width = marker[2].length;
|
|
81
|
+
listContentIndents.push(markerIndent + width + (gap > 4 ? 1 : gap));
|
|
82
|
+
} else {
|
|
83
|
+
while (listContentIndents.length > 0 && indent < (listContentIndents.at(-1) ?? 0)) {
|
|
84
|
+
listContentIndents.pop();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
} finally {
|
|
89
|
+
previousBlank = blank;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function advanceDestination(destination, char) {
|
|
94
|
+
const space = char === " " || char === " ";
|
|
95
|
+
switch (destination.phase) {
|
|
96
|
+
case "start":
|
|
97
|
+
if (space) return "open";
|
|
98
|
+
if (char === ")") return "closed";
|
|
99
|
+
if (char === "<") {
|
|
100
|
+
destination.phase = "angle";
|
|
101
|
+
return "open";
|
|
102
|
+
}
|
|
103
|
+
destination.phase = "bare";
|
|
104
|
+
return advanceDestination(destination, char);
|
|
105
|
+
case "angle":
|
|
106
|
+
if (char === ">") destination.phase = "after-destination";
|
|
107
|
+
return "open";
|
|
108
|
+
case "bare":
|
|
109
|
+
if (char === "(") {
|
|
110
|
+
destination.depth += 1;
|
|
111
|
+
return "open";
|
|
112
|
+
}
|
|
113
|
+
if (char === ")") {
|
|
114
|
+
if (destination.depth === 0) return "closed";
|
|
115
|
+
destination.depth -= 1;
|
|
116
|
+
return "open";
|
|
117
|
+
}
|
|
118
|
+
if (space) destination.phase = "after-destination";
|
|
119
|
+
return "open";
|
|
120
|
+
case "after-destination":
|
|
121
|
+
if (space) return "open";
|
|
122
|
+
if (char === ")") return "closed";
|
|
123
|
+
if (char === '"' || char === "'" || char === "(") {
|
|
124
|
+
destination.phase = "title";
|
|
125
|
+
destination.titleClose = char === "(" ? ")" : char;
|
|
126
|
+
return "open";
|
|
127
|
+
}
|
|
128
|
+
return "invalid";
|
|
129
|
+
case "title":
|
|
130
|
+
if (char === destination.titleClose) destination.phase = "after-title";
|
|
131
|
+
return "open";
|
|
132
|
+
case "after-title":
|
|
133
|
+
if (space) return "open";
|
|
134
|
+
return char === ")" ? "closed" : "invalid";
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function scanTrailingLink(text) {
|
|
138
|
+
let labelStarts = [];
|
|
139
|
+
let closedAtEnd = null;
|
|
140
|
+
let destination = null;
|
|
141
|
+
const isProseLine = createBlockTracker();
|
|
142
|
+
let index = 0;
|
|
143
|
+
let lineStart = true;
|
|
144
|
+
const resetInline = () => {
|
|
145
|
+
labelStarts = [];
|
|
146
|
+
closedAtEnd = null;
|
|
147
|
+
destination = null;
|
|
148
|
+
};
|
|
149
|
+
const result = () => {
|
|
150
|
+
for (const start of labelStarts) {
|
|
151
|
+
if (text.length - start <= UNTERMINATED_LABEL_HOLD_LIMIT) return start;
|
|
152
|
+
}
|
|
153
|
+
if (destination !== null) {
|
|
154
|
+
return text.length - destination.start <= UNTERMINATED_LINK_HOLD_LIMIT ? destination.start : null;
|
|
155
|
+
}
|
|
156
|
+
if (closedAtEnd !== null && text.length - closedAtEnd <= UNTERMINATED_LABEL_HOLD_LIMIT) {
|
|
157
|
+
return closedAtEnd;
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
};
|
|
161
|
+
while (index < text.length) {
|
|
162
|
+
if (lineStart) {
|
|
163
|
+
lineStart = false;
|
|
164
|
+
let lineEnd = text.indexOf("\n", index);
|
|
165
|
+
if (lineEnd === -1) lineEnd = text.length;
|
|
166
|
+
if (!isProseLine(text.slice(index, lineEnd))) {
|
|
167
|
+
resetInline();
|
|
168
|
+
index = lineEnd + 1;
|
|
169
|
+
lineStart = true;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const char = text[index];
|
|
174
|
+
if (char === "\n") {
|
|
175
|
+
resetInline();
|
|
176
|
+
lineStart = true;
|
|
177
|
+
index += 1;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if (char === "\\") {
|
|
181
|
+
index += 2;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (char === "`") {
|
|
185
|
+
const length = runLength(text, index, "`");
|
|
186
|
+
const end = codeSpanEnd(text, index + length, length);
|
|
187
|
+
if (end === -1) return result();
|
|
188
|
+
index = end;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (destination !== null) {
|
|
192
|
+
const verdict = advanceDestination(destination, char);
|
|
193
|
+
if (verdict !== "open") destination = null;
|
|
194
|
+
} else if (char === "[") {
|
|
195
|
+
labelStarts.push(index);
|
|
196
|
+
} else if (char === "]") {
|
|
197
|
+
const start = labelStarts.pop();
|
|
198
|
+
if (start !== void 0) {
|
|
199
|
+
if (index + 1 >= text.length) {
|
|
200
|
+
closedAtEnd = start;
|
|
201
|
+
} else if (text[index + 1] === "(") {
|
|
202
|
+
destination = { start, phase: "start", depth: 0, titleClose: "" };
|
|
203
|
+
index += 1;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
index += 1;
|
|
208
|
+
}
|
|
209
|
+
return result();
|
|
210
|
+
}
|
|
211
|
+
exports.UNTERMINATED_LABEL_HOLD_LIMIT = UNTERMINATED_LABEL_HOLD_LIMIT;
|
|
212
|
+
exports.UNTERMINATED_LINK_HOLD_LIMIT = UNTERMINATED_LINK_HOLD_LIMIT;
|
|
213
|
+
exports.hideUnterminatedMarkdownLink = hideUnterminatedMarkdownLink;
|
|
214
|
+
//# sourceMappingURL=streaming-markdown.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-markdown.cjs","sources":["../../../../../agent-runtime/src/streaming-markdown.ts"],"sourcesContent":["/**\n * Hide a markdown link the stream has not finished writing.\n *\n * The agent mentions and cites assets as markdown links —\n * `[@Considerations/Notes](https://…/dashboard/spaces/?asset_ids=asset_…&type=document&anchor=pm_node&node_id=…&excerpt=…)`\n * — which every chat surface renders as a mention chip once the link is\n * complete. While it is still arriving, a markdown parser sees a bracketed\n * label followed by a bare URL: the label shows as raw text and the half URL\n * linkifies into a live link whose target changes with every batch, for as\n * long as the destination takes to stream (an `excerpt` parameter can run to\n * hundreds of characters). Then the closing `)` lands and the run is rebuilt\n * as a chip.\n *\n * While a part is streaming, cut the text at the start of a trailing link\n * whose `)` has not arrived; it reappears whole, as a chip, in the batch that\n * closes it. Every link and image destination is held — a web citation\n * flickers the same way — and so is every bracket still undecided on the\n * line: an unfinished `[label`, and a closed `[label]` at the very end of the\n * text, which waits one batch for its `(`. Holding the label too is what\n * makes the visible text only ever grow — a link never shows as a label and\n * then retracts when its destination starts — and that append-only property\n * is what keeps Olympus's incremental streaming apply on its cheap path.\n * Brackets match innermost-first, as CommonMark does, and the hold starts at\n * the outermost undecided bracket the size bound allows, so an unmatched\n * bracket in prose hides at most a phrase, briefly, and never masks a later\n * mention. A construct that crosses a line break or runs past its bound is\n * released so a malformed link cannot hide the rest of the message; fenced\n * code (including fences inside blockquotes), indented code and inline code\n * are left untouched; and settled text is never passed through this\n * function, so a link the model genuinely left open shows raw once the part\n * completes.\n *\n * Shared by every chat surface (Olympus, the React SDK hosts, mobile) so the\n * hold behaves identically wherever a transcript streams. Pure string work,\n * linear in the text.\n */\n\n/** An open bracket further back than this is prose, not a label being streamed. */\nexport const UNTERMINATED_LABEL_HOLD_LIMIT = 200;\n/** A link (label and destination) longer than this is broken, not streaming. */\nexport const UNTERMINATED_LINK_HOLD_LIMIT = 1500;\n\n/** Opening or closing code fence: three or more backticks or tildes, then the info string. */\nconst FENCE_LINE = /^\\s*(`{3,}|~{3,})(.*)$/;\n/** Leading blockquote markers (`> `, `>>`, each indented at most three spaces). */\nconst BLOCKQUOTE_PREFIX = /^(?: {0,3}>[ \\t]?)+/;\n/** Bullet or ordered list marker at the start of a line, with the spaces that follow it. */\nconst LIST_MARKER = /^([ \\t]*)([-*+]|\\d{1,9}[.)])([ \\t]+)/;\n\n/**\n * The streamed text with a trailing, still-undecided markdown link or image\n * removed. Text without such a construct is returned as is, and the result is\n * always a prefix of `text`.\n */\nexport function hideUnterminatedMarkdownLink(text: string): string {\n if (!text.includes(\"[\")) return text;\n\n const start = scanTrailingLink(text);\n return start === null ? text : text.slice(0, start);\n}\n\n/** Length of the run of `char` starting at `index`. */\nfunction runLength(text: string, index: number, char: string): number {\n let end = index;\n while (end < text.length && text[end] === char) end += 1;\n return end - index;\n}\n\n/**\n * Index just past the backtick run of exactly `length` that closes a code\n * span opened before `from`, or -1 when none arrives before the paragraph\n * ends (a blank line) — an open span runs to the end of the text.\n */\nfunction codeSpanEnd(text: string, from: number, length: number): number {\n const blankLine = text.indexOf(\"\\n\\n\", from);\n const paragraphEnd = blankLine === -1 ? text.length : blankLine;\n let cursor = from;\n while (cursor < paragraphEnd) {\n const next = text.indexOf(\"`\", cursor);\n if (next === -1 || next >= paragraphEnd) return -1;\n const run = runLength(text, next, \"`\");\n if (run === length) return next + run;\n cursor = next + run;\n }\n return -1;\n}\n\n/**\n * The fence run a line opens or closes, or null. A backtick fence's info\n * string cannot contain a backtick (that is inline code, not a fence).\n */\nfunction fenceRun(line: string): string | null {\n const match = FENCE_LINE.exec(line);\n if (!match) return null;\n if (match[1][0] === \"`\" && match[2].includes(\"`\")) return null;\n return match[1];\n}\n\n/** Columns of leading whitespace on a line; a tab counts as four. */\nfunction leadingIndent(line: string): number {\n let indent = 0;\n for (const char of line) {\n if (char === \" \") indent += 1;\n else if (char === \"\\t\") indent += 4;\n else break;\n }\n return indent;\n}\n\n/**\n * Tracks the block structure the inline scan must not read: fenced code\n * (also inside blockquotes), indented code, and the list nesting that decides\n * how deep an indent has to be before it is code rather than a nested item\n * or a continuation paragraph. Fed one line at a time, in order.\n */\nfunction createBlockTracker() {\n let fence: string | null = null;\n let indentedCode = false;\n let previousBlank = true;\n /** Content indents of the open list items, outermost first. */\n const listContentIndents: number[] = [];\n\n /** Whether `line` is prose the inline scan should read. */\n return (line: string): boolean => {\n const content = line.replace(BLOCKQUOTE_PREFIX, \"\");\n const blank = content.trim() === \"\";\n try {\n const run = fenceRun(content);\n if (fence !== null) {\n // Code: a run of the same character at least as long as the opener\n // closes the block; everything else on the line is content.\n if (run !== null && run[0] === fence[0] && run.length >= fence.length) fence = null;\n return false;\n }\n if (run !== null) {\n fence = run;\n indentedCode = false;\n return false;\n }\n\n // Indented code needs four columns beyond the innermost open list\n // item's content — less than that is a nested item or a continuation\n // paragraph — and cannot interrupt a paragraph.\n const indent = leadingIndent(line);\n const codeIndent = (listContentIndents.at(-1) ?? 0) + 4;\n if (indentedCode) {\n if (blank || indent >= codeIndent) return false;\n indentedCode = false;\n } else if (!blank && previousBlank && indent >= codeIndent) {\n indentedCode = true;\n return false;\n }\n if (blank) return true;\n\n const marker = LIST_MARKER.exec(line);\n if (marker) {\n const markerIndent = leadingIndent(marker[1]);\n while ((listContentIndents.at(-1) ?? -1) > markerIndent) listContentIndents.pop();\n // Five or more spaces after the marker start an indented code block\n // inside the item, so the content column is one past the marker.\n const gap = marker[3].length;\n const width = marker[2].length;\n listContentIndents.push(markerIndent + width + (gap > 4 ? 1 : gap));\n } else {\n while (listContentIndents.length > 0 && indent < (listContentIndents.at(-1) ?? 0)) {\n listContentIndents.pop();\n }\n }\n return true;\n } finally {\n previousBlank = blank;\n }\n };\n}\n\n/**\n * The CommonMark link-destination grammar after `](`: optional whitespace,\n * then either `<…>` or a bare destination whose parentheses must balance,\n * then optional whitespace and a `\"…\"`, `'…'` or `(…)` title, then `)`.\n */\ninterface Destination {\n start: number;\n phase: \"start\" | \"angle\" | \"bare\" | \"after-destination\" | \"title\" | \"after-title\";\n depth: number;\n titleClose: string;\n}\n\nfunction advanceDestination(\n destination: Destination,\n char: string,\n): \"open\" | \"closed\" | \"invalid\" {\n const space = char === \" \" || char === \"\\t\";\n switch (destination.phase) {\n case \"start\":\n if (space) return \"open\";\n if (char === \")\") return \"closed\";\n if (char === \"<\") {\n destination.phase = \"angle\";\n return \"open\";\n }\n destination.phase = \"bare\";\n return advanceDestination(destination, char);\n case \"angle\":\n if (char === \">\") destination.phase = \"after-destination\";\n return \"open\";\n case \"bare\":\n if (char === \"(\") {\n destination.depth += 1;\n return \"open\";\n }\n if (char === \")\") {\n if (destination.depth === 0) return \"closed\";\n destination.depth -= 1;\n return \"open\";\n }\n if (space) destination.phase = \"after-destination\";\n return \"open\";\n case \"after-destination\":\n if (space) return \"open\";\n if (char === \")\") return \"closed\";\n if (char === '\"' || char === \"'\" || char === \"(\") {\n destination.phase = \"title\";\n destination.titleClose = char === \"(\" ? \")\" : char;\n return \"open\";\n }\n return \"invalid\";\n case \"title\":\n if (char === destination.titleClose) destination.phase = \"after-title\";\n return \"open\";\n case \"after-title\":\n if (space) return \"open\";\n return char === \")\" ? \"closed\" : \"invalid\";\n }\n}\n\n/**\n * Where the text should be cut for the link construct still undecided at its\n * very end, or null when nothing is open: the outermost unclosed `[` within\n * the label bound, else the `[` of a closed label or open destination that\n * is still within its own bound.\n */\nfunction scanTrailingLink(text: string): number | null {\n /** Positions of the `[` not yet closed on this line, outermost first. */\n let labelStarts: number[] = [];\n /** The `[` whose `]` is the last character of the text — `(` may be next. */\n let closedAtEnd: number | null = null;\n let destination: Destination | null = null;\n const isProseLine = createBlockTracker();\n let index = 0;\n let lineStart = true;\n\n const resetInline = (): void => {\n labelStarts = [];\n closedAtEnd = null;\n destination = null;\n };\n const result = (): number | null => {\n // Every bracket still open on the line may yet become a link, so hold\n // from the outermost one the bound allows: the visible text then only\n // ever grows, even as an inner link opens and closes.\n for (const start of labelStarts) {\n if (text.length - start <= UNTERMINATED_LABEL_HOLD_LIMIT) return start;\n }\n if (destination !== null) {\n return text.length - destination.start <= UNTERMINATED_LINK_HOLD_LIMIT\n ? destination.start\n : null;\n }\n if (closedAtEnd !== null && text.length - closedAtEnd <= UNTERMINATED_LABEL_HOLD_LIMIT) {\n return closedAtEnd;\n }\n return null;\n };\n\n while (index < text.length) {\n if (lineStart) {\n lineStart = false;\n let lineEnd = text.indexOf(\"\\n\", index);\n if (lineEnd === -1) lineEnd = text.length;\n if (!isProseLine(text.slice(index, lineEnd))) {\n // A block boundary or a code line: no inline construct survives it.\n resetInline();\n index = lineEnd + 1;\n lineStart = true;\n continue;\n }\n }\n\n const char = text[index];\n if (char === \"\\n\") {\n // Labels and destinations do not span lines in a streamed message.\n resetInline();\n lineStart = true;\n index += 1;\n continue;\n }\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n if (char === \"`\") {\n const length = runLength(text, index, \"`\");\n const end = codeSpanEnd(text, index + length, length);\n // An open code span runs to the end of the text: nothing after it is\n // markdown, and a construct opened before it is still being written.\n if (end === -1) return result();\n index = end;\n continue;\n }\n\n if (destination !== null) {\n const verdict = advanceDestination(destination, char);\n if (verdict !== \"open\") destination = null;\n } else if (char === \"[\") {\n // An image's `!` stays visible: cutting before it would take back a\n // character already shown, and the renderer consumes it at completion.\n labelStarts.push(index);\n } else if (char === \"]\") {\n // Innermost-first, as CommonMark matches brackets: the `]` closes the\n // most recent `[`, and only that pair can become a link.\n const start = labelStarts.pop();\n if (start !== undefined) {\n if (index + 1 >= text.length) {\n closedAtEnd = start;\n } else if (text[index + 1] === \"(\") {\n destination = { start, phase: \"start\", depth: 0, titleClose: \"\" };\n index += 1;\n }\n }\n }\n index += 1;\n }\n\n return result();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
const UNTERMINATED_LABEL_HOLD_LIMIT = 200;
|
|
2
|
+
const UNTERMINATED_LINK_HOLD_LIMIT = 1500;
|
|
3
|
+
const FENCE_LINE = /^\s*(`{3,}|~{3,})(.*)$/;
|
|
4
|
+
const BLOCKQUOTE_PREFIX = /^(?: {0,3}>[ \t]?)+/;
|
|
5
|
+
const LIST_MARKER = /^([ \t]*)([-*+]|\d{1,9}[.)])([ \t]+)/;
|
|
6
|
+
function hideUnterminatedMarkdownLink(text) {
|
|
7
|
+
if (!text.includes("[")) return text;
|
|
8
|
+
const start = scanTrailingLink(text);
|
|
9
|
+
return start === null ? text : text.slice(0, start);
|
|
10
|
+
}
|
|
11
|
+
function runLength(text, index, char) {
|
|
12
|
+
let end = index;
|
|
13
|
+
while (end < text.length && text[end] === char) end += 1;
|
|
14
|
+
return end - index;
|
|
15
|
+
}
|
|
16
|
+
function codeSpanEnd(text, from, length) {
|
|
17
|
+
const blankLine = text.indexOf("\n\n", from);
|
|
18
|
+
const paragraphEnd = blankLine === -1 ? text.length : blankLine;
|
|
19
|
+
let cursor = from;
|
|
20
|
+
while (cursor < paragraphEnd) {
|
|
21
|
+
const next = text.indexOf("`", cursor);
|
|
22
|
+
if (next === -1 || next >= paragraphEnd) return -1;
|
|
23
|
+
const run = runLength(text, next, "`");
|
|
24
|
+
if (run === length) return next + run;
|
|
25
|
+
cursor = next + run;
|
|
26
|
+
}
|
|
27
|
+
return -1;
|
|
28
|
+
}
|
|
29
|
+
function fenceRun(line) {
|
|
30
|
+
const match = FENCE_LINE.exec(line);
|
|
31
|
+
if (!match) return null;
|
|
32
|
+
if (match[1][0] === "`" && match[2].includes("`")) return null;
|
|
33
|
+
return match[1];
|
|
34
|
+
}
|
|
35
|
+
function leadingIndent(line) {
|
|
36
|
+
let indent = 0;
|
|
37
|
+
for (const char of line) {
|
|
38
|
+
if (char === " ") indent += 1;
|
|
39
|
+
else if (char === " ") indent += 4;
|
|
40
|
+
else break;
|
|
41
|
+
}
|
|
42
|
+
return indent;
|
|
43
|
+
}
|
|
44
|
+
function createBlockTracker() {
|
|
45
|
+
let fence = null;
|
|
46
|
+
let indentedCode = false;
|
|
47
|
+
let previousBlank = true;
|
|
48
|
+
const listContentIndents = [];
|
|
49
|
+
return (line) => {
|
|
50
|
+
const content = line.replace(BLOCKQUOTE_PREFIX, "");
|
|
51
|
+
const blank = content.trim() === "";
|
|
52
|
+
try {
|
|
53
|
+
const run = fenceRun(content);
|
|
54
|
+
if (fence !== null) {
|
|
55
|
+
if (run !== null && run[0] === fence[0] && run.length >= fence.length) fence = null;
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (run !== null) {
|
|
59
|
+
fence = run;
|
|
60
|
+
indentedCode = false;
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const indent = leadingIndent(line);
|
|
64
|
+
const codeIndent = (listContentIndents.at(-1) ?? 0) + 4;
|
|
65
|
+
if (indentedCode) {
|
|
66
|
+
if (blank || indent >= codeIndent) return false;
|
|
67
|
+
indentedCode = false;
|
|
68
|
+
} else if (!blank && previousBlank && indent >= codeIndent) {
|
|
69
|
+
indentedCode = true;
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (blank) return true;
|
|
73
|
+
const marker = LIST_MARKER.exec(line);
|
|
74
|
+
if (marker) {
|
|
75
|
+
const markerIndent = leadingIndent(marker[1]);
|
|
76
|
+
while ((listContentIndents.at(-1) ?? -1) > markerIndent) listContentIndents.pop();
|
|
77
|
+
const gap = marker[3].length;
|
|
78
|
+
const width = marker[2].length;
|
|
79
|
+
listContentIndents.push(markerIndent + width + (gap > 4 ? 1 : gap));
|
|
80
|
+
} else {
|
|
81
|
+
while (listContentIndents.length > 0 && indent < (listContentIndents.at(-1) ?? 0)) {
|
|
82
|
+
listContentIndents.pop();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
} finally {
|
|
87
|
+
previousBlank = blank;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function advanceDestination(destination, char) {
|
|
92
|
+
const space = char === " " || char === " ";
|
|
93
|
+
switch (destination.phase) {
|
|
94
|
+
case "start":
|
|
95
|
+
if (space) return "open";
|
|
96
|
+
if (char === ")") return "closed";
|
|
97
|
+
if (char === "<") {
|
|
98
|
+
destination.phase = "angle";
|
|
99
|
+
return "open";
|
|
100
|
+
}
|
|
101
|
+
destination.phase = "bare";
|
|
102
|
+
return advanceDestination(destination, char);
|
|
103
|
+
case "angle":
|
|
104
|
+
if (char === ">") destination.phase = "after-destination";
|
|
105
|
+
return "open";
|
|
106
|
+
case "bare":
|
|
107
|
+
if (char === "(") {
|
|
108
|
+
destination.depth += 1;
|
|
109
|
+
return "open";
|
|
110
|
+
}
|
|
111
|
+
if (char === ")") {
|
|
112
|
+
if (destination.depth === 0) return "closed";
|
|
113
|
+
destination.depth -= 1;
|
|
114
|
+
return "open";
|
|
115
|
+
}
|
|
116
|
+
if (space) destination.phase = "after-destination";
|
|
117
|
+
return "open";
|
|
118
|
+
case "after-destination":
|
|
119
|
+
if (space) return "open";
|
|
120
|
+
if (char === ")") return "closed";
|
|
121
|
+
if (char === '"' || char === "'" || char === "(") {
|
|
122
|
+
destination.phase = "title";
|
|
123
|
+
destination.titleClose = char === "(" ? ")" : char;
|
|
124
|
+
return "open";
|
|
125
|
+
}
|
|
126
|
+
return "invalid";
|
|
127
|
+
case "title":
|
|
128
|
+
if (char === destination.titleClose) destination.phase = "after-title";
|
|
129
|
+
return "open";
|
|
130
|
+
case "after-title":
|
|
131
|
+
if (space) return "open";
|
|
132
|
+
return char === ")" ? "closed" : "invalid";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function scanTrailingLink(text) {
|
|
136
|
+
let labelStarts = [];
|
|
137
|
+
let closedAtEnd = null;
|
|
138
|
+
let destination = null;
|
|
139
|
+
const isProseLine = createBlockTracker();
|
|
140
|
+
let index = 0;
|
|
141
|
+
let lineStart = true;
|
|
142
|
+
const resetInline = () => {
|
|
143
|
+
labelStarts = [];
|
|
144
|
+
closedAtEnd = null;
|
|
145
|
+
destination = null;
|
|
146
|
+
};
|
|
147
|
+
const result = () => {
|
|
148
|
+
for (const start of labelStarts) {
|
|
149
|
+
if (text.length - start <= UNTERMINATED_LABEL_HOLD_LIMIT) return start;
|
|
150
|
+
}
|
|
151
|
+
if (destination !== null) {
|
|
152
|
+
return text.length - destination.start <= UNTERMINATED_LINK_HOLD_LIMIT ? destination.start : null;
|
|
153
|
+
}
|
|
154
|
+
if (closedAtEnd !== null && text.length - closedAtEnd <= UNTERMINATED_LABEL_HOLD_LIMIT) {
|
|
155
|
+
return closedAtEnd;
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
};
|
|
159
|
+
while (index < text.length) {
|
|
160
|
+
if (lineStart) {
|
|
161
|
+
lineStart = false;
|
|
162
|
+
let lineEnd = text.indexOf("\n", index);
|
|
163
|
+
if (lineEnd === -1) lineEnd = text.length;
|
|
164
|
+
if (!isProseLine(text.slice(index, lineEnd))) {
|
|
165
|
+
resetInline();
|
|
166
|
+
index = lineEnd + 1;
|
|
167
|
+
lineStart = true;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
const char = text[index];
|
|
172
|
+
if (char === "\n") {
|
|
173
|
+
resetInline();
|
|
174
|
+
lineStart = true;
|
|
175
|
+
index += 1;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (char === "\\") {
|
|
179
|
+
index += 2;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (char === "`") {
|
|
183
|
+
const length = runLength(text, index, "`");
|
|
184
|
+
const end = codeSpanEnd(text, index + length, length);
|
|
185
|
+
if (end === -1) return result();
|
|
186
|
+
index = end;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (destination !== null) {
|
|
190
|
+
const verdict = advanceDestination(destination, char);
|
|
191
|
+
if (verdict !== "open") destination = null;
|
|
192
|
+
} else if (char === "[") {
|
|
193
|
+
labelStarts.push(index);
|
|
194
|
+
} else if (char === "]") {
|
|
195
|
+
const start = labelStarts.pop();
|
|
196
|
+
if (start !== void 0) {
|
|
197
|
+
if (index + 1 >= text.length) {
|
|
198
|
+
closedAtEnd = start;
|
|
199
|
+
} else if (text[index + 1] === "(") {
|
|
200
|
+
destination = { start, phase: "start", depth: 0, titleClose: "" };
|
|
201
|
+
index += 1;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
index += 1;
|
|
206
|
+
}
|
|
207
|
+
return result();
|
|
208
|
+
}
|
|
209
|
+
export {
|
|
210
|
+
UNTERMINATED_LABEL_HOLD_LIMIT,
|
|
211
|
+
UNTERMINATED_LINK_HOLD_LIMIT,
|
|
212
|
+
hideUnterminatedMarkdownLink
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=streaming-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-markdown.js","sources":["../../../../../agent-runtime/src/streaming-markdown.ts"],"sourcesContent":["/**\n * Hide a markdown link the stream has not finished writing.\n *\n * The agent mentions and cites assets as markdown links —\n * `[@Considerations/Notes](https://…/dashboard/spaces/?asset_ids=asset_…&type=document&anchor=pm_node&node_id=…&excerpt=…)`\n * — which every chat surface renders as a mention chip once the link is\n * complete. While it is still arriving, a markdown parser sees a bracketed\n * label followed by a bare URL: the label shows as raw text and the half URL\n * linkifies into a live link whose target changes with every batch, for as\n * long as the destination takes to stream (an `excerpt` parameter can run to\n * hundreds of characters). Then the closing `)` lands and the run is rebuilt\n * as a chip.\n *\n * While a part is streaming, cut the text at the start of a trailing link\n * whose `)` has not arrived; it reappears whole, as a chip, in the batch that\n * closes it. Every link and image destination is held — a web citation\n * flickers the same way — and so is every bracket still undecided on the\n * line: an unfinished `[label`, and a closed `[label]` at the very end of the\n * text, which waits one batch for its `(`. Holding the label too is what\n * makes the visible text only ever grow — a link never shows as a label and\n * then retracts when its destination starts — and that append-only property\n * is what keeps Olympus's incremental streaming apply on its cheap path.\n * Brackets match innermost-first, as CommonMark does, and the hold starts at\n * the outermost undecided bracket the size bound allows, so an unmatched\n * bracket in prose hides at most a phrase, briefly, and never masks a later\n * mention. A construct that crosses a line break or runs past its bound is\n * released so a malformed link cannot hide the rest of the message; fenced\n * code (including fences inside blockquotes), indented code and inline code\n * are left untouched; and settled text is never passed through this\n * function, so a link the model genuinely left open shows raw once the part\n * completes.\n *\n * Shared by every chat surface (Olympus, the React SDK hosts, mobile) so the\n * hold behaves identically wherever a transcript streams. Pure string work,\n * linear in the text.\n */\n\n/** An open bracket further back than this is prose, not a label being streamed. */\nexport const UNTERMINATED_LABEL_HOLD_LIMIT = 200;\n/** A link (label and destination) longer than this is broken, not streaming. */\nexport const UNTERMINATED_LINK_HOLD_LIMIT = 1500;\n\n/** Opening or closing code fence: three or more backticks or tildes, then the info string. */\nconst FENCE_LINE = /^\\s*(`{3,}|~{3,})(.*)$/;\n/** Leading blockquote markers (`> `, `>>`, each indented at most three spaces). */\nconst BLOCKQUOTE_PREFIX = /^(?: {0,3}>[ \\t]?)+/;\n/** Bullet or ordered list marker at the start of a line, with the spaces that follow it. */\nconst LIST_MARKER = /^([ \\t]*)([-*+]|\\d{1,9}[.)])([ \\t]+)/;\n\n/**\n * The streamed text with a trailing, still-undecided markdown link or image\n * removed. Text without such a construct is returned as is, and the result is\n * always a prefix of `text`.\n */\nexport function hideUnterminatedMarkdownLink(text: string): string {\n if (!text.includes(\"[\")) return text;\n\n const start = scanTrailingLink(text);\n return start === null ? text : text.slice(0, start);\n}\n\n/** Length of the run of `char` starting at `index`. */\nfunction runLength(text: string, index: number, char: string): number {\n let end = index;\n while (end < text.length && text[end] === char) end += 1;\n return end - index;\n}\n\n/**\n * Index just past the backtick run of exactly `length` that closes a code\n * span opened before `from`, or -1 when none arrives before the paragraph\n * ends (a blank line) — an open span runs to the end of the text.\n */\nfunction codeSpanEnd(text: string, from: number, length: number): number {\n const blankLine = text.indexOf(\"\\n\\n\", from);\n const paragraphEnd = blankLine === -1 ? text.length : blankLine;\n let cursor = from;\n while (cursor < paragraphEnd) {\n const next = text.indexOf(\"`\", cursor);\n if (next === -1 || next >= paragraphEnd) return -1;\n const run = runLength(text, next, \"`\");\n if (run === length) return next + run;\n cursor = next + run;\n }\n return -1;\n}\n\n/**\n * The fence run a line opens or closes, or null. A backtick fence's info\n * string cannot contain a backtick (that is inline code, not a fence).\n */\nfunction fenceRun(line: string): string | null {\n const match = FENCE_LINE.exec(line);\n if (!match) return null;\n if (match[1][0] === \"`\" && match[2].includes(\"`\")) return null;\n return match[1];\n}\n\n/** Columns of leading whitespace on a line; a tab counts as four. */\nfunction leadingIndent(line: string): number {\n let indent = 0;\n for (const char of line) {\n if (char === \" \") indent += 1;\n else if (char === \"\\t\") indent += 4;\n else break;\n }\n return indent;\n}\n\n/**\n * Tracks the block structure the inline scan must not read: fenced code\n * (also inside blockquotes), indented code, and the list nesting that decides\n * how deep an indent has to be before it is code rather than a nested item\n * or a continuation paragraph. Fed one line at a time, in order.\n */\nfunction createBlockTracker() {\n let fence: string | null = null;\n let indentedCode = false;\n let previousBlank = true;\n /** Content indents of the open list items, outermost first. */\n const listContentIndents: number[] = [];\n\n /** Whether `line` is prose the inline scan should read. */\n return (line: string): boolean => {\n const content = line.replace(BLOCKQUOTE_PREFIX, \"\");\n const blank = content.trim() === \"\";\n try {\n const run = fenceRun(content);\n if (fence !== null) {\n // Code: a run of the same character at least as long as the opener\n // closes the block; everything else on the line is content.\n if (run !== null && run[0] === fence[0] && run.length >= fence.length) fence = null;\n return false;\n }\n if (run !== null) {\n fence = run;\n indentedCode = false;\n return false;\n }\n\n // Indented code needs four columns beyond the innermost open list\n // item's content — less than that is a nested item or a continuation\n // paragraph — and cannot interrupt a paragraph.\n const indent = leadingIndent(line);\n const codeIndent = (listContentIndents.at(-1) ?? 0) + 4;\n if (indentedCode) {\n if (blank || indent >= codeIndent) return false;\n indentedCode = false;\n } else if (!blank && previousBlank && indent >= codeIndent) {\n indentedCode = true;\n return false;\n }\n if (blank) return true;\n\n const marker = LIST_MARKER.exec(line);\n if (marker) {\n const markerIndent = leadingIndent(marker[1]);\n while ((listContentIndents.at(-1) ?? -1) > markerIndent) listContentIndents.pop();\n // Five or more spaces after the marker start an indented code block\n // inside the item, so the content column is one past the marker.\n const gap = marker[3].length;\n const width = marker[2].length;\n listContentIndents.push(markerIndent + width + (gap > 4 ? 1 : gap));\n } else {\n while (listContentIndents.length > 0 && indent < (listContentIndents.at(-1) ?? 0)) {\n listContentIndents.pop();\n }\n }\n return true;\n } finally {\n previousBlank = blank;\n }\n };\n}\n\n/**\n * The CommonMark link-destination grammar after `](`: optional whitespace,\n * then either `<…>` or a bare destination whose parentheses must balance,\n * then optional whitespace and a `\"…\"`, `'…'` or `(…)` title, then `)`.\n */\ninterface Destination {\n start: number;\n phase: \"start\" | \"angle\" | \"bare\" | \"after-destination\" | \"title\" | \"after-title\";\n depth: number;\n titleClose: string;\n}\n\nfunction advanceDestination(\n destination: Destination,\n char: string,\n): \"open\" | \"closed\" | \"invalid\" {\n const space = char === \" \" || char === \"\\t\";\n switch (destination.phase) {\n case \"start\":\n if (space) return \"open\";\n if (char === \")\") return \"closed\";\n if (char === \"<\") {\n destination.phase = \"angle\";\n return \"open\";\n }\n destination.phase = \"bare\";\n return advanceDestination(destination, char);\n case \"angle\":\n if (char === \">\") destination.phase = \"after-destination\";\n return \"open\";\n case \"bare\":\n if (char === \"(\") {\n destination.depth += 1;\n return \"open\";\n }\n if (char === \")\") {\n if (destination.depth === 0) return \"closed\";\n destination.depth -= 1;\n return \"open\";\n }\n if (space) destination.phase = \"after-destination\";\n return \"open\";\n case \"after-destination\":\n if (space) return \"open\";\n if (char === \")\") return \"closed\";\n if (char === '\"' || char === \"'\" || char === \"(\") {\n destination.phase = \"title\";\n destination.titleClose = char === \"(\" ? \")\" : char;\n return \"open\";\n }\n return \"invalid\";\n case \"title\":\n if (char === destination.titleClose) destination.phase = \"after-title\";\n return \"open\";\n case \"after-title\":\n if (space) return \"open\";\n return char === \")\" ? \"closed\" : \"invalid\";\n }\n}\n\n/**\n * Where the text should be cut for the link construct still undecided at its\n * very end, or null when nothing is open: the outermost unclosed `[` within\n * the label bound, else the `[` of a closed label or open destination that\n * is still within its own bound.\n */\nfunction scanTrailingLink(text: string): number | null {\n /** Positions of the `[` not yet closed on this line, outermost first. */\n let labelStarts: number[] = [];\n /** The `[` whose `]` is the last character of the text — `(` may be next. */\n let closedAtEnd: number | null = null;\n let destination: Destination | null = null;\n const isProseLine = createBlockTracker();\n let index = 0;\n let lineStart = true;\n\n const resetInline = (): void => {\n labelStarts = [];\n closedAtEnd = null;\n destination = null;\n };\n const result = (): number | null => {\n // Every bracket still open on the line may yet become a link, so hold\n // from the outermost one the bound allows: the visible text then only\n // ever grows, even as an inner link opens and closes.\n for (const start of labelStarts) {\n if (text.length - start <= UNTERMINATED_LABEL_HOLD_LIMIT) return start;\n }\n if (destination !== null) {\n return text.length - destination.start <= UNTERMINATED_LINK_HOLD_LIMIT\n ? destination.start\n : null;\n }\n if (closedAtEnd !== null && text.length - closedAtEnd <= UNTERMINATED_LABEL_HOLD_LIMIT) {\n return closedAtEnd;\n }\n return null;\n };\n\n while (index < text.length) {\n if (lineStart) {\n lineStart = false;\n let lineEnd = text.indexOf(\"\\n\", index);\n if (lineEnd === -1) lineEnd = text.length;\n if (!isProseLine(text.slice(index, lineEnd))) {\n // A block boundary or a code line: no inline construct survives it.\n resetInline();\n index = lineEnd + 1;\n lineStart = true;\n continue;\n }\n }\n\n const char = text[index];\n if (char === \"\\n\") {\n // Labels and destinations do not span lines in a streamed message.\n resetInline();\n lineStart = true;\n index += 1;\n continue;\n }\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n if (char === \"`\") {\n const length = runLength(text, index, \"`\");\n const end = codeSpanEnd(text, index + length, length);\n // An open code span runs to the end of the text: nothing after it is\n // markdown, and a construct opened before it is still being written.\n if (end === -1) return result();\n index = end;\n continue;\n }\n\n if (destination !== null) {\n const verdict = advanceDestination(destination, char);\n if (verdict !== \"open\") destination = null;\n } else if (char === \"[\") {\n // An image's `!` stays visible: cutting before it would take back a\n // character already shown, and the renderer consumes it at completion.\n labelStarts.push(index);\n } else if (char === \"]\") {\n // Innermost-first, as CommonMark matches brackets: the `]` closes the\n // most recent `[`, and only that pair can become a link.\n const start = labelStarts.pop();\n if (start !== undefined) {\n if (index + 1 >= text.length) {\n closedAtEnd = start;\n } else if (text[index + 1] === \"(\") {\n destination = { start, phase: \"start\", depth: 0, titleClose: \"\" };\n index += 1;\n }\n }\n }\n index += 1;\n }\n\n return result();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function hasStatewireThreadExtras(extras) {
|
|
4
|
+
if (!extras || typeof extras !== "object") return false;
|
|
5
|
+
const candidate = extras;
|
|
6
|
+
return typeof candidate.sendCommand === "function" && Array.isArray(candidate.inputRequests) && typeof candidate.runs === "object" && candidate.runs !== null;
|
|
7
|
+
}
|
|
8
|
+
function isFailedSendEntry(value) {
|
|
9
|
+
var _a;
|
|
10
|
+
if (!value || typeof value !== "object") return false;
|
|
11
|
+
const entry = value;
|
|
12
|
+
return typeof entry.id === "string" && typeof ((_a = entry.sendFailure) == null ? void 0 : _a.fate) === "string";
|
|
13
|
+
}
|
|
14
|
+
function readStatewireFailedSendLane(extras) {
|
|
15
|
+
var _a;
|
|
16
|
+
if (!extras || typeof extras !== "object") return null;
|
|
17
|
+
const candidate = extras;
|
|
18
|
+
const failed = (_a = candidate.runs) == null ? void 0 : _a.failed;
|
|
19
|
+
if (!Array.isArray(failed) || typeof candidate.retryFailed !== "function") return null;
|
|
20
|
+
return {
|
|
21
|
+
failed: failed.filter(isFailedSendEntry),
|
|
22
|
+
retryFailed: candidate.retryFailed
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function requireStatewireFailedActions(extras) {
|
|
26
|
+
if (!extras || typeof extras !== "object") {
|
|
27
|
+
throw new Error("Failed-send actions require a Statewire thread");
|
|
28
|
+
}
|
|
29
|
+
const candidate = extras;
|
|
30
|
+
if (typeof candidate.retryFailed !== "function" || typeof candidate.discardFailed !== "function") {
|
|
31
|
+
throw new Error("Failed-send actions require a Statewire thread");
|
|
32
|
+
}
|
|
33
|
+
return candidate;
|
|
34
|
+
}
|
|
35
|
+
exports.hasStatewireThreadExtras = hasStatewireThreadExtras;
|
|
36
|
+
exports.readStatewireFailedSendLane = readStatewireFailedSendLane;
|
|
37
|
+
exports.requireStatewireFailedActions = requireStatewireFailedActions;
|
|
38
|
+
//# sourceMappingURL=thread-extras.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-extras.cjs","sources":["../../../../../agent-runtime/src/thread-extras.ts"],"sourcesContent":["/**\n * The statewire hooks read the NEAREST aui thread's extras and throw when those\n * aren't statewire extras — which is the case inside nested read-only runtimes\n * (e.g. a transcript drawer) and on legacy (non-statewire) threads. Duck-type\n * the pieces the statewire components actually consume; a wider shape check\n * would silently hide live affordances if the library ever drops an unrelated\n * field.\n */\nexport function hasStatewireThreadExtras(extras: unknown): boolean {\n if (!extras || typeof extras !== 'object') return false;\n const candidate = extras as Record<string, unknown>;\n return (\n typeof candidate.sendCommand === 'function' &&\n Array.isArray(candidate.inputRequests) &&\n typeof candidate.runs === 'object' &&\n candidate.runs !== null\n );\n}\n\nexport interface StatewireFailedActions {\n retryFailed: (messageId: string) => void;\n discardFailed: (messageId: string) => void;\n}\n\n/** One projected failed run send: the message id plus the failure that\n * retained it (`runs.failed` entry, structurally). */\nexport interface StatewireFailedSendEntry {\n id: string;\n sendFailure: {\n fate: string;\n /**\n * Set on an `aborted` send that was never attempted because an earlier\n * send in the same detach batch WAS attempted and settled `lost`: the\n * library cannot know whether that predecessor ran, so the successor\n * must not be re-dispatched ahead of it (`StatewireClient.SendFailure`).\n */\n predecessorLost?: boolean;\n };\n}\n\n/** The failed-send lane surface the send-recovery controller consumes. */\nexport interface StatewireFailedSendLane {\n failed: readonly StatewireFailedSendEntry[];\n /** Re-dispatches the entry against the current thread — same message id,\n * re-anchored — and removes it from the lane. Throws for unknown ids. */\n retryFailed: (messageId: string) => void;\n}\n\nfunction isFailedSendEntry(value: unknown): value is StatewireFailedSendEntry {\n if (!value || typeof value !== 'object') return false;\n const entry = value as { id?: unknown; sendFailure?: { fate?: unknown } };\n return typeof entry.id === 'string' && typeof entry.sendFailure?.fate === 'string';\n}\n\n/**\n * The failed-send lane off a statewire thread's extras, or `null` when the\n * extras are not a statewire thread's (nested read-only runtimes, legacy\n * threads) — same duck-typing posture as {@link hasStatewireThreadExtras}.\n */\nexport function readStatewireFailedSendLane(extras: unknown): StatewireFailedSendLane | null {\n if (!extras || typeof extras !== 'object') return null;\n const candidate = extras as {\n runs?: { failed?: unknown };\n retryFailed?: unknown;\n };\n const failed = candidate.runs?.failed;\n if (!Array.isArray(failed) || typeof candidate.retryFailed !== 'function') return null;\n return {\n failed: failed.filter(isFailedSendEntry),\n retryFailed: candidate.retryFailed as StatewireFailedSendLane['retryFailed'],\n };\n}\n\n/** The failed-send lane actions off a statewire thread's extras, or throw. */\nexport function requireStatewireFailedActions(extras: unknown): StatewireFailedActions {\n if (!extras || typeof extras !== 'object') {\n throw new Error('Failed-send actions require a Statewire thread');\n }\n const candidate = extras as Record<string, unknown>;\n if (\n typeof candidate.retryFailed !== 'function' ||\n typeof candidate.discardFailed !== 'function'\n ) {\n throw new Error('Failed-send actions require a Statewire thread');\n }\n return candidate as unknown as StatewireFailedActions;\n}\n"],"names":[],"mappings":";;AAQO,SAAS,yBAAyB,QAA0B;AACjE,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,YAAY;AAClB,SACE,OAAO,UAAU,gBAAgB,cACjC,MAAM,QAAQ,UAAU,aAAa,KACrC,OAAO,UAAU,SAAS,YAC1B,UAAU,SAAS;AAEvB;AA+BA,SAAS,kBAAkB,OAAmD;;AAC5E,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,QAAQ;AACd,SAAO,OAAO,MAAM,OAAO,YAAY,SAAO,WAAM,gBAAN,mBAAmB,UAAS;AAC5E;AAOO,SAAS,4BAA4B,QAAiD;;AAC3F,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,YAAY;AAIlB,QAAM,UAAS,eAAU,SAAV,mBAAgB;AAC/B,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,UAAU,gBAAgB,WAAY,QAAO;AAClF,SAAO;AAAA,IACL,QAAQ,OAAO,OAAO,iBAAiB;AAAA,IACvC,aAAa,UAAU;AAAA,EAAA;AAE3B;AAGO,SAAS,8BAA8B,QAAyC;AACrF,MAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AACzC,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,QAAM,YAAY;AAClB,MACE,OAAO,UAAU,gBAAgB,cACjC,OAAO,UAAU,kBAAkB,YACnC;AACA,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function hasStatewireThreadExtras(extras) {
|
|
2
|
+
if (!extras || typeof extras !== "object") return false;
|
|
3
|
+
const candidate = extras;
|
|
4
|
+
return typeof candidate.sendCommand === "function" && Array.isArray(candidate.inputRequests) && typeof candidate.runs === "object" && candidate.runs !== null;
|
|
5
|
+
}
|
|
6
|
+
function isFailedSendEntry(value) {
|
|
7
|
+
var _a;
|
|
8
|
+
if (!value || typeof value !== "object") return false;
|
|
9
|
+
const entry = value;
|
|
10
|
+
return typeof entry.id === "string" && typeof ((_a = entry.sendFailure) == null ? void 0 : _a.fate) === "string";
|
|
11
|
+
}
|
|
12
|
+
function readStatewireFailedSendLane(extras) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (!extras || typeof extras !== "object") return null;
|
|
15
|
+
const candidate = extras;
|
|
16
|
+
const failed = (_a = candidate.runs) == null ? void 0 : _a.failed;
|
|
17
|
+
if (!Array.isArray(failed) || typeof candidate.retryFailed !== "function") return null;
|
|
18
|
+
return {
|
|
19
|
+
failed: failed.filter(isFailedSendEntry),
|
|
20
|
+
retryFailed: candidate.retryFailed
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function requireStatewireFailedActions(extras) {
|
|
24
|
+
if (!extras || typeof extras !== "object") {
|
|
25
|
+
throw new Error("Failed-send actions require a Statewire thread");
|
|
26
|
+
}
|
|
27
|
+
const candidate = extras;
|
|
28
|
+
if (typeof candidate.retryFailed !== "function" || typeof candidate.discardFailed !== "function") {
|
|
29
|
+
throw new Error("Failed-send actions require a Statewire thread");
|
|
30
|
+
}
|
|
31
|
+
return candidate;
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
hasStatewireThreadExtras,
|
|
35
|
+
readStatewireFailedSendLane,
|
|
36
|
+
requireStatewireFailedActions
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=thread-extras.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-extras.js","sources":["../../../../../agent-runtime/src/thread-extras.ts"],"sourcesContent":["/**\n * The statewire hooks read the NEAREST aui thread's extras and throw when those\n * aren't statewire extras — which is the case inside nested read-only runtimes\n * (e.g. a transcript drawer) and on legacy (non-statewire) threads. Duck-type\n * the pieces the statewire components actually consume; a wider shape check\n * would silently hide live affordances if the library ever drops an unrelated\n * field.\n */\nexport function hasStatewireThreadExtras(extras: unknown): boolean {\n if (!extras || typeof extras !== 'object') return false;\n const candidate = extras as Record<string, unknown>;\n return (\n typeof candidate.sendCommand === 'function' &&\n Array.isArray(candidate.inputRequests) &&\n typeof candidate.runs === 'object' &&\n candidate.runs !== null\n );\n}\n\nexport interface StatewireFailedActions {\n retryFailed: (messageId: string) => void;\n discardFailed: (messageId: string) => void;\n}\n\n/** One projected failed run send: the message id plus the failure that\n * retained it (`runs.failed` entry, structurally). */\nexport interface StatewireFailedSendEntry {\n id: string;\n sendFailure: {\n fate: string;\n /**\n * Set on an `aborted` send that was never attempted because an earlier\n * send in the same detach batch WAS attempted and settled `lost`: the\n * library cannot know whether that predecessor ran, so the successor\n * must not be re-dispatched ahead of it (`StatewireClient.SendFailure`).\n */\n predecessorLost?: boolean;\n };\n}\n\n/** The failed-send lane surface the send-recovery controller consumes. */\nexport interface StatewireFailedSendLane {\n failed: readonly StatewireFailedSendEntry[];\n /** Re-dispatches the entry against the current thread — same message id,\n * re-anchored — and removes it from the lane. Throws for unknown ids. */\n retryFailed: (messageId: string) => void;\n}\n\nfunction isFailedSendEntry(value: unknown): value is StatewireFailedSendEntry {\n if (!value || typeof value !== 'object') return false;\n const entry = value as { id?: unknown; sendFailure?: { fate?: unknown } };\n return typeof entry.id === 'string' && typeof entry.sendFailure?.fate === 'string';\n}\n\n/**\n * The failed-send lane off a statewire thread's extras, or `null` when the\n * extras are not a statewire thread's (nested read-only runtimes, legacy\n * threads) — same duck-typing posture as {@link hasStatewireThreadExtras}.\n */\nexport function readStatewireFailedSendLane(extras: unknown): StatewireFailedSendLane | null {\n if (!extras || typeof extras !== 'object') return null;\n const candidate = extras as {\n runs?: { failed?: unknown };\n retryFailed?: unknown;\n };\n const failed = candidate.runs?.failed;\n if (!Array.isArray(failed) || typeof candidate.retryFailed !== 'function') return null;\n return {\n failed: failed.filter(isFailedSendEntry),\n retryFailed: candidate.retryFailed as StatewireFailedSendLane['retryFailed'],\n };\n}\n\n/** The failed-send lane actions off a statewire thread's extras, or throw. */\nexport function requireStatewireFailedActions(extras: unknown): StatewireFailedActions {\n if (!extras || typeof extras !== 'object') {\n throw new Error('Failed-send actions require a Statewire thread');\n }\n const candidate = extras as Record<string, unknown>;\n if (\n typeof candidate.retryFailed !== 'function' ||\n typeof candidate.discardFailed !== 'function'\n ) {\n throw new Error('Failed-send actions require a Statewire thread');\n }\n return candidate as unknown as StatewireFailedActions;\n}\n"],"names":[],"mappings":"AAQO,SAAS,yBAAyB,QAA0B;AACjE,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,YAAY;AAClB,SACE,OAAO,UAAU,gBAAgB,cACjC,MAAM,QAAQ,UAAU,aAAa,KACrC,OAAO,UAAU,SAAS,YAC1B,UAAU,SAAS;AAEvB;AA+BA,SAAS,kBAAkB,OAAmD;AAxCvE;AAyCL,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,QAAQ;AACd,SAAO,OAAO,MAAM,OAAO,YAAY,SAAO,WAAM,gBAAN,mBAAmB,UAAS;AAC5E;AAOO,SAAS,4BAA4B,QAAiD;AAnDtF;AAoDL,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,YAAY;AAIlB,QAAM,UAAS,eAAU,SAAV,mBAAgB;AAC/B,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,UAAU,gBAAgB,WAAY,QAAO;AAClF,SAAO;AAAA,IACL,QAAQ,OAAO,OAAO,iBAAiB;AAAA,IACvC,aAAa,UAAU;AAAA,EAAA;AAE3B;AAGO,SAAS,8BAA8B,QAAyC;AACrF,MAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AACzC,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,QAAM,YAAY;AAClB,MACE,OAAO,UAAU,gBAAgB,cACjC,OAAO,UAAU,kBAAkB,YACnC;AACA,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;"}
|