@athenaintel/react 0.57.1 → 0.59.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 +778 -9
- package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
- package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
- package/dist/agent-runtime/src/addressed-agents.js +16 -0
- package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
- package/dist/agent-runtime/src/answer-label.cjs +4 -3
- package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
- package/dist/agent-runtime/src/answer-label.d.ts +13 -6
- package/dist/agent-runtime/src/answer-label.js +4 -3
- package/dist/agent-runtime/src/answer-label.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
- package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
- package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
- package/dist/agent-runtime/src/chat-outbox.js +492 -547
- package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
- package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
- package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
- package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
- package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
- package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
- package/dist/agent-runtime/src/edit-command.d.ts +1 -1
- package/dist/agent-runtime/src/edit-command.js.map +1 -1
- package/dist/agent-runtime/src/errors.cjs +1 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -1
- package/dist/agent-runtime/src/errors.js +1 -0
- package/dist/agent-runtime/src/errors.js.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
- package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
- package/dist/agent-runtime/src/index.d.ts +14 -8
- package/dist/agent-runtime/src/lane-follow.cjs +289 -0
- package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-follow.js +289 -0
- package/dist/agent-runtime/src/lane-follow.js.map +1 -0
- package/dist/agent-runtime/src/lane-images.cjs +387 -0
- package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-images.js +387 -0
- package/dist/agent-runtime/src/lane-images.js.map +1 -0
- package/dist/agent-runtime/src/message-window.js +1 -1
- package/dist/agent-runtime/src/messages.cjs +19 -1
- package/dist/agent-runtime/src/messages.cjs.map +1 -1
- package/dist/agent-runtime/src/messages.d.ts +8 -0
- package/dist/agent-runtime/src/messages.js +21 -3
- package/dist/agent-runtime/src/messages.js.map +1 -1
- package/dist/agent-runtime/src/named-agents.cjs +301 -0
- package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/named-agents.d.ts +246 -0
- package/dist/agent-runtime/src/named-agents.js +301 -0
- package/dist/agent-runtime/src/named-agents.js.map +1 -0
- package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
- package/dist/agent-runtime/src/offline-status.d.ts +66 -2
- package/dist/agent-runtime/src/offline-status.js.map +1 -1
- package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
- package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
- package/dist/agent-runtime/src/queue.cjs +2 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -1
- package/dist/agent-runtime/src/queue.d.ts +20 -25
- package/dist/agent-runtime/src/queue.js +2 -2
- package/dist/agent-runtime/src/queue.js.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
- package/dist/agent-runtime/src/run-send.cjs +54 -0
- package/dist/agent-runtime/src/run-send.cjs.map +1 -0
- package/dist/agent-runtime/src/run-send.d.ts +51 -0
- package/dist/agent-runtime/src/run-send.js +54 -0
- package/dist/agent-runtime/src/run-send.js.map +1 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
- package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
- package/dist/agent-runtime/src/runtime.d.ts +9 -5
- package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
- package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
- package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
- package/dist/agent-runtime/src/sealed-idb.js +64 -0
- package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
- package/dist/agent-runtime/src/send-recovery.cjs +90 -118
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
- package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
- package/dist/agent-runtime/src/send-recovery.js +90 -118
- package/dist/agent-runtime/src/send-recovery.js.map +1 -1
- package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
- package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
- package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
- package/dist/agent-runtime/src/statewire-state.cjs +4 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-state.js +4 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
- package/dist/agent-runtime/src/statewire-transport.js +8 -2
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
- package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
- package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
- package/dist/agent-runtime/src/subagents.cjs +22 -29
- package/dist/agent-runtime/src/subagents.cjs.map +1 -1
- package/dist/agent-runtime/src/subagents.js +23 -30
- package/dist/agent-runtime/src/subagents.js.map +1 -1
- package/dist/agent-runtime/src/thread-extras.cjs +27 -19
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
- package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
- package/dist/agent-runtime/src/thread-extras.js +27 -19
- package/dist/agent-runtime/src/thread-extras.js.map +1 -1
- package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
- package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +12 -0
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/agent-runtime/src/tool-names.cjs +21 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-names.d.ts +8 -0
- package/dist/agent-runtime/src/tool-names.js +21 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -1
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
- package/dist/agent-runtime/src/typed-interrupts.js +48 -0
- package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
- package/dist/agent-runtime/src/types.d.ts +1 -1
- package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
- package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
- package/dist/agent-runtime/src/use-conversation-list.js +1 -0
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
- package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
- package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
- package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
- package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
- package/dist/agent-runtime/src/work-in.d.ts +127 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +13 -5
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +33 -2
- package/dist/assets/asset-panel-store.js +13 -5
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
- package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
- package/dist/auth/AthenaCredentialSourceContext.js +11 -0
- package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
- package/dist/auth/account-identity.cjs +13 -2
- package/dist/auth/account-identity.cjs.map +1 -1
- package/dist/auth/account-identity.d.ts +9 -0
- package/dist/auth/account-identity.js +13 -2
- package/dist/auth/account-identity.js.map +1 -1
- package/dist/auth/credential-source.cjs +20 -4
- package/dist/auth/credential-source.cjs.map +1 -1
- package/dist/auth/credential-source.d.ts +9 -0
- package/dist/auth/credential-source.js +20 -4
- package/dist/auth/credential-source.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +31 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -1
- package/dist/catalog/chat-pickers.d.ts +17 -0
- package/dist/catalog/chat-pickers.js +33 -2
- package/dist/catalog/chat-pickers.js.map +1 -1
- package/dist/catalog/runtime-catalog.cjs +63 -3
- package/dist/catalog/runtime-catalog.cjs.map +1 -1
- package/dist/catalog/runtime-catalog.d.ts +63 -3
- package/dist/catalog/runtime-catalog.js +64 -4
- package/dist/catalog/runtime-catalog.js.map +1 -1
- package/dist/chat/AthenaChat.cjs +337 -99
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +337 -99
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +35 -5
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +55 -2
- package/dist/chat/StatewireApprovalCard.js +37 -7
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +17 -2
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
- package/dist/chat/StatewireQueuedMessages.js +18 -3
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/chat-agent-mentions.cjs +70 -0
- package/dist/chat/chat-agent-mentions.cjs.map +1 -0
- package/dist/chat/chat-agent-mentions.d.ts +13 -0
- package/dist/chat/chat-agent-mentions.js +70 -0
- package/dist/chat/chat-agent-mentions.js.map +1 -0
- package/dist/chat/composer-actions.cjs +12 -0
- package/dist/chat/composer-actions.cjs.map +1 -0
- package/dist/chat/composer-actions.d.ts +22 -0
- package/dist/chat/composer-actions.js +12 -0
- package/dist/chat/composer-actions.js.map +1 -0
- package/dist/chat/follow-up-suggestions.cjs +185 -0
- package/dist/chat/follow-up-suggestions.cjs.map +1 -0
- package/dist/chat/follow-up-suggestions.d.ts +64 -0
- package/dist/chat/follow-up-suggestions.js +185 -0
- package/dist/chat/follow-up-suggestions.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
- package/dist/chat/super-grouping/ToolTimeline.js +4 -3
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/turn-changes.cjs +284 -0
- package/dist/chat/turn-changes.cjs.map +1 -0
- package/dist/chat/turn-changes.d.ts +130 -0
- package/dist/chat/turn-changes.js +284 -0
- package/dist/chat/turn-changes.js.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
- package/dist/chat/typed-interrupts/approval-cards.js +250 -0
- package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
- package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
- package/dist/chat/typed-interrupts/form-cards.js +289 -0
- package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
- package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
- package/dist/chat/typed-interrupts/request-file-card.js +159 -0
- package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
- package/dist/chat-ui/composer/composer-named-agents.js +13 -0
- package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
- package/dist/chat-ui/composer/slash-command-menu.js +143 -0
- package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
- package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands.cjs +74 -0
- package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
- package/dist/chat-ui/composer/slash-commands.js +74 -0
- package/dist/chat-ui/composer/slash-commands.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
- package/dist/chat-ui/composer/tiptap-composer.js +135 -9
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +3 -0
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +3 -0
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +2 -2
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -1
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
- package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
- package/dist/collab/client.cjs +17 -5
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +22 -7
- package/dist/collab/client.js +17 -5
- package/dist/collab/client.js.map +1 -1
- package/dist/composer/ComposerAttachedReferences.cjs +119 -0
- package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
- package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
- package/dist/composer/ComposerAttachedReferences.js +119 -0
- package/dist/composer/ComposerAttachedReferences.js.map +1 -0
- package/dist/composer/ComposerNamedAgents.cjs +63 -0
- package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
- package/dist/composer/ComposerNamedAgents.d.ts +16 -0
- package/dist/composer/ComposerNamedAgents.js +63 -0
- package/dist/composer/ComposerNamedAgents.js.map +1 -0
- package/dist/composer/attached-references.cjs +159 -0
- package/dist/composer/attached-references.cjs.map +1 -0
- package/dist/composer/attached-references.d.ts +86 -0
- package/dist/composer/attached-references.js +159 -0
- package/dist/composer/attached-references.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +14 -7
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +6 -1
- package/dist/composer/build-composed-message.js +14 -7
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +6 -2
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +7 -1
- package/dist/composer/composer-handoff.js +6 -2
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/folder-upload.cjs +149 -0
- package/dist/composer/folder-upload.cjs.map +1 -0
- package/dist/composer/folder-upload.d.ts +79 -0
- package/dist/composer/folder-upload.js +149 -0
- package/dist/composer/folder-upload.js.map +1 -0
- package/dist/composer/index.d.ts +1 -1
- package/dist/composer/useAttachToChat.cjs +35 -0
- package/dist/composer/useAttachToChat.cjs.map +1 -0
- package/dist/composer/useAttachToChat.d.ts +54 -0
- package/dist/composer/useAttachToChat.js +35 -0
- package/dist/composer/useAttachToChat.js.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
- package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +95 -7
- package/dist/composer/useFileUpload.cjs.map +1 -1
- package/dist/composer/useFileUpload.d.ts +21 -2
- package/dist/composer/useFileUpload.js +95 -7
- package/dist/composer/useFileUpload.js.map +1 -1
- package/dist/data/athena-api-error.cjs +125 -0
- package/dist/data/athena-api-error.cjs.map +1 -0
- package/dist/data/athena-api-error.d.ts +96 -0
- package/dist/data/athena-api-error.js +125 -0
- package/dist/data/athena-api-error.js.map +1 -0
- package/dist/data/athena-data-client.cjs +106 -0
- package/dist/data/athena-data-client.cjs.map +1 -0
- package/dist/data/athena-data-client.d.ts +74 -0
- package/dist/data/athena-data-client.js +106 -0
- package/dist/data/athena-data-client.js.map +1 -0
- package/dist/data/athena-member.cjs +93 -0
- package/dist/data/athena-member.cjs.map +1 -0
- package/dist/data/athena-member.d.ts +125 -0
- package/dist/data/athena-member.js +93 -0
- package/dist/data/athena-member.js.map +1 -0
- package/dist/data/athena-request.cjs +458 -0
- package/dist/data/athena-request.cjs.map +1 -0
- package/dist/data/athena-request.d.ts +120 -0
- package/dist/data/athena-request.js +458 -0
- package/dist/data/athena-request.js.map +1 -0
- package/dist/data/use-athena-fetch.cjs +14 -0
- package/dist/data/use-athena-fetch.cjs.map +1 -0
- package/dist/data/use-athena-fetch.d.ts +19 -0
- package/dist/data/use-athena-fetch.js +14 -0
- package/dist/data/use-athena-fetch.js.map +1 -0
- package/dist/data/use-athena-graphql.cjs +66 -0
- package/dist/data/use-athena-graphql.cjs.map +1 -0
- package/dist/data/use-athena-graphql.d.ts +56 -0
- package/dist/data/use-athena-graphql.js +66 -0
- package/dist/data/use-athena-graphql.js.map +1 -0
- package/dist/data/use-athena-rest.cjs +33 -0
- package/dist/data/use-athena-rest.cjs.map +1 -0
- package/dist/data/use-athena-rest.d.ts +21 -0
- package/dist/data/use-athena-rest.js +33 -0
- package/dist/data/use-athena-rest.js.map +1 -0
- package/dist/data/use-semantic-query.cjs +44 -0
- package/dist/data/use-semantic-query.cjs.map +1 -0
- package/dist/data/use-semantic-query.d.ts +92 -0
- package/dist/data/use-semantic-query.js +44 -0
- package/dist/data/use-semantic-query.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +7 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +7 -0
- package/dist/diagnostics/errors.js +7 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +155 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +72 -13
- package/dist/index.js +148 -4
- package/dist/index.js.map +1 -1
- package/dist/keryx-http/src/initial-sync.cjs +64 -16
- package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
- package/dist/keryx-http/src/initial-sync.d.ts +31 -1
- package/dist/keryx-http/src/initial-sync.js +64 -16
- package/dist/keryx-http/src/initial-sync.js.map +1 -1
- package/dist/keryx-http/src/own-awareness.cjs +20 -0
- package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
- package/dist/keryx-http/src/own-awareness.d.ts +50 -0
- package/dist/keryx-http/src/own-awareness.js +20 -0
- package/dist/keryx-http/src/own-awareness.js.map +1 -0
- package/dist/keryx-http/src/update-attributions.cjs +26 -1
- package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
- package/dist/keryx-http/src/update-attributions.d.ts +10 -1
- package/dist/keryx-http/src/update-attributions.js +26 -1
- package/dist/keryx-http/src/update-attributions.js.map +1 -1
- package/dist/offline/chat-outbox.cjs +262 -26
- package/dist/offline/chat-outbox.cjs.map +1 -1
- package/dist/offline/chat-outbox.d.ts +90 -12
- package/dist/offline/chat-outbox.js +263 -27
- package/dist/offline/chat-outbox.js.map +1 -1
- package/dist/provider/AthenaProvider.cjs +63 -19
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +66 -22
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/react/package.json.cjs +1 -1
- package/dist/react/package.json.js +1 -1
- package/dist/references/src/anchors/types.cjs +5 -0
- package/dist/references/src/anchors/types.cjs.map +1 -1
- package/dist/references/src/anchors/types.js +5 -0
- package/dist/references/src/anchors/types.js.map +1 -1
- package/dist/references/src/attachable.cjs +149 -0
- package/dist/references/src/attachable.cjs.map +1 -0
- package/dist/references/src/attachable.d.ts +87 -0
- package/dist/references/src/attachable.js +149 -0
- package/dist/references/src/attachable.js.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
- package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
- package/dist/runtime/statewire-plan-mode.cjs +71 -0
- package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
- package/dist/runtime/statewire-plan-mode.d.ts +88 -0
- package/dist/runtime/statewire-plan-mode.js +71 -0
- package/dist/runtime/statewire-plan-mode.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +18 -1
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +20 -0
- package/dist/runtime/statewire-run-config.js +18 -1
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-session-key.cjs +11 -5
- package/dist/runtime/statewire-session-key.cjs.map +1 -1
- package/dist/runtime/statewire-session-key.d.ts +22 -10
- package/dist/runtime/statewire-session-key.js +11 -5
- package/dist/runtime/statewire-session-key.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
- package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaAssets.cjs +394 -0
- package/dist/search/useAthenaAssets.cjs.map +1 -0
- package/dist/search/useAthenaAssets.d.ts +186 -0
- package/dist/search/useAthenaAssets.js +394 -0
- package/dist/search/useAthenaAssets.js.map +1 -0
- package/dist/sheet-range/index.cjs +4 -0
- package/dist/sheet-range/index.cjs.map +1 -1
- package/dist/sheet-range/index.d.ts +4 -2
- package/dist/sheet-range/index.js +4 -0
- package/dist/sheet-range/index.js.map +1 -1
- package/dist/sheet-range/query-range.cjs +102 -0
- package/dist/sheet-range/query-range.cjs.map +1 -0
- package/dist/sheet-range/query-range.d.ts +46 -0
- package/dist/sheet-range/query-range.js +102 -0
- package/dist/sheet-range/query-range.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/subagents/index.cjs +49 -0
- package/dist/subagents/index.cjs.map +1 -0
- package/dist/subagents/index.d.ts +16 -0
- package/dist/subagents/index.js +49 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/lane-follow.cjs +19 -0
- package/dist/subagents/lane-follow.cjs.map +1 -0
- package/dist/subagents/lane-follow.d.ts +9 -0
- package/dist/subagents/lane-follow.js +19 -0
- package/dist/subagents/lane-follow.js.map +1 -0
- package/dist/subagents/lane-model.cjs +178 -0
- package/dist/subagents/lane-model.cjs.map +1 -0
- package/dist/subagents/lane-model.d.ts +140 -0
- package/dist/subagents/lane-model.js +178 -0
- package/dist/subagents/lane-model.js.map +1 -0
- package/dist/subagents/lane-parts.cjs +517 -0
- package/dist/subagents/lane-parts.cjs.map +1 -0
- package/dist/subagents/lane-parts.d.ts +130 -0
- package/dist/subagents/lane-parts.js +517 -0
- package/dist/subagents/lane-parts.js.map +1 -0
- package/dist/subagents/subagent-lane-group.cjs +215 -0
- package/dist/subagents/subagent-lane-group.cjs.map +1 -0
- package/dist/subagents/subagent-lane-group.d.ts +67 -0
- package/dist/subagents/subagent-lane-group.js +215 -0
- package/dist/subagents/subagent-lane-group.js.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
- package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
- package/dist/subagents/subagent-transcript-drawer.js +431 -0
- package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
- package/dist/subagents/task-subagent-group.cjs +115 -0
- package/dist/subagents/task-subagent-group.cjs.map +1 -0
- package/dist/subagents/task-subagent-group.d.ts +36 -0
- package/dist/subagents/task-subagent-group.js +115 -0
- package/dist/subagents/task-subagent-group.js.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
- package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
- package/dist/subagents/use-omitted-images-in-view.js +68 -0
- package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
- package/dist/threads/Inbox.cjs +2 -2
- package/dist/threads/Inbox.cjs.map +1 -1
- package/dist/threads/SessionList.cjs +27 -24
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.js +22 -19
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +13 -7
- package/dist/threads/SessionsPage.cjs.map +1 -1
- package/dist/threads/SessionsPage.d.ts +10 -1
- package/dist/threads/SessionsPage.js +9 -3
- package/dist/threads/SessionsPage.js.map +1 -1
- package/dist/threads/live-session-rows.cjs +207 -0
- package/dist/threads/live-session-rows.cjs.map +1 -0
- package/dist/threads/live-session-rows.d.ts +175 -0
- package/dist/threads/live-session-rows.js +207 -0
- package/dist/threads/live-session-rows.js.map +1 -0
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +2 -1
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +3 -3
- package/dist/threads/session-row-parts.cjs.map +1 -1
- package/dist/threads/sessions-page-model.cjs +13 -5
- package/dist/threads/sessions-page-model.cjs.map +1 -1
- package/dist/threads/sessions-page-model.d.ts +7 -0
- package/dist/threads/sessions-page-model.js +11 -3
- package/dist/threads/sessions-page-model.js.map +1 -1
- package/dist/threads/sessions-page-storage.cjs +8 -8
- package/dist/threads/sessions-page-storage.cjs.map +1 -1
- package/dist/threads/sessions-page-storage.d.ts +5 -1
- package/dist/threads/sessions-page-storage.js +8 -8
- package/dist/threads/sessions-page-storage.js.map +1 -1
- package/dist/threads/statewire-thread-list.cjs +173 -20
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +44 -1
- package/dist/threads/statewire-thread-list.js +174 -21
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +1 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -1
- package/dist/threads/use-athena-sessions.d.ts +7 -0
- package/dist/threads/use-athena-sessions.js +1 -0
- package/dist/threads/use-athena-sessions.js.map +1 -1
- package/dist/threads/use-athena-thread-agent.cjs +31 -0
- package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
- package/dist/threads/use-athena-thread-agent.d.ts +38 -0
- package/dist/threads/use-athena-thread-agent.js +31 -0
- package/dist/threads/use-athena-thread-agent.js.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.d.ts +1 -0
- package/dist/tools/agent-creations.cjs +97 -0
- package/dist/tools/agent-creations.cjs.map +1 -0
- package/dist/tools/agent-creations.d.ts +38 -0
- package/dist/tools/agent-creations.js +97 -0
- package/dist/tools/agent-creations.js.map +1 -0
- package/dist/tools/agent-highlights.cjs +100 -0
- package/dist/tools/agent-highlights.cjs.map +1 -0
- package/dist/tools/agent-highlights.d.ts +57 -0
- package/dist/tools/agent-highlights.js +100 -0
- package/dist/tools/agent-highlights.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +1 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -1
- package/dist/tools/append-document-tool-ui.d.ts +7 -0
- package/dist/tools/append-document-tool-ui.js +2 -1
- package/dist/tools/append-document-tool-ui.js.map +1 -1
- package/dist/tools/auto-open-tools.cjs +144 -71
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.d.ts +131 -1
- package/dist/tools/auto-open-tools.js +145 -72
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/browser-tool-uis.cjs +594 -0
- package/dist/tools/browser-tool-uis.cjs.map +1 -0
- package/dist/tools/browser-tool-uis.d.ts +8 -0
- package/dist/tools/browser-tool-uis.js +594 -0
- package/dist/tools/browser-tool-uis.js.map +1 -0
- package/dist/tools/computer-asset-tool-uis.cjs +313 -0
- package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
- package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
- package/dist/tools/computer-asset-tool-uis.js +313 -0
- package/dist/tools/computer-asset-tool-uis.js.map +1 -0
- package/dist/tools/document-edit-tool-uis.cjs +218 -0
- package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/document-edit-tool-uis.d.ts +40 -0
- package/dist/tools/document-edit-tool-uis.js +218 -0
- package/dist/tools/document-edit-tool-uis.js.map +1 -0
- package/dist/tools/drive-tool-uis.cjs +425 -0
- package/dist/tools/drive-tool-uis.cjs.map +1 -0
- package/dist/tools/drive-tool-uis.d.ts +120 -0
- package/dist/tools/drive-tool-uis.js +425 -0
- package/dist/tools/drive-tool-uis.js.map +1 -0
- package/dist/tools/email-calendar-tool-uis.cjs +789 -0
- package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
- package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
- package/dist/tools/email-calendar-tool-uis.js +789 -0
- package/dist/tools/email-calendar-tool-uis.js.map +1 -0
- package/dist/tools/ontology-tool-uis.cjs +83 -0
- package/dist/tools/ontology-tool-uis.cjs.map +1 -0
- package/dist/tools/ontology-tool-uis.d.ts +9 -0
- package/dist/tools/ontology-tool-uis.js +83 -0
- package/dist/tools/ontology-tool-uis.js.map +1 -0
- package/dist/tools/orchestration-tool-uis.cjs +586 -0
- package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
- package/dist/tools/orchestration-tool-uis.d.ts +141 -0
- package/dist/tools/orchestration-tool-uis.js +586 -0
- package/dist/tools/orchestration-tool-uis.js.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
- package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
- package/dist/tools/presentation-edit-tool-uis.js +516 -0
- package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
- package/dist/tools/project-tool-uis.cjs +213 -0
- package/dist/tools/project-tool-uis.cjs.map +1 -0
- package/dist/tools/project-tool-uis.d.ts +14 -0
- package/dist/tools/project-tool-uis.js +213 -0
- package/dist/tools/project-tool-uis.js.map +1 -0
- package/dist/tools/sandbox-tool-uis.cjs +491 -0
- package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
- package/dist/tools/sandbox-tool-uis.d.ts +116 -0
- package/dist/tools/sandbox-tool-uis.js +491 -0
- package/dist/tools/sandbox-tool-uis.js.map +1 -0
- package/dist/tools/sheet-query-tool-ui.cjs +138 -0
- package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
- package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
- package/dist/tools/sheet-query-tool-ui.js +138 -0
- package/dist/tools/sheet-query-tool-ui.js.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
- package/dist/tools/studio-screenshot-tool-uis.js +262 -0
- package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
- package/dist/tools/subagent-task-tool-ui.cjs +24 -475
- package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
- package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
- package/dist/tools/subagent-task-tool-ui.js +28 -479
- package/dist/tools/subagent-task-tool-ui.js.map +1 -1
- package/dist/tools/tool-summary.cjs +36 -0
- package/dist/tools/tool-summary.cjs.map +1 -1
- package/dist/tools/tool-summary.js +36 -0
- package/dist/tools/tool-summary.js.map +1 -1
- package/dist/tools/tool-uis.cjs +181 -53
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.d.ts +40 -0
- package/dist/tools/tool-uis.js +183 -55
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/typed-interrupts/index.cjs +15 -0
- package/dist/typed-interrupts/index.cjs.map +1 -0
- package/dist/typed-interrupts/index.d.ts +20 -0
- package/dist/typed-interrupts/index.js +15 -0
- package/dist/typed-interrupts/index.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +6 -6
- package/dist/workbench/session-workbench-panes.cjs.map +1 -1
- package/package.json +28 -6
- package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
- package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
- package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { useAuiState } from "@assistant-ui/react";
|
|
2
|
+
import { isTypedInterruptRequest, parseTypedInterruptPayload } from "../../agent-runtime/src/typed-interrupts.js";
|
|
3
|
+
import { hasInterruptTimeout, stampTypedInterruptAnswer, isTypedApprovalInterrupt, typedAnswerLetsSomethingRun, typedInterruptCancel, stripInterruptTimeoutText, interruptTimeoutRemaining } from "../../agent-runtime/src/typed-interrupt-kinds.js";
|
|
4
|
+
import { useQuery, useMutation } from "@tanstack/react-query";
|
|
5
|
+
import { useState, useRef, useMemo, useEffect, useCallback } from "react";
|
|
6
|
+
import { useAthenaQueryClient } from "../../lib/use-athena-rest-query.js";
|
|
7
|
+
import { useStatewireApprovalRequest } from "../use-statewire-approval-request.js";
|
|
8
|
+
import { useTypedInterruptConversation, readInterruptTimeoutCancelled, cancelInterruptTimeout } from "./typed-interrupt-graphql.js";
|
|
9
|
+
import { HITL_PENDING_RESUME_GRACE_MS } from "../../agent-runtime/src/interrupts.js";
|
|
10
|
+
import { statewireTransportOutcome, isConversationArchivedRejection, CONVERSATION_ARCHIVED_MESSAGE, statewireRejectionDetailMessage } from "../../agent-runtime/src/errors.js";
|
|
11
|
+
const TYPED_INTERRUPT_ANSWER_FAILED_MESSAGE = "Your answer could not be sent. Please try again.";
|
|
12
|
+
const TIMEOUT_STATUS_DELAY_MS = 500;
|
|
13
|
+
const CANCEL_TIMEOUT_RETRIES = 2;
|
|
14
|
+
const CANCEL_TIMEOUT_INITIAL_DELAY_MS = 500;
|
|
15
|
+
function refusalMessage(error) {
|
|
16
|
+
if (isConversationArchivedRejection(error)) return CONVERSATION_ARCHIVED_MESSAGE;
|
|
17
|
+
return statewireRejectionDetailMessage(error) ?? TYPED_INTERRUPT_ANSWER_FAILED_MESSAGE;
|
|
18
|
+
}
|
|
19
|
+
function useStatewireTypedInterrupt(options = {}) {
|
|
20
|
+
const { confirmDecision, onResumeRejected, pendingResumeGraceMs } = options;
|
|
21
|
+
const isConversationStreaming = useAuiState((state) => state.thread.isRunning);
|
|
22
|
+
const conversation = useTypedInterruptConversation();
|
|
23
|
+
const queryClient = useAthenaQueryClient();
|
|
24
|
+
const [held, setHeld] = useState(null);
|
|
25
|
+
const lastHeldRef = useRef(null);
|
|
26
|
+
const [failure, setFailure] = useState(null);
|
|
27
|
+
const onResumeRejectedRef = useRef(onResumeRejected);
|
|
28
|
+
onResumeRejectedRef.current = onResumeRejected;
|
|
29
|
+
const confirmDecisionRef = useRef(confirmDecision);
|
|
30
|
+
confirmDecisionRef.current = confirmDecision;
|
|
31
|
+
const {
|
|
32
|
+
request,
|
|
33
|
+
requestId: liveRequestId,
|
|
34
|
+
pending,
|
|
35
|
+
resume: sendResume
|
|
36
|
+
} = useStatewireApprovalRequest({
|
|
37
|
+
interruptPredicate: isTypedInterruptRequest,
|
|
38
|
+
pendingResumeGraceMs: pendingResumeGraceMs ?? HITL_PENDING_RESUME_GRACE_MS,
|
|
39
|
+
// The host refused the answer (or the transport lost it): the fold has
|
|
40
|
+
// rolled back and the request is on screen again; say why on the card.
|
|
41
|
+
onResumeRejected: (error, refusedRequestId) => {
|
|
42
|
+
var _a;
|
|
43
|
+
setHeld(null);
|
|
44
|
+
if (statewireTransportOutcome(error) === "unmount") return;
|
|
45
|
+
setFailure({ requestId: refusedRequestId, message: refusalMessage(error) });
|
|
46
|
+
(_a = onResumeRejectedRef.current) == null ? void 0 : _a.call(onResumeRejectedRef, error, refusedRequestId);
|
|
47
|
+
},
|
|
48
|
+
// The socket dropped with the answer in flight and the lock re-sends it:
|
|
49
|
+
// a fresh hold keeps the card through the re-send.
|
|
50
|
+
onResumeRetry: (_error, retriedRequestId) => {
|
|
51
|
+
const last = lastHeldRef.current;
|
|
52
|
+
if (last && last.requestId === retriedRequestId) setHeld({ ...last });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const liveInterrupt = useMemo(
|
|
56
|
+
() => request ? parseTypedInterruptPayload(request.payload) : null,
|
|
57
|
+
[request]
|
|
58
|
+
);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (held && liveRequestId !== void 0) setHeld(null);
|
|
61
|
+
}, [held, liveRequestId]);
|
|
62
|
+
const graceMs = pendingResumeGraceMs ?? HITL_PENDING_RESUME_GRACE_MS;
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (!held) return void 0;
|
|
65
|
+
const timer = setTimeout(() => setHeld(null), graceMs);
|
|
66
|
+
return () => clearTimeout(timer);
|
|
67
|
+
}, [held, graceMs]);
|
|
68
|
+
const holding = held !== null && liveInterrupt === null;
|
|
69
|
+
const interrupt = holding ? held.interrupt : liveInterrupt;
|
|
70
|
+
const requestId = holding ? held.requestId : liveRequestId;
|
|
71
|
+
const [confirming, setConfirming] = useState(false);
|
|
72
|
+
const currentRequestIdRef = useRef(liveRequestId);
|
|
73
|
+
currentRequestIdRef.current = liveRequestId;
|
|
74
|
+
const isLoading = pending || holding || confirming;
|
|
75
|
+
const instanceKey = interrupt ? requestId ?? null : null;
|
|
76
|
+
const [timeoutRemaining, setTimeoutRemaining] = useState(null);
|
|
77
|
+
const [isTimedOut, setIsTimedOut] = useState(false);
|
|
78
|
+
const [cancelledInstance, setCancelledInstance] = useState(null);
|
|
79
|
+
const isTimeoutCancelled = instanceKey !== null && cancelledInstance === instanceKey;
|
|
80
|
+
const timed = interrupt !== null && hasInterruptTimeout(interrupt);
|
|
81
|
+
const timeoutSeconds = (interrupt == null ? void 0 : interrupt.timeout_seconds) ?? null;
|
|
82
|
+
const timeoutAt = (interrupt == null ? void 0 : interrupt.timeout_at) ?? null;
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (!interrupt || !timed || isTimeoutCancelled) {
|
|
85
|
+
setTimeoutRemaining(null);
|
|
86
|
+
setIsTimedOut(false);
|
|
87
|
+
return void 0;
|
|
88
|
+
}
|
|
89
|
+
const tick = () => {
|
|
90
|
+
const remaining = interruptTimeoutRemaining(interrupt);
|
|
91
|
+
setTimeoutRemaining(remaining);
|
|
92
|
+
setIsTimedOut(remaining !== null && remaining <= 0);
|
|
93
|
+
};
|
|
94
|
+
tick();
|
|
95
|
+
const interval = setInterval(tick, 1e3);
|
|
96
|
+
return () => clearInterval(interval);
|
|
97
|
+
}, [interrupt, timed, isTimeoutCancelled]);
|
|
98
|
+
const [statusReady, setStatusReady] = useState(false);
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
setStatusReady(false);
|
|
101
|
+
if (!timed || !timeoutAt) return void 0;
|
|
102
|
+
const timer = setTimeout(() => setStatusReady(true), TIMEOUT_STATUS_DELAY_MS);
|
|
103
|
+
return () => clearTimeout(timer);
|
|
104
|
+
}, [timed, timeoutAt]);
|
|
105
|
+
const source = (interrupt == null ? void 0 : interrupt.source) ?? null;
|
|
106
|
+
const statusEnabled = timed && statusReady && !isTimeoutCancelled && conversation !== null && source !== null;
|
|
107
|
+
const { data: cancelledBefore } = useQuery(
|
|
108
|
+
{
|
|
109
|
+
queryKey: [
|
|
110
|
+
"athena-sdk",
|
|
111
|
+
"interrupt-timeout-status",
|
|
112
|
+
(conversation == null ? void 0 : conversation.auth.backendUrl) ?? "",
|
|
113
|
+
(conversation == null ? void 0 : conversation.principal) ?? "",
|
|
114
|
+
(conversation == null ? void 0 : conversation.threadId) ?? "",
|
|
115
|
+
source ?? "",
|
|
116
|
+
timeoutAt ?? ""
|
|
117
|
+
],
|
|
118
|
+
queryFn: ({ signal }) => {
|
|
119
|
+
if (!conversation || !source) return false;
|
|
120
|
+
return readInterruptTimeoutCancelled(conversation, source, signal);
|
|
121
|
+
},
|
|
122
|
+
enabled: statusEnabled,
|
|
123
|
+
staleTime: Number.POSITIVE_INFINITY,
|
|
124
|
+
retry: false,
|
|
125
|
+
refetchOnWindowFocus: false
|
|
126
|
+
},
|
|
127
|
+
queryClient
|
|
128
|
+
);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (cancelledBefore === true && instanceKey !== null) setCancelledInstance(instanceKey);
|
|
131
|
+
}, [cancelledBefore, instanceKey]);
|
|
132
|
+
const { mutate: sendCancelTimeout } = useMutation(
|
|
133
|
+
{
|
|
134
|
+
mutationKey: ["athena-sdk", "interrupt-timeout-cancel"],
|
|
135
|
+
mutationFn: ({ interruptId }) => {
|
|
136
|
+
if (!conversation) return Promise.reject(new Error("no conversation to stop the timer of"));
|
|
137
|
+
return cancelInterruptTimeout(conversation, interruptId);
|
|
138
|
+
},
|
|
139
|
+
// The backend's timer answers at the deadline unless this lands: a
|
|
140
|
+
// blip must not let it fire while the person is answering.
|
|
141
|
+
retry: CANCEL_TIMEOUT_RETRIES,
|
|
142
|
+
retryDelay: (attempt) => {
|
|
143
|
+
const base = CANCEL_TIMEOUT_INITIAL_DELAY_MS * 2 ** attempt;
|
|
144
|
+
return base + Math.random() * base * 0.3;
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
queryClient
|
|
148
|
+
);
|
|
149
|
+
const canCancelTimeout = timed && conversation !== null;
|
|
150
|
+
const cancelRequestedRef = useRef(null);
|
|
151
|
+
const cancelTimeout = useCallback(() => {
|
|
152
|
+
if (!interrupt || !canCancelTimeout || isTimeoutCancelled || instanceKey === null) return;
|
|
153
|
+
if (cancelRequestedRef.current === instanceKey) return;
|
|
154
|
+
const instance = instanceKey;
|
|
155
|
+
cancelRequestedRef.current = instance;
|
|
156
|
+
setCancelledInstance(instance);
|
|
157
|
+
sendCancelTimeout(
|
|
158
|
+
{ interruptId: interrupt.source },
|
|
159
|
+
{
|
|
160
|
+
// agora did not stop it after the retries: the countdown is true
|
|
161
|
+
// again, and Stop timer may ask once more.
|
|
162
|
+
onError: () => {
|
|
163
|
+
if (cancelRequestedRef.current === instance) cancelRequestedRef.current = null;
|
|
164
|
+
setCancelledInstance((current) => current === instance ? null : current);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}, [interrupt, canCancelTimeout, isTimeoutCancelled, instanceKey, sendCancelTimeout]);
|
|
169
|
+
const sendAnswer = useCallback(
|
|
170
|
+
(kind, value) => {
|
|
171
|
+
if (!interrupt || requestId === void 0) return;
|
|
172
|
+
setFailure(null);
|
|
173
|
+
const answer = stampTypedInterruptAnswer({ payload: interrupt, value });
|
|
174
|
+
const park = { interrupt, requestId };
|
|
175
|
+
const deliver = (decisionCheck) => {
|
|
176
|
+
const dispatched = sendResume(answer, decisionCheck ? { decisionCheck } : void 0);
|
|
177
|
+
if (!dispatched) return;
|
|
178
|
+
lastHeldRef.current = park;
|
|
179
|
+
setHeld(park);
|
|
180
|
+
dispatched.then(
|
|
181
|
+
() => setHeld(null),
|
|
182
|
+
() => setHeld(null)
|
|
183
|
+
);
|
|
184
|
+
};
|
|
185
|
+
const confirm = confirmDecisionRef.current;
|
|
186
|
+
if (confirm === void 0 || kind !== "resume" || !isTypedApprovalInterrupt(interrupt) || !typedAnswerLetsSomethingRun(answer)) {
|
|
187
|
+
deliver();
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
setConfirming(true);
|
|
191
|
+
confirm({ kind: "input", requestId, value: answer }).catch(() => void 0).then((token) => {
|
|
192
|
+
setConfirming(false);
|
|
193
|
+
if (currentRequestIdRef.current !== requestId) return;
|
|
194
|
+
deliver(token);
|
|
195
|
+
});
|
|
196
|
+
},
|
|
197
|
+
[interrupt, requestId, sendResume]
|
|
198
|
+
);
|
|
199
|
+
const resume = useCallback((value) => sendAnswer("resume", value), [sendAnswer]);
|
|
200
|
+
const cancel = useCallback(() => sendAnswer("cancel", typedInterruptCancel()), [sendAnswer]);
|
|
201
|
+
const message = interrupt == null ? void 0 : interrupt.message;
|
|
202
|
+
const displayMessage = useMemo(() => {
|
|
203
|
+
if (!message) return "";
|
|
204
|
+
return isTimeoutCancelled ? stripInterruptTimeoutText(message) : message;
|
|
205
|
+
}, [message, isTimeoutCancelled]);
|
|
206
|
+
return {
|
|
207
|
+
interrupt,
|
|
208
|
+
request,
|
|
209
|
+
requestId,
|
|
210
|
+
resume,
|
|
211
|
+
cancel,
|
|
212
|
+
failure: failure !== null && failure.requestId === requestId ? failure.message : null,
|
|
213
|
+
isLoading,
|
|
214
|
+
isConversationStreaming,
|
|
215
|
+
isHiddenByRunning: isConversationStreaming && !isLoading,
|
|
216
|
+
hasTimeout: timed,
|
|
217
|
+
timeoutSeconds,
|
|
218
|
+
timeoutRemaining,
|
|
219
|
+
isTimedOut,
|
|
220
|
+
isTimeoutCancelled,
|
|
221
|
+
canCancelTimeout,
|
|
222
|
+
cancelTimeout,
|
|
223
|
+
displayMessage,
|
|
224
|
+
currentThreadId: (conversation == null ? void 0 : conversation.threadId) ?? null
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
export {
|
|
228
|
+
TYPED_INTERRUPT_ANSWER_FAILED_MESSAGE,
|
|
229
|
+
useStatewireTypedInterrupt
|
|
230
|
+
};
|
|
231
|
+
//# sourceMappingURL=use-statewire-typed-interrupt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-statewire-typed-interrupt.js","sources":["../../../src/chat/typed-interrupts/use-statewire-typed-interrupt.ts"],"sourcesContent":["/**\n * The typed-interrupt engine: everything a typed card renders from, and the\n * two ways it answers. The port of Olympus's `useLangGraphInterrupt` onto the\n * SDK, on the same request machine the approval card runs\n * (`useStatewireApprovalRequest`: selection, the optimistic resume lock and\n * its recovery), with ONE predicate, `isTypedInterruptRequest`, so the request\n * a card renders for is the request its answer is sent under.\n *\n * On top of the lock it adds what the cards need:\n *\n * - the parsed payload, held while the host decides an answer, so the card\n * keeps what the person typed (react-statewire folds `run/input` away the\n * instant it is applied, before any verdict, and a refusal brings the same\n * request back);\n * - the stamps the raiser's stale-resume check reads (`__interrupt_id__`,\n * `__interrupt_instance_id__`) on every answer;\n * - the passkey decision check (identity 0b.9) on an answer that approves a\n * typed approval (`isTypedApprovalInterrupt`), through the host's\n * `confirmDecision`, as the approval card runs it; a question's answer, a\n * reject and a cancel never ask;\n * - the host's reason when it refuses an answer (agora holds an approving\n * answer to a signed-in person: `person_decision_required` names where to\n * answer instead), for the card to show;\n * - the timed-interrupt countdown (display only: the backend's timer answers),\n * whether the person already stopped it, and stopping it.\n *\n * Requires a statewire aui scope (the SDK's statewire hooks throw outside\n * one): `StatewireTypedInterruptCard` mounts it under `StatewireApprovalCard`'s\n * extras gate.\n */\n\nimport { useAuiState } from '@assistant-ui/react';\nimport type { StatewireThread } from '@assistant-ui/react-statewire';\nimport {\n CONVERSATION_ARCHIVED_MESSAGE,\n HITL_PENDING_RESUME_GRACE_MS,\n isConversationArchivedRejection,\n statewireRejectionDetailMessage,\n statewireTransportOutcome,\n} from '@athenaintel/agent-runtime';\nimport {\n isTypedInterruptRequest,\n parseTypedInterruptPayload,\n type TypedInterruptPayload,\n} from '@athenaintel/agent-runtime/typed-interrupts';\nimport {\n hasInterruptTimeout,\n interruptTimeoutRemaining,\n isTypedApprovalInterrupt,\n stampTypedInterruptAnswer,\n stripInterruptTimeoutText,\n typedAnswerLetsSomethingRun,\n typedInterruptCancel,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport type { ReadonlyJSONObject } from 'assistant-stream/utils';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useAthenaQueryClient } from '../../lib/use-athena-rest-query';\nimport type { StatewireDecisionConfirmer } from '../StatewireApprovalCard';\nimport { useStatewireApprovalRequest } from '../use-statewire-approval-request';\nimport {\n cancelInterruptTimeout,\n readInterruptTimeoutCancelled,\n useTypedInterruptConversation,\n} from './typed-interrupt-graphql';\nimport type { TypedInterruptAnswer, TypedInterruptEngineSlice } from './typed-interrupt-types';\n\n/** What a card says when the host refused an answer without saying why. */\nexport const TYPED_INTERRUPT_ANSWER_FAILED_MESSAGE = 'Your answer could not be sent. Please try again.';\n\n/** The backend registers a park's timer just before it parks: ask about it a moment later. */\nconst TIMEOUT_STATUS_DELAY_MS = 500;\nconst CANCEL_TIMEOUT_RETRIES = 2;\nconst CANCEL_TIMEOUT_INITIAL_DELAY_MS = 500;\n\nexport interface UseStatewireTypedInterruptOptions {\n /**\n * The host's passkey decision check (identity 0b.9), as `StatewireApprovalCard`\n * takes it: an answer that approves a typed approval is handed to it first\n * and sent with the token it resolves.\n */\n confirmDecision?: StatewireDecisionConfirmer;\n /** The host refused an answer (or the transport lost it); the card is back with its controls. */\n onResumeRejected?: (error: unknown, requestId: string) => void;\n /** How long a sent answer keeps the card locked when no resume run ever starts. */\n pendingResumeGraceMs?: number;\n}\n\nexport interface StatewireTypedInterrupt extends TypedInterruptEngineSlice {\n /** The parked typed interrupt (held while the host decides an answer), or `null`. */\n interrupt: TypedInterruptPayload | null;\n /** The live request (absent while an answer is held). */\n request: StatewireThread.CustomInputRequest | undefined;\n /**\n * The thread moved on without this park: running, and no answer of this\n * card's own in flight. The card stands down while it holds.\n */\n isHiddenByRunning: boolean;\n /** Why the host refused this park's last answer, until the next one is sent. */\n failure: string | null;\n /** Answer the park with its kind's resume value. */\n resume: (value: TypedInterruptAnswer) => void;\n /** Answer the park with `{ action: 'cancel' }`. */\n cancel: () => void;\n}\n\ninterface HeldPark {\n interrupt: TypedInterruptPayload;\n requestId: string;\n}\n\nfunction refusalMessage(error: unknown): string {\n if (isConversationArchivedRejection(error)) return CONVERSATION_ARCHIVED_MESSAGE;\n return statewireRejectionDetailMessage(error) ?? TYPED_INTERRUPT_ANSWER_FAILED_MESSAGE;\n}\n\nexport function useStatewireTypedInterrupt(\n options: UseStatewireTypedInterruptOptions = {},\n): StatewireTypedInterrupt {\n const { confirmDecision, onResumeRejected, pendingResumeGraceMs } = options;\n const isConversationStreaming = useAuiState((state) => state.thread.isRunning);\n const conversation = useTypedInterruptConversation();\n const queryClient = useAthenaQueryClient();\n\n const [held, setHeld] = useState<HeldPark | null>(null);\n const lastHeldRef = useRef<HeldPark | null>(null);\n const [failure, setFailure] = useState<{ requestId: string; message: string } | null>(null);\n const onResumeRejectedRef = useRef(onResumeRejected);\n onResumeRejectedRef.current = onResumeRejected;\n const confirmDecisionRef = useRef(confirmDecision);\n confirmDecisionRef.current = confirmDecision;\n\n const {\n request,\n requestId: liveRequestId,\n pending,\n resume: sendResume,\n } = useStatewireApprovalRequest<ReadonlyJSONObject>({\n interruptPredicate: isTypedInterruptRequest,\n pendingResumeGraceMs: pendingResumeGraceMs ?? HITL_PENDING_RESUME_GRACE_MS,\n // The host refused the answer (or the transport lost it): the fold has\n // rolled back and the request is on screen again; say why on the card.\n onResumeRejected: (error, refusedRequestId) => {\n setHeld(null);\n // The surface itself went away mid-flight: nobody to tell.\n if (statewireTransportOutcome(error) === 'unmount') return;\n setFailure({ requestId: refusedRequestId, message: refusalMessage(error) });\n onResumeRejectedRef.current?.(error, refusedRequestId);\n },\n // The socket dropped with the answer in flight and the lock re-sends it:\n // a fresh hold keeps the card through the re-send.\n onResumeRetry: (_error, retriedRequestId) => {\n const last = lastHeldRef.current;\n if (last && last.requestId === retriedRequestId) setHeld({ ...last });\n },\n });\n\n // The predicate parsed the payload already; parse again for its value.\n const liveInterrupt = useMemo(\n () => (request ? parseTypedInterruptPayload(request.payload) : null),\n [request],\n );\n\n // A hold ends with the host's verdict (below), when a park is live again\n // (the refused one, under its id, or a new one), or after the grace window.\n useEffect(() => {\n if (held && liveRequestId !== undefined) setHeld(null);\n }, [held, liveRequestId]);\n const graceMs = pendingResumeGraceMs ?? HITL_PENDING_RESUME_GRACE_MS;\n useEffect(() => {\n if (!held) return undefined;\n const timer = setTimeout(() => setHeld(null), graceMs);\n return () => clearTimeout(timer);\n }, [held, graceMs]);\n const holding = held !== null && liveInterrupt === null;\n const interrupt = holding ? held.interrupt : liveInterrupt;\n const requestId = holding ? held.requestId : liveRequestId;\n\n // A passkey check is open for an answer sent from here.\n const [confirming, setConfirming] = useState(false);\n // The park on screen now, read once a check settles: an answer confirmed for\n // a park that is gone is never sent to whatever parked next.\n const currentRequestIdRef = useRef(liveRequestId);\n currentRequestIdRef.current = liveRequestId;\n const isLoading = pending || holding || confirming;\n\n // ── The timer (display only; the backend's timer answers at the deadline) ──\n // Everything below is per park instance: the request id, never the source,\n // which repeats (every toolkit selection is `toolkit_selection`).\n const instanceKey = interrupt ? (requestId ?? null) : null;\n const [timeoutRemaining, setTimeoutRemaining] = useState<number | null>(null);\n const [isTimedOut, setIsTimedOut] = useState(false);\n const [cancelledInstance, setCancelledInstance] = useState<string | null>(null);\n const isTimeoutCancelled = instanceKey !== null && cancelledInstance === instanceKey;\n const timed = interrupt !== null && hasInterruptTimeout(interrupt);\n const timeoutSeconds = interrupt?.timeout_seconds ?? null;\n const timeoutAt = interrupt?.timeout_at ?? null;\n\n useEffect(() => {\n if (!interrupt || !timed || isTimeoutCancelled) {\n setTimeoutRemaining(null);\n setIsTimedOut(false);\n return undefined;\n }\n const tick = () => {\n const remaining = interruptTimeoutRemaining(interrupt);\n setTimeoutRemaining(remaining);\n setIsTimedOut(remaining !== null && remaining <= 0);\n };\n tick();\n const interval = setInterval(tick, 1000);\n return () => clearInterval(interval);\n }, [interrupt, timed, isTimeoutCancelled]);\n\n // Whether the person stopped this park's timer before (another app, a\n // reload): asked once per instance, a moment after it parks.\n const [statusReady, setStatusReady] = useState(false);\n useEffect(() => {\n setStatusReady(false);\n if (!timed || !timeoutAt) return undefined;\n const timer = setTimeout(() => setStatusReady(true), TIMEOUT_STATUS_DELAY_MS);\n return () => clearTimeout(timer);\n }, [timed, timeoutAt]);\n const source = interrupt?.source ?? null;\n const statusEnabled =\n timed && statusReady && !isTimeoutCancelled && conversation !== null && source !== null;\n const { data: cancelledBefore } = useQuery(\n {\n queryKey: [\n 'athena-sdk',\n 'interrupt-timeout-status',\n conversation?.auth.backendUrl ?? '',\n conversation?.principal ?? '',\n conversation?.threadId ?? '',\n source ?? '',\n timeoutAt ?? '',\n ],\n queryFn: ({ signal }) => {\n if (!conversation || !source) return false;\n return readInterruptTimeoutCancelled(conversation, source, signal);\n },\n enabled: statusEnabled,\n staleTime: Number.POSITIVE_INFINITY,\n retry: false,\n refetchOnWindowFocus: false,\n },\n queryClient,\n );\n useEffect(() => {\n if (cancelledBefore === true && instanceKey !== null) setCancelledInstance(instanceKey);\n }, [cancelledBefore, instanceKey]);\n\n const { mutate: sendCancelTimeout } = useMutation(\n {\n mutationKey: ['athena-sdk', 'interrupt-timeout-cancel'],\n mutationFn: ({ interruptId }: { interruptId: string }) => {\n if (!conversation) return Promise.reject(new Error('no conversation to stop the timer of'));\n return cancelInterruptTimeout(conversation, interruptId);\n },\n // The backend's timer answers at the deadline unless this lands: a\n // blip must not let it fire while the person is answering.\n retry: CANCEL_TIMEOUT_RETRIES,\n retryDelay: (attempt) => {\n const base = CANCEL_TIMEOUT_INITIAL_DELAY_MS * 2 ** attempt;\n return base + Math.random() * base * 0.3;\n },\n },\n queryClient,\n );\n\n // Only agora can stop its timer: without the conversation (a host that\n // names no thread) the countdown stays, and nothing offers to stop it.\n const canCancelTimeout = timed && conversation !== null;\n // One request per park: a press on Stop timer is also the card's first\n // interaction, and both ask in the same tick, before a render says so.\n const cancelRequestedRef = useRef<string | null>(null);\n const cancelTimeout = useCallback(() => {\n if (!interrupt || !canCancelTimeout || isTimeoutCancelled || instanceKey === null) return;\n if (cancelRequestedRef.current === instanceKey) return;\n const instance = instanceKey;\n cancelRequestedRef.current = instance;\n setCancelledInstance(instance);\n sendCancelTimeout(\n { interruptId: interrupt.source },\n {\n // agora did not stop it after the retries: the countdown is true\n // again, and Stop timer may ask once more.\n onError: () => {\n if (cancelRequestedRef.current === instance) cancelRequestedRef.current = null;\n setCancelledInstance((current) => (current === instance ? null : current));\n },\n },\n );\n }, [interrupt, canCancelTimeout, isTimeoutCancelled, instanceKey, sendCancelTimeout]);\n\n // ── Answers ──\n const sendAnswer = useCallback(\n (kind: 'resume' | 'cancel', value: TypedInterruptAnswer) => {\n if (!interrupt || requestId === undefined) return;\n setFailure(null);\n const answer = stampTypedInterruptAnswer({ payload: interrupt, value }) as ReadonlyJSONObject;\n const park: HeldPark = { interrupt, requestId };\n const deliver = (decisionCheck?: string) => {\n const dispatched = sendResume(answer, decisionCheck ? { decisionCheck } : undefined);\n if (!dispatched) return;\n lastHeldRef.current = park;\n setHeld(park);\n // Accepted or refused, the verdict ends the hold (a refusal also\n // brings the request back through the live selection).\n dispatched.then(\n () => setHeld(null),\n () => setHeld(null),\n );\n };\n const confirm = confirmDecisionRef.current;\n if (\n confirm === undefined ||\n kind !== 'resume' ||\n !isTypedApprovalInterrupt(interrupt) ||\n !typedAnswerLetsSomethingRun(answer)\n ) {\n deliver();\n return;\n }\n // Identity 0b.9: approving is confirmed with the person's passkey first,\n // as the approval card does; a check that gave no token sends the\n // answer without one, and agora decides.\n setConfirming(true);\n confirm({ kind: 'input', requestId, value: answer })\n .catch(() => undefined)\n .then((token) => {\n setConfirming(false);\n if (currentRequestIdRef.current !== requestId) return;\n deliver(token);\n });\n },\n [interrupt, requestId, sendResume],\n );\n\n const resume = useCallback((value: TypedInterruptAnswer) => sendAnswer('resume', value), [sendAnswer]);\n const cancel = useCallback(() => sendAnswer('cancel', typedInterruptCancel()), [sendAnswer]);\n\n const message = interrupt?.message;\n const displayMessage = useMemo(() => {\n if (!message) return '';\n return isTimeoutCancelled ? stripInterruptTimeoutText(message) : message;\n }, [message, isTimeoutCancelled]);\n\n return {\n interrupt,\n request,\n requestId,\n resume,\n cancel,\n failure: failure !== null && failure.requestId === requestId ? failure.message : null,\n isLoading,\n isConversationStreaming,\n isHiddenByRunning: isConversationStreaming && !isLoading,\n hasTimeout: timed,\n timeoutSeconds,\n timeoutRemaining,\n isTimedOut,\n isTimeoutCancelled,\n canCancelTimeout,\n cancelTimeout,\n displayMessage,\n currentThreadId: conversation?.threadId ?? null,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const namedAgents = require("../../agent-runtime/src/named-agents.cjs");
|
|
4
|
+
function stageComposerNamedAgents({
|
|
5
|
+
threadId,
|
|
6
|
+
text,
|
|
7
|
+
agents
|
|
8
|
+
}) {
|
|
9
|
+
namedAgents.stageDeepAgentNamedAgentsForSend({ threadId, agents });
|
|
10
|
+
namedAgents.rememberDeepAgentSentNamedAgents({ threadId, text, agents });
|
|
11
|
+
}
|
|
12
|
+
exports.stageComposerNamedAgents = stageComposerNamedAgents;
|
|
13
|
+
//# sourceMappingURL=composer-named-agents.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-named-agents.cjs","sources":["../../../src/chat-ui/composer/composer-named-agents.ts"],"sourcesContent":["/**\n * The agents a composer's message names (identity v7 D13), on its way out. The names, the To line's\n * chips and how a run receives them are `@athenaintel/agent-runtime/named-agents`', the module\n * Olympus's composer runs on too; this is the composer's part of the send, used only by a composer\n * that names agents (`TiptapComposer`'s `chatAgents`, which `AthenaChat` passes when its host\n * offers the Agents category).\n */\n\nimport {\n type DeepAgentNamedAgent,\n rememberDeepAgentSentNamedAgents,\n stageDeepAgentNamedAgentsForSend,\n} from \"@athenaintel/agent-runtime/named-agents\";\n\n/**\n * Right before the composer runtime sends `text`: stage the names it carries, so the message's own\n * metadata (`addressedAgents`) names exactly those agents wherever it waits and whenever it is\n * posted, and remember them with the text, so the text coming back (a refused send handed back)\n * brings its chips back. A message naming none stages nothing and\n * lets earlier staged names go. The To line keeps its chips for the next message.\n */\nexport function stageComposerNamedAgents({\n threadId,\n text,\n agents,\n}: {\n threadId: string;\n text: string;\n agents: readonly DeepAgentNamedAgent[];\n}): void {\n stageDeepAgentNamedAgentsForSend({ threadId, agents });\n rememberDeepAgentSentNamedAgents({ threadId, text, agents });\n}\n"],"names":["stageDeepAgentNamedAgentsForSend","rememberDeepAgentSentNamedAgents"],"mappings":";;;AAqBO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,GAIS;AACPA,+CAAiC,EAAE,UAAU,QAAQ;AACrDC,cAAAA,iCAAiC,EAAE,UAAU,MAAM,OAAA,CAAQ;AAC7D;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The agents a composer's message names (identity v7 D13), on its way out. The names, the To line's
|
|
3
|
+
* chips and how a run receives them are `@athenaintel/agent-runtime/named-agents`', the module
|
|
4
|
+
* Olympus's composer runs on too; this is the composer's part of the send, used only by a composer
|
|
5
|
+
* that names agents (`TiptapComposer`'s `chatAgents`, which `AthenaChat` passes when its host
|
|
6
|
+
* offers the Agents category).
|
|
7
|
+
*/
|
|
8
|
+
import { type DeepAgentNamedAgent } from "../../agent-runtime/src/named-agents";
|
|
9
|
+
/**
|
|
10
|
+
* Right before the composer runtime sends `text`: stage the names it carries, so the message's own
|
|
11
|
+
* metadata (`addressedAgents`) names exactly those agents wherever it waits and whenever it is
|
|
12
|
+
* posted, and remember them with the text, so the text coming back (a refused send handed back)
|
|
13
|
+
* brings its chips back. A message naming none stages nothing and
|
|
14
|
+
* lets earlier staged names go. The To line keeps its chips for the next message.
|
|
15
|
+
*/
|
|
16
|
+
export declare function stageComposerNamedAgents({ threadId, text, agents, }: {
|
|
17
|
+
threadId: string;
|
|
18
|
+
text: string;
|
|
19
|
+
agents: readonly DeepAgentNamedAgent[];
|
|
20
|
+
}): void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { stageDeepAgentNamedAgentsForSend, rememberDeepAgentSentNamedAgents } from "../../agent-runtime/src/named-agents.js";
|
|
2
|
+
function stageComposerNamedAgents({
|
|
3
|
+
threadId,
|
|
4
|
+
text,
|
|
5
|
+
agents
|
|
6
|
+
}) {
|
|
7
|
+
stageDeepAgentNamedAgentsForSend({ threadId, agents });
|
|
8
|
+
rememberDeepAgentSentNamedAgents({ threadId, text, agents });
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
stageComposerNamedAgents
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=composer-named-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-named-agents.js","sources":["../../../src/chat-ui/composer/composer-named-agents.ts"],"sourcesContent":["/**\n * The agents a composer's message names (identity v7 D13), on its way out. The names, the To line's\n * chips and how a run receives them are `@athenaintel/agent-runtime/named-agents`', the module\n * Olympus's composer runs on too; this is the composer's part of the send, used only by a composer\n * that names agents (`TiptapComposer`'s `chatAgents`, which `AthenaChat` passes when its host\n * offers the Agents category).\n */\n\nimport {\n type DeepAgentNamedAgent,\n rememberDeepAgentSentNamedAgents,\n stageDeepAgentNamedAgentsForSend,\n} from \"@athenaintel/agent-runtime/named-agents\";\n\n/**\n * Right before the composer runtime sends `text`: stage the names it carries, so the message's own\n * metadata (`addressedAgents`) names exactly those agents wherever it waits and whenever it is\n * posted, and remember them with the text, so the text coming back (a refused send handed back)\n * brings its chips back. A message naming none stages nothing and\n * lets earlier staged names go. The To line keeps its chips for the next message.\n */\nexport function stageComposerNamedAgents({\n threadId,\n text,\n agents,\n}: {\n threadId: string;\n text: string;\n agents: readonly DeepAgentNamedAgent[];\n}): void {\n stageDeepAgentNamedAgentsForSend({ threadId, agents });\n rememberDeepAgentSentNamedAgents({ threadId, text, agents });\n}\n"],"names":[],"mappings":";AAqBO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,GAIS;AACP,mCAAiC,EAAE,UAAU,QAAQ;AACrD,mCAAiC,EAAE,UAAU,MAAM,OAAA,CAAQ;AAC7D;"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const require$$0 = require("react");
|
|
5
|
+
const slashCommands = require("./slash-commands.cjs");
|
|
6
|
+
const cnfast = require("cnfast");
|
|
7
|
+
function slashCommandRuns(command) {
|
|
8
|
+
return !command.disabledReason;
|
|
9
|
+
}
|
|
10
|
+
const SlashCommandMenu = require$$0.forwardRef(
|
|
11
|
+
({ sections, onPick }, ref) => {
|
|
12
|
+
const rows = slashCommands.slashCommandRows(sections);
|
|
13
|
+
const listId = require$$0.useId();
|
|
14
|
+
const selectedRef = require$$0.useRef(null);
|
|
15
|
+
const rowsKey = rows.map((row) => row.command.name).join("\0");
|
|
16
|
+
const [selection, setSelection] = require$$0.useState({ rowsKey, index: 0 });
|
|
17
|
+
const current = selection.rowsKey === rowsKey ? Math.min(selection.index, Math.max(rows.length - 1, 0)) : 0;
|
|
18
|
+
const setSelected = (index2) => setSelection({ rowsKey, index: index2 });
|
|
19
|
+
require$$0.useEffect(() => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
(_b = (_a = selectedRef.current) == null ? void 0 : _a.scrollIntoView) == null ? void 0 : _b.call(_a, { block: "nearest" });
|
|
22
|
+
}, [current]);
|
|
23
|
+
const pick = (match) => {
|
|
24
|
+
if (match && slashCommandRuns(match.command)) onPick(match);
|
|
25
|
+
};
|
|
26
|
+
require$$0.useImperativeHandle(
|
|
27
|
+
ref,
|
|
28
|
+
() => ({
|
|
29
|
+
onKeyDown: (event) => {
|
|
30
|
+
if (rows.length === 0) return false;
|
|
31
|
+
switch (event.key) {
|
|
32
|
+
case "ArrowDown":
|
|
33
|
+
setSelected((current + 1) % rows.length);
|
|
34
|
+
return true;
|
|
35
|
+
case "ArrowUp":
|
|
36
|
+
setSelected((current - 1 + rows.length) % rows.length);
|
|
37
|
+
return true;
|
|
38
|
+
case "Enter":
|
|
39
|
+
case "NumpadEnter":
|
|
40
|
+
case "Tab":
|
|
41
|
+
if (event.isComposing) return false;
|
|
42
|
+
pick(rows[current]);
|
|
43
|
+
return true;
|
|
44
|
+
default:
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}),
|
|
49
|
+
[current, rows]
|
|
50
|
+
);
|
|
51
|
+
if (rows.length === 0) return null;
|
|
52
|
+
let index = -1;
|
|
53
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
id: listId,
|
|
57
|
+
role: "listbox",
|
|
58
|
+
"aria-label": "Commands",
|
|
59
|
+
"data-testid": "composer-slash-menu",
|
|
60
|
+
className: "max-h-80 min-w-[260px] max-w-[380px] overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-lg",
|
|
61
|
+
children: sections.map((section) => (
|
|
62
|
+
// A group of the listbox's options, named by its heading.
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
64
|
+
"fieldset",
|
|
65
|
+
{
|
|
66
|
+
"aria-label": section.title ?? void 0,
|
|
67
|
+
className: "m-0 min-w-0 border-0 p-0 py-0.5",
|
|
68
|
+
children: [
|
|
69
|
+
section.title ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
+
"div",
|
|
71
|
+
{
|
|
72
|
+
"aria-hidden": true,
|
|
73
|
+
className: "px-2 pb-0.5 pt-1.5 font-medium text-[11px] text-muted-foreground uppercase tracking-wide",
|
|
74
|
+
children: section.title
|
|
75
|
+
}
|
|
76
|
+
) : null,
|
|
77
|
+
section.matches.map((match) => {
|
|
78
|
+
index += 1;
|
|
79
|
+
const rowIndex = index;
|
|
80
|
+
const isSelected = rowIndex === current;
|
|
81
|
+
const { command } = match;
|
|
82
|
+
const runs = slashCommandRuns(command);
|
|
83
|
+
const Icon = command.icon;
|
|
84
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
85
|
+
"div",
|
|
86
|
+
{
|
|
87
|
+
ref: isSelected ? selectedRef : void 0,
|
|
88
|
+
role: "option",
|
|
89
|
+
"aria-selected": isSelected,
|
|
90
|
+
"aria-disabled": !runs || void 0,
|
|
91
|
+
"data-command": command.name,
|
|
92
|
+
tabIndex: -1,
|
|
93
|
+
onMouseMove: () => setSelected(rowIndex),
|
|
94
|
+
onClick: () => pick(match),
|
|
95
|
+
onKeyDown: (event) => {
|
|
96
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
pick(match);
|
|
99
|
+
},
|
|
100
|
+
className: cnfast.cn(
|
|
101
|
+
"flex cursor-pointer items-start gap-2 rounded px-2 py-1.5",
|
|
102
|
+
isSelected && "bg-muted",
|
|
103
|
+
!runs && "cursor-default"
|
|
104
|
+
),
|
|
105
|
+
children: [
|
|
106
|
+
Icon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
Icon,
|
|
108
|
+
{
|
|
109
|
+
"aria-hidden": true,
|
|
110
|
+
className: cnfast.cn("mt-0.5 size-4 shrink-0 text-muted-foreground", !runs && "opacity-50")
|
|
111
|
+
}
|
|
112
|
+
) : null,
|
|
113
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
114
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cnfast.cn("truncate text-sm leading-tight", !runs && "text-muted-foreground"), children: [
|
|
115
|
+
command.label,
|
|
116
|
+
match.args ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
117
|
+
" ",
|
|
118
|
+
match.args
|
|
119
|
+
] }) : command.args ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground italic", children: [
|
|
120
|
+
" ",
|
|
121
|
+
command.args
|
|
122
|
+
] }) : null
|
|
123
|
+
] }),
|
|
124
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-0.5 truncate text-muted-foreground text-xs leading-tight", children: runs ? command.description : command.disabledReason })
|
|
125
|
+
] })
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
command.name
|
|
129
|
+
);
|
|
130
|
+
})
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
section.title ?? ""
|
|
134
|
+
)
|
|
135
|
+
))
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
SlashCommandMenu.displayName = "SlashCommandMenu";
|
|
141
|
+
exports.SlashCommandMenu = SlashCommandMenu;
|
|
142
|
+
exports.slashCommandRuns = slashCommandRuns;
|
|
143
|
+
//# sourceMappingURL=slash-command-menu.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-command-menu.cjs","sources":["../../../src/chat-ui/composer/slash-command-menu.tsx"],"sourcesContent":["/**\n * The composer's `/` menu: the commands what is typed finds, under their\n * groups, with the keyboard in the editor (arrows move, Enter or Tab picks,\n * Escape closes, as the `@` menu works). A command that can't run right now\n * lists greyed with its reason and picks nothing.\n */\n\nimport { forwardRef, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n type ComposerSlashCommand,\n type SlashCommandMatch,\n type SlashCommandSection,\n slashCommandRows,\n} from './slash-commands';\n\nexport interface SlashCommandMenuHandle {\n /** A key from the editor while the menu is open; `true` when the menu took it. */\n onKeyDown: (event: KeyboardEvent) => boolean;\n}\n\nexport interface SlashCommandMenuProps {\n sections: readonly SlashCommandSection[];\n /** Picks a row whose command can run. */\n onPick: (match: SlashCommandMatch) => void;\n}\n\n/** Whether a command can run now (no reason it can't). */\nexport function slashCommandRuns(command: ComposerSlashCommand): boolean {\n return !command.disabledReason;\n}\n\nexport const SlashCommandMenu = forwardRef<SlashCommandMenuHandle, SlashCommandMenuProps>(\n ({ sections, onPick }, ref) => {\n const rows = slashCommandRows(sections);\n const listId = useId();\n const selectedRef = useRef<HTMLDivElement>(null);\n // The selection belongs to the rows it was made in: a query that lists\n // other rows starts it over at the best match.\n const rowsKey = rows.map((row) => row.command.name).join('\\u0000');\n const [selection, setSelection] = useState({ rowsKey, index: 0 });\n const current =\n selection.rowsKey === rowsKey ? Math.min(selection.index, Math.max(rows.length - 1, 0)) : 0;\n const setSelected = (index: number) => setSelection({ rowsKey, index });\n useEffect(() => {\n selectedRef.current?.scrollIntoView?.({ block: 'nearest' });\n }, [current]);\n\n const pick = (match: SlashCommandMatch | undefined) => {\n if (match && slashCommandRuns(match.command)) onPick(match);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n onKeyDown: (event: KeyboardEvent): boolean => {\n if (rows.length === 0) return false;\n switch (event.key) {\n case 'ArrowDown':\n setSelected((current + 1) % rows.length);\n return true;\n case 'ArrowUp':\n setSelected((current - 1 + rows.length) % rows.length);\n return true;\n case 'Enter':\n case 'NumpadEnter':\n case 'Tab':\n // An input method's Enter confirms its text, never a command.\n if (event.isComposing) return false;\n // Taken even for a command that can't run, so it sends nothing either.\n pick(rows[current]);\n return true;\n default:\n return false;\n }\n },\n }),\n [current, rows],\n );\n\n if (rows.length === 0) return null;\n let index = -1;\n return (\n <div\n id={listId}\n role=\"listbox\"\n aria-label=\"Commands\"\n data-testid=\"composer-slash-menu\"\n className=\"max-h-80 min-w-[260px] max-w-[380px] overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-lg\"\n >\n {sections.map((section) => (\n // A group of the listbox's options, named by its heading.\n <fieldset\n key={section.title ?? ''}\n aria-label={section.title ?? undefined}\n className=\"m-0 min-w-0 border-0 p-0 py-0.5\"\n >\n {section.title ? (\n <div\n aria-hidden\n className=\"px-2 pb-0.5 pt-1.5 font-medium text-[11px] text-muted-foreground uppercase tracking-wide\"\n >\n {section.title}\n </div>\n ) : null}\n {section.matches.map((match) => {\n index += 1;\n const rowIndex = index;\n const isSelected = rowIndex === current;\n const { command } = match;\n const runs = slashCommandRuns(command);\n const Icon = command.icon;\n return (\n <div\n key={command.name}\n ref={isSelected ? selectedRef : undefined}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={!runs || undefined}\n data-command={command.name}\n tabIndex={-1}\n // Opening or scrolling the menu can place a row under a still\n // pointer: only a moving one takes the selection from the keyboard.\n onMouseMove={() => setSelected(rowIndex)}\n onClick={() => pick(match)}\n // The keyboard reaches the menu through the editor; an option\n // focused some other way (assistive technology) picks the same.\n onKeyDown={(event) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n pick(match);\n }}\n className={cn(\n 'flex cursor-pointer items-start gap-2 rounded px-2 py-1.5',\n isSelected && 'bg-muted',\n !runs && 'cursor-default',\n )}\n >\n {Icon ? (\n <Icon\n aria-hidden\n className={cn('mt-0.5 size-4 shrink-0 text-muted-foreground', !runs && 'opacity-50')}\n />\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className={cn('truncate text-sm leading-tight', !runs && 'text-muted-foreground')}>\n {command.label}\n {match.args ? (\n <span className=\"text-muted-foreground\"> {match.args}</span>\n ) : command.args ? (\n <span className=\"text-muted-foreground italic\"> {command.args}</span>\n ) : null}\n </span>\n <span className=\"mt-0.5 truncate text-muted-foreground text-xs leading-tight\">\n {runs ? command.description : command.disabledReason}\n </span>\n </span>\n </div>\n );\n })}\n </fieldset>\n ))}\n </div>\n );\n },\n);\n\nSlashCommandMenu.displayName = 'SlashCommandMenu';\n"],"names":["forwardRef","slashCommandRows","useId","useRef","useState","index","useEffect","useImperativeHandle","jsx","jsxs","cn"],"mappings":";;;;;;AA4BO,SAAS,iBAAiB,SAAwC;AACvE,SAAO,CAAC,QAAQ;AAClB;AAEO,MAAM,mBAAmBA,WAAAA;AAAAA,EAC9B,CAAC,EAAE,UAAU,OAAA,GAAU,QAAQ;AAC7B,UAAM,OAAOC,cAAAA,iBAAiB,QAAQ;AACtC,UAAM,SAASC,WAAAA,MAAA;AACf,UAAM,cAAcC,WAAAA,OAAuB,IAAI;AAG/C,UAAM,UAAU,KAAK,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,KAAK,IAAQ;AACjE,UAAM,CAAC,WAAW,YAAY,IAAIC,WAAAA,SAAS,EAAE,SAAS,OAAO,GAAG;AAChE,UAAM,UACJ,UAAU,YAAY,UAAU,KAAK,IAAI,UAAU,OAAO,KAAK,IAAI,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI;AAC5F,UAAM,cAAc,CAACC,WAAkB,aAAa,EAAE,SAAS,OAAAA,QAAO;AACtEC,eAAAA,UAAU,MAAM;;AACd,8BAAY,YAAZ,mBAAqB,mBAArB,4BAAsC,EAAE,OAAO;IACjD,GAAG,CAAC,OAAO,CAAC;AAEZ,UAAM,OAAO,CAAC,UAAyC;AACrD,UAAI,SAAS,iBAAiB,MAAM,OAAO,UAAU,KAAK;AAAA,IAC5D;AAEAC,eAAAA;AAAAA,MACE;AAAA,MACA,OAAO;AAAA,QACL,WAAW,CAAC,UAAkC;AAC5C,cAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,kBAAQ,MAAM,KAAA;AAAA,YACZ,KAAK;AACH,2BAAa,UAAU,KAAK,KAAK,MAAM;AACvC,qBAAO;AAAA,YACT,KAAK;AACH,2BAAa,UAAU,IAAI,KAAK,UAAU,KAAK,MAAM;AACrD,qBAAO;AAAA,YACT,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAEH,kBAAI,MAAM,YAAa,QAAO;AAE9B,mBAAK,KAAK,OAAO,CAAC;AAClB,qBAAO;AAAA,YACT;AACE,qBAAO;AAAA,UAAA;AAAA,QAEb;AAAA,MAAA;AAAA,MAEF,CAAC,SAAS,IAAI;AAAA,IAAA;AAGhB,QAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAI,QAAQ;AACZ,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,cAAW;AAAA,QACX,eAAY;AAAA,QACZ,WAAU;AAAA,QAET,UAAA,SAAS,IAAI,CAAC;AAAA;AAAA,UAEbC,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEC,cAAY,QAAQ,SAAS;AAAA,cAC7B,WAAU;AAAA,cAET,UAAA;AAAA,gBAAA,QAAQ,QACPD,2BAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,eAAW;AAAA,oBACX,WAAU;AAAA,oBAET,UAAA,QAAQ;AAAA,kBAAA;AAAA,gBAAA,IAET;AAAA,gBACH,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAC9B,2BAAS;AACT,wBAAM,WAAW;AACjB,wBAAM,aAAa,aAAa;AAChC,wBAAM,EAAE,YAAY;AACpB,wBAAM,OAAO,iBAAiB,OAAO;AACrC,wBAAM,OAAO,QAAQ;AACrB,yBACEC,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,KAAK,aAAa,cAAc;AAAA,sBAChC,MAAK;AAAA,sBACL,iBAAe;AAAA,sBACf,iBAAe,CAAC,QAAQ;AAAA,sBACxB,gBAAc,QAAQ;AAAA,sBACtB,UAAU;AAAA,sBAGV,aAAa,MAAM,YAAY,QAAQ;AAAA,sBACvC,SAAS,MAAM,KAAK,KAAK;AAAA,sBAGzB,WAAW,CAAC,UAAU;AACpB,4BAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,IAAK;AAChD,8BAAM,eAAA;AACN,6BAAK,KAAK;AAAA,sBACZ;AAAA,sBACA,WAAWC,OAAAA;AAAAA,wBACT;AAAA,wBACA,cAAc;AAAA,wBACd,CAAC,QAAQ;AAAA,sBAAA;AAAA,sBAGV,UAAA;AAAA,wBAAA,OACCF,2BAAAA;AAAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,eAAW;AAAA,4BACX,WAAWE,OAAAA,GAAG,gDAAgD,CAAC,QAAQ,YAAY;AAAA,0BAAA;AAAA,wBAAA,IAEnF;AAAA,wBACJD,2BAAAA,KAAC,QAAA,EAAK,WAAU,gCACd,UAAA;AAAA,0BAAAA,gCAAC,UAAK,WAAWC,OAAAA,GAAG,kCAAkC,CAAC,QAAQ,uBAAuB,GACnF,UAAA;AAAA,4BAAA,QAAQ;AAAA,4BACR,MAAM,OACLD,gCAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA;AAAA,8BAAA;AAAA,8BAAE,MAAM;AAAA,4BAAA,GAAK,IACnD,QAAQ,OACVA,2BAAAA,KAAC,QAAA,EAAK,WAAU,gCAA+B,UAAA;AAAA,8BAAA;AAAA,8BAAE,QAAQ;AAAA,4BAAA,EAAA,CAAK,IAC5D;AAAA,0BAAA,GACN;AAAA,0BACAD,2BAAAA,IAAC,UAAK,WAAU,+DACb,iBAAO,QAAQ,cAAc,QAAQ,eAAA,CACxC;AAAA,wBAAA,EAAA,CACF;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBA1CK,QAAQ;AAAA,kBAAA;AAAA,gBA6CnB,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,YAlEI,QAAQ,SAAS;AAAA,UAAA;AAAA,SAoEzB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,iBAAiB,cAAc;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composer's `/` menu: the commands what is typed finds, under their
|
|
3
|
+
* groups, with the keyboard in the editor (arrows move, Enter or Tab picks,
|
|
4
|
+
* Escape closes, as the `@` menu works). A command that can't run right now
|
|
5
|
+
* lists greyed with its reason and picks nothing.
|
|
6
|
+
*/
|
|
7
|
+
import { type ComposerSlashCommand, type SlashCommandMatch, type SlashCommandSection } from './slash-commands';
|
|
8
|
+
export interface SlashCommandMenuHandle {
|
|
9
|
+
/** A key from the editor while the menu is open; `true` when the menu took it. */
|
|
10
|
+
onKeyDown: (event: KeyboardEvent) => boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface SlashCommandMenuProps {
|
|
13
|
+
sections: readonly SlashCommandSection[];
|
|
14
|
+
/** Picks a row whose command can run. */
|
|
15
|
+
onPick: (match: SlashCommandMatch) => void;
|
|
16
|
+
}
|
|
17
|
+
/** Whether a command can run now (no reason it can't). */
|
|
18
|
+
export declare function slashCommandRuns(command: ComposerSlashCommand): boolean;
|
|
19
|
+
export declare const SlashCommandMenu: import("react").ForwardRefExoticComponent<SlashCommandMenuProps & import("react").RefAttributes<SlashCommandMenuHandle>>;
|