@athenaintel/react 0.57.2 → 0.60.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 +795 -12
- 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 +0 -16
- 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 +1 -17
- 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 +93 -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 +19 -0
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +19 -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 +301 -98
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +302 -99
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +35 -5
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +55 -2
- package/dist/chat/StatewireApprovalCard.js +37 -7
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +17 -2
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
- package/dist/chat/StatewireQueuedMessages.js +18 -3
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/chat-agent-mentions.cjs +70 -0
- package/dist/chat/chat-agent-mentions.cjs.map +1 -0
- package/dist/chat/chat-agent-mentions.d.ts +13 -0
- package/dist/chat/chat-agent-mentions.js +70 -0
- package/dist/chat/chat-agent-mentions.js.map +1 -0
- package/dist/chat/composer-actions.cjs +12 -0
- package/dist/chat/composer-actions.cjs.map +1 -0
- package/dist/chat/composer-actions.d.ts +22 -0
- package/dist/chat/composer-actions.js +12 -0
- package/dist/chat/composer-actions.js.map +1 -0
- package/dist/chat/follow-up-suggestions.cjs +185 -0
- package/dist/chat/follow-up-suggestions.cjs.map +1 -0
- package/dist/chat/follow-up-suggestions.d.ts +64 -0
- package/dist/chat/follow-up-suggestions.js +185 -0
- package/dist/chat/follow-up-suggestions.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
- package/dist/chat/super-grouping/ToolTimeline.js +4 -3
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/turn-changes.cjs +284 -0
- package/dist/chat/turn-changes.cjs.map +1 -0
- package/dist/chat/turn-changes.d.ts +130 -0
- package/dist/chat/turn-changes.js +284 -0
- package/dist/chat/turn-changes.js.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
- package/dist/chat/typed-interrupts/approval-cards.js +250 -0
- package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
- package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
- package/dist/chat/typed-interrupts/form-cards.js +289 -0
- package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
- package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
- package/dist/chat/typed-interrupts/request-file-card.js +159 -0
- package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
- package/dist/chat-ui/composer/composer-named-agents.js +13 -0
- package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
- package/dist/chat-ui/composer/slash-command-menu.js +143 -0
- package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
- package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands.cjs +74 -0
- package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
- package/dist/chat-ui/composer/slash-commands.js +74 -0
- package/dist/chat-ui/composer/slash-commands.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
- package/dist/chat-ui/composer/tiptap-composer.js +135 -9
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +5 -0
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +4 -2
- package/dist/chat-ui/index.js +5 -0
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +10 -4
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +11 -5
- 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 +20 -2
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +10 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +22 -4
- 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 +45 -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 +48 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +45 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.cjs +89 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.d.ts +8 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.js +89 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +140 -116
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.d.ts +46 -12
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +141 -117
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +272 -25
- 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 +274 -27
- 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/mentions/use-asset-icon-app-url.cjs +12 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.d.ts +8 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.js +12 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.js.map +1 -0
- 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 +41 -6
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +38 -7
- package/dist/collab/client.js +41 -6
- 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/staged-message-metadata.cjs +12 -0
- package/dist/composer/staged-message-metadata.cjs.map +1 -0
- package/dist/composer/staged-message-metadata.d.ts +15 -0
- package/dist/composer/staged-message-metadata.js +12 -0
- package/dist/composer/staged-message-metadata.js.map +1 -0
- 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 +460 -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 +460 -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 +60 -22
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +61 -23
- 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/parse.cjs +11 -1
- package/dist/references/src/anchors/parse.cjs.map +1 -1
- package/dist/references/src/anchors/parse.js +11 -1
- package/dist/references/src/anchors/parse.js.map +1 -1
- package/dist/references/src/anchors/schemas.d.ts +1 -0
- package/dist/references/src/anchors/serialize.cjs +1 -0
- package/dist/references/src/anchors/serialize.cjs.map +1 -1
- package/dist/references/src/anchors/serialize.js +1 -0
- package/dist/references/src/anchors/serialize.js.map +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.d.ts +9 -0
- 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/references/src/schemas.d.ts +2 -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 +64 -9
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
- package/dist/runtime/useAthenaStatewireRuntime.js +66 -11
- 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/statewire-thread-list.cjs +14 -2
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +11 -2
- package/dist/threads/statewire-thread-list.js +14 -2
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +1 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -1
- package/dist/threads/use-athena-sessions.d.ts +7 -0
- package/dist/threads/use-athena-sessions.js +1 -0
- package/dist/threads/use-athena-sessions.js.map +1 -1
- package/dist/threads/use-athena-thread-agent.cjs +31 -0
- package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
- package/dist/threads/use-athena-thread-agent.d.ts +38 -0
- package/dist/threads/use-athena-thread-agent.js +31 -0
- package/dist/threads/use-athena-thread-agent.js.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.d.ts +1 -0
- package/dist/tools/agent-creations.cjs +97 -0
- package/dist/tools/agent-creations.cjs.map +1 -0
- package/dist/tools/agent-creations.d.ts +38 -0
- package/dist/tools/agent-creations.js +97 -0
- package/dist/tools/agent-creations.js.map +1 -0
- package/dist/tools/agent-highlights.cjs +100 -0
- package/dist/tools/agent-highlights.cjs.map +1 -0
- package/dist/tools/agent-highlights.d.ts +57 -0
- package/dist/tools/agent-highlights.js +100 -0
- package/dist/tools/agent-highlights.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +1 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -1
- package/dist/tools/append-document-tool-ui.d.ts +7 -0
- package/dist/tools/append-document-tool-ui.js +2 -1
- package/dist/tools/append-document-tool-ui.js.map +1 -1
- package/dist/tools/auto-open-tools.cjs +144 -71
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.d.ts +131 -1
- package/dist/tools/auto-open-tools.js +145 -72
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/browser-tool-uis.cjs +594 -0
- package/dist/tools/browser-tool-uis.cjs.map +1 -0
- package/dist/tools/browser-tool-uis.d.ts +8 -0
- package/dist/tools/browser-tool-uis.js +594 -0
- package/dist/tools/browser-tool-uis.js.map +1 -0
- package/dist/tools/computer-asset-tool-uis.cjs +313 -0
- package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
- package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
- package/dist/tools/computer-asset-tool-uis.js +313 -0
- package/dist/tools/computer-asset-tool-uis.js.map +1 -0
- package/dist/tools/document-edit-tool-uis.cjs +218 -0
- package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/document-edit-tool-uis.d.ts +40 -0
- package/dist/tools/document-edit-tool-uis.js +218 -0
- package/dist/tools/document-edit-tool-uis.js.map +1 -0
- package/dist/tools/drive-tool-uis.cjs +429 -0
- package/dist/tools/drive-tool-uis.cjs.map +1 -0
- package/dist/tools/drive-tool-uis.d.ts +121 -0
- package/dist/tools/drive-tool-uis.js +429 -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/version.cjs +4 -0
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.ts +9 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -1
- package/dist/workbench/live-desktop-api.cjs +2 -1
- package/dist/workbench/live-desktop-api.cjs.map +1 -1
- package/dist/workbench/live-desktop-api.js +2 -1
- package/dist/workbench/live-desktop-api.js.map +1 -1
- package/dist/workbench/session-workbench-panes.cjs +6 -6
- package/dist/workbench/session-workbench-panes.cjs.map +1 -1
- package/dist/workbench/session-workspace-api.cjs +7 -2
- package/dist/workbench/session-workspace-api.cjs.map +1 -1
- package/dist/workbench/session-workspace-api.d.ts +10 -0
- package/dist/workbench/session-workspace-api.js +7 -2
- package/dist/workbench/session-workspace-api.js.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-catalog.js","sources":["../../src/catalog/runtime-catalog.ts"],"sourcesContent":["import {\n filterAndSortCatalogModels,\n normalizeCatalogAgentOptions,\n} from '@athenaintel/agent-runtime/runtime-catalog';\nimport { QueryClient, QueryClientContext, useQuery } from '@tanstack/react-query';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { AthenaAuthContext } from '../auth/AthenaAuthContext';\nimport {\n AthenaGraphQLError,\n fetchGraphQL,\n type MentionAuthContext,\n} from '../chat-ui/mentions/suggestions/data/api-client';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport { useOptionalAthenaThreadModel } from '../threads/use-athena-thread-model';\nimport {\n type AgentModelSource,\n type AthenaAgentModelOption,\n agentAssetIdOf,\n agentModelOptionsWithoutDefault,\n buildAgentModelOptions,\n publishedAgentModelSource,\n} from './agent-model-options';\nimport {\n ATHENA_CHANNEL_REFUSAL_QUERY,\n answersWithoutRefusalDay,\n channelReplacementsRefusalStartsAt,\n channelReplacementsRefusedOn,\n refusalDayOf,\n} from './channel-refusal';\n\n/**\n * The workspace's runtime catalog for a chat's model and agent pickers: the models the signed-in\n * person may run (the workspace's allow or deny list, admin-only models for admins), and the\n * published collab agents they can see. The rules are the Chrome extension's, which every host now\n * reads from here.\n */\n\nexport type AthenaModelStatus = 'ACTIVE' | 'LEGACY' | 'RECOMMENDED';\n\nexport interface AthenaModelOption {\n id: string;\n label: string;\n description: string | null;\n /** Upper-case provider key, e.g. `ANTHROPIC`, `OPENAI`. */\n provider: string;\n status: AthenaModelStatus;\n sortOrder: number;\n familyId: string;\n familyName: string;\n isFamilyDefault: boolean;\n isFeatured: boolean;\n variantOrder: number;\n}\n\nexport interface AthenaAgentOption {\n /** The collab agent's asset id; pass `collab_agent:<id>` as the provider's `agent`. */\n id: string;\n name: string;\n}\n\n/** The provider labels a model picker groups by. */\nexport const MODEL_PROVIDER_LABELS: Readonly<Record<string, string>> = {\n ANTHROPIC: 'Anthropic',\n OPENAI: 'OpenAI',\n GOOGLE: 'Google',\n XAI: 'xAI',\n META: 'Meta',\n MISTRAL: 'Mistral',\n DEEPSEEK: 'DeepSeek',\n QWEN: 'Qwen',\n MOONSHOT: 'Moonshot',\n MINIMAX: 'MiniMax',\n ZAI: 'Z.ai',\n};\n\nexport const ATHENA_MODEL_CATALOG_QUERY = `\n query AthenaModelCatalog {\n getCurrentUserWithWorkspace { user { isAdmin } }\n settings { workspace { approvedLargeLlms blacklistedLlms } }\n availableModels {\n id name provider status description adminOnly sortOrder\n familyId familyName isFamilyDefault isFeatured variantOrder\n }\n }\n`;\n\nexport const ATHENA_AGENT_CATALOG_QUERY = `\n query AthenaAgentCatalog {\n getAllAssets(filterByAthenaOriginalType: [\"collab_agent\"]) { id title }\n }\n`;\n\nexport interface AthenaModelCatalogResponse {\n getCurrentUserWithWorkspace: { user: { isAdmin: boolean } };\n settings: { workspace: { approvedLargeLlms: string[]; blacklistedLlms: string[] } };\n availableModels: Array<{\n id: string;\n name: string;\n provider: string;\n status: AthenaModelStatus;\n description: string | null;\n adminOnly: boolean;\n sortOrder: number;\n familyId: string;\n familyName: string;\n isFamilyDefault: boolean;\n isFeatured: boolean;\n variantOrder: number;\n }>;\n}\n\n/**\n * The models the person may pick, in catalog order. A workspace with an allow list offers only\n * those; otherwise everything except its deny list. Admin-only models are offered to admins only.\n */\nexport function normalizeModelCatalog({\n response,\n}: {\n response: AthenaModelCatalogResponse;\n}): AthenaModelOption[] {\n return filterAndSortCatalogModels({\n models: response.availableModels,\n isAdmin: response.getCurrentUserWithWorkspace.user.isAdmin,\n approvedModelIds: response.settings.workspace.approvedLargeLlms,\n deniedModelIds: response.settings.workspace.blacklistedLlms,\n }).map(\n (model): AthenaModelOption => ({\n id: model.id,\n label: model.name,\n description: model.description,\n provider: model.provider,\n status: model.status,\n sortOrder: model.sortOrder,\n familyId: model.familyId,\n familyName: model.familyName,\n isFamilyDefault: model.isFamilyDefault,\n isFeatured: model.isFeatured,\n variantOrder: model.variantOrder,\n }),\n );\n}\n\n/** The published collab agents, named and sorted; assets with a blank id are dropped. */\nexport function normalizeAgentCatalog({\n assets,\n}: {\n assets: ReadonlyArray<{ id: string; title: string | null }>;\n}): AthenaAgentOption[] {\n return normalizeCatalogAgentOptions({ assets });\n}\n\n/**\n * The model a picker shows as chosen: the stored choice while the catalog offers it, else the\n * default (unless retired), else a recommended family default, else any live model. While the\n * catalog is empty (loading, or unreachable) the stored choice or the default stands.\n */\nexport function resolveCatalogModelId({\n stored,\n defaultModelId,\n models,\n}: {\n stored: string | null;\n defaultModelId: string;\n models: readonly AthenaModelOption[];\n}): string {\n if (stored && models.some((model) => model.id === stored)) return stored;\n return (\n (\n models.find((model) => model.id === defaultModelId && model.status !== 'LEGACY') ??\n models.find((model) => model.status === 'RECOMMENDED' && model.isFamilyDefault) ??\n models.find((model) => model.status !== 'LEGACY' && model.isFamilyDefault) ??\n models.find((model) => model.status !== 'LEGACY') ??\n models[0]\n )?.id ?? (stored || defaultModelId)\n );\n}\n\n/** Models grouped under their provider's label, in catalog order. */\nexport function groupModelsByProvider({\n models,\n}: {\n models: readonly AthenaModelOption[];\n}): Array<{ provider: string; models: AthenaModelOption[] }> {\n const groups = new Map<string, AthenaModelOption[]>();\n for (const model of models) {\n const label = MODEL_PROVIDER_LABELS[model.provider] ?? model.provider;\n groups.set(label, [...(groups.get(label) ?? []), model]);\n }\n return Array.from(groups, ([provider, grouped]) => ({ provider, models: grouped }));\n}\n\n/** The provider's credentials as the SDK's GraphQL client takes them. Internal. */\nexport function useCatalogAuth(): MentionAuthContext {\n const config = useAthenaConfig();\n return useMemo<MentionAuthContext>(\n () => ({\n backendUrl: config.backendUrl,\n appUrl: config.appUrl,\n apiKey: config.apiKey,\n credentials: 'include',\n get accessToken() {\n return config.token ?? undefined;\n },\n getAccessToken: async () => (await config.getToken?.()) ?? undefined,\n renewAccessToken: async () => (await config.getToken?.({ force: true })) ?? undefined,\n }),\n [config],\n );\n}\n\n/**\n * A short fingerprint (two FNV-1a rounds, 64 bits) of a credential: it tells accounts apart in an\n * in-memory cache key without the credential itself, or anything it could be recovered from,\n * entering the key.\n */\nexport function credentialFingerprint({ credential }: { credential: string }): string {\n const round = (seed: number) => {\n let hash = seed;\n for (let index = 0; index < credential.length; index += 1) {\n hash ^= credential.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193) >>> 0;\n }\n return hash.toString(16).padStart(8, '0');\n };\n return `${round(0x811c9dc5)}${round(0x01000193)}`;\n}\n\n/**\n * Who is asking, for the cache key: the catalog differs per account (admin-only models, the\n * workspace's lists, the agents shared with them), and a host can switch accounts while keeping its\n * query client. The signed-in user's id when the SDK knows it, else a fingerprint of the credential\n * in use. Never the credential itself.\n */\nexport function useCatalogPrincipal(): string {\n const config = useAthenaConfig();\n const userId = useContext(AthenaAuthContext)?.user?.userId;\n if (userId) return `user:${userId}`;\n if (config.apiKey) return `key:${credentialFingerprint({ credential: config.apiKey })}`;\n if (config.token) return `token:${credentialFingerprint({ credential: config.token })}`;\n return 'session';\n}\n\n/**\n * The host's QueryClient when there is one (the thread list provides one), else one of the\n * pickers' own, so the catalog hooks work with or without the thread list.\n */\nexport function useCatalogQueryClient(): QueryClient {\n const host = useContext(QueryClientContext);\n const [own] = useState(() => new QueryClient());\n return host ?? own;\n}\n\n/** The models the signed-in person may pick (`normalizeModelCatalog`). */\nexport function useAthenaModelCatalog() {\n return useModelCatalogQuery({\n auth: useCatalogAuth(),\n principal: useCatalogPrincipal(),\n queryClient: useCatalogQueryClient(),\n });\n}\n\n/** The model catalog's query on a given client (one client for every read a hook makes). */\nfunction useModelCatalogQuery({\n auth,\n principal,\n queryClient,\n}: {\n auth: MentionAuthContext;\n principal: string;\n queryClient: QueryClient;\n}) {\n return useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'models', auth.backendUrl, principal],\n queryFn: async () =>\n normalizeModelCatalog({\n response: await fetchGraphQL<AthenaModelCatalogResponse>(auth, ATHENA_MODEL_CATALOG_QUERY),\n }),\n staleTime: 5 * 60 * 1000,\n },\n queryClient,\n );\n}\n\n/** The published collab agents the signed-in person can see (`normalizeAgentCatalog`). */\nexport function useAthenaAgentCatalog() {\n const auth = useCatalogAuth();\n const principal = useCatalogPrincipal();\n const queryClient = useCatalogQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'agents', auth.backendUrl, principal],\n queryFn: async () =>\n normalizeAgentCatalog({\n assets:\n (\n await fetchGraphQL<{ getAllAssets: Array<{ id: string; title: string | null }> }>(\n auth,\n ATHENA_AGENT_CATALOG_QUERY,\n )\n ).getAllAssets ?? [],\n }),\n staleTime: 60 * 1000,\n },\n queryClient,\n );\n}\n\nexport const ATHENA_AGENT_MODELS_QUERY = `\n query AthenaAgentModels($assetId: String!) {\n getAssetById(assetId: $assetId, withMetadata: true) { athenaMetadata }\n }\n`;\n\n/**\n * The `getAssetById` error codes that mean \"this person may not read the\n * agent\": no VIEW on it (`UNAUTHORIZED`, `FORBIDDEN`), or it lives in another\n * workspace (`WORKSPACE_MISMATCH`). Asking again answers the same.\n */\nconst AGENT_READ_DENIAL_CODES: ReadonlySet<string> = new Set([\n 'UNAUTHORIZED',\n 'FORBIDDEN',\n 'WORKSPACE_MISMATCH',\n]);\n\n/** What reading the agent's published models found: its models, or that this person cannot know them. */\nexport type AgentModelRead = { readable: true; source: AgentModelSource | null } | { readable: false };\n\n/**\n * Where `useAthenaAgentModelOptions` stands:\n *\n * - `idle`: no agent given;\n * - `loading`: the agent (or the model catalog that names its models) is being read;\n * - `ready`: the agent's published models are known;\n * - `unavailable`: this person cannot know them: no VIEW on the agent, no such\n * agent, or one never published (or whose published definition names no\n * model). Not an error: `allowAnyModel` stays `true`, so a picker keeps the\n * workspace's models;\n * - `error`: the read failed (network, server); `allowAnyModel` stays `true`.\n */\nexport type AthenaAgentModelOptionsStatus = 'idle' | 'loading' | 'ready' | 'unavailable' | 'error';\n\nexport interface AthenaAgentModelOptions {\n status: AthenaAgentModelOptionsStatus;\n /** The agent's model choices (see {@link AthenaAgentModelOption}); empty unless `ready`. */\n options: readonly AthenaAgentModelOption[];\n /**\n * The model the thread runs while it pins none: the channel's override, else\n * the agent's own model. From the deployment's refusal day (identity v7 D12,\n * `FeatureGateEnv.channelReplacementsRefusedFrom`) Athena no longer applies a\n * channel's model, so this is the agent's own on every channel. `null` unless\n * `ready`, and also `null` on a channel until the day's first read answers:\n * meanwhile `options` are the agent's own models, none marked default.\n */\n defaultModel: string | null;\n /**\n * Whether people may pick any workspace model with this agent: the agent's\n * \"Allow any workspace model\" switch (`allowAnyModel` in its published\n * definition). Only an explicit `false` restricts a picker to `options`;\n * absent, `null` or `true` (every agent saved before the switch) allow any,\n * and so does an agent this person cannot read. `true` unless `ready`.\n */\n allowAnyModel: boolean;\n}\n\nconst NO_AGENT_MODEL_OPTIONS: Readonly<\n Record<Exclude<AthenaAgentModelOptionsStatus, 'ready'>, AthenaAgentModelOptions>\n> = {\n idle: { status: 'idle', options: [], defaultModel: null, allowAnyModel: true },\n loading: { status: 'loading', options: [], defaultModel: null, allowAnyModel: true },\n unavailable: { status: 'unavailable', options: [], defaultModel: null, allowAnyModel: true },\n error: { status: 'error', options: [], defaultModel: null, allowAnyModel: true },\n};\n\n/** Whether a failed read is a denial: an answer, not a failure (nothing to retry or report). */\nexport function isAgentReadDenial(error: unknown): boolean {\n return (\n error instanceof AthenaGraphQLError &&\n error.code !== null &&\n AGENT_READ_DENIAL_CODES.has(error.code)\n );\n}\n\n/**\n * A selected collab agent's own model choices, and whether the agent restricts\n * a picker to them (`allowAnyModel: false`, the agent's \"Allow any workspace\n * model\" switch turned off). Restriction is opt-in per agent: with\n * `allowAnyModel` true (the default) a picker keeps the workspace's models and\n * can still show `defaultModel` as the agent's own; `ChatModelPicker` does\n * both.\n *\n * `agent` is the agent's asset id or its `collab_agent:<id>` ref (`null`:\n * none, `idle`). `channel` is the collab channel the chat runs on: its model\n * override is the default there, until the deployment's refusal day (identity\n * v7 D12), which a chat with a channel reads from `featureGateEnv` and follows\n * across UTC midnight. The rules are in `agent-model-options.ts`.\n *\n * The agent is read through `getAssetById(withMetadata: true)`, the\n * permission-checked asset read (VIEW on the agent), with the provider's\n * credentials: a person without VIEW gets `unavailable` with no options. The\n * model the thread pins comes from `useAthenaThreadModel()` (inside\n * `<AthenaProvider>`; none outside one): a pinned model outside the agent's\n * list is an option with `pinnedOutside`.\n *\n * Picking the `isDefault` option means \"no model\": hand the provider\n * `model={undefined}` so the agent's (or channel's) default runs, and a session\n * pinning another model is unpinned.\n *\n * While shown, the agent is read again every\n * {@link AGENT_MODELS_REFRESH_MS}: an author publishing new models elsewhere\n * invalidates nothing here.\n */\nexport function useAthenaAgentModelOptions({\n agent,\n channel = null,\n}: {\n agent: string | null | undefined;\n channel?: string | null;\n}): AthenaAgentModelOptions {\n return useAgentModelChoices({ agent, channel }).choices;\n}\n\n/** How often an agent's published models are read again while a hook shows them. */\nexport const AGENT_MODELS_REFRESH_MS = 60 * 1000;\n\n/**\n * The re-read cadence of an agent model read: every\n * {@link AGENT_MODELS_REFRESH_MS} while it answers, never for a denial (asking\n * again answers the same).\n */\nexport function agentModelsRefetchInterval({\n data,\n}: {\n data: AgentModelRead | undefined;\n}): number | false {\n return data !== undefined && !data.readable ? false : AGENT_MODELS_REFRESH_MS;\n}\n\n/** `setTimeout` holds at most 2^31 - 1 ms (about 24.8 days); a later day is waited for in steps. */\nconst MAX_TIMER_MS = 2 ** 31 - 1;\n\n/** Where a picker stands on the deployment's refusal day. */\ninterface ChannelRefusal {\n /** The day's first read is still out: a picker names no default until it answers. */\n pending: boolean;\n /** The day has come: a channel's model no longer applies. */\n refused: boolean;\n}\n\n/**\n * Whether the deployment's refusal day has come (identity v7 D12, `channel-refusal.ts`), rendering\n * again at UTC midnight of the day, so a picker open across it turns without a reload. The day is\n * read only while `enabled` (an agent and a channel: no channel, no channel model to refuse) and\n * again every {@link AGENT_MODELS_REFRESH_MS}, as the agent is. Only an agora whose schema lacks\n * the field (one from before D12's date, which refuses nothing) answers \"no day\"; any other failure\n * is a failed read, which keeps the day last read (TanStack keeps a query's data across a failed\n * re-read). Display only: agora decides at every compile from its own setting.\n */\nfunction useChannelReplacementsRefused({\n auth,\n principal,\n queryClient,\n enabled,\n}: {\n auth: MentionAuthContext;\n principal: string;\n queryClient: QueryClient;\n enabled: boolean;\n}): ChannelRefusal {\n const read = useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'channel-refusal-day', auth.backendUrl, principal],\n queryFn: async (): Promise<string | null> => {\n try {\n return refusalDayOf(await fetchGraphQL<unknown>(auth, ATHENA_CHANNEL_REFUSAL_QUERY));\n } catch (error) {\n if (\n error instanceof AthenaGraphQLError &&\n error.status === null &&\n answersWithoutRefusalDay(error.message)\n ) {\n return null;\n }\n throw error;\n }\n },\n enabled,\n staleTime: AGENT_MODELS_REFRESH_MS,\n refetchInterval: AGENT_MODELS_REFRESH_MS,\n // A picker waits on the first answer: one retry, not TanStack's three.\n retry: 1,\n },\n queryClient,\n );\n const refusedFrom = enabled ? (read.data ?? null) : null;\n const [tick, setTick] = useState(0);\n const refused = channelReplacementsRefusedOn({ refusedFrom, now: Date.now() });\n const startsAt = refused ? null : channelReplacementsRefusalStartsAt(refusedFrom);\n useEffect(() => {\n // `tick` is read so that a step short of a far day waits again.\n if (startsAt === null || tick < 0) return;\n const delay = Math.min(Math.max(startsAt - Date.now(), 0), MAX_TIMER_MS);\n const timer = setTimeout(() => setTick((value) => value + 1), delay);\n return () => clearTimeout(timer);\n }, [startsAt, tick]);\n // A first read that failed leaves the day unknown: the picker shows what it showed before D12.\n return { pending: enabled && read.isPending, refused };\n}\n\n/**\n * {@link useAthenaAgentModelOptions} plus the catalog label of any model id,\n * from the same query client and catalog read (a picker needs both; reading\n * the catalog again through its own client would fetch it twice). Internal.\n */\nexport function useAgentModelChoices({\n agent,\n channel,\n}: {\n agent: string | null | undefined;\n channel: string | null;\n}): {\n choices: AthenaAgentModelOptions;\n modelLabel: (model: string) => string;\n /** The workspace model catalog, read through the same client as the agent. */\n catalog: ReturnType<typeof useModelCatalogQuery>;\n} {\n const assetId = agentAssetIdOf(agent);\n const auth = useCatalogAuth();\n const principal = useCatalogPrincipal();\n const queryClient = useCatalogQueryClient();\n const read = useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'agent-models', auth.backendUrl, principal, assetId],\n queryFn: async (): Promise<AgentModelRead> => {\n try {\n const data = await fetchGraphQL<{ getAssetById: { athenaMetadata: unknown } | null }>(\n auth,\n ATHENA_AGENT_MODELS_QUERY,\n { assetId },\n );\n if (data.getAssetById === null) return { readable: false };\n return {\n readable: true,\n source: publishedAgentModelSource(data.getAssetById.athenaMetadata),\n };\n } catch (error) {\n if (isAgentReadDenial(error)) return { readable: false };\n throw error;\n }\n },\n enabled: assetId !== null,\n staleTime: AGENT_MODELS_REFRESH_MS,\n refetchInterval: (query) => agentModelsRefetchInterval({ data: query.state.data }),\n },\n queryClient,\n );\n const catalog = useModelCatalogQuery({ auth, principal, queryClient });\n const threadModel = useOptionalAthenaThreadModel();\n const pinnedModel =\n threadModel !== null && threadModel.ready && threadModel.configured ? threadModel.model : null;\n const trimmedChannel = channel?.trim() || null;\n const refusal = useChannelReplacementsRefused({\n auth,\n principal,\n queryClient,\n enabled: assetId !== null && trimmedChannel !== null,\n });\n const { pending: refusalPending, refused: refuseReplacements } = refusal;\n const models = catalog.data;\n const catalogPending = catalog.isPending;\n const { isPending: readPending, data: readData } = read;\n const modelLabel = useCallback(\n (model: string) => models?.find((option) => option.id === model)?.label ?? model,\n [models],\n );\n const choices = useMemo((): AthenaAgentModelOptions => {\n if (assetId === null) return NO_AGENT_MODEL_OPTIONS.idle;\n // A failed re-read keeps the last answer; only a first read that failed is an error.\n if (readData === undefined) {\n return readPending ? NO_AGENT_MODEL_OPTIONS.loading : NO_AGENT_MODEL_OPTIONS.error;\n }\n if (!readData.readable || readData.source === null) return NO_AGENT_MODEL_OPTIONS.unavailable;\n // The catalog names the models: wait for it, unless it failed (ids then name them).\n if (catalogPending) return NO_AGENT_MODEL_OPTIONS.loading;\n // On a channel the default turns on the refusal day. Until its first answer, offer the agent's\n // own models with their restriction kept, and name no default: never the refused channel's.\n if (refusalPending) {\n return {\n status: 'ready',\n ...agentModelOptionsWithoutDefault({\n source: readData.source,\n channel: trimmedChannel,\n pinnedModel,\n modelLabel,\n }),\n allowAnyModel: readData.source.allowAnyModel,\n };\n }\n return {\n status: 'ready',\n ...buildAgentModelOptions({\n source: readData.source,\n channel: trimmedChannel,\n pinnedModel,\n modelLabel,\n refuseReplacements,\n }),\n allowAnyModel: readData.source.allowAnyModel,\n };\n }, [\n assetId,\n readPending,\n readData,\n catalogPending,\n modelLabel,\n trimmedChannel,\n pinnedModel,\n refusalPending,\n refuseReplacements,\n ]);\n return useMemo(() => ({ choices, modelLabel, catalog }), [choices, modelLabel, catalog]);\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-catalog.js","sources":["../../src/catalog/runtime-catalog.ts"],"sourcesContent":["import {\n filterAndSortCatalogModels,\n normalizeCatalogAgentOptions,\n} from '@athenaintel/agent-runtime/runtime-catalog';\nimport { QueryClient, QueryClientContext, useQuery } from '@tanstack/react-query';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { AthenaAuthContext } from '../auth/AthenaAuthContext';\nimport {\n AthenaGraphQLError,\n fetchGraphQL,\n type MentionAuthContext,\n VIEWER_IS_ADMIN_QUERY,\n type ViewerIsAdminResult,\n} from '../chat-ui/mentions/suggestions/data/api-client';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport { useOptionalAthenaThreadModel } from '../threads/use-athena-thread-model';\nimport {\n type AgentModelSource,\n type AthenaAgentModelOption,\n agentAssetIdOf,\n agentModelOptionsWithoutDefault,\n buildAgentModelOptions,\n publishedAgentModelSource,\n} from './agent-model-options';\nimport {\n ATHENA_CHANNEL_REFUSAL_QUERY,\n answersWithoutRefusalDay,\n channelReplacementsRefusalStartsAt,\n channelReplacementsRefusedOn,\n refusalDayOf,\n} from './channel-refusal';\n\n/**\n * The workspace's runtime catalog for a chat's model and agent pickers: the models the signed-in\n * person may run (the workspace's allow or deny list, admin-only models for admins), and the\n * published collab agents they can see. The rules are the Chrome extension's, which every host now\n * reads from here.\n */\n\nexport type AthenaModelStatus = 'ACTIVE' | 'LEGACY' | 'RECOMMENDED';\n\nexport interface AthenaModelOption {\n id: string;\n label: string;\n description: string | null;\n /** Upper-case provider key, e.g. `ANTHROPIC`, `OPENAI`. */\n provider: string;\n status: AthenaModelStatus;\n sortOrder: number;\n familyId: string;\n familyName: string;\n isFamilyDefault: boolean;\n isFeatured: boolean;\n variantOrder: number;\n /**\n * How the variant runs within its family (`STANDARD`, `THINKING`, `PRO`), its reasoning effort\n * (`NONE`, `LOW`, `MEDIUM`, `HIGH`, `XHIGH`, `MAX`) and its processing tier (`STANDARD`, `FAST`),\n * as agora's model registry names them; `null` where the registry names none. Optional for an\n * option a host builds itself.\n */\n variantMode?: string | null;\n variantEffort?: string | null;\n variantServiceTier?: string | null;\n}\n\nexport interface AthenaAgentOption {\n /** The collab agent's asset id; pass `collab_agent:<id>` as the provider's `agent`. */\n id: string;\n name: string;\n}\n\n/** One agent of {@link useAthenaAgentDirectory}: an {@link AthenaAgentOption} and its provenance. */\nexport interface AthenaAgentDirectoryEntry extends AthenaAgentOption {\n /** The id of the person who made it (agora's user id), `null` when agora names none. */\n createdBy: string | null;\n /** When it last changed (ISO 8601), `null` when agora names none. */\n updatedAt: string | null;\n}\n\n/** The provider labels a model picker groups by. */\nexport const MODEL_PROVIDER_LABELS: Readonly<Record<string, string>> = {\n ANTHROPIC: 'Anthropic',\n OPENAI: 'OpenAI',\n GOOGLE: 'Google',\n XAI: 'xAI',\n META: 'Meta',\n MISTRAL: 'Mistral',\n DEEPSEEK: 'DeepSeek',\n QWEN: 'Qwen',\n MOONSHOT: 'Moonshot',\n MINIMAX: 'MiniMax',\n ZAI: 'Z.ai',\n};\n\nexport const ATHENA_MODEL_CATALOG_QUERY = `\n query AthenaModelCatalog {\n getCurrentUserWithWorkspace { user { isAdmin } }\n settings { workspace { approvedLargeLlms blacklistedLlms } }\n availableModels {\n id name provider status description adminOnly sortOrder\n familyId familyName isFamilyDefault isFeatured variantOrder\n variantMode variantEffort variantServiceTier\n }\n }\n`;\n\nexport const ATHENA_AGENT_CATALOG_QUERY = `\n query AthenaAgentCatalog {\n getAllAssets(filterByAthenaOriginalType: [\"collab_agent\"]) { id title }\n }\n`;\n\n/**\n * The agents a person can see, each with who made it and when it last changed: what a host needs\n * to put the person's own agents first (`useAthenaAgentDirectory`). Its own operation, so the\n * catalog's (`AthenaAgentCatalog`) stays as every host reads it.\n */\nexport const ATHENA_AGENT_DIRECTORY_QUERY = `\n query AthenaAgentDirectory {\n getAllAssets(filterByAthenaOriginalType: [\"collab_agent\"]) { id title createdBy updatedAt }\n }\n`;\n\nexport interface AthenaModelCatalogResponse {\n getCurrentUserWithWorkspace: { user: { isAdmin: boolean } };\n settings: { workspace: { approvedLargeLlms: string[]; blacklistedLlms: string[] } };\n availableModels: Array<{\n id: string;\n name: string;\n provider: string;\n status: AthenaModelStatus;\n description: string | null;\n adminOnly: boolean;\n sortOrder: number;\n familyId: string;\n familyName: string;\n isFamilyDefault: boolean;\n isFeatured: boolean;\n variantOrder: number;\n variantMode?: string | null;\n variantEffort?: string | null;\n variantServiceTier?: string | null;\n }>;\n}\n\n/**\n * The models the person may pick, in catalog order. A workspace with an allow list offers only\n * those; otherwise everything except its deny list. Admin-only models are offered to admins only.\n */\nexport function normalizeModelCatalog({\n response,\n}: {\n response: AthenaModelCatalogResponse;\n}): AthenaModelOption[] {\n return filterAndSortCatalogModels({\n models: response.availableModels,\n isAdmin: response.getCurrentUserWithWorkspace.user.isAdmin,\n approvedModelIds: response.settings.workspace.approvedLargeLlms,\n deniedModelIds: response.settings.workspace.blacklistedLlms,\n }).map(\n (model): AthenaModelOption => ({\n id: model.id,\n label: model.name,\n description: model.description,\n provider: model.provider,\n status: model.status,\n sortOrder: model.sortOrder,\n familyId: model.familyId,\n familyName: model.familyName,\n isFamilyDefault: model.isFamilyDefault,\n isFeatured: model.isFeatured,\n variantOrder: model.variantOrder,\n variantMode: model.variantMode ?? null,\n variantEffort: model.variantEffort ?? null,\n variantServiceTier: model.variantServiceTier ?? null,\n }),\n );\n}\n\n/** The published collab agents, named and sorted; assets with a blank id are dropped. */\nexport function normalizeAgentCatalog({\n assets,\n}: {\n assets: ReadonlyArray<{ id: string; title: string | null }>;\n}): AthenaAgentOption[] {\n return normalizeCatalogAgentOptions({ assets });\n}\n\n/**\n * The model a picker shows as chosen: the stored choice while the catalog offers it, else the\n * default (unless retired), else a recommended family default, else any live model. While the\n * catalog is empty (loading, or unreachable) the stored choice or the default stands.\n */\nexport function resolveCatalogModelId({\n stored,\n defaultModelId,\n models,\n}: {\n stored: string | null;\n defaultModelId: string;\n models: readonly AthenaModelOption[];\n}): string {\n if (stored && models.some((model) => model.id === stored)) return stored;\n return (\n (\n models.find((model) => model.id === defaultModelId && model.status !== 'LEGACY') ??\n models.find((model) => model.status === 'RECOMMENDED' && model.isFamilyDefault) ??\n models.find((model) => model.status !== 'LEGACY' && model.isFamilyDefault) ??\n models.find((model) => model.status !== 'LEGACY') ??\n models[0]\n )?.id ?? (stored || defaultModelId)\n );\n}\n\n/** Models grouped under their provider's label, in catalog order. */\nexport function groupModelsByProvider({\n models,\n}: {\n models: readonly AthenaModelOption[];\n}): Array<{ provider: string; models: AthenaModelOption[] }> {\n const groups = new Map<string, AthenaModelOption[]>();\n for (const model of models) {\n const label = MODEL_PROVIDER_LABELS[model.provider] ?? model.provider;\n groups.set(label, [...(groups.get(label) ?? []), model]);\n }\n return Array.from(groups, ([provider, grouped]) => ({ provider, models: grouped }));\n}\n\n/** The provider's credentials as the SDK's GraphQL client takes them. Internal. */\nexport function useCatalogAuth(): MentionAuthContext {\n const config = useAthenaConfig();\n return useMemo<MentionAuthContext>(\n () => ({\n backendUrl: config.backendUrl,\n appUrl: config.appUrl,\n apiKey: config.apiKey,\n credentials: 'include',\n get accessToken() {\n return config.token ?? undefined;\n },\n getAccessToken: async () => (await config.getToken?.()) ?? undefined,\n renewAccessToken: async () => (await config.getToken?.({ force: true })) ?? undefined,\n }),\n [config],\n );\n}\n\n/**\n * A short fingerprint (two FNV-1a rounds, 64 bits) of a credential: it tells accounts apart in an\n * in-memory cache key without the credential itself, or anything it could be recovered from,\n * entering the key.\n */\nexport function credentialFingerprint({ credential }: { credential: string }): string {\n const round = (seed: number) => {\n let hash = seed;\n for (let index = 0; index < credential.length; index += 1) {\n hash ^= credential.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193) >>> 0;\n }\n return hash.toString(16).padStart(8, '0');\n };\n return `${round(0x811c9dc5)}${round(0x01000193)}`;\n}\n\n/**\n * Who is asking, for the cache key: the catalog differs per account (admin-only models, the\n * workspace's lists, the agents shared with them), and a host can switch accounts while keeping its\n * query client. The signed-in user's id when the SDK knows it, else a fingerprint of the credential\n * in use. Never the credential itself.\n */\nexport function useCatalogPrincipal(): string {\n const config = useAthenaConfig();\n const userId = useContext(AthenaAuthContext)?.user?.userId;\n if (userId) return `user:${userId}`;\n if (config.apiKey) return `key:${credentialFingerprint({ credential: config.apiKey })}`;\n if (config.token) return `token:${credentialFingerprint({ credential: config.token })}`;\n return 'session';\n}\n\n/**\n * The host's QueryClient when there is one (the thread list provides one), else one of the\n * pickers' own, so the catalog hooks work with or without the thread list.\n */\nexport function useCatalogQueryClient(): QueryClient {\n const host = useContext(QueryClientContext);\n const [own] = useState(() => new QueryClient());\n return host ?? own;\n}\n\n/** The models the signed-in person may pick (`normalizeModelCatalog`). */\nexport function useAthenaModelCatalog() {\n return useModelCatalogQuery({\n auth: useCatalogAuth(),\n principal: useCatalogPrincipal(),\n queryClient: useCatalogQueryClient(),\n });\n}\n\n/** The model catalog's query on a given client (one client for every read a hook makes). */\nfunction useModelCatalogQuery({\n auth,\n principal,\n queryClient,\n}: {\n auth: MentionAuthContext;\n principal: string;\n queryClient: QueryClient;\n}) {\n return useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'models', auth.backendUrl, principal],\n queryFn: async () =>\n normalizeModelCatalog({\n response: await fetchGraphQL<AthenaModelCatalogResponse>(auth, ATHENA_MODEL_CATALOG_QUERY),\n }),\n staleTime: 5 * 60 * 1000,\n },\n queryClient,\n );\n}\n\n/**\n * The published collab agents the signed-in person can see (`normalizeAgentCatalog`). `enabled`\n * (default `true`) holds the read for a caller that needs the agents only sometimes.\n */\nexport function useAthenaAgentCatalog({ enabled = true }: { enabled?: boolean } = {}) {\n const auth = useCatalogAuth();\n const principal = useCatalogPrincipal();\n const queryClient = useCatalogQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'agents', auth.backendUrl, principal],\n queryFn: async () =>\n normalizeAgentCatalog({\n assets:\n (\n await fetchGraphQL<{ getAllAssets: Array<{ id: string; title: string | null }> }>(\n auth,\n ATHENA_AGENT_CATALOG_QUERY,\n )\n ).getAllAssets ?? [],\n }),\n staleTime: 60 * 1000,\n enabled,\n },\n queryClient,\n );\n}\n\n/**\n * {@link normalizeAgentCatalog}'s agents, each with who made it and when it last changed, named and\n * sorted as the catalog names and sorts them. Pure.\n */\nexport function normalizeAgentDirectory({\n assets,\n}: {\n assets: ReadonlyArray<{\n id: string;\n title: string | null;\n createdBy?: string | null;\n updatedAt?: string | null;\n }>;\n}): AthenaAgentDirectoryEntry[] {\n const provenance = new Map(assets.map((asset) => [asset.id, asset]));\n return normalizeAgentCatalog({ assets }).map((agent) => {\n const asset = provenance.get(agent.id);\n const createdBy = asset?.createdBy?.trim() || null;\n const updatedAt = asset?.updatedAt?.trim() || null;\n return { ...agent, createdBy, updatedAt };\n });\n}\n\n/**\n * The agents the signed-in person can see, as {@link useAthenaAgentCatalog} lists them, each with\n * who made it and when it last changed (`normalizeAgentDirectory`), for a picker that puts the\n * person's own agents first. `enabled` (default `true`) holds the read.\n */\nexport function useAthenaAgentDirectory({ enabled = true }: { enabled?: boolean } = {}) {\n const auth = useCatalogAuth();\n const principal = useCatalogPrincipal();\n const queryClient = useCatalogQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'agent-directory', auth.backendUrl, principal],\n queryFn: async () =>\n normalizeAgentDirectory({\n assets:\n (\n await fetchGraphQL<{\n getAllAssets: Array<{\n id: string;\n title: string | null;\n createdBy: string | null;\n updatedAt: string | null;\n }>;\n }>(auth, ATHENA_AGENT_DIRECTORY_QUERY)\n ).getAllAssets ?? [],\n }),\n staleTime: 60 * 1000,\n enabled,\n },\n queryClient,\n );\n}\n\n/**\n * Whether the signed-in person is an Athena admin (`getCurrentUserWithWorkspace`), `false` until\n * agora answers and when it can't: the chat's `@` menu offers its Agents section to admins only for\n * now (`chatAgentNamingOffered`) and ranks an admin's people under Team, as Olympus does. Only what\n * the menu offers follows it; agora decides every name a message carries. `enabled` holds the read\n * for a chat whose menu offers neither.\n */\nexport function useAthenaViewerIsAdmin({ enabled = true }: { enabled?: boolean } = {}): boolean {\n const auth = useCatalogAuth();\n const principal = useCatalogPrincipal();\n const queryClient = useCatalogQueryClient();\n const query = useQuery(\n {\n queryKey: ['athena-sdk', 'viewer', 'is-admin', auth.backendUrl, principal],\n queryFn: async () =>\n (await fetchGraphQL<ViewerIsAdminResult>(auth, VIEWER_IS_ADMIN_QUERY))\n .getCurrentUserWithWorkspace?.user.isAdmin === true,\n staleTime: 5 * 60 * 1000,\n enabled,\n },\n queryClient,\n );\n return enabled && query.data === true;\n}\n\nexport const ATHENA_AGENT_MODELS_QUERY = `\n query AthenaAgentModels($assetId: String!) {\n getAssetById(assetId: $assetId, withMetadata: true) { athenaMetadata }\n }\n`;\n\n/**\n * The `getAssetById` error codes that mean \"this person may not read the\n * agent\": no VIEW on it (`UNAUTHORIZED`, `FORBIDDEN`), or it lives in another\n * workspace (`WORKSPACE_MISMATCH`). Asking again answers the same.\n */\nconst AGENT_READ_DENIAL_CODES: ReadonlySet<string> = new Set([\n 'UNAUTHORIZED',\n 'FORBIDDEN',\n 'WORKSPACE_MISMATCH',\n]);\n\n/** What reading the agent's published models found: its models, or that this person cannot know them. */\nexport type AgentModelRead = { readable: true; source: AgentModelSource | null } | { readable: false };\n\n/**\n * Where `useAthenaAgentModelOptions` stands:\n *\n * - `idle`: no agent given;\n * - `loading`: the agent (or the model catalog that names its models) is being read;\n * - `ready`: the agent's published models are known;\n * - `unavailable`: this person cannot know them: no VIEW on the agent, no such\n * agent, or one never published (or whose published definition names no\n * model). Not an error: `allowAnyModel` stays `true`, so a picker keeps the\n * workspace's models;\n * - `error`: the read failed (network, server); `allowAnyModel` stays `true`.\n */\nexport type AthenaAgentModelOptionsStatus = 'idle' | 'loading' | 'ready' | 'unavailable' | 'error';\n\nexport interface AthenaAgentModelOptions {\n status: AthenaAgentModelOptionsStatus;\n /** The agent's model choices (see {@link AthenaAgentModelOption}); empty unless `ready`. */\n options: readonly AthenaAgentModelOption[];\n /**\n * The model the thread runs while it pins none: the channel's override, else\n * the agent's own model. From the deployment's refusal day (identity v7 D12,\n * `FeatureGateEnv.channelReplacementsRefusedFrom`) Athena no longer applies a\n * channel's model, so this is the agent's own on every channel. `null` unless\n * `ready`, and also `null` on a channel until the day's first read answers:\n * meanwhile `options` are the agent's own models, none marked default.\n */\n defaultModel: string | null;\n /**\n * Whether people may pick any workspace model with this agent: the agent's\n * \"Allow any workspace model\" switch (`allowAnyModel` in its published\n * definition). Only an explicit `false` restricts a picker to `options`;\n * absent, `null` or `true` (every agent saved before the switch) allow any,\n * and so does an agent this person cannot read. `true` unless `ready`.\n */\n allowAnyModel: boolean;\n}\n\nconst NO_AGENT_MODEL_OPTIONS: Readonly<\n Record<Exclude<AthenaAgentModelOptionsStatus, 'ready'>, AthenaAgentModelOptions>\n> = {\n idle: { status: 'idle', options: [], defaultModel: null, allowAnyModel: true },\n loading: { status: 'loading', options: [], defaultModel: null, allowAnyModel: true },\n unavailable: { status: 'unavailable', options: [], defaultModel: null, allowAnyModel: true },\n error: { status: 'error', options: [], defaultModel: null, allowAnyModel: true },\n};\n\n/** Whether a failed read is a denial: an answer, not a failure (nothing to retry or report). */\nexport function isAgentReadDenial(error: unknown): boolean {\n return (\n error instanceof AthenaGraphQLError &&\n error.code !== null &&\n AGENT_READ_DENIAL_CODES.has(error.code)\n );\n}\n\n/**\n * A selected collab agent's own model choices, and whether the agent restricts\n * a picker to them (`allowAnyModel: false`, the agent's \"Allow any workspace\n * model\" switch turned off). Restriction is opt-in per agent: with\n * `allowAnyModel` true (the default) a picker keeps the workspace's models and\n * can still show `defaultModel` as the agent's own; `ChatModelPicker` does\n * both.\n *\n * `agent` is the agent's asset id or its `collab_agent:<id>` ref (`null`:\n * none, `idle`). `channel` is the collab channel the chat runs on: its model\n * override is the default there, until the deployment's refusal day (identity\n * v7 D12), which a chat with a channel reads from `featureGateEnv` and follows\n * across UTC midnight. The rules are in `agent-model-options.ts`.\n *\n * The agent is read through `getAssetById(withMetadata: true)`, the\n * permission-checked asset read (VIEW on the agent), with the provider's\n * credentials: a person without VIEW gets `unavailable` with no options. The\n * model the thread pins comes from `useAthenaThreadModel()` (inside\n * `<AthenaProvider>`; none outside one): a pinned model outside the agent's\n * list is an option with `pinnedOutside`.\n *\n * Picking the `isDefault` option means \"no model\": hand the provider\n * `model={undefined}` so the agent's (or channel's) default runs, and a session\n * pinning another model is unpinned.\n *\n * While shown, the agent is read again every\n * {@link AGENT_MODELS_REFRESH_MS}: an author publishing new models elsewhere\n * invalidates nothing here.\n */\nexport function useAthenaAgentModelOptions({\n agent,\n channel = null,\n}: {\n agent: string | null | undefined;\n channel?: string | null;\n}): AthenaAgentModelOptions {\n return useAgentModelChoices({ agent, channel }).choices;\n}\n\n/** How often an agent's published models are read again while a hook shows them. */\nexport const AGENT_MODELS_REFRESH_MS = 60 * 1000;\n\n/**\n * The re-read cadence of an agent model read: every\n * {@link AGENT_MODELS_REFRESH_MS} while it answers, never for a denial (asking\n * again answers the same).\n */\nexport function agentModelsRefetchInterval({\n data,\n}: {\n data: AgentModelRead | undefined;\n}): number | false {\n return data !== undefined && !data.readable ? false : AGENT_MODELS_REFRESH_MS;\n}\n\n/** `setTimeout` holds at most 2^31 - 1 ms (about 24.8 days); a later day is waited for in steps. */\nconst MAX_TIMER_MS = 2 ** 31 - 1;\n\n/** Where a picker stands on the deployment's refusal day. */\ninterface ChannelRefusal {\n /** The day's first read is still out: a picker names no default until it answers. */\n pending: boolean;\n /** The day has come: a channel's model no longer applies. */\n refused: boolean;\n}\n\n/**\n * Whether the deployment's refusal day has come (identity v7 D12, `channel-refusal.ts`), rendering\n * again at UTC midnight of the day, so a picker open across it turns without a reload. The day is\n * read only while `enabled` (an agent and a channel: no channel, no channel model to refuse) and\n * again every {@link AGENT_MODELS_REFRESH_MS}, as the agent is. Only an agora whose schema lacks\n * the field (one from before D12's date, which refuses nothing) answers \"no day\"; any other failure\n * is a failed read, which keeps the day last read (TanStack keeps a query's data across a failed\n * re-read). Display only: agora decides at every compile from its own setting.\n */\nfunction useChannelReplacementsRefused({\n auth,\n principal,\n queryClient,\n enabled,\n}: {\n auth: MentionAuthContext;\n principal: string;\n queryClient: QueryClient;\n enabled: boolean;\n}): ChannelRefusal {\n const read = useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'channel-refusal-day', auth.backendUrl, principal],\n queryFn: async (): Promise<string | null> => {\n try {\n return refusalDayOf(await fetchGraphQL<unknown>(auth, ATHENA_CHANNEL_REFUSAL_QUERY));\n } catch (error) {\n if (\n error instanceof AthenaGraphQLError &&\n error.status === null &&\n answersWithoutRefusalDay(error.message)\n ) {\n return null;\n }\n throw error;\n }\n },\n enabled,\n staleTime: AGENT_MODELS_REFRESH_MS,\n refetchInterval: AGENT_MODELS_REFRESH_MS,\n // A picker waits on the first answer: one retry, not TanStack's three.\n retry: 1,\n },\n queryClient,\n );\n const refusedFrom = enabled ? (read.data ?? null) : null;\n const [tick, setTick] = useState(0);\n const refused = channelReplacementsRefusedOn({ refusedFrom, now: Date.now() });\n const startsAt = refused ? null : channelReplacementsRefusalStartsAt(refusedFrom);\n useEffect(() => {\n // `tick` is read so that a step short of a far day waits again.\n if (startsAt === null || tick < 0) return;\n const delay = Math.min(Math.max(startsAt - Date.now(), 0), MAX_TIMER_MS);\n const timer = setTimeout(() => setTick((value) => value + 1), delay);\n return () => clearTimeout(timer);\n }, [startsAt, tick]);\n // A first read that failed leaves the day unknown: the picker shows what it showed before D12.\n return { pending: enabled && read.isPending, refused };\n}\n\n/**\n * {@link useAthenaAgentModelOptions} plus the catalog label of any model id,\n * from the same query client and catalog read (a picker needs both; reading\n * the catalog again through its own client would fetch it twice). Internal.\n */\nexport function useAgentModelChoices({\n agent,\n channel,\n}: {\n agent: string | null | undefined;\n channel: string | null;\n}): {\n choices: AthenaAgentModelOptions;\n modelLabel: (model: string) => string;\n /** The workspace model catalog, read through the same client as the agent. */\n catalog: ReturnType<typeof useModelCatalogQuery>;\n} {\n const assetId = agentAssetIdOf(agent);\n const auth = useCatalogAuth();\n const principal = useCatalogPrincipal();\n const queryClient = useCatalogQueryClient();\n const read = useQuery(\n {\n queryKey: ['athena-sdk', 'catalog', 'agent-models', auth.backendUrl, principal, assetId],\n queryFn: async (): Promise<AgentModelRead> => {\n try {\n const data = await fetchGraphQL<{ getAssetById: { athenaMetadata: unknown } | null }>(\n auth,\n ATHENA_AGENT_MODELS_QUERY,\n { assetId },\n );\n if (data.getAssetById === null) return { readable: false };\n return {\n readable: true,\n source: publishedAgentModelSource(data.getAssetById.athenaMetadata),\n };\n } catch (error) {\n if (isAgentReadDenial(error)) return { readable: false };\n throw error;\n }\n },\n enabled: assetId !== null,\n staleTime: AGENT_MODELS_REFRESH_MS,\n refetchInterval: (query) => agentModelsRefetchInterval({ data: query.state.data }),\n },\n queryClient,\n );\n const catalog = useModelCatalogQuery({ auth, principal, queryClient });\n const threadModel = useOptionalAthenaThreadModel();\n const pinnedModel =\n threadModel !== null && threadModel.ready && threadModel.configured ? threadModel.model : null;\n const trimmedChannel = channel?.trim() || null;\n const refusal = useChannelReplacementsRefused({\n auth,\n principal,\n queryClient,\n enabled: assetId !== null && trimmedChannel !== null,\n });\n const { pending: refusalPending, refused: refuseReplacements } = refusal;\n const models = catalog.data;\n const catalogPending = catalog.isPending;\n const { isPending: readPending, data: readData } = read;\n const modelLabel = useCallback(\n (model: string) => models?.find((option) => option.id === model)?.label ?? model,\n [models],\n );\n const choices = useMemo((): AthenaAgentModelOptions => {\n if (assetId === null) return NO_AGENT_MODEL_OPTIONS.idle;\n // A failed re-read keeps the last answer; only a first read that failed is an error.\n if (readData === undefined) {\n return readPending ? NO_AGENT_MODEL_OPTIONS.loading : NO_AGENT_MODEL_OPTIONS.error;\n }\n if (!readData.readable || readData.source === null) return NO_AGENT_MODEL_OPTIONS.unavailable;\n // The catalog names the models: wait for it, unless it failed (ids then name them).\n if (catalogPending) return NO_AGENT_MODEL_OPTIONS.loading;\n // On a channel the default turns on the refusal day. Until its first answer, offer the agent's\n // own models with their restriction kept, and name no default: never the refused channel's.\n if (refusalPending) {\n return {\n status: 'ready',\n ...agentModelOptionsWithoutDefault({\n source: readData.source,\n channel: trimmedChannel,\n pinnedModel,\n modelLabel,\n }),\n allowAnyModel: readData.source.allowAnyModel,\n };\n }\n return {\n status: 'ready',\n ...buildAgentModelOptions({\n source: readData.source,\n channel: trimmedChannel,\n pinnedModel,\n modelLabel,\n refuseReplacements,\n }),\n allowAnyModel: readData.source.allowAnyModel,\n };\n }, [\n assetId,\n readPending,\n readData,\n catalogPending,\n modelLabel,\n trimmedChannel,\n pinnedModel,\n refusalPending,\n refuseReplacements,\n ]);\n return useMemo(() => ({ choices, modelLabel, catalog }), [choices, modelLabel, catalog]);\n}\n"],"names":[],"mappings":"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"}
|