@athenaintel/react 0.57.2 → 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 +759 -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 +290 -97
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +290 -97
- 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 +56 -19
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +57 -20
- 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 +3 -1
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +7 -0
- package/dist/runtime/statewire-run-config.js +3 -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 +6 -6
- package/dist/threads/SessionList.cjs.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/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/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,189 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { readToolkitSelectionContext, toolkitSelectionResume } from "../../agent-runtime/src/typed-interrupt-kinds.js";
|
|
3
|
+
import { PackageIcon } from "lucide-react";
|
|
4
|
+
import { useMemo, useState, useEffect } from "react";
|
|
5
|
+
import { Button } from "../../ui/button.js";
|
|
6
|
+
import { InterruptCardShell, WaitForStreamingHint, TimedInterruptCountdown } from "./interrupt-card-shell.js";
|
|
7
|
+
import { cn } from "cnfast";
|
|
8
|
+
function ToolkitSelectionList({
|
|
9
|
+
toolkits,
|
|
10
|
+
selected,
|
|
11
|
+
isEnable,
|
|
12
|
+
onToggle,
|
|
13
|
+
disabled = false
|
|
14
|
+
}) {
|
|
15
|
+
const readOnly = !onToggle;
|
|
16
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1.5", children: toolkits.map((toolkit) => {
|
|
17
|
+
const checked = selected[toolkit.toolkit_id] ?? false;
|
|
18
|
+
return /* @__PURE__ */ jsxs(
|
|
19
|
+
"label",
|
|
20
|
+
{
|
|
21
|
+
className: cn(
|
|
22
|
+
"flex items-start gap-2 rounded-md border border-border p-2",
|
|
23
|
+
readOnly ? "cursor-default" : "cursor-pointer",
|
|
24
|
+
checked ? "bg-muted/60" : "bg-background",
|
|
25
|
+
readOnly && !checked && "opacity-70"
|
|
26
|
+
),
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ jsx(
|
|
29
|
+
"input",
|
|
30
|
+
{
|
|
31
|
+
type: "checkbox",
|
|
32
|
+
checked,
|
|
33
|
+
onChange: (event) => onToggle == null ? void 0 : onToggle(toolkit.toolkit_id, event.target.checked),
|
|
34
|
+
disabled: disabled || readOnly,
|
|
35
|
+
className: cn("mt-0.5", readOnly ? "cursor-default" : "cursor-pointer")
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col gap-0.5", children: [
|
|
39
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
40
|
+
/* @__PURE__ */ jsx(
|
|
41
|
+
"span",
|
|
42
|
+
{
|
|
43
|
+
className: cn("text-foreground text-sm", readOnly && !checked && "text-muted-foreground line-through"),
|
|
44
|
+
children: toolkit.display_name
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
isEnable && typeof toolkit.added_tool_count === "number" && toolkit.added_tool_count > 0 ? /* @__PURE__ */ jsxs("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 font-medium text-[10px] text-muted-foreground", children: [
|
|
48
|
+
"+",
|
|
49
|
+
toolkit.added_tool_count,
|
|
50
|
+
" tool",
|
|
51
|
+
toolkit.added_tool_count === 1 ? "" : "s"
|
|
52
|
+
] }) : null
|
|
53
|
+
] }),
|
|
54
|
+
toolkit.rationale ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs italic", children: toolkit.rationale }) : null,
|
|
55
|
+
toolkit.description ? /* @__PURE__ */ jsx("span", { className: "line-clamp-2 text-muted-foreground text-xs", children: toolkit.description }) : null
|
|
56
|
+
] })
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
toolkit.toolkit_id
|
|
60
|
+
);
|
|
61
|
+
}) });
|
|
62
|
+
}
|
|
63
|
+
function ToolkitSelectionCard({ interrupt, resume, engine }) {
|
|
64
|
+
const {
|
|
65
|
+
isLoading,
|
|
66
|
+
hasTimeout,
|
|
67
|
+
timeoutSeconds,
|
|
68
|
+
timeoutRemaining,
|
|
69
|
+
isTimedOut,
|
|
70
|
+
isTimeoutCancelled,
|
|
71
|
+
cancelTimeout,
|
|
72
|
+
isConversationStreaming
|
|
73
|
+
} = engine;
|
|
74
|
+
const context = useMemo(() => readToolkitSelectionContext(interrupt), [interrupt]);
|
|
75
|
+
const { action, toolkits } = context;
|
|
76
|
+
const [selected, setSelected] = useState(
|
|
77
|
+
() => Object.fromEntries(toolkits.map((toolkit) => [toolkit.toolkit_id, true]))
|
|
78
|
+
);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
setSelected(
|
|
81
|
+
(previous) => Object.fromEntries(toolkits.map((toolkit) => [toolkit.toolkit_id, previous[toolkit.toolkit_id] ?? true]))
|
|
82
|
+
);
|
|
83
|
+
}, [toolkits]);
|
|
84
|
+
const selectedIds = toolkits.map((toolkit) => toolkit.toolkit_id).filter((id) => selected[id]);
|
|
85
|
+
const [feedback, setFeedback] = useState("");
|
|
86
|
+
const isEnable = action === "enable";
|
|
87
|
+
const verb = isEnable ? "Enable" : "Disable";
|
|
88
|
+
const deselectedCount = toolkits.length - selectedIds.length;
|
|
89
|
+
const maxTools = context.max_tools;
|
|
90
|
+
const projectedToolCount = isEnable ? (context.current_tool_count ?? 0) + toolkits.filter((toolkit) => selected[toolkit.toolkit_id]).reduce((sum, toolkit) => sum + (toolkit.added_tool_count ?? 0), 0) : null;
|
|
91
|
+
const overCap = isEnable && typeof maxTools === "number" && projectedToolCount !== null && projectedToolCount > maxTools;
|
|
92
|
+
const actionsDisabled = isLoading || isConversationStreaming;
|
|
93
|
+
const reason = feedback.trim() || void 0;
|
|
94
|
+
return /* @__PURE__ */ jsx(
|
|
95
|
+
InterruptCardShell,
|
|
96
|
+
{
|
|
97
|
+
title: `${verb} ${toolkits.length} toolkit${toolkits.length === 1 ? "" : "s"}?`,
|
|
98
|
+
description: interrupt.message,
|
|
99
|
+
icon: /* @__PURE__ */ jsx(PackageIcon, {}),
|
|
100
|
+
hasTimeout,
|
|
101
|
+
onInteraction: cancelTimeout,
|
|
102
|
+
content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", "data-testid": "typed-interrupt-toolkit-selection", children: [
|
|
103
|
+
/* @__PURE__ */ jsx(
|
|
104
|
+
ToolkitSelectionList,
|
|
105
|
+
{
|
|
106
|
+
toolkits,
|
|
107
|
+
selected,
|
|
108
|
+
isEnable,
|
|
109
|
+
disabled: isLoading,
|
|
110
|
+
onToggle: (toolkitId, checked) => {
|
|
111
|
+
void cancelTimeout();
|
|
112
|
+
setSelected((previous) => ({ ...previous, [toolkitId]: checked }));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
),
|
|
116
|
+
isEnable && typeof maxTools === "number" && projectedToolCount !== null ? /* @__PURE__ */ jsxs(
|
|
117
|
+
"div",
|
|
118
|
+
{
|
|
119
|
+
className: cn(
|
|
120
|
+
"flex items-center justify-between gap-2 rounded-md border px-2 py-1.5 text-xs",
|
|
121
|
+
overCap ? "border-red-300 bg-red-50 text-red-700" : "border-border bg-muted/60 text-muted-foreground"
|
|
122
|
+
),
|
|
123
|
+
children: [
|
|
124
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
125
|
+
projectedToolCount,
|
|
126
|
+
" / ",
|
|
127
|
+
maxTools,
|
|
128
|
+
" tools enabled"
|
|
129
|
+
] }),
|
|
130
|
+
overCap ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: "Over the limit — deselect some to continue" }) : null
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
) : null,
|
|
134
|
+
/* @__PURE__ */ jsx(
|
|
135
|
+
"textarea",
|
|
136
|
+
{
|
|
137
|
+
"aria-label": "Feedback for the agent",
|
|
138
|
+
value: feedback,
|
|
139
|
+
onChange: (event) => {
|
|
140
|
+
void cancelTimeout();
|
|
141
|
+
setFeedback(event.target.value);
|
|
142
|
+
},
|
|
143
|
+
disabled: isLoading,
|
|
144
|
+
rows: 2,
|
|
145
|
+
placeholder: deselectedCount > 0 ? "Optional: why skip these? (helps the agent choose better)" : "Optional: feedback for the agent",
|
|
146
|
+
className: "w-full resize-none rounded-md border border-input bg-background px-2 py-1.5 text-foreground text-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring"
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
hasTimeout ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 rounded-md border border-border bg-muted/60 px-2 py-1.5", children: [
|
|
150
|
+
/* @__PURE__ */ jsx(
|
|
151
|
+
TimedInterruptCountdown,
|
|
152
|
+
{
|
|
153
|
+
timeoutRemaining,
|
|
154
|
+
timeoutSeconds,
|
|
155
|
+
isTimedOut,
|
|
156
|
+
isTimeoutCancelled,
|
|
157
|
+
className: "min-w-0 flex-1"
|
|
158
|
+
}
|
|
159
|
+
),
|
|
160
|
+
!isTimeoutCancelled && !isTimedOut && engine.canCancelTimeout !== false ? /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", onClick: () => void cancelTimeout(), disabled: isLoading, children: "Stop timer" }) : null
|
|
161
|
+
] }) : null
|
|
162
|
+
] }),
|
|
163
|
+
actions: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
164
|
+
/* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(
|
|
165
|
+
Button,
|
|
166
|
+
{
|
|
167
|
+
onClick: () => resume(toolkitSelectionResume({ action: "approve", approvedToolkitIds: selectedIds, reason })),
|
|
168
|
+
disabled: actionsDisabled || selectedIds.length === 0 || overCap,
|
|
169
|
+
children: isLoading ? "Processing..." : `${verb}${selectedIds.length > 0 ? ` ${selectedIds.length}` : ""}`
|
|
170
|
+
}
|
|
171
|
+
) }),
|
|
172
|
+
/* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(
|
|
173
|
+
Button,
|
|
174
|
+
{
|
|
175
|
+
variant: "outline",
|
|
176
|
+
onClick: () => resume(toolkitSelectionResume({ action: "reject", approvedToolkitIds: [], reason })),
|
|
177
|
+
disabled: actionsDisabled,
|
|
178
|
+
children: isLoading ? "Processing..." : "Reject"
|
|
179
|
+
}
|
|
180
|
+
) })
|
|
181
|
+
] })
|
|
182
|
+
}
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
export {
|
|
186
|
+
ToolkitSelectionCard,
|
|
187
|
+
ToolkitSelectionList
|
|
188
|
+
};
|
|
189
|
+
//# sourceMappingURL=toolkit-selection-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolkit-selection-card.js","sources":["../../../src/chat/typed-interrupts/toolkit-selection-card.tsx"],"sourcesContent":["/**\n * `toggle_toolkit` asking to turn toolkits on or off (Olympus's\n * `ToolkitSelectionInterruptUi`): every proposed toolkit starts checked, the\n * person approves all, some or none of them, may say why (sent as `reason`, so\n * the agent does not ask again), and sees the tool cap's headroom before an\n * enable that would breach it. A timed park shows its countdown with Stop\n * timer.\n */\nimport {\n readToolkitSelectionContext,\n type ToolkitSelectionItem,\n toolkitSelectionResume,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport { PackageIcon } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { InterruptCardShell, TimedInterruptCountdown, WaitForStreamingHint } from './interrupt-card-shell';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\n\nexport interface ToolkitSelectionListProps {\n toolkits: readonly ToolkitSelectionItem[];\n /** Map of toolkit id to whether it is checked. */\n selected: Readonly<Record<string, boolean>>;\n /** An enable shows each toolkit's added-tool count. */\n isEnable: boolean;\n /** Interactive when given; a read-only mirror of the answer without it. */\n onToggle?: (toolkitId: string, checked: boolean) => void;\n disabled?: boolean;\n}\n\n/** The toolkit rows, interactive in the card and read-only once answered (Olympus's `ToolkitSelectionList`). */\nexport function ToolkitSelectionList({\n toolkits,\n selected,\n isEnable,\n onToggle,\n disabled = false,\n}: ToolkitSelectionListProps) {\n const readOnly = !onToggle;\n return (\n <div className=\"flex flex-col gap-1.5\">\n {toolkits.map((toolkit) => {\n const checked = selected[toolkit.toolkit_id] ?? false;\n return (\n <label\n key={toolkit.toolkit_id}\n className={cn(\n 'flex items-start gap-2 rounded-md border border-border p-2',\n readOnly ? 'cursor-default' : 'cursor-pointer',\n checked ? 'bg-muted/60' : 'bg-background',\n readOnly && !checked && 'opacity-70',\n )}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={(event) => onToggle?.(toolkit.toolkit_id, event.target.checked)}\n disabled={disabled || readOnly}\n className={cn('mt-0.5', readOnly ? 'cursor-default' : 'cursor-pointer')}\n />\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"flex items-center gap-2\">\n <span\n className={cn('text-foreground text-sm', readOnly && !checked && 'text-muted-foreground line-through')}\n >\n {toolkit.display_name}\n </span>\n {isEnable && typeof toolkit.added_tool_count === 'number' && toolkit.added_tool_count > 0 ? (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 font-medium text-[10px] text-muted-foreground\">\n +{toolkit.added_tool_count} tool{toolkit.added_tool_count === 1 ? '' : 's'}\n </span>\n ) : null}\n </span>\n {toolkit.rationale ? (\n <span className=\"text-muted-foreground text-xs italic\">{toolkit.rationale}</span>\n ) : null}\n {toolkit.description ? (\n <span className=\"line-clamp-2 text-muted-foreground text-xs\">{toolkit.description}</span>\n ) : null}\n </span>\n </label>\n );\n })}\n </div>\n );\n}\n\nexport function ToolkitSelectionCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const {\n isLoading,\n hasTimeout,\n timeoutSeconds,\n timeoutRemaining,\n isTimedOut,\n isTimeoutCancelled,\n cancelTimeout,\n isConversationStreaming,\n } = engine;\n const context = useMemo(() => readToolkitSelectionContext(interrupt), [interrupt]);\n const { action, toolkits } = context;\n\n const [selected, setSelected] = useState<Record<string, boolean>>(() =>\n Object.fromEntries(toolkits.map((toolkit) => [toolkit.toolkit_id, true])),\n );\n // The same card for another selection: new toolkits start checked, and a\n // toolkit still proposed keeps the person's choice.\n useEffect(() => {\n setSelected((previous) =>\n Object.fromEntries(toolkits.map((toolkit) => [toolkit.toolkit_id, previous[toolkit.toolkit_id] ?? true])),\n );\n }, [toolkits]);\n const selectedIds = toolkits.map((toolkit) => toolkit.toolkit_id).filter((id) => selected[id]);\n const [feedback, setFeedback] = useState('');\n\n const isEnable = action === 'enable';\n const verb = isEnable ? 'Enable' : 'Disable';\n const deselectedCount = toolkits.length - selectedIds.length;\n const maxTools = context.max_tools;\n const projectedToolCount = isEnable\n ? (context.current_tool_count ?? 0) +\n toolkits\n .filter((toolkit) => selected[toolkit.toolkit_id])\n .reduce((sum, toolkit) => sum + (toolkit.added_tool_count ?? 0), 0)\n : null;\n const overCap = isEnable && typeof maxTools === 'number' && projectedToolCount !== null && projectedToolCount > maxTools;\n const actionsDisabled = isLoading || isConversationStreaming;\n const reason = feedback.trim() || undefined;\n\n return (\n <InterruptCardShell\n title={`${verb} ${toolkits.length} toolkit${toolkits.length === 1 ? '' : 's'}?`}\n description={interrupt.message}\n icon={<PackageIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-2\" data-testid=\"typed-interrupt-toolkit-selection\">\n <ToolkitSelectionList\n toolkits={toolkits}\n selected={selected}\n isEnable={isEnable}\n disabled={isLoading}\n onToggle={(toolkitId, checked) => {\n void cancelTimeout();\n setSelected((previous) => ({ ...previous, [toolkitId]: checked }));\n }}\n />\n {isEnable && typeof maxTools === 'number' && projectedToolCount !== null ? (\n <div\n className={cn(\n 'flex items-center justify-between gap-2 rounded-md border px-2 py-1.5 text-xs',\n overCap ? 'border-red-300 bg-red-50 text-red-700' : 'border-border bg-muted/60 text-muted-foreground',\n )}\n >\n <span>\n {projectedToolCount} / {maxTools} tools enabled\n </span>\n {overCap ? <span className=\"font-medium\">Over the limit — deselect some to continue</span> : null}\n </div>\n ) : null}\n <textarea\n aria-label=\"Feedback for the agent\"\n value={feedback}\n onChange={(event) => {\n void cancelTimeout();\n setFeedback(event.target.value);\n }}\n disabled={isLoading}\n rows={2}\n placeholder={\n deselectedCount > 0\n ? 'Optional: why skip these? (helps the agent choose better)'\n : 'Optional: feedback for the agent'\n }\n className=\"w-full resize-none rounded-md border border-input bg-background px-2 py-1.5 text-foreground text-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring\"\n />\n {hasTimeout ? (\n <div className=\"flex items-center justify-between gap-3 rounded-md border border-border bg-muted/60 px-2 py-1.5\">\n <TimedInterruptCountdown\n timeoutRemaining={timeoutRemaining}\n timeoutSeconds={timeoutSeconds}\n isTimedOut={isTimedOut}\n isTimeoutCancelled={isTimeoutCancelled}\n className=\"min-w-0 flex-1\"\n />\n {!isTimeoutCancelled && !isTimedOut && engine.canCancelTimeout !== false ? (\n <Button variant=\"outline\" size=\"sm\" onClick={() => void cancelTimeout()} disabled={isLoading}>\n Stop timer\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n }\n actions={\n <>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n onClick={() => resume(toolkitSelectionResume({ action: 'approve', approvedToolkitIds: selectedIds, reason }))}\n disabled={actionsDisabled || selectedIds.length === 0 || overCap}\n >\n {isLoading ? 'Processing...' : `${verb}${selectedIds.length > 0 ? ` ${selectedIds.length}` : ''}`}\n </Button>\n </WaitForStreamingHint>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(toolkitSelectionResume({ action: 'reject', approvedToolkitIds: [], reason }))}\n disabled={actionsDisabled}\n >\n {isLoading ? 'Processing...' : 'Reject'}\n </Button>\n </WaitForStreamingHint>\n </>\n }\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;AAgCO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAA8B;AAC5B,QAAM,WAAW,CAAC;AAClB,6BACG,OAAA,EAAI,WAAU,yBACZ,UAAA,SAAS,IAAI,CAAC,YAAY;AACzB,UAAM,UAAU,SAAS,QAAQ,UAAU,KAAK;AAChD,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA,UACT;AAAA,UACA,WAAW,mBAAmB;AAAA,UAC9B,UAAU,gBAAgB;AAAA,UAC1B,YAAY,CAAC,WAAW;AAAA,QAAA;AAAA,QAG1B,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL;AAAA,cACA,UAAU,CAAC,UAAU,qCAAW,QAAQ,YAAY,MAAM,OAAO;AAAA,cACjE,UAAU,YAAY;AAAA,cACtB,WAAW,GAAG,UAAU,WAAW,mBAAmB,gBAAgB;AAAA,YAAA;AAAA,UAAA;AAAA,UAExE,qBAAC,QAAA,EAAK,WAAU,iCACd,UAAA;AAAA,YAAA,qBAAC,QAAA,EAAK,WAAU,2BACd,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,GAAG,2BAA2B,YAAY,CAAC,WAAW,oCAAoC;AAAA,kBAEpG,UAAA,QAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEV,YAAY,OAAO,QAAQ,qBAAqB,YAAY,QAAQ,mBAAmB,IACtF,qBAAC,QAAA,EAAK,WAAU,yFAAwF,UAAA;AAAA,gBAAA;AAAA,gBACpG,QAAQ;AAAA,gBAAiB;AAAA,gBAAM,QAAQ,qBAAqB,IAAI,KAAK;AAAA,cAAA,EAAA,CACzE,IACE;AAAA,YAAA,GACN;AAAA,YACC,QAAQ,YACP,oBAAC,QAAA,EAAK,WAAU,wCAAwC,UAAA,QAAQ,WAAU,IACxE;AAAA,YACH,QAAQ,cACP,oBAAC,QAAA,EAAK,WAAU,8CAA8C,UAAA,QAAQ,aAAY,IAChF;AAAA,UAAA,EAAA,CACN;AAAA,QAAA;AAAA,MAAA;AAAA,MAlCK,QAAQ;AAAA,IAAA;AAAA,EAqCnB,CAAC,EAAA,CACH;AAEJ;AAEO,SAAS,qBAAqB,EAAE,WAAW,QAAQ,UAAmC;AAC3F,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AACJ,QAAM,UAAU,QAAQ,MAAM,4BAA4B,SAAS,GAAG,CAAC,SAAS,CAAC;AACjF,QAAM,EAAE,QAAQ,SAAA,IAAa;AAE7B,QAAM,CAAC,UAAU,WAAW,IAAI;AAAA,IAAkC,MAChE,OAAO,YAAY,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,YAAY,IAAI,CAAC,CAAC;AAAA,EAAA;AAI1E,YAAU,MAAM;AACd;AAAA,MAAY,CAAC,aACX,OAAO,YAAY,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,YAAY,SAAS,QAAQ,UAAU,KAAK,IAAI,CAAC,CAAC;AAAA,IAAA;AAAA,EAE5G,GAAG,CAAC,QAAQ,CAAC;AACb,QAAM,cAAc,SAAS,IAAI,CAAC,YAAY,QAAQ,UAAU,EAAE,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC;AAC7F,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAE3C,QAAM,WAAW,WAAW;AAC5B,QAAM,OAAO,WAAW,WAAW;AACnC,QAAM,kBAAkB,SAAS,SAAS,YAAY;AACtD,QAAM,WAAW,QAAQ;AACzB,QAAM,qBAAqB,YACtB,QAAQ,sBAAsB,KAC/B,SACG,OAAO,CAAC,YAAY,SAAS,QAAQ,UAAU,CAAC,EAChD,OAAO,CAAC,KAAK,YAAY,OAAO,QAAQ,oBAAoB,IAAI,CAAC,IACpE;AACJ,QAAM,UAAU,YAAY,OAAO,aAAa,YAAY,uBAAuB,QAAQ,qBAAqB;AAChH,QAAM,kBAAkB,aAAa;AACrC,QAAM,SAAS,SAAS,KAAA,KAAU;AAElC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,GAAG,IAAI,IAAI,SAAS,MAAM,WAAW,SAAS,WAAW,IAAI,KAAK,GAAG;AAAA,MAC5E,aAAa,UAAU;AAAA,MACvB,0BAAO,aAAA,EAAY;AAAA,MACnB;AAAA,MACA,eAAe;AAAA,MACf,SACE,qBAAC,OAAA,EAAI,WAAU,uBAAsB,eAAY,qCAC/C,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV,UAAU,CAAC,WAAW,YAAY;AAChC,mBAAK,cAAA;AACL,0BAAY,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,SAAS,GAAG,QAAA,EAAU;AAAA,YACnE;AAAA,UAAA;AAAA,QAAA;AAAA,QAED,YAAY,OAAO,aAAa,YAAY,uBAAuB,OAClE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,UAAU,0CAA0C;AAAA,YAAA;AAAA,YAGtD,UAAA;AAAA,cAAA,qBAAC,QAAA,EACE,UAAA;AAAA,gBAAA;AAAA,gBAAmB;AAAA,gBAAI;AAAA,gBAAS;AAAA,cAAA,GACnC;AAAA,cACC,UAAU,oBAAC,QAAA,EAAK,WAAU,eAAc,wDAA0C,IAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,IAE7F;AAAA,QACJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,OAAO;AAAA,YACP,UAAU,CAAC,UAAU;AACnB,mBAAK,cAAA;AACL,0BAAY,MAAM,OAAO,KAAK;AAAA,YAChC;AAAA,YACA,UAAU;AAAA,YACV,MAAM;AAAA,YACN,aACE,kBAAkB,IACd,8DACA;AAAA,YAEN,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEX,aACC,qBAAC,OAAA,EAAI,WAAU,mGACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEX,CAAC,sBAAsB,CAAC,cAAc,OAAO,qBAAqB,4BAChE,QAAA,EAAO,SAAQ,WAAU,MAAK,MAAK,SAAS,MAAM,KAAK,iBAAiB,UAAU,WAAW,UAAA,aAAA,CAE9F,IACE;AAAA,QAAA,EAAA,CACN,IACE;AAAA,MAAA,GACN;AAAA,MAEF,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,QAAA,oBAAC,sBAAA,EAAqB,QAAQ,yBAC5B,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,OAAO,uBAAuB,EAAE,QAAQ,WAAW,oBAAoB,aAAa,OAAA,CAAQ,CAAC;AAAA,YAC5G,UAAU,mBAAmB,YAAY,WAAW,KAAK;AAAA,YAExD,UAAA,YAAY,kBAAkB,GAAG,IAAI,GAAG,YAAY,SAAS,IAAI,IAAI,YAAY,MAAM,KAAK,EAAE;AAAA,UAAA;AAAA,QAAA,GAEnG;AAAA,QACA,oBAAC,sBAAA,EAAqB,QAAQ,yBAC5B,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,OAAO,uBAAuB,EAAE,QAAQ,UAAU,oBAAoB,CAAA,GAAI,OAAA,CAAQ,CAAC;AAAA,YAClG,UAAU;AAAA,YAET,sBAAY,kBAAkB;AAAA,UAAA;AAAA,QAAA,EACjC,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const typedInterrupts = require("../../agent-runtime/src/typed-interrupts.cjs");
|
|
5
|
+
const typedInterruptKinds = require("../../agent-runtime/src/typed-interrupt-kinds.cjs");
|
|
6
|
+
const approvalCards = require("./approval-cards.cjs");
|
|
7
|
+
const formCards = require("./form-cards.cjs");
|
|
8
|
+
const questionnaireCard = require("./questionnaire-card.cjs");
|
|
9
|
+
const requestFileCard = require("./request-file-card.cjs");
|
|
10
|
+
const toolkitSelectionCard = require("./toolkit-selection-card.cjs");
|
|
11
|
+
function TypedInterruptBody(props) {
|
|
12
|
+
const { interrupt } = props;
|
|
13
|
+
if (interrupt.type === typedInterrupts.TypedInterruptType.CUSTOM) {
|
|
14
|
+
if (typedInterruptKinds.isQuestionnaireInterrupt(interrupt)) return /* @__PURE__ */ jsxRuntime.jsx(questionnaireCard.QuestionnaireCard, { ...props });
|
|
15
|
+
if (typedInterruptKinds.isToolkitSelectionInterrupt(interrupt)) return /* @__PURE__ */ jsxRuntime.jsx(toolkitSelectionCard.ToolkitSelectionCard, { ...props });
|
|
16
|
+
if (typedInterruptKinds.isBrowseProfileApprovalInterrupt(interrupt)) return /* @__PURE__ */ jsxRuntime.jsx(approvalCards.BrowseProfileApprovalCard, { ...props });
|
|
17
|
+
if (typedInterruptKinds.isWaitForMinutesInterrupt(interrupt)) return /* @__PURE__ */ jsxRuntime.jsx(approvalCards.WaitForMinutesCard, { ...props });
|
|
18
|
+
if (typedInterruptKinds.isPmScheduleApprovalInterrupt(interrupt)) return /* @__PURE__ */ jsxRuntime.jsx(approvalCards.PmScheduleApprovalCard, { ...props });
|
|
19
|
+
if (typedInterruptKinds.isRequestFileInterrupt(interrupt)) return /* @__PURE__ */ jsxRuntime.jsx(requestFileCard.RequestFileCard, { ...props });
|
|
20
|
+
return /* @__PURE__ */ jsxRuntime.jsx(formCards.CustomInterruptCard, { ...props });
|
|
21
|
+
}
|
|
22
|
+
if (interrupt.type === typedInterrupts.TypedInterruptType.HITL) return /* @__PURE__ */ jsxRuntime.jsx(formCards.HitlInterruptCard, { ...props });
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsx(formCards.FormInterruptCard, { ...props });
|
|
24
|
+
}
|
|
25
|
+
exports.TypedInterruptBody = TypedInterruptBody;
|
|
26
|
+
//# sourceMappingURL=typed-interrupt-body.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-interrupt-body.cjs","sources":["../../../src/chat/typed-interrupts/typed-interrupt-body.tsx"],"sourcesContent":["/**\n * The card for a parked typed interrupt, by `type`, then by `source` for the\n * `custom` family, with the generic custom card as that family's default\n * (Olympus's `renderTypedInterrupt`). Every branch keeps the resume shape its\n * raiser validates. Total: every typed payload has a card.\n *\n * `StatewireTypedInterruptCard` loads it (with the engine, `typed-interrupt-panel.tsx`)\n * on the first typed park, so a chat that never sees one never loads the cards.\n */\nimport { TypedInterruptType } from '@athenaintel/agent-runtime/typed-interrupts';\nimport {\n isBrowseProfileApprovalInterrupt,\n isPmScheduleApprovalInterrupt,\n isQuestionnaireInterrupt,\n isRequestFileInterrupt,\n isToolkitSelectionInterrupt,\n isWaitForMinutesInterrupt,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport type { ReactElement } from 'react';\nimport { BrowseProfileApprovalCard, PmScheduleApprovalCard, WaitForMinutesCard } from './approval-cards';\nimport { CustomInterruptCard, FormInterruptCard, HitlInterruptCard } from './form-cards';\nimport { QuestionnaireCard } from './questionnaire-card';\nimport { RequestFileCard } from './request-file-card';\nimport { ToolkitSelectionCard } from './toolkit-selection-card';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\n\nexport function TypedInterruptBody(props: TypedInterruptCardProps): ReactElement {\n const { interrupt } = props;\n if (interrupt.type === TypedInterruptType.CUSTOM) {\n if (isQuestionnaireInterrupt(interrupt)) return <QuestionnaireCard {...props} />;\n if (isToolkitSelectionInterrupt(interrupt)) return <ToolkitSelectionCard {...props} />;\n if (isBrowseProfileApprovalInterrupt(interrupt)) return <BrowseProfileApprovalCard {...props} />;\n if (isWaitForMinutesInterrupt(interrupt)) return <WaitForMinutesCard {...props} />;\n if (isPmScheduleApprovalInterrupt(interrupt)) return <PmScheduleApprovalCard {...props} />;\n if (isRequestFileInterrupt(interrupt)) return <RequestFileCard {...props} />;\n return <CustomInterruptCard {...props} />;\n }\n // Tool-raised approvals (`raise_hitl_interrupt`, source `hitl_<tool_id>`);\n // the deepagents `hitl_approval` never reaches here (the approval card's).\n if (interrupt.type === TypedInterruptType.HITL) return <HitlInterruptCard {...props} />;\n return <FormInterruptCard {...props} />;\n}\n"],"names":["TypedInterruptType","isQuestionnaireInterrupt","jsx","QuestionnaireCard","isToolkitSelectionInterrupt","ToolkitSelectionCard","isBrowseProfileApprovalInterrupt","BrowseProfileApprovalCard","isWaitForMinutesInterrupt","WaitForMinutesCard","isPmScheduleApprovalInterrupt","PmScheduleApprovalCard","isRequestFileInterrupt","RequestFileCard","CustomInterruptCard","HitlInterruptCard","FormInterruptCard"],"mappings":";;;;;;;;;;AA0BO,SAAS,mBAAmB,OAA8C;AAC/E,QAAM,EAAE,cAAc;AACtB,MAAI,UAAU,SAASA,gBAAAA,mBAAmB,QAAQ;AAChD,QAAIC,oBAAAA,yBAAyB,SAAS,UAAUC,2BAAAA,IAACC,qCAAA,EAAmB,GAAG,OAAO;AAC9E,QAAIC,oBAAAA,4BAA4B,SAAS,UAAUF,2BAAAA,IAACG,2CAAA,EAAsB,GAAG,OAAO;AACpF,QAAIC,oBAAAA,iCAAiC,SAAS,UAAUJ,2BAAAA,IAACK,yCAAA,EAA2B,GAAG,OAAO;AAC9F,QAAIC,oBAAAA,0BAA0B,SAAS,UAAUN,2BAAAA,IAACO,kCAAA,EAAoB,GAAG,OAAO;AAChF,QAAIC,oBAAAA,8BAA8B,SAAS,UAAUR,2BAAAA,IAACS,sCAAA,EAAwB,GAAG,OAAO;AACxF,QAAIC,oBAAAA,uBAAuB,SAAS,UAAUV,2BAAAA,IAACW,iCAAA,EAAiB,GAAG,OAAO;AAC1E,WAAOX,+BAACY,UAAAA,qBAAA,EAAqB,GAAG,MAAA,CAAO;AAAA,EACzC;AAGA,MAAI,UAAU,SAASd,gBAAAA,mBAAmB,aAAaE,2BAAAA,IAACa,UAAAA,mBAAA,EAAmB,GAAG,OAAO;AACrF,SAAOb,+BAACc,UAAAA,mBAAA,EAAmB,GAAG,MAAA,CAAO;AACvC;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TypedInterruptType } from "../../agent-runtime/src/typed-interrupts.js";
|
|
3
|
+
import { isQuestionnaireInterrupt, isToolkitSelectionInterrupt, isBrowseProfileApprovalInterrupt, isWaitForMinutesInterrupt, isPmScheduleApprovalInterrupt, isRequestFileInterrupt } from "../../agent-runtime/src/typed-interrupt-kinds.js";
|
|
4
|
+
import { BrowseProfileApprovalCard, WaitForMinutesCard, PmScheduleApprovalCard } from "./approval-cards.js";
|
|
5
|
+
import { CustomInterruptCard, HitlInterruptCard, FormInterruptCard } from "./form-cards.js";
|
|
6
|
+
import { QuestionnaireCard } from "./questionnaire-card.js";
|
|
7
|
+
import { RequestFileCard } from "./request-file-card.js";
|
|
8
|
+
import { ToolkitSelectionCard } from "./toolkit-selection-card.js";
|
|
9
|
+
function TypedInterruptBody(props) {
|
|
10
|
+
const { interrupt } = props;
|
|
11
|
+
if (interrupt.type === TypedInterruptType.CUSTOM) {
|
|
12
|
+
if (isQuestionnaireInterrupt(interrupt)) return /* @__PURE__ */ jsx(QuestionnaireCard, { ...props });
|
|
13
|
+
if (isToolkitSelectionInterrupt(interrupt)) return /* @__PURE__ */ jsx(ToolkitSelectionCard, { ...props });
|
|
14
|
+
if (isBrowseProfileApprovalInterrupt(interrupt)) return /* @__PURE__ */ jsx(BrowseProfileApprovalCard, { ...props });
|
|
15
|
+
if (isWaitForMinutesInterrupt(interrupt)) return /* @__PURE__ */ jsx(WaitForMinutesCard, { ...props });
|
|
16
|
+
if (isPmScheduleApprovalInterrupt(interrupt)) return /* @__PURE__ */ jsx(PmScheduleApprovalCard, { ...props });
|
|
17
|
+
if (isRequestFileInterrupt(interrupt)) return /* @__PURE__ */ jsx(RequestFileCard, { ...props });
|
|
18
|
+
return /* @__PURE__ */ jsx(CustomInterruptCard, { ...props });
|
|
19
|
+
}
|
|
20
|
+
if (interrupt.type === TypedInterruptType.HITL) return /* @__PURE__ */ jsx(HitlInterruptCard, { ...props });
|
|
21
|
+
return /* @__PURE__ */ jsx(FormInterruptCard, { ...props });
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
TypedInterruptBody
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=typed-interrupt-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-interrupt-body.js","sources":["../../../src/chat/typed-interrupts/typed-interrupt-body.tsx"],"sourcesContent":["/**\n * The card for a parked typed interrupt, by `type`, then by `source` for the\n * `custom` family, with the generic custom card as that family's default\n * (Olympus's `renderTypedInterrupt`). Every branch keeps the resume shape its\n * raiser validates. Total: every typed payload has a card.\n *\n * `StatewireTypedInterruptCard` loads it (with the engine, `typed-interrupt-panel.tsx`)\n * on the first typed park, so a chat that never sees one never loads the cards.\n */\nimport { TypedInterruptType } from '@athenaintel/agent-runtime/typed-interrupts';\nimport {\n isBrowseProfileApprovalInterrupt,\n isPmScheduleApprovalInterrupt,\n isQuestionnaireInterrupt,\n isRequestFileInterrupt,\n isToolkitSelectionInterrupt,\n isWaitForMinutesInterrupt,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport type { ReactElement } from 'react';\nimport { BrowseProfileApprovalCard, PmScheduleApprovalCard, WaitForMinutesCard } from './approval-cards';\nimport { CustomInterruptCard, FormInterruptCard, HitlInterruptCard } from './form-cards';\nimport { QuestionnaireCard } from './questionnaire-card';\nimport { RequestFileCard } from './request-file-card';\nimport { ToolkitSelectionCard } from './toolkit-selection-card';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\n\nexport function TypedInterruptBody(props: TypedInterruptCardProps): ReactElement {\n const { interrupt } = props;\n if (interrupt.type === TypedInterruptType.CUSTOM) {\n if (isQuestionnaireInterrupt(interrupt)) return <QuestionnaireCard {...props} />;\n if (isToolkitSelectionInterrupt(interrupt)) return <ToolkitSelectionCard {...props} />;\n if (isBrowseProfileApprovalInterrupt(interrupt)) return <BrowseProfileApprovalCard {...props} />;\n if (isWaitForMinutesInterrupt(interrupt)) return <WaitForMinutesCard {...props} />;\n if (isPmScheduleApprovalInterrupt(interrupt)) return <PmScheduleApprovalCard {...props} />;\n if (isRequestFileInterrupt(interrupt)) return <RequestFileCard {...props} />;\n return <CustomInterruptCard {...props} />;\n }\n // Tool-raised approvals (`raise_hitl_interrupt`, source `hitl_<tool_id>`);\n // the deepagents `hitl_approval` never reaches here (the approval card's).\n if (interrupt.type === TypedInterruptType.HITL) return <HitlInterruptCard {...props} />;\n return <FormInterruptCard {...props} />;\n}\n"],"names":[],"mappings":";;;;;;;;AA0BO,SAAS,mBAAmB,OAA8C;AAC/E,QAAM,EAAE,cAAc;AACtB,MAAI,UAAU,SAAS,mBAAmB,QAAQ;AAChD,QAAI,yBAAyB,SAAS,UAAU,oBAAC,mBAAA,EAAmB,GAAG,OAAO;AAC9E,QAAI,4BAA4B,SAAS,UAAU,oBAAC,sBAAA,EAAsB,GAAG,OAAO;AACpF,QAAI,iCAAiC,SAAS,UAAU,oBAAC,2BAAA,EAA2B,GAAG,OAAO;AAC9F,QAAI,0BAA0B,SAAS,UAAU,oBAAC,oBAAA,EAAoB,GAAG,OAAO;AAChF,QAAI,8BAA8B,SAAS,UAAU,oBAAC,wBAAA,EAAwB,GAAG,OAAO;AACxF,QAAI,uBAAuB,SAAS,UAAU,oBAAC,iBAAA,EAAiB,GAAG,OAAO;AAC1E,WAAO,oBAAC,qBAAA,EAAqB,GAAG,MAAA,CAAO;AAAA,EACzC;AAGA,MAAI,UAAU,SAAS,mBAAmB,aAAa,oBAAC,mBAAA,EAAmB,GAAG,OAAO;AACrF,SAAO,oBAAC,mBAAA,EAAmB,GAAG,MAAA,CAAO;AACvC;"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require$$0 = require("react");
|
|
4
|
+
const apiClient = require("../../chat-ui/mentions/suggestions/data/api-client.cjs");
|
|
5
|
+
const useAthenaRestQuery = require("../../lib/use-athena-rest-query.cjs");
|
|
6
|
+
const threadIdContext = require("../../threads/thread-id-context.cjs");
|
|
7
|
+
const CANCEL_INTERRUPT_TIMEOUT_MUTATION = `
|
|
8
|
+
mutation CancelInterruptTimeout($threadId: String!, $interruptId: String!) {
|
|
9
|
+
cancelInterruptTimeout(threadId: $threadId, interruptId: $interruptId) {
|
|
10
|
+
success
|
|
11
|
+
message
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
const INTERRUPT_TIMEOUT_STATUS_QUERY = `
|
|
16
|
+
query GetInterruptTimeoutStatus($threadId: String!, $interruptId: String!) {
|
|
17
|
+
getInterruptTimeoutStatus(threadId: $threadId, interruptId: $interruptId) {
|
|
18
|
+
isActive
|
|
19
|
+
isCancelled
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
const INTERRUPT_DRAFT_QUERY = `
|
|
24
|
+
query GetInterruptDraft($threadId: String!, $interruptId: String!) {
|
|
25
|
+
getInterruptDraft(threadId: $threadId, interruptId: $interruptId) {
|
|
26
|
+
exists
|
|
27
|
+
answers
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
const SAVE_INTERRUPT_DRAFT_MUTATION = `
|
|
32
|
+
mutation SaveInterruptDraft($threadId: String!, $interruptId: String!, $answers: JSON!) {
|
|
33
|
+
saveInterruptDraft(threadId: $threadId, interruptId: $interruptId, answers: $answers) {
|
|
34
|
+
success
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
function canAuthenticate(auth) {
|
|
39
|
+
return Boolean(auth.accessToken || auth.apiKey || auth.credentials || auth.getAccessToken);
|
|
40
|
+
}
|
|
41
|
+
function useTypedInterruptConversation() {
|
|
42
|
+
const auth = require$$0.useContext(apiClient.MentionAuthCtx);
|
|
43
|
+
const threadId = require$$0.useContext(threadIdContext.AthenaStatewireThreadIdContext);
|
|
44
|
+
return require$$0.useMemo(() => {
|
|
45
|
+
if (!auth || !threadId || !canAuthenticate(auth)) return null;
|
|
46
|
+
const credential = auth.apiKey ?? auth.accessToken ?? "";
|
|
47
|
+
return {
|
|
48
|
+
auth,
|
|
49
|
+
threadId,
|
|
50
|
+
principal: `${auth.userId ?? ""}|${credential ? useAthenaRestQuery.keyPartFingerprint(credential) : ""}`
|
|
51
|
+
};
|
|
52
|
+
}, [auth, threadId]);
|
|
53
|
+
}
|
|
54
|
+
async function cancelInterruptTimeout(conversation, interruptId) {
|
|
55
|
+
var _a;
|
|
56
|
+
const data = await apiClient.fetchGraphQL(
|
|
57
|
+
conversation.auth,
|
|
58
|
+
CANCEL_INTERRUPT_TIMEOUT_MUTATION,
|
|
59
|
+
{ threadId: conversation.threadId, interruptId }
|
|
60
|
+
);
|
|
61
|
+
if (((_a = data.cancelInterruptTimeout) == null ? void 0 : _a.success) !== true) {
|
|
62
|
+
throw new Error("agora did not stop the timer");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function readInterruptTimeoutCancelled(conversation, interruptId, signal) {
|
|
66
|
+
var _a;
|
|
67
|
+
const data = await apiClient.fetchGraphQL(
|
|
68
|
+
conversation.auth,
|
|
69
|
+
INTERRUPT_TIMEOUT_STATUS_QUERY,
|
|
70
|
+
{ threadId: conversation.threadId, interruptId },
|
|
71
|
+
{ signal }
|
|
72
|
+
);
|
|
73
|
+
return ((_a = data.getInterruptTimeoutStatus) == null ? void 0 : _a.isCancelled) === true;
|
|
74
|
+
}
|
|
75
|
+
async function readInterruptDraft(conversation, interruptId, signal) {
|
|
76
|
+
const data = await apiClient.fetchGraphQL(
|
|
77
|
+
conversation.auth,
|
|
78
|
+
INTERRUPT_DRAFT_QUERY,
|
|
79
|
+
{ threadId: conversation.threadId, interruptId },
|
|
80
|
+
{ signal }
|
|
81
|
+
);
|
|
82
|
+
const draft = data.getInterruptDraft;
|
|
83
|
+
return (draft == null ? void 0 : draft.exists) ? draft.answers ?? null : null;
|
|
84
|
+
}
|
|
85
|
+
async function saveInterruptDraft(conversation, interruptId, answers) {
|
|
86
|
+
var _a;
|
|
87
|
+
const data = await apiClient.fetchGraphQL(
|
|
88
|
+
conversation.auth,
|
|
89
|
+
SAVE_INTERRUPT_DRAFT_MUTATION,
|
|
90
|
+
{ threadId: conversation.threadId, interruptId, answers }
|
|
91
|
+
);
|
|
92
|
+
if (((_a = data.saveInterruptDraft) == null ? void 0 : _a.success) !== true) {
|
|
93
|
+
throw new Error("agora did not keep the draft");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.CANCEL_INTERRUPT_TIMEOUT_MUTATION = CANCEL_INTERRUPT_TIMEOUT_MUTATION;
|
|
97
|
+
exports.INTERRUPT_DRAFT_QUERY = INTERRUPT_DRAFT_QUERY;
|
|
98
|
+
exports.INTERRUPT_TIMEOUT_STATUS_QUERY = INTERRUPT_TIMEOUT_STATUS_QUERY;
|
|
99
|
+
exports.SAVE_INTERRUPT_DRAFT_MUTATION = SAVE_INTERRUPT_DRAFT_MUTATION;
|
|
100
|
+
exports.cancelInterruptTimeout = cancelInterruptTimeout;
|
|
101
|
+
exports.readInterruptDraft = readInterruptDraft;
|
|
102
|
+
exports.readInterruptTimeoutCancelled = readInterruptTimeoutCancelled;
|
|
103
|
+
exports.saveInterruptDraft = saveInterruptDraft;
|
|
104
|
+
exports.useTypedInterruptConversation = useTypedInterruptConversation;
|
|
105
|
+
//# sourceMappingURL=typed-interrupt-graphql.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-interrupt-graphql.cjs","sources":["../../../src/chat/typed-interrupts/typed-interrupt-graphql.ts"],"sourcesContent":["/**\n * The conversation's own timer and draft for a typed park, read and written\n * through agora's GraphQL as Olympus's cards do: `getInterruptTimeoutStatus`\n * and `getInterruptDraft` run the conversation asset's read check,\n * `cancelInterruptTimeout` and `saveInterruptDraft` its edit check. None of\n * them decides anything: stopping the timer only stops an automatic answer,\n * and a draft only holds it. They need the conversation's id and an agora\n * credential, which a host names with `AthenaProvider` (the thread) and the\n * chat's `MentionAuthCtx`; without either, a card shows the countdown the\n * park carries and keeps its answers in memory.\n */\nimport { useContext, useMemo } from 'react';\nimport {\n fetchGraphQL,\n type MentionAuthContext,\n MentionAuthCtx,\n} from '../../chat-ui/mentions/suggestions/data/api-client';\nimport { keyPartFingerprint } from '../../lib/use-athena-rest-query';\nimport { AthenaStatewireThreadIdContext } from '../../threads/thread-id-context';\n\nexport const CANCEL_INTERRUPT_TIMEOUT_MUTATION = `\n mutation CancelInterruptTimeout($threadId: String!, $interruptId: String!) {\n cancelInterruptTimeout(threadId: $threadId, interruptId: $interruptId) {\n success\n message\n }\n }\n`;\n\nexport const INTERRUPT_TIMEOUT_STATUS_QUERY = `\n query GetInterruptTimeoutStatus($threadId: String!, $interruptId: String!) {\n getInterruptTimeoutStatus(threadId: $threadId, interruptId: $interruptId) {\n isActive\n isCancelled\n }\n }\n`;\n\nexport const INTERRUPT_DRAFT_QUERY = `\n query GetInterruptDraft($threadId: String!, $interruptId: String!) {\n getInterruptDraft(threadId: $threadId, interruptId: $interruptId) {\n exists\n answers\n }\n }\n`;\n\nexport const SAVE_INTERRUPT_DRAFT_MUTATION = `\n mutation SaveInterruptDraft($threadId: String!, $interruptId: String!, $answers: JSON!) {\n saveInterruptDraft(threadId: $threadId, interruptId: $interruptId, answers: $answers) {\n success\n }\n }\n`;\n\n/** Where a park's timer and draft are kept, and who asks. */\nexport interface TypedInterruptConversation {\n readonly auth: MentionAuthContext;\n readonly threadId: string;\n /** Who reads, for a query key: the person and a one-way fingerprint of the credential. */\n readonly principal: string;\n}\n\nfunction canAuthenticate(auth: MentionAuthContext): boolean {\n return Boolean(auth.accessToken || auth.apiKey || auth.credentials || auth.getAccessToken);\n}\n\n/**\n * The conversation's timer and draft, or `null` when the host names no thread\n * or no credential. Keeps its identity while they hold, so a card's effects\n * (a draft's pending save) are not restarted by every render.\n */\nexport function useTypedInterruptConversation(): TypedInterruptConversation | null {\n const auth = useContext(MentionAuthCtx);\n const threadId = useContext(AthenaStatewireThreadIdContext);\n return useMemo(() => {\n if (!auth || !threadId || !canAuthenticate(auth)) return null;\n const credential = auth.apiKey ?? auth.accessToken ?? '';\n return {\n auth,\n threadId,\n principal: `${auth.userId ?? ''}|${credential ? keyPartFingerprint(credential) : ''}`,\n };\n }, [auth, threadId]);\n}\n\n/**\n * Stops the park's timer on agora; rejects unless agora says it did\n * (`success: false` is a conversation it could not find), so the card goes\n * back to the countdown instead of promising time it does not have.\n */\nexport async function cancelInterruptTimeout(\n conversation: TypedInterruptConversation,\n interruptId: string,\n): Promise<void> {\n const data = await fetchGraphQL<{ cancelInterruptTimeout?: { success?: boolean | null } | null }>(\n conversation.auth,\n CANCEL_INTERRUPT_TIMEOUT_MUTATION,\n { threadId: conversation.threadId, interruptId },\n );\n if (data.cancelInterruptTimeout?.success !== true) {\n throw new Error('agora did not stop the timer');\n }\n}\n\nexport async function readInterruptTimeoutCancelled(\n conversation: TypedInterruptConversation,\n interruptId: string,\n signal?: AbortSignal,\n): Promise<boolean> {\n const data = await fetchGraphQL<{\n getInterruptTimeoutStatus?: { isCancelled?: boolean | null } | null;\n }>(\n conversation.auth,\n INTERRUPT_TIMEOUT_STATUS_QUERY,\n { threadId: conversation.threadId, interruptId },\n { signal },\n );\n return data.getInterruptTimeoutStatus?.isCancelled === true;\n}\n\n/** The draft agora holds for the park, `null` when there is none. */\nexport async function readInterruptDraft(\n conversation: TypedInterruptConversation,\n interruptId: string,\n signal?: AbortSignal,\n): Promise<unknown> {\n const data = await fetchGraphQL<{\n getInterruptDraft?: { exists?: boolean | null; answers?: unknown } | null;\n }>(\n conversation.auth,\n INTERRUPT_DRAFT_QUERY,\n { threadId: conversation.threadId, interruptId },\n { signal },\n );\n const draft = data.getInterruptDraft;\n return draft?.exists ? (draft.answers ?? null) : null;\n}\n\n/** Saves the park's draft; rejects unless agora says it kept it (a refused write is `success: false`). */\nexport async function saveInterruptDraft(\n conversation: TypedInterruptConversation,\n interruptId: string,\n answers: unknown,\n): Promise<void> {\n const data = await fetchGraphQL<{ saveInterruptDraft?: { success?: boolean | null } | null }>(\n conversation.auth,\n SAVE_INTERRUPT_DRAFT_MUTATION,\n { threadId: conversation.threadId, interruptId, answers },\n );\n if (data.saveInterruptDraft?.success !== true) {\n throw new Error('agora did not keep the draft');\n }\n}\n"],"names":["useContext","MentionAuthCtx","AthenaStatewireThreadIdContext","useMemo","keyPartFingerprint","fetchGraphQL"],"mappings":";;;;;;AAoBO,MAAM,oCAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS1C,MAAM,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASvC,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS9B,MAAM,gCAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB7C,SAAS,gBAAgB,MAAmC;AAC1D,SAAO,QAAQ,KAAK,eAAe,KAAK,UAAU,KAAK,eAAe,KAAK,cAAc;AAC3F;AAOO,SAAS,gCAAmE;AACjF,QAAM,OAAOA,WAAAA,WAAWC,wBAAc;AACtC,QAAM,WAAWD,WAAAA,WAAWE,8CAA8B;AAC1D,SAAOC,WAAAA,QAAQ,MAAM;AACnB,QAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,IAAI,EAAG,QAAO;AACzD,UAAM,aAAa,KAAK,UAAU,KAAK,eAAe;AACtD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,WAAW,GAAG,KAAK,UAAU,EAAE,IAAI,aAAaC,mBAAAA,mBAAmB,UAAU,IAAI,EAAE;AAAA,IAAA;AAAA,EAEvF,GAAG,CAAC,MAAM,QAAQ,CAAC;AACrB;AAOA,eAAsB,uBACpB,cACA,aACe;;AACf,QAAM,OAAO,MAAMC,UAAAA;AAAAA,IACjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,YAAA;AAAA,EAAY;AAEjD,QAAI,UAAK,2BAAL,mBAA6B,aAAY,MAAM;AACjD,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;AAEA,eAAsB,8BACpB,cACA,aACA,QACkB;;AAClB,QAAM,OAAO,MAAMA,UAAAA;AAAAA,IAGjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,YAAA;AAAA,IACnC,EAAE,OAAA;AAAA,EAAO;AAEX,WAAO,UAAK,8BAAL,mBAAgC,iBAAgB;AACzD;AAGA,eAAsB,mBACpB,cACA,aACA,QACkB;AAClB,QAAM,OAAO,MAAMA,UAAAA;AAAAA,IAGjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,YAAA;AAAA,IACnC,EAAE,OAAA;AAAA,EAAO;AAEX,QAAM,QAAQ,KAAK;AACnB,UAAO,+BAAO,UAAU,MAAM,WAAW,OAAQ;AACnD;AAGA,eAAsB,mBACpB,cACA,aACA,SACe;;AACf,QAAM,OAAO,MAAMA,UAAAA;AAAAA,IACjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,aAAa,QAAA;AAAA,EAAQ;AAE1D,QAAI,UAAK,uBAAL,mBAAyB,aAAY,MAAM;AAC7C,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;;;;;;;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type MentionAuthContext } from '../../chat-ui/mentions/suggestions/data/api-client';
|
|
2
|
+
export declare const CANCEL_INTERRUPT_TIMEOUT_MUTATION = "\n mutation CancelInterruptTimeout($threadId: String!, $interruptId: String!) {\n cancelInterruptTimeout(threadId: $threadId, interruptId: $interruptId) {\n success\n message\n }\n }\n";
|
|
3
|
+
export declare const INTERRUPT_TIMEOUT_STATUS_QUERY = "\n query GetInterruptTimeoutStatus($threadId: String!, $interruptId: String!) {\n getInterruptTimeoutStatus(threadId: $threadId, interruptId: $interruptId) {\n isActive\n isCancelled\n }\n }\n";
|
|
4
|
+
export declare const INTERRUPT_DRAFT_QUERY = "\n query GetInterruptDraft($threadId: String!, $interruptId: String!) {\n getInterruptDraft(threadId: $threadId, interruptId: $interruptId) {\n exists\n answers\n }\n }\n";
|
|
5
|
+
export declare const SAVE_INTERRUPT_DRAFT_MUTATION = "\n mutation SaveInterruptDraft($threadId: String!, $interruptId: String!, $answers: JSON!) {\n saveInterruptDraft(threadId: $threadId, interruptId: $interruptId, answers: $answers) {\n success\n }\n }\n";
|
|
6
|
+
/** Where a park's timer and draft are kept, and who asks. */
|
|
7
|
+
export interface TypedInterruptConversation {
|
|
8
|
+
readonly auth: MentionAuthContext;
|
|
9
|
+
readonly threadId: string;
|
|
10
|
+
/** Who reads, for a query key: the person and a one-way fingerprint of the credential. */
|
|
11
|
+
readonly principal: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The conversation's timer and draft, or `null` when the host names no thread
|
|
15
|
+
* or no credential. Keeps its identity while they hold, so a card's effects
|
|
16
|
+
* (a draft's pending save) are not restarted by every render.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useTypedInterruptConversation(): TypedInterruptConversation | null;
|
|
19
|
+
/**
|
|
20
|
+
* Stops the park's timer on agora; rejects unless agora says it did
|
|
21
|
+
* (`success: false` is a conversation it could not find), so the card goes
|
|
22
|
+
* back to the countdown instead of promising time it does not have.
|
|
23
|
+
*/
|
|
24
|
+
export declare function cancelInterruptTimeout(conversation: TypedInterruptConversation, interruptId: string): Promise<void>;
|
|
25
|
+
export declare function readInterruptTimeoutCancelled(conversation: TypedInterruptConversation, interruptId: string, signal?: AbortSignal): Promise<boolean>;
|
|
26
|
+
/** The draft agora holds for the park, `null` when there is none. */
|
|
27
|
+
export declare function readInterruptDraft(conversation: TypedInterruptConversation, interruptId: string, signal?: AbortSignal): Promise<unknown>;
|
|
28
|
+
/** Saves the park's draft; rejects unless agora says it kept it (a refused write is `success: false`). */
|
|
29
|
+
export declare function saveInterruptDraft(conversation: TypedInterruptConversation, interruptId: string, answers: unknown): Promise<void>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { useContext, useMemo } from "react";
|
|
2
|
+
import { MentionAuthCtx, fetchGraphQL } from "../../chat-ui/mentions/suggestions/data/api-client.js";
|
|
3
|
+
import { keyPartFingerprint } from "../../lib/use-athena-rest-query.js";
|
|
4
|
+
import { AthenaStatewireThreadIdContext } from "../../threads/thread-id-context.js";
|
|
5
|
+
const CANCEL_INTERRUPT_TIMEOUT_MUTATION = `
|
|
6
|
+
mutation CancelInterruptTimeout($threadId: String!, $interruptId: String!) {
|
|
7
|
+
cancelInterruptTimeout(threadId: $threadId, interruptId: $interruptId) {
|
|
8
|
+
success
|
|
9
|
+
message
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
const INTERRUPT_TIMEOUT_STATUS_QUERY = `
|
|
14
|
+
query GetInterruptTimeoutStatus($threadId: String!, $interruptId: String!) {
|
|
15
|
+
getInterruptTimeoutStatus(threadId: $threadId, interruptId: $interruptId) {
|
|
16
|
+
isActive
|
|
17
|
+
isCancelled
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
const INTERRUPT_DRAFT_QUERY = `
|
|
22
|
+
query GetInterruptDraft($threadId: String!, $interruptId: String!) {
|
|
23
|
+
getInterruptDraft(threadId: $threadId, interruptId: $interruptId) {
|
|
24
|
+
exists
|
|
25
|
+
answers
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
const SAVE_INTERRUPT_DRAFT_MUTATION = `
|
|
30
|
+
mutation SaveInterruptDraft($threadId: String!, $interruptId: String!, $answers: JSON!) {
|
|
31
|
+
saveInterruptDraft(threadId: $threadId, interruptId: $interruptId, answers: $answers) {
|
|
32
|
+
success
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
function canAuthenticate(auth) {
|
|
37
|
+
return Boolean(auth.accessToken || auth.apiKey || auth.credentials || auth.getAccessToken);
|
|
38
|
+
}
|
|
39
|
+
function useTypedInterruptConversation() {
|
|
40
|
+
const auth = useContext(MentionAuthCtx);
|
|
41
|
+
const threadId = useContext(AthenaStatewireThreadIdContext);
|
|
42
|
+
return useMemo(() => {
|
|
43
|
+
if (!auth || !threadId || !canAuthenticate(auth)) return null;
|
|
44
|
+
const credential = auth.apiKey ?? auth.accessToken ?? "";
|
|
45
|
+
return {
|
|
46
|
+
auth,
|
|
47
|
+
threadId,
|
|
48
|
+
principal: `${auth.userId ?? ""}|${credential ? keyPartFingerprint(credential) : ""}`
|
|
49
|
+
};
|
|
50
|
+
}, [auth, threadId]);
|
|
51
|
+
}
|
|
52
|
+
async function cancelInterruptTimeout(conversation, interruptId) {
|
|
53
|
+
var _a;
|
|
54
|
+
const data = await fetchGraphQL(
|
|
55
|
+
conversation.auth,
|
|
56
|
+
CANCEL_INTERRUPT_TIMEOUT_MUTATION,
|
|
57
|
+
{ threadId: conversation.threadId, interruptId }
|
|
58
|
+
);
|
|
59
|
+
if (((_a = data.cancelInterruptTimeout) == null ? void 0 : _a.success) !== true) {
|
|
60
|
+
throw new Error("agora did not stop the timer");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async function readInterruptTimeoutCancelled(conversation, interruptId, signal) {
|
|
64
|
+
var _a;
|
|
65
|
+
const data = await fetchGraphQL(
|
|
66
|
+
conversation.auth,
|
|
67
|
+
INTERRUPT_TIMEOUT_STATUS_QUERY,
|
|
68
|
+
{ threadId: conversation.threadId, interruptId },
|
|
69
|
+
{ signal }
|
|
70
|
+
);
|
|
71
|
+
return ((_a = data.getInterruptTimeoutStatus) == null ? void 0 : _a.isCancelled) === true;
|
|
72
|
+
}
|
|
73
|
+
async function readInterruptDraft(conversation, interruptId, signal) {
|
|
74
|
+
const data = await fetchGraphQL(
|
|
75
|
+
conversation.auth,
|
|
76
|
+
INTERRUPT_DRAFT_QUERY,
|
|
77
|
+
{ threadId: conversation.threadId, interruptId },
|
|
78
|
+
{ signal }
|
|
79
|
+
);
|
|
80
|
+
const draft = data.getInterruptDraft;
|
|
81
|
+
return (draft == null ? void 0 : draft.exists) ? draft.answers ?? null : null;
|
|
82
|
+
}
|
|
83
|
+
async function saveInterruptDraft(conversation, interruptId, answers) {
|
|
84
|
+
var _a;
|
|
85
|
+
const data = await fetchGraphQL(
|
|
86
|
+
conversation.auth,
|
|
87
|
+
SAVE_INTERRUPT_DRAFT_MUTATION,
|
|
88
|
+
{ threadId: conversation.threadId, interruptId, answers }
|
|
89
|
+
);
|
|
90
|
+
if (((_a = data.saveInterruptDraft) == null ? void 0 : _a.success) !== true) {
|
|
91
|
+
throw new Error("agora did not keep the draft");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
CANCEL_INTERRUPT_TIMEOUT_MUTATION,
|
|
96
|
+
INTERRUPT_DRAFT_QUERY,
|
|
97
|
+
INTERRUPT_TIMEOUT_STATUS_QUERY,
|
|
98
|
+
SAVE_INTERRUPT_DRAFT_MUTATION,
|
|
99
|
+
cancelInterruptTimeout,
|
|
100
|
+
readInterruptDraft,
|
|
101
|
+
readInterruptTimeoutCancelled,
|
|
102
|
+
saveInterruptDraft,
|
|
103
|
+
useTypedInterruptConversation
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=typed-interrupt-graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-interrupt-graphql.js","sources":["../../../src/chat/typed-interrupts/typed-interrupt-graphql.ts"],"sourcesContent":["/**\n * The conversation's own timer and draft for a typed park, read and written\n * through agora's GraphQL as Olympus's cards do: `getInterruptTimeoutStatus`\n * and `getInterruptDraft` run the conversation asset's read check,\n * `cancelInterruptTimeout` and `saveInterruptDraft` its edit check. None of\n * them decides anything: stopping the timer only stops an automatic answer,\n * and a draft only holds it. They need the conversation's id and an agora\n * credential, which a host names with `AthenaProvider` (the thread) and the\n * chat's `MentionAuthCtx`; without either, a card shows the countdown the\n * park carries and keeps its answers in memory.\n */\nimport { useContext, useMemo } from 'react';\nimport {\n fetchGraphQL,\n type MentionAuthContext,\n MentionAuthCtx,\n} from '../../chat-ui/mentions/suggestions/data/api-client';\nimport { keyPartFingerprint } from '../../lib/use-athena-rest-query';\nimport { AthenaStatewireThreadIdContext } from '../../threads/thread-id-context';\n\nexport const CANCEL_INTERRUPT_TIMEOUT_MUTATION = `\n mutation CancelInterruptTimeout($threadId: String!, $interruptId: String!) {\n cancelInterruptTimeout(threadId: $threadId, interruptId: $interruptId) {\n success\n message\n }\n }\n`;\n\nexport const INTERRUPT_TIMEOUT_STATUS_QUERY = `\n query GetInterruptTimeoutStatus($threadId: String!, $interruptId: String!) {\n getInterruptTimeoutStatus(threadId: $threadId, interruptId: $interruptId) {\n isActive\n isCancelled\n }\n }\n`;\n\nexport const INTERRUPT_DRAFT_QUERY = `\n query GetInterruptDraft($threadId: String!, $interruptId: String!) {\n getInterruptDraft(threadId: $threadId, interruptId: $interruptId) {\n exists\n answers\n }\n }\n`;\n\nexport const SAVE_INTERRUPT_DRAFT_MUTATION = `\n mutation SaveInterruptDraft($threadId: String!, $interruptId: String!, $answers: JSON!) {\n saveInterruptDraft(threadId: $threadId, interruptId: $interruptId, answers: $answers) {\n success\n }\n }\n`;\n\n/** Where a park's timer and draft are kept, and who asks. */\nexport interface TypedInterruptConversation {\n readonly auth: MentionAuthContext;\n readonly threadId: string;\n /** Who reads, for a query key: the person and a one-way fingerprint of the credential. */\n readonly principal: string;\n}\n\nfunction canAuthenticate(auth: MentionAuthContext): boolean {\n return Boolean(auth.accessToken || auth.apiKey || auth.credentials || auth.getAccessToken);\n}\n\n/**\n * The conversation's timer and draft, or `null` when the host names no thread\n * or no credential. Keeps its identity while they hold, so a card's effects\n * (a draft's pending save) are not restarted by every render.\n */\nexport function useTypedInterruptConversation(): TypedInterruptConversation | null {\n const auth = useContext(MentionAuthCtx);\n const threadId = useContext(AthenaStatewireThreadIdContext);\n return useMemo(() => {\n if (!auth || !threadId || !canAuthenticate(auth)) return null;\n const credential = auth.apiKey ?? auth.accessToken ?? '';\n return {\n auth,\n threadId,\n principal: `${auth.userId ?? ''}|${credential ? keyPartFingerprint(credential) : ''}`,\n };\n }, [auth, threadId]);\n}\n\n/**\n * Stops the park's timer on agora; rejects unless agora says it did\n * (`success: false` is a conversation it could not find), so the card goes\n * back to the countdown instead of promising time it does not have.\n */\nexport async function cancelInterruptTimeout(\n conversation: TypedInterruptConversation,\n interruptId: string,\n): Promise<void> {\n const data = await fetchGraphQL<{ cancelInterruptTimeout?: { success?: boolean | null } | null }>(\n conversation.auth,\n CANCEL_INTERRUPT_TIMEOUT_MUTATION,\n { threadId: conversation.threadId, interruptId },\n );\n if (data.cancelInterruptTimeout?.success !== true) {\n throw new Error('agora did not stop the timer');\n }\n}\n\nexport async function readInterruptTimeoutCancelled(\n conversation: TypedInterruptConversation,\n interruptId: string,\n signal?: AbortSignal,\n): Promise<boolean> {\n const data = await fetchGraphQL<{\n getInterruptTimeoutStatus?: { isCancelled?: boolean | null } | null;\n }>(\n conversation.auth,\n INTERRUPT_TIMEOUT_STATUS_QUERY,\n { threadId: conversation.threadId, interruptId },\n { signal },\n );\n return data.getInterruptTimeoutStatus?.isCancelled === true;\n}\n\n/** The draft agora holds for the park, `null` when there is none. */\nexport async function readInterruptDraft(\n conversation: TypedInterruptConversation,\n interruptId: string,\n signal?: AbortSignal,\n): Promise<unknown> {\n const data = await fetchGraphQL<{\n getInterruptDraft?: { exists?: boolean | null; answers?: unknown } | null;\n }>(\n conversation.auth,\n INTERRUPT_DRAFT_QUERY,\n { threadId: conversation.threadId, interruptId },\n { signal },\n );\n const draft = data.getInterruptDraft;\n return draft?.exists ? (draft.answers ?? null) : null;\n}\n\n/** Saves the park's draft; rejects unless agora says it kept it (a refused write is `success: false`). */\nexport async function saveInterruptDraft(\n conversation: TypedInterruptConversation,\n interruptId: string,\n answers: unknown,\n): Promise<void> {\n const data = await fetchGraphQL<{ saveInterruptDraft?: { success?: boolean | null } | null }>(\n conversation.auth,\n SAVE_INTERRUPT_DRAFT_MUTATION,\n { threadId: conversation.threadId, interruptId, answers },\n );\n if (data.saveInterruptDraft?.success !== true) {\n throw new Error('agora did not keep the draft');\n }\n}\n"],"names":[],"mappings":";;;;AAoBO,MAAM,oCAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS1C,MAAM,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASvC,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS9B,MAAM,gCAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB7C,SAAS,gBAAgB,MAAmC;AAC1D,SAAO,QAAQ,KAAK,eAAe,KAAK,UAAU,KAAK,eAAe,KAAK,cAAc;AAC3F;AAOO,SAAS,gCAAmE;AACjF,QAAM,OAAO,WAAW,cAAc;AACtC,QAAM,WAAW,WAAW,8BAA8B;AAC1D,SAAO,QAAQ,MAAM;AACnB,QAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,IAAI,EAAG,QAAO;AACzD,UAAM,aAAa,KAAK,UAAU,KAAK,eAAe;AACtD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,WAAW,GAAG,KAAK,UAAU,EAAE,IAAI,aAAa,mBAAmB,UAAU,IAAI,EAAE;AAAA,IAAA;AAAA,EAEvF,GAAG,CAAC,MAAM,QAAQ,CAAC;AACrB;AAOA,eAAsB,uBACpB,cACA,aACe;;AACf,QAAM,OAAO,MAAM;AAAA,IACjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,YAAA;AAAA,EAAY;AAEjD,QAAI,UAAK,2BAAL,mBAA6B,aAAY,MAAM;AACjD,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;AAEA,eAAsB,8BACpB,cACA,aACA,QACkB;;AAClB,QAAM,OAAO,MAAM;AAAA,IAGjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,YAAA;AAAA,IACnC,EAAE,OAAA;AAAA,EAAO;AAEX,WAAO,UAAK,8BAAL,mBAAgC,iBAAgB;AACzD;AAGA,eAAsB,mBACpB,cACA,aACA,QACkB;AAClB,QAAM,OAAO,MAAM;AAAA,IAGjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,YAAA;AAAA,IACnC,EAAE,OAAA;AAAA,EAAO;AAEX,QAAM,QAAQ,KAAK;AACnB,UAAO,+BAAO,UAAU,MAAM,WAAW,OAAQ;AACnD;AAGA,eAAsB,mBACpB,cACA,aACA,SACe;;AACf,QAAM,OAAO,MAAM;AAAA,IACjB,aAAa;AAAA,IACb;AAAA,IACA,EAAE,UAAU,aAAa,UAAU,aAAa,QAAA;AAAA,EAAQ;AAE1D,QAAI,UAAK,uBAAL,mBAAyB,aAAY,MAAM;AAC7C,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;"}
|