@athenaintel/react 0.57.1 → 0.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +778 -9
- package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
- package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
- package/dist/agent-runtime/src/addressed-agents.js +16 -0
- package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
- package/dist/agent-runtime/src/answer-label.cjs +4 -3
- package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
- package/dist/agent-runtime/src/answer-label.d.ts +13 -6
- package/dist/agent-runtime/src/answer-label.js +4 -3
- package/dist/agent-runtime/src/answer-label.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
- package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
- package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
- package/dist/agent-runtime/src/chat-outbox.js +492 -547
- package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
- package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
- package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
- package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
- package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
- package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
- package/dist/agent-runtime/src/edit-command.d.ts +1 -1
- package/dist/agent-runtime/src/edit-command.js.map +1 -1
- package/dist/agent-runtime/src/errors.cjs +1 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -1
- package/dist/agent-runtime/src/errors.js +1 -0
- package/dist/agent-runtime/src/errors.js.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
- package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
- package/dist/agent-runtime/src/index.d.ts +14 -8
- package/dist/agent-runtime/src/lane-follow.cjs +289 -0
- package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-follow.js +289 -0
- package/dist/agent-runtime/src/lane-follow.js.map +1 -0
- package/dist/agent-runtime/src/lane-images.cjs +387 -0
- package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-images.js +387 -0
- package/dist/agent-runtime/src/lane-images.js.map +1 -0
- package/dist/agent-runtime/src/message-window.js +1 -1
- package/dist/agent-runtime/src/messages.cjs +19 -1
- package/dist/agent-runtime/src/messages.cjs.map +1 -1
- package/dist/agent-runtime/src/messages.d.ts +8 -0
- package/dist/agent-runtime/src/messages.js +21 -3
- package/dist/agent-runtime/src/messages.js.map +1 -1
- package/dist/agent-runtime/src/named-agents.cjs +301 -0
- package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/named-agents.d.ts +246 -0
- package/dist/agent-runtime/src/named-agents.js +301 -0
- package/dist/agent-runtime/src/named-agents.js.map +1 -0
- package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
- package/dist/agent-runtime/src/offline-status.d.ts +66 -2
- package/dist/agent-runtime/src/offline-status.js.map +1 -1
- package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
- package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
- package/dist/agent-runtime/src/queue.cjs +2 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -1
- package/dist/agent-runtime/src/queue.d.ts +20 -25
- package/dist/agent-runtime/src/queue.js +2 -2
- package/dist/agent-runtime/src/queue.js.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
- package/dist/agent-runtime/src/run-send.cjs +54 -0
- package/dist/agent-runtime/src/run-send.cjs.map +1 -0
- package/dist/agent-runtime/src/run-send.d.ts +51 -0
- package/dist/agent-runtime/src/run-send.js +54 -0
- package/dist/agent-runtime/src/run-send.js.map +1 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
- package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
- package/dist/agent-runtime/src/runtime.d.ts +9 -5
- package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
- package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
- package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
- package/dist/agent-runtime/src/sealed-idb.js +64 -0
- package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
- package/dist/agent-runtime/src/send-recovery.cjs +90 -118
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
- package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
- package/dist/agent-runtime/src/send-recovery.js +90 -118
- package/dist/agent-runtime/src/send-recovery.js.map +1 -1
- package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
- package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
- package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
- package/dist/agent-runtime/src/statewire-state.cjs +4 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-state.js +4 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
- package/dist/agent-runtime/src/statewire-transport.js +8 -2
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
- package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
- package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
- package/dist/agent-runtime/src/subagents.cjs +22 -29
- package/dist/agent-runtime/src/subagents.cjs.map +1 -1
- package/dist/agent-runtime/src/subagents.js +23 -30
- package/dist/agent-runtime/src/subagents.js.map +1 -1
- package/dist/agent-runtime/src/thread-extras.cjs +27 -19
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
- package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
- package/dist/agent-runtime/src/thread-extras.js +27 -19
- package/dist/agent-runtime/src/thread-extras.js.map +1 -1
- package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
- package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +12 -0
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/agent-runtime/src/tool-names.cjs +21 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-names.d.ts +8 -0
- package/dist/agent-runtime/src/tool-names.js +21 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -1
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
- package/dist/agent-runtime/src/typed-interrupts.js +48 -0
- package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
- package/dist/agent-runtime/src/types.d.ts +1 -1
- package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
- package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
- package/dist/agent-runtime/src/use-conversation-list.js +1 -0
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
- package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
- package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
- package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
- package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
- package/dist/agent-runtime/src/work-in.d.ts +127 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +13 -5
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +33 -2
- package/dist/assets/asset-panel-store.js +13 -5
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
- package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
- package/dist/auth/AthenaCredentialSourceContext.js +11 -0
- package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
- package/dist/auth/account-identity.cjs +13 -2
- package/dist/auth/account-identity.cjs.map +1 -1
- package/dist/auth/account-identity.d.ts +9 -0
- package/dist/auth/account-identity.js +13 -2
- package/dist/auth/account-identity.js.map +1 -1
- package/dist/auth/credential-source.cjs +20 -4
- package/dist/auth/credential-source.cjs.map +1 -1
- package/dist/auth/credential-source.d.ts +9 -0
- package/dist/auth/credential-source.js +20 -4
- package/dist/auth/credential-source.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +31 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -1
- package/dist/catalog/chat-pickers.d.ts +17 -0
- package/dist/catalog/chat-pickers.js +33 -2
- package/dist/catalog/chat-pickers.js.map +1 -1
- package/dist/catalog/runtime-catalog.cjs +63 -3
- package/dist/catalog/runtime-catalog.cjs.map +1 -1
- package/dist/catalog/runtime-catalog.d.ts +63 -3
- package/dist/catalog/runtime-catalog.js +64 -4
- package/dist/catalog/runtime-catalog.js.map +1 -1
- package/dist/chat/AthenaChat.cjs +337 -99
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +337 -99
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +35 -5
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +55 -2
- package/dist/chat/StatewireApprovalCard.js +37 -7
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +17 -2
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
- package/dist/chat/StatewireQueuedMessages.js +18 -3
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/chat-agent-mentions.cjs +70 -0
- package/dist/chat/chat-agent-mentions.cjs.map +1 -0
- package/dist/chat/chat-agent-mentions.d.ts +13 -0
- package/dist/chat/chat-agent-mentions.js +70 -0
- package/dist/chat/chat-agent-mentions.js.map +1 -0
- package/dist/chat/composer-actions.cjs +12 -0
- package/dist/chat/composer-actions.cjs.map +1 -0
- package/dist/chat/composer-actions.d.ts +22 -0
- package/dist/chat/composer-actions.js +12 -0
- package/dist/chat/composer-actions.js.map +1 -0
- package/dist/chat/follow-up-suggestions.cjs +185 -0
- package/dist/chat/follow-up-suggestions.cjs.map +1 -0
- package/dist/chat/follow-up-suggestions.d.ts +64 -0
- package/dist/chat/follow-up-suggestions.js +185 -0
- package/dist/chat/follow-up-suggestions.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
- package/dist/chat/super-grouping/ToolTimeline.js +4 -3
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/turn-changes.cjs +284 -0
- package/dist/chat/turn-changes.cjs.map +1 -0
- package/dist/chat/turn-changes.d.ts +130 -0
- package/dist/chat/turn-changes.js +284 -0
- package/dist/chat/turn-changes.js.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
- package/dist/chat/typed-interrupts/approval-cards.js +250 -0
- package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
- package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
- package/dist/chat/typed-interrupts/form-cards.js +289 -0
- package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
- package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
- package/dist/chat/typed-interrupts/request-file-card.js +159 -0
- package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
- package/dist/chat-ui/composer/composer-named-agents.js +13 -0
- package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
- package/dist/chat-ui/composer/slash-command-menu.js +143 -0
- package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
- package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands.cjs +74 -0
- package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
- package/dist/chat-ui/composer/slash-commands.js +74 -0
- package/dist/chat-ui/composer/slash-commands.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
- package/dist/chat-ui/composer/tiptap-composer.js +135 -9
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +3 -0
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +3 -0
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +2 -2
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -1
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
- package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
- package/dist/collab/client.cjs +17 -5
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +22 -7
- package/dist/collab/client.js +17 -5
- package/dist/collab/client.js.map +1 -1
- package/dist/composer/ComposerAttachedReferences.cjs +119 -0
- package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
- package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
- package/dist/composer/ComposerAttachedReferences.js +119 -0
- package/dist/composer/ComposerAttachedReferences.js.map +1 -0
- package/dist/composer/ComposerNamedAgents.cjs +63 -0
- package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
- package/dist/composer/ComposerNamedAgents.d.ts +16 -0
- package/dist/composer/ComposerNamedAgents.js +63 -0
- package/dist/composer/ComposerNamedAgents.js.map +1 -0
- package/dist/composer/attached-references.cjs +159 -0
- package/dist/composer/attached-references.cjs.map +1 -0
- package/dist/composer/attached-references.d.ts +86 -0
- package/dist/composer/attached-references.js +159 -0
- package/dist/composer/attached-references.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +14 -7
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +6 -1
- package/dist/composer/build-composed-message.js +14 -7
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +6 -2
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +7 -1
- package/dist/composer/composer-handoff.js +6 -2
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/folder-upload.cjs +149 -0
- package/dist/composer/folder-upload.cjs.map +1 -0
- package/dist/composer/folder-upload.d.ts +79 -0
- package/dist/composer/folder-upload.js +149 -0
- package/dist/composer/folder-upload.js.map +1 -0
- package/dist/composer/index.d.ts +1 -1
- package/dist/composer/useAttachToChat.cjs +35 -0
- package/dist/composer/useAttachToChat.cjs.map +1 -0
- package/dist/composer/useAttachToChat.d.ts +54 -0
- package/dist/composer/useAttachToChat.js +35 -0
- package/dist/composer/useAttachToChat.js.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
- package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +95 -7
- package/dist/composer/useFileUpload.cjs.map +1 -1
- package/dist/composer/useFileUpload.d.ts +21 -2
- package/dist/composer/useFileUpload.js +95 -7
- package/dist/composer/useFileUpload.js.map +1 -1
- package/dist/data/athena-api-error.cjs +125 -0
- package/dist/data/athena-api-error.cjs.map +1 -0
- package/dist/data/athena-api-error.d.ts +96 -0
- package/dist/data/athena-api-error.js +125 -0
- package/dist/data/athena-api-error.js.map +1 -0
- package/dist/data/athena-data-client.cjs +106 -0
- package/dist/data/athena-data-client.cjs.map +1 -0
- package/dist/data/athena-data-client.d.ts +74 -0
- package/dist/data/athena-data-client.js +106 -0
- package/dist/data/athena-data-client.js.map +1 -0
- package/dist/data/athena-member.cjs +93 -0
- package/dist/data/athena-member.cjs.map +1 -0
- package/dist/data/athena-member.d.ts +125 -0
- package/dist/data/athena-member.js +93 -0
- package/dist/data/athena-member.js.map +1 -0
- package/dist/data/athena-request.cjs +458 -0
- package/dist/data/athena-request.cjs.map +1 -0
- package/dist/data/athena-request.d.ts +120 -0
- package/dist/data/athena-request.js +458 -0
- package/dist/data/athena-request.js.map +1 -0
- package/dist/data/use-athena-fetch.cjs +14 -0
- package/dist/data/use-athena-fetch.cjs.map +1 -0
- package/dist/data/use-athena-fetch.d.ts +19 -0
- package/dist/data/use-athena-fetch.js +14 -0
- package/dist/data/use-athena-fetch.js.map +1 -0
- package/dist/data/use-athena-graphql.cjs +66 -0
- package/dist/data/use-athena-graphql.cjs.map +1 -0
- package/dist/data/use-athena-graphql.d.ts +56 -0
- package/dist/data/use-athena-graphql.js +66 -0
- package/dist/data/use-athena-graphql.js.map +1 -0
- package/dist/data/use-athena-rest.cjs +33 -0
- package/dist/data/use-athena-rest.cjs.map +1 -0
- package/dist/data/use-athena-rest.d.ts +21 -0
- package/dist/data/use-athena-rest.js +33 -0
- package/dist/data/use-athena-rest.js.map +1 -0
- package/dist/data/use-semantic-query.cjs +44 -0
- package/dist/data/use-semantic-query.cjs.map +1 -0
- package/dist/data/use-semantic-query.d.ts +92 -0
- package/dist/data/use-semantic-query.js +44 -0
- package/dist/data/use-semantic-query.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +7 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +7 -0
- package/dist/diagnostics/errors.js +7 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +155 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +72 -13
- package/dist/index.js +148 -4
- package/dist/index.js.map +1 -1
- package/dist/keryx-http/src/initial-sync.cjs +64 -16
- package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
- package/dist/keryx-http/src/initial-sync.d.ts +31 -1
- package/dist/keryx-http/src/initial-sync.js +64 -16
- package/dist/keryx-http/src/initial-sync.js.map +1 -1
- package/dist/keryx-http/src/own-awareness.cjs +20 -0
- package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
- package/dist/keryx-http/src/own-awareness.d.ts +50 -0
- package/dist/keryx-http/src/own-awareness.js +20 -0
- package/dist/keryx-http/src/own-awareness.js.map +1 -0
- package/dist/keryx-http/src/update-attributions.cjs +26 -1
- package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
- package/dist/keryx-http/src/update-attributions.d.ts +10 -1
- package/dist/keryx-http/src/update-attributions.js +26 -1
- package/dist/keryx-http/src/update-attributions.js.map +1 -1
- package/dist/offline/chat-outbox.cjs +262 -26
- package/dist/offline/chat-outbox.cjs.map +1 -1
- package/dist/offline/chat-outbox.d.ts +90 -12
- package/dist/offline/chat-outbox.js +263 -27
- package/dist/offline/chat-outbox.js.map +1 -1
- package/dist/provider/AthenaProvider.cjs +63 -19
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +66 -22
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/react/package.json.cjs +1 -1
- package/dist/react/package.json.js +1 -1
- package/dist/references/src/anchors/types.cjs +5 -0
- package/dist/references/src/anchors/types.cjs.map +1 -1
- package/dist/references/src/anchors/types.js +5 -0
- package/dist/references/src/anchors/types.js.map +1 -1
- package/dist/references/src/attachable.cjs +149 -0
- package/dist/references/src/attachable.cjs.map +1 -0
- package/dist/references/src/attachable.d.ts +87 -0
- package/dist/references/src/attachable.js +149 -0
- package/dist/references/src/attachable.js.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
- package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
- package/dist/runtime/statewire-plan-mode.cjs +71 -0
- package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
- package/dist/runtime/statewire-plan-mode.d.ts +88 -0
- package/dist/runtime/statewire-plan-mode.js +71 -0
- package/dist/runtime/statewire-plan-mode.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +18 -1
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +20 -0
- package/dist/runtime/statewire-run-config.js +18 -1
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-session-key.cjs +11 -5
- package/dist/runtime/statewire-session-key.cjs.map +1 -1
- package/dist/runtime/statewire-session-key.d.ts +22 -10
- package/dist/runtime/statewire-session-key.js +11 -5
- package/dist/runtime/statewire-session-key.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
- package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaAssets.cjs +394 -0
- package/dist/search/useAthenaAssets.cjs.map +1 -0
- package/dist/search/useAthenaAssets.d.ts +186 -0
- package/dist/search/useAthenaAssets.js +394 -0
- package/dist/search/useAthenaAssets.js.map +1 -0
- package/dist/sheet-range/index.cjs +4 -0
- package/dist/sheet-range/index.cjs.map +1 -1
- package/dist/sheet-range/index.d.ts +4 -2
- package/dist/sheet-range/index.js +4 -0
- package/dist/sheet-range/index.js.map +1 -1
- package/dist/sheet-range/query-range.cjs +102 -0
- package/dist/sheet-range/query-range.cjs.map +1 -0
- package/dist/sheet-range/query-range.d.ts +46 -0
- package/dist/sheet-range/query-range.js +102 -0
- package/dist/sheet-range/query-range.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/subagents/index.cjs +49 -0
- package/dist/subagents/index.cjs.map +1 -0
- package/dist/subagents/index.d.ts +16 -0
- package/dist/subagents/index.js +49 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/lane-follow.cjs +19 -0
- package/dist/subagents/lane-follow.cjs.map +1 -0
- package/dist/subagents/lane-follow.d.ts +9 -0
- package/dist/subagents/lane-follow.js +19 -0
- package/dist/subagents/lane-follow.js.map +1 -0
- package/dist/subagents/lane-model.cjs +178 -0
- package/dist/subagents/lane-model.cjs.map +1 -0
- package/dist/subagents/lane-model.d.ts +140 -0
- package/dist/subagents/lane-model.js +178 -0
- package/dist/subagents/lane-model.js.map +1 -0
- package/dist/subagents/lane-parts.cjs +517 -0
- package/dist/subagents/lane-parts.cjs.map +1 -0
- package/dist/subagents/lane-parts.d.ts +130 -0
- package/dist/subagents/lane-parts.js +517 -0
- package/dist/subagents/lane-parts.js.map +1 -0
- package/dist/subagents/subagent-lane-group.cjs +215 -0
- package/dist/subagents/subagent-lane-group.cjs.map +1 -0
- package/dist/subagents/subagent-lane-group.d.ts +67 -0
- package/dist/subagents/subagent-lane-group.js +215 -0
- package/dist/subagents/subagent-lane-group.js.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
- package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
- package/dist/subagents/subagent-transcript-drawer.js +431 -0
- package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
- package/dist/subagents/task-subagent-group.cjs +115 -0
- package/dist/subagents/task-subagent-group.cjs.map +1 -0
- package/dist/subagents/task-subagent-group.d.ts +36 -0
- package/dist/subagents/task-subagent-group.js +115 -0
- package/dist/subagents/task-subagent-group.js.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
- package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
- package/dist/subagents/use-omitted-images-in-view.js +68 -0
- package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
- package/dist/threads/Inbox.cjs +2 -2
- package/dist/threads/Inbox.cjs.map +1 -1
- package/dist/threads/SessionList.cjs +27 -24
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.js +22 -19
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +13 -7
- package/dist/threads/SessionsPage.cjs.map +1 -1
- package/dist/threads/SessionsPage.d.ts +10 -1
- package/dist/threads/SessionsPage.js +9 -3
- package/dist/threads/SessionsPage.js.map +1 -1
- package/dist/threads/live-session-rows.cjs +207 -0
- package/dist/threads/live-session-rows.cjs.map +1 -0
- package/dist/threads/live-session-rows.d.ts +175 -0
- package/dist/threads/live-session-rows.js +207 -0
- package/dist/threads/live-session-rows.js.map +1 -0
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +2 -1
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +3 -3
- package/dist/threads/session-row-parts.cjs.map +1 -1
- package/dist/threads/sessions-page-model.cjs +13 -5
- package/dist/threads/sessions-page-model.cjs.map +1 -1
- package/dist/threads/sessions-page-model.d.ts +7 -0
- package/dist/threads/sessions-page-model.js +11 -3
- package/dist/threads/sessions-page-model.js.map +1 -1
- package/dist/threads/sessions-page-storage.cjs +8 -8
- package/dist/threads/sessions-page-storage.cjs.map +1 -1
- package/dist/threads/sessions-page-storage.d.ts +5 -1
- package/dist/threads/sessions-page-storage.js +8 -8
- package/dist/threads/sessions-page-storage.js.map +1 -1
- package/dist/threads/statewire-thread-list.cjs +173 -20
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +44 -1
- package/dist/threads/statewire-thread-list.js +174 -21
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +1 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -1
- package/dist/threads/use-athena-sessions.d.ts +7 -0
- package/dist/threads/use-athena-sessions.js +1 -0
- package/dist/threads/use-athena-sessions.js.map +1 -1
- package/dist/threads/use-athena-thread-agent.cjs +31 -0
- package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
- package/dist/threads/use-athena-thread-agent.d.ts +38 -0
- package/dist/threads/use-athena-thread-agent.js +31 -0
- package/dist/threads/use-athena-thread-agent.js.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.d.ts +1 -0
- package/dist/tools/agent-creations.cjs +97 -0
- package/dist/tools/agent-creations.cjs.map +1 -0
- package/dist/tools/agent-creations.d.ts +38 -0
- package/dist/tools/agent-creations.js +97 -0
- package/dist/tools/agent-creations.js.map +1 -0
- package/dist/tools/agent-highlights.cjs +100 -0
- package/dist/tools/agent-highlights.cjs.map +1 -0
- package/dist/tools/agent-highlights.d.ts +57 -0
- package/dist/tools/agent-highlights.js +100 -0
- package/dist/tools/agent-highlights.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +1 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -1
- package/dist/tools/append-document-tool-ui.d.ts +7 -0
- package/dist/tools/append-document-tool-ui.js +2 -1
- package/dist/tools/append-document-tool-ui.js.map +1 -1
- package/dist/tools/auto-open-tools.cjs +144 -71
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.d.ts +131 -1
- package/dist/tools/auto-open-tools.js +145 -72
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/browser-tool-uis.cjs +594 -0
- package/dist/tools/browser-tool-uis.cjs.map +1 -0
- package/dist/tools/browser-tool-uis.d.ts +8 -0
- package/dist/tools/browser-tool-uis.js +594 -0
- package/dist/tools/browser-tool-uis.js.map +1 -0
- package/dist/tools/computer-asset-tool-uis.cjs +313 -0
- package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
- package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
- package/dist/tools/computer-asset-tool-uis.js +313 -0
- package/dist/tools/computer-asset-tool-uis.js.map +1 -0
- package/dist/tools/document-edit-tool-uis.cjs +218 -0
- package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/document-edit-tool-uis.d.ts +40 -0
- package/dist/tools/document-edit-tool-uis.js +218 -0
- package/dist/tools/document-edit-tool-uis.js.map +1 -0
- package/dist/tools/drive-tool-uis.cjs +425 -0
- package/dist/tools/drive-tool-uis.cjs.map +1 -0
- package/dist/tools/drive-tool-uis.d.ts +120 -0
- package/dist/tools/drive-tool-uis.js +425 -0
- package/dist/tools/drive-tool-uis.js.map +1 -0
- package/dist/tools/email-calendar-tool-uis.cjs +789 -0
- package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
- package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
- package/dist/tools/email-calendar-tool-uis.js +789 -0
- package/dist/tools/email-calendar-tool-uis.js.map +1 -0
- package/dist/tools/ontology-tool-uis.cjs +83 -0
- package/dist/tools/ontology-tool-uis.cjs.map +1 -0
- package/dist/tools/ontology-tool-uis.d.ts +9 -0
- package/dist/tools/ontology-tool-uis.js +83 -0
- package/dist/tools/ontology-tool-uis.js.map +1 -0
- package/dist/tools/orchestration-tool-uis.cjs +586 -0
- package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
- package/dist/tools/orchestration-tool-uis.d.ts +141 -0
- package/dist/tools/orchestration-tool-uis.js +586 -0
- package/dist/tools/orchestration-tool-uis.js.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
- package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
- package/dist/tools/presentation-edit-tool-uis.js +516 -0
- package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
- package/dist/tools/project-tool-uis.cjs +213 -0
- package/dist/tools/project-tool-uis.cjs.map +1 -0
- package/dist/tools/project-tool-uis.d.ts +14 -0
- package/dist/tools/project-tool-uis.js +213 -0
- package/dist/tools/project-tool-uis.js.map +1 -0
- package/dist/tools/sandbox-tool-uis.cjs +491 -0
- package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
- package/dist/tools/sandbox-tool-uis.d.ts +116 -0
- package/dist/tools/sandbox-tool-uis.js +491 -0
- package/dist/tools/sandbox-tool-uis.js.map +1 -0
- package/dist/tools/sheet-query-tool-ui.cjs +138 -0
- package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
- package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
- package/dist/tools/sheet-query-tool-ui.js +138 -0
- package/dist/tools/sheet-query-tool-ui.js.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
- package/dist/tools/studio-screenshot-tool-uis.js +262 -0
- package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
- package/dist/tools/subagent-task-tool-ui.cjs +24 -475
- package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
- package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
- package/dist/tools/subagent-task-tool-ui.js +28 -479
- package/dist/tools/subagent-task-tool-ui.js.map +1 -1
- package/dist/tools/tool-summary.cjs +36 -0
- package/dist/tools/tool-summary.cjs.map +1 -1
- package/dist/tools/tool-summary.js +36 -0
- package/dist/tools/tool-summary.js.map +1 -1
- package/dist/tools/tool-uis.cjs +181 -53
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.d.ts +40 -0
- package/dist/tools/tool-uis.js +183 -55
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/typed-interrupts/index.cjs +15 -0
- package/dist/typed-interrupts/index.cjs.map +1 -0
- package/dist/typed-interrupts/index.d.ts +20 -0
- package/dist/typed-interrupts/index.js +15 -0
- package/dist/typed-interrupts/index.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +6 -6
- package/dist/workbench/session-workbench-panes.cjs.map +1 -1
- package/package.json +28 -6
- package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
- package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
- package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useId, useRef, useState, useEffect, useImperativeHandle } from "react";
|
|
3
|
+
import { slashCommandRows } from "./slash-commands.js";
|
|
4
|
+
import { cn } from "cnfast";
|
|
5
|
+
function slashCommandRuns(command) {
|
|
6
|
+
return !command.disabledReason;
|
|
7
|
+
}
|
|
8
|
+
const SlashCommandMenu = forwardRef(
|
|
9
|
+
({ sections, onPick }, ref) => {
|
|
10
|
+
const rows = slashCommandRows(sections);
|
|
11
|
+
const listId = useId();
|
|
12
|
+
const selectedRef = useRef(null);
|
|
13
|
+
const rowsKey = rows.map((row) => row.command.name).join("\0");
|
|
14
|
+
const [selection, setSelection] = useState({ rowsKey, index: 0 });
|
|
15
|
+
const current = selection.rowsKey === rowsKey ? Math.min(selection.index, Math.max(rows.length - 1, 0)) : 0;
|
|
16
|
+
const setSelected = (index2) => setSelection({ rowsKey, index: index2 });
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
(_b = (_a = selectedRef.current) == null ? void 0 : _a.scrollIntoView) == null ? void 0 : _b.call(_a, { block: "nearest" });
|
|
20
|
+
}, [current]);
|
|
21
|
+
const pick = (match) => {
|
|
22
|
+
if (match && slashCommandRuns(match.command)) onPick(match);
|
|
23
|
+
};
|
|
24
|
+
useImperativeHandle(
|
|
25
|
+
ref,
|
|
26
|
+
() => ({
|
|
27
|
+
onKeyDown: (event) => {
|
|
28
|
+
if (rows.length === 0) return false;
|
|
29
|
+
switch (event.key) {
|
|
30
|
+
case "ArrowDown":
|
|
31
|
+
setSelected((current + 1) % rows.length);
|
|
32
|
+
return true;
|
|
33
|
+
case "ArrowUp":
|
|
34
|
+
setSelected((current - 1 + rows.length) % rows.length);
|
|
35
|
+
return true;
|
|
36
|
+
case "Enter":
|
|
37
|
+
case "NumpadEnter":
|
|
38
|
+
case "Tab":
|
|
39
|
+
if (event.isComposing) return false;
|
|
40
|
+
pick(rows[current]);
|
|
41
|
+
return true;
|
|
42
|
+
default:
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}),
|
|
47
|
+
[current, rows]
|
|
48
|
+
);
|
|
49
|
+
if (rows.length === 0) return null;
|
|
50
|
+
let index = -1;
|
|
51
|
+
return /* @__PURE__ */ jsx(
|
|
52
|
+
"div",
|
|
53
|
+
{
|
|
54
|
+
id: listId,
|
|
55
|
+
role: "listbox",
|
|
56
|
+
"aria-label": "Commands",
|
|
57
|
+
"data-testid": "composer-slash-menu",
|
|
58
|
+
className: "max-h-80 min-w-[260px] max-w-[380px] overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-lg",
|
|
59
|
+
children: sections.map((section) => (
|
|
60
|
+
// A group of the listbox's options, named by its heading.
|
|
61
|
+
/* @__PURE__ */ jsxs(
|
|
62
|
+
"fieldset",
|
|
63
|
+
{
|
|
64
|
+
"aria-label": section.title ?? void 0,
|
|
65
|
+
className: "m-0 min-w-0 border-0 p-0 py-0.5",
|
|
66
|
+
children: [
|
|
67
|
+
section.title ? /* @__PURE__ */ jsx(
|
|
68
|
+
"div",
|
|
69
|
+
{
|
|
70
|
+
"aria-hidden": true,
|
|
71
|
+
className: "px-2 pb-0.5 pt-1.5 font-medium text-[11px] text-muted-foreground uppercase tracking-wide",
|
|
72
|
+
children: section.title
|
|
73
|
+
}
|
|
74
|
+
) : null,
|
|
75
|
+
section.matches.map((match) => {
|
|
76
|
+
index += 1;
|
|
77
|
+
const rowIndex = index;
|
|
78
|
+
const isSelected = rowIndex === current;
|
|
79
|
+
const { command } = match;
|
|
80
|
+
const runs = slashCommandRuns(command);
|
|
81
|
+
const Icon = command.icon;
|
|
82
|
+
return /* @__PURE__ */ jsxs(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
ref: isSelected ? selectedRef : void 0,
|
|
86
|
+
role: "option",
|
|
87
|
+
"aria-selected": isSelected,
|
|
88
|
+
"aria-disabled": !runs || void 0,
|
|
89
|
+
"data-command": command.name,
|
|
90
|
+
tabIndex: -1,
|
|
91
|
+
onMouseMove: () => setSelected(rowIndex),
|
|
92
|
+
onClick: () => pick(match),
|
|
93
|
+
onKeyDown: (event) => {
|
|
94
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
95
|
+
event.preventDefault();
|
|
96
|
+
pick(match);
|
|
97
|
+
},
|
|
98
|
+
className: cn(
|
|
99
|
+
"flex cursor-pointer items-start gap-2 rounded px-2 py-1.5",
|
|
100
|
+
isSelected && "bg-muted",
|
|
101
|
+
!runs && "cursor-default"
|
|
102
|
+
),
|
|
103
|
+
children: [
|
|
104
|
+
Icon ? /* @__PURE__ */ jsx(
|
|
105
|
+
Icon,
|
|
106
|
+
{
|
|
107
|
+
"aria-hidden": true,
|
|
108
|
+
className: cn("mt-0.5 size-4 shrink-0 text-muted-foreground", !runs && "opacity-50")
|
|
109
|
+
}
|
|
110
|
+
) : null,
|
|
111
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
112
|
+
/* @__PURE__ */ jsxs("span", { className: cn("truncate text-sm leading-tight", !runs && "text-muted-foreground"), children: [
|
|
113
|
+
command.label,
|
|
114
|
+
match.args ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
115
|
+
" ",
|
|
116
|
+
match.args
|
|
117
|
+
] }) : command.args ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground italic", children: [
|
|
118
|
+
" ",
|
|
119
|
+
command.args
|
|
120
|
+
] }) : null
|
|
121
|
+
] }),
|
|
122
|
+
/* @__PURE__ */ jsx("span", { className: "mt-0.5 truncate text-muted-foreground text-xs leading-tight", children: runs ? command.description : command.disabledReason })
|
|
123
|
+
] })
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
command.name
|
|
127
|
+
);
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
section.title ?? ""
|
|
132
|
+
)
|
|
133
|
+
))
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
SlashCommandMenu.displayName = "SlashCommandMenu";
|
|
139
|
+
export {
|
|
140
|
+
SlashCommandMenu,
|
|
141
|
+
slashCommandRuns
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=slash-command-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-command-menu.js","sources":["../../../src/chat-ui/composer/slash-command-menu.tsx"],"sourcesContent":["/**\n * The composer's `/` menu: the commands what is typed finds, under their\n * groups, with the keyboard in the editor (arrows move, Enter or Tab picks,\n * Escape closes, as the `@` menu works). A command that can't run right now\n * lists greyed with its reason and picks nothing.\n */\n\nimport { forwardRef, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n type ComposerSlashCommand,\n type SlashCommandMatch,\n type SlashCommandSection,\n slashCommandRows,\n} from './slash-commands';\n\nexport interface SlashCommandMenuHandle {\n /** A key from the editor while the menu is open; `true` when the menu took it. */\n onKeyDown: (event: KeyboardEvent) => boolean;\n}\n\nexport interface SlashCommandMenuProps {\n sections: readonly SlashCommandSection[];\n /** Picks a row whose command can run. */\n onPick: (match: SlashCommandMatch) => void;\n}\n\n/** Whether a command can run now (no reason it can't). */\nexport function slashCommandRuns(command: ComposerSlashCommand): boolean {\n return !command.disabledReason;\n}\n\nexport const SlashCommandMenu = forwardRef<SlashCommandMenuHandle, SlashCommandMenuProps>(\n ({ sections, onPick }, ref) => {\n const rows = slashCommandRows(sections);\n const listId = useId();\n const selectedRef = useRef<HTMLDivElement>(null);\n // The selection belongs to the rows it was made in: a query that lists\n // other rows starts it over at the best match.\n const rowsKey = rows.map((row) => row.command.name).join('\\u0000');\n const [selection, setSelection] = useState({ rowsKey, index: 0 });\n const current =\n selection.rowsKey === rowsKey ? Math.min(selection.index, Math.max(rows.length - 1, 0)) : 0;\n const setSelected = (index: number) => setSelection({ rowsKey, index });\n useEffect(() => {\n selectedRef.current?.scrollIntoView?.({ block: 'nearest' });\n }, [current]);\n\n const pick = (match: SlashCommandMatch | undefined) => {\n if (match && slashCommandRuns(match.command)) onPick(match);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n onKeyDown: (event: KeyboardEvent): boolean => {\n if (rows.length === 0) return false;\n switch (event.key) {\n case 'ArrowDown':\n setSelected((current + 1) % rows.length);\n return true;\n case 'ArrowUp':\n setSelected((current - 1 + rows.length) % rows.length);\n return true;\n case 'Enter':\n case 'NumpadEnter':\n case 'Tab':\n // An input method's Enter confirms its text, never a command.\n if (event.isComposing) return false;\n // Taken even for a command that can't run, so it sends nothing either.\n pick(rows[current]);\n return true;\n default:\n return false;\n }\n },\n }),\n [current, rows],\n );\n\n if (rows.length === 0) return null;\n let index = -1;\n return (\n <div\n id={listId}\n role=\"listbox\"\n aria-label=\"Commands\"\n data-testid=\"composer-slash-menu\"\n className=\"max-h-80 min-w-[260px] max-w-[380px] overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-lg\"\n >\n {sections.map((section) => (\n // A group of the listbox's options, named by its heading.\n <fieldset\n key={section.title ?? ''}\n aria-label={section.title ?? undefined}\n className=\"m-0 min-w-0 border-0 p-0 py-0.5\"\n >\n {section.title ? (\n <div\n aria-hidden\n className=\"px-2 pb-0.5 pt-1.5 font-medium text-[11px] text-muted-foreground uppercase tracking-wide\"\n >\n {section.title}\n </div>\n ) : null}\n {section.matches.map((match) => {\n index += 1;\n const rowIndex = index;\n const isSelected = rowIndex === current;\n const { command } = match;\n const runs = slashCommandRuns(command);\n const Icon = command.icon;\n return (\n <div\n key={command.name}\n ref={isSelected ? selectedRef : undefined}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={!runs || undefined}\n data-command={command.name}\n tabIndex={-1}\n // Opening or scrolling the menu can place a row under a still\n // pointer: only a moving one takes the selection from the keyboard.\n onMouseMove={() => setSelected(rowIndex)}\n onClick={() => pick(match)}\n // The keyboard reaches the menu through the editor; an option\n // focused some other way (assistive technology) picks the same.\n onKeyDown={(event) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n pick(match);\n }}\n className={cn(\n 'flex cursor-pointer items-start gap-2 rounded px-2 py-1.5',\n isSelected && 'bg-muted',\n !runs && 'cursor-default',\n )}\n >\n {Icon ? (\n <Icon\n aria-hidden\n className={cn('mt-0.5 size-4 shrink-0 text-muted-foreground', !runs && 'opacity-50')}\n />\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className={cn('truncate text-sm leading-tight', !runs && 'text-muted-foreground')}>\n {command.label}\n {match.args ? (\n <span className=\"text-muted-foreground\"> {match.args}</span>\n ) : command.args ? (\n <span className=\"text-muted-foreground italic\"> {command.args}</span>\n ) : null}\n </span>\n <span className=\"mt-0.5 truncate text-muted-foreground text-xs leading-tight\">\n {runs ? command.description : command.disabledReason}\n </span>\n </span>\n </div>\n );\n })}\n </fieldset>\n ))}\n </div>\n );\n },\n);\n\nSlashCommandMenu.displayName = 'SlashCommandMenu';\n"],"names":["index"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const core = require("@tiptap/core");
|
|
4
|
+
const state = require("@tiptap/pm/state");
|
|
5
|
+
const Suggestion = require("@tiptap/suggestion");
|
|
6
|
+
const SLASH_COMMANDS_PLUGIN_KEY = new state.PluginKey("athenaComposerSlashCommands");
|
|
7
|
+
const SlashCommandsExtension = core.Extension.create({
|
|
8
|
+
name: "athenaComposerSlashCommands",
|
|
9
|
+
addOptions() {
|
|
10
|
+
return {
|
|
11
|
+
hasCommands: () => false,
|
|
12
|
+
callbacks: null,
|
|
13
|
+
onPick: () => {
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
addProseMirrorPlugins() {
|
|
18
|
+
const { callbacks, hasCommands, onPick } = this.options;
|
|
19
|
+
const propsOf = (props) => ({
|
|
20
|
+
query: props.query,
|
|
21
|
+
clientRect: props.clientRect ?? null,
|
|
22
|
+
pick: props.command
|
|
23
|
+
});
|
|
24
|
+
return [
|
|
25
|
+
Suggestion({
|
|
26
|
+
editor: this.editor,
|
|
27
|
+
pluginKey: SLASH_COMMANDS_PLUGIN_KEY,
|
|
28
|
+
char: "/",
|
|
29
|
+
// Arguments follow a command's name (`/open budget`).
|
|
30
|
+
allowSpaces: true,
|
|
31
|
+
// At the start of a line, or after a space: `and/or` and a URL's path are no commands.
|
|
32
|
+
startOfLine: false,
|
|
33
|
+
allowedPrefixes: [" ", " "],
|
|
34
|
+
allow: () => hasCommands(),
|
|
35
|
+
items: () => [],
|
|
36
|
+
command: ({ editor, range, props }) => {
|
|
37
|
+
onPick({ editor, range, match: props });
|
|
38
|
+
},
|
|
39
|
+
render: () => ({
|
|
40
|
+
onStart: (props) => callbacks == null ? void 0 : callbacks.onStart(propsOf(props)),
|
|
41
|
+
onUpdate: (props) => callbacks == null ? void 0 : callbacks.onUpdate(propsOf(props)),
|
|
42
|
+
onKeyDown: ({ event }) => (callbacks == null ? void 0 : callbacks.onKeyDown(event)) ?? false,
|
|
43
|
+
onExit: () => callbacks == null ? void 0 : callbacks.onExit()
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
exports.SLASH_COMMANDS_PLUGIN_KEY = SLASH_COMMANDS_PLUGIN_KEY;
|
|
50
|
+
exports.SlashCommandsExtension = SlashCommandsExtension;
|
|
51
|
+
//# sourceMappingURL=slash-commands-extension.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands-extension.cjs","sources":["../../../src/chat-ui/composer/slash-commands-extension.ts"],"sourcesContent":["/**\n * The composer's `/` trigger: Tiptap's suggestion plugin, as the `@` menu uses\n * it (`MentionSuggestionsExtension`), under a plugin key of its own so the two\n * menus never share state. The extension owns the trigger only; the composer\n * renders the menu (`SlashCommandMenu`) from the callbacks and runs what is\n * picked (`onPick`).\n */\n\nimport { type Editor, Extension, type Range } from '@tiptap/core';\nimport { PluginKey } from '@tiptap/pm/state';\nimport Suggestion from '@tiptap/suggestion';\nimport type { SlashCommandMatch } from './slash-commands';\n\n/** What the menu needs from the open suggestion. */\nexport interface SlashCommandSuggestionProps {\n /** What is typed after the `/`, spaces included. */\n query: string;\n /** Where the typed `/query` sits, for the popup to follow. */\n clientRect: (() => DOMRect | null) | null;\n /** Picks a row: the plugin hands it to `onPick` with the `/query`'s range. */\n pick: (match: SlashCommandMatch) => void;\n}\n\nexport interface SlashCommandSuggestionCallbacks {\n onStart: (props: SlashCommandSuggestionProps) => void;\n onUpdate: (props: SlashCommandSuggestionProps) => void;\n /** A key while the suggestion is active; `true` when the menu took it. */\n onKeyDown: (event: KeyboardEvent) => boolean;\n onExit: () => void;\n}\n\nexport interface SlashCommandsExtensionOptions {\n /** Whether the composer has any command now (read as the trigger is typed): none, no menu. */\n hasCommands: () => boolean;\n callbacks: SlashCommandSuggestionCallbacks | null;\n /** Runs a picked command over the `/query` it was picked from. */\n onPick: (pick: { editor: Editor; range: Range; match: SlashCommandMatch }) => void;\n}\n\nexport const SLASH_COMMANDS_PLUGIN_KEY = new PluginKey('athenaComposerSlashCommands');\n\nexport const SlashCommandsExtension = Extension.create<SlashCommandsExtensionOptions>({\n name: 'athenaComposerSlashCommands',\n\n addOptions() {\n return {\n hasCommands: () => false,\n callbacks: null,\n onPick: () => {},\n };\n },\n\n addProseMirrorPlugins() {\n const { callbacks, hasCommands, onPick } = this.options;\n const propsOf = (props: {\n query: string;\n clientRect?: (() => DOMRect | null) | null;\n command: (match: SlashCommandMatch) => void;\n }): SlashCommandSuggestionProps => ({\n query: props.query,\n clientRect: props.clientRect ?? null,\n pick: props.command,\n });\n\n return [\n Suggestion<SlashCommandMatch, SlashCommandMatch>({\n editor: this.editor,\n pluginKey: SLASH_COMMANDS_PLUGIN_KEY,\n char: '/',\n // Arguments follow a command's name (`/open budget`).\n allowSpaces: true,\n // At the start of a line, or after a space: `and/or` and a URL's path are no commands.\n startOfLine: false,\n allowedPrefixes: [' ', ' '],\n allow: () => hasCommands(),\n items: () => [],\n command: ({ editor, range, props }) => {\n onPick({ editor, range, match: props });\n },\n render: () => ({\n onStart: (props) => callbacks?.onStart(propsOf(props)),\n onUpdate: (props) => callbacks?.onUpdate(propsOf(props)),\n onKeyDown: ({ event }) => callbacks?.onKeyDown(event) ?? false,\n onExit: () => callbacks?.onExit(),\n }),\n }),\n ];\n },\n});\n"],"names":["PluginKey","Extension"],"mappings":";;;;;AAuCO,MAAM,4BAA4B,IAAIA,MAAAA,UAAU,6BAA6B;AAE7E,MAAM,yBAAyBC,KAAAA,UAAU,OAAsC;AAAA,EACpF,MAAM;AAAA,EAEN,aAAa;AACX,WAAO;AAAA,MACL,aAAa,MAAM;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAEnB;AAAA,EAEA,wBAAwB;AACtB,UAAM,EAAE,WAAW,aAAa,OAAA,IAAW,KAAK;AAChD,UAAM,UAAU,CAAC,WAImB;AAAA,MAClC,OAAO,MAAM;AAAA,MACb,YAAY,MAAM,cAAc;AAAA,MAChC,MAAM,MAAM;AAAA,IAAA;AAGd,WAAO;AAAA,MACL,WAAiD;AAAA,QAC/C,QAAQ,KAAK;AAAA,QACb,WAAW;AAAA,QACX,MAAM;AAAA;AAAA,QAEN,aAAa;AAAA;AAAA,QAEb,aAAa;AAAA,QACb,iBAAiB,CAAC,KAAK,GAAG;AAAA,QAC1B,OAAO,MAAM,YAAA;AAAA,QACb,OAAO,MAAM,CAAA;AAAA,QACb,SAAS,CAAC,EAAE,QAAQ,OAAO,YAAY;AACrC,iBAAO,EAAE,QAAQ,OAAO,OAAO,OAAO;AAAA,QACxC;AAAA,QACA,QAAQ,OAAO;AAAA,UACb,SAAS,CAAC,UAAU,uCAAW,QAAQ,QAAQ,KAAK;AAAA,UACpD,UAAU,CAAC,UAAU,uCAAW,SAAS,QAAQ,KAAK;AAAA,UACtD,WAAW,CAAC,EAAE,MAAA,OAAY,uCAAW,UAAU,WAAU;AAAA,UACzD,QAAQ,MAAM,uCAAW;AAAA,QAAO;AAAA,MAClC,CACD;AAAA,IAAA;AAAA,EAEL;AACF,CAAC;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composer's `/` trigger: Tiptap's suggestion plugin, as the `@` menu uses
|
|
3
|
+
* it (`MentionSuggestionsExtension`), under a plugin key of its own so the two
|
|
4
|
+
* menus never share state. The extension owns the trigger only; the composer
|
|
5
|
+
* renders the menu (`SlashCommandMenu`) from the callbacks and runs what is
|
|
6
|
+
* picked (`onPick`).
|
|
7
|
+
*/
|
|
8
|
+
import { type Editor, Extension, type Range } from '@tiptap/core';
|
|
9
|
+
import { PluginKey } from '@tiptap/pm/state';
|
|
10
|
+
import type { SlashCommandMatch } from './slash-commands';
|
|
11
|
+
/** What the menu needs from the open suggestion. */
|
|
12
|
+
export interface SlashCommandSuggestionProps {
|
|
13
|
+
/** What is typed after the `/`, spaces included. */
|
|
14
|
+
query: string;
|
|
15
|
+
/** Where the typed `/query` sits, for the popup to follow. */
|
|
16
|
+
clientRect: (() => DOMRect | null) | null;
|
|
17
|
+
/** Picks a row: the plugin hands it to `onPick` with the `/query`'s range. */
|
|
18
|
+
pick: (match: SlashCommandMatch) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface SlashCommandSuggestionCallbacks {
|
|
21
|
+
onStart: (props: SlashCommandSuggestionProps) => void;
|
|
22
|
+
onUpdate: (props: SlashCommandSuggestionProps) => void;
|
|
23
|
+
/** A key while the suggestion is active; `true` when the menu took it. */
|
|
24
|
+
onKeyDown: (event: KeyboardEvent) => boolean;
|
|
25
|
+
onExit: () => void;
|
|
26
|
+
}
|
|
27
|
+
export interface SlashCommandsExtensionOptions {
|
|
28
|
+
/** Whether the composer has any command now (read as the trigger is typed): none, no menu. */
|
|
29
|
+
hasCommands: () => boolean;
|
|
30
|
+
callbacks: SlashCommandSuggestionCallbacks | null;
|
|
31
|
+
/** Runs a picked command over the `/query` it was picked from. */
|
|
32
|
+
onPick: (pick: {
|
|
33
|
+
editor: Editor;
|
|
34
|
+
range: Range;
|
|
35
|
+
match: SlashCommandMatch;
|
|
36
|
+
}) => void;
|
|
37
|
+
}
|
|
38
|
+
export declare const SLASH_COMMANDS_PLUGIN_KEY: PluginKey<any>;
|
|
39
|
+
export declare const SlashCommandsExtension: Extension<SlashCommandsExtensionOptions, any>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Extension } from "@tiptap/core";
|
|
2
|
+
import { PluginKey } from "@tiptap/pm/state";
|
|
3
|
+
import Suggestion from "@tiptap/suggestion";
|
|
4
|
+
const SLASH_COMMANDS_PLUGIN_KEY = new PluginKey("athenaComposerSlashCommands");
|
|
5
|
+
const SlashCommandsExtension = Extension.create({
|
|
6
|
+
name: "athenaComposerSlashCommands",
|
|
7
|
+
addOptions() {
|
|
8
|
+
return {
|
|
9
|
+
hasCommands: () => false,
|
|
10
|
+
callbacks: null,
|
|
11
|
+
onPick: () => {
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
addProseMirrorPlugins() {
|
|
16
|
+
const { callbacks, hasCommands, onPick } = this.options;
|
|
17
|
+
const propsOf = (props) => ({
|
|
18
|
+
query: props.query,
|
|
19
|
+
clientRect: props.clientRect ?? null,
|
|
20
|
+
pick: props.command
|
|
21
|
+
});
|
|
22
|
+
return [
|
|
23
|
+
Suggestion({
|
|
24
|
+
editor: this.editor,
|
|
25
|
+
pluginKey: SLASH_COMMANDS_PLUGIN_KEY,
|
|
26
|
+
char: "/",
|
|
27
|
+
// Arguments follow a command's name (`/open budget`).
|
|
28
|
+
allowSpaces: true,
|
|
29
|
+
// At the start of a line, or after a space: `and/or` and a URL's path are no commands.
|
|
30
|
+
startOfLine: false,
|
|
31
|
+
allowedPrefixes: [" ", " "],
|
|
32
|
+
allow: () => hasCommands(),
|
|
33
|
+
items: () => [],
|
|
34
|
+
command: ({ editor, range, props }) => {
|
|
35
|
+
onPick({ editor, range, match: props });
|
|
36
|
+
},
|
|
37
|
+
render: () => ({
|
|
38
|
+
onStart: (props) => callbacks == null ? void 0 : callbacks.onStart(propsOf(props)),
|
|
39
|
+
onUpdate: (props) => callbacks == null ? void 0 : callbacks.onUpdate(propsOf(props)),
|
|
40
|
+
onKeyDown: ({ event }) => (callbacks == null ? void 0 : callbacks.onKeyDown(event)) ?? false,
|
|
41
|
+
onExit: () => callbacks == null ? void 0 : callbacks.onExit()
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
export {
|
|
48
|
+
SLASH_COMMANDS_PLUGIN_KEY,
|
|
49
|
+
SlashCommandsExtension
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=slash-commands-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands-extension.js","sources":["../../../src/chat-ui/composer/slash-commands-extension.ts"],"sourcesContent":["/**\n * The composer's `/` trigger: Tiptap's suggestion plugin, as the `@` menu uses\n * it (`MentionSuggestionsExtension`), under a plugin key of its own so the two\n * menus never share state. The extension owns the trigger only; the composer\n * renders the menu (`SlashCommandMenu`) from the callbacks and runs what is\n * picked (`onPick`).\n */\n\nimport { type Editor, Extension, type Range } from '@tiptap/core';\nimport { PluginKey } from '@tiptap/pm/state';\nimport Suggestion from '@tiptap/suggestion';\nimport type { SlashCommandMatch } from './slash-commands';\n\n/** What the menu needs from the open suggestion. */\nexport interface SlashCommandSuggestionProps {\n /** What is typed after the `/`, spaces included. */\n query: string;\n /** Where the typed `/query` sits, for the popup to follow. */\n clientRect: (() => DOMRect | null) | null;\n /** Picks a row: the plugin hands it to `onPick` with the `/query`'s range. */\n pick: (match: SlashCommandMatch) => void;\n}\n\nexport interface SlashCommandSuggestionCallbacks {\n onStart: (props: SlashCommandSuggestionProps) => void;\n onUpdate: (props: SlashCommandSuggestionProps) => void;\n /** A key while the suggestion is active; `true` when the menu took it. */\n onKeyDown: (event: KeyboardEvent) => boolean;\n onExit: () => void;\n}\n\nexport interface SlashCommandsExtensionOptions {\n /** Whether the composer has any command now (read as the trigger is typed): none, no menu. */\n hasCommands: () => boolean;\n callbacks: SlashCommandSuggestionCallbacks | null;\n /** Runs a picked command over the `/query` it was picked from. */\n onPick: (pick: { editor: Editor; range: Range; match: SlashCommandMatch }) => void;\n}\n\nexport const SLASH_COMMANDS_PLUGIN_KEY = new PluginKey('athenaComposerSlashCommands');\n\nexport const SlashCommandsExtension = Extension.create<SlashCommandsExtensionOptions>({\n name: 'athenaComposerSlashCommands',\n\n addOptions() {\n return {\n hasCommands: () => false,\n callbacks: null,\n onPick: () => {},\n };\n },\n\n addProseMirrorPlugins() {\n const { callbacks, hasCommands, onPick } = this.options;\n const propsOf = (props: {\n query: string;\n clientRect?: (() => DOMRect | null) | null;\n command: (match: SlashCommandMatch) => void;\n }): SlashCommandSuggestionProps => ({\n query: props.query,\n clientRect: props.clientRect ?? null,\n pick: props.command,\n });\n\n return [\n Suggestion<SlashCommandMatch, SlashCommandMatch>({\n editor: this.editor,\n pluginKey: SLASH_COMMANDS_PLUGIN_KEY,\n char: '/',\n // Arguments follow a command's name (`/open budget`).\n allowSpaces: true,\n // At the start of a line, or after a space: `and/or` and a URL's path are no commands.\n startOfLine: false,\n allowedPrefixes: [' ', ' '],\n allow: () => hasCommands(),\n items: () => [],\n command: ({ editor, range, props }) => {\n onPick({ editor, range, match: props });\n },\n render: () => ({\n onStart: (props) => callbacks?.onStart(propsOf(props)),\n onUpdate: (props) => callbacks?.onUpdate(propsOf(props)),\n onKeyDown: ({ event }) => callbacks?.onKeyDown(event) ?? false,\n onExit: () => callbacks?.onExit(),\n }),\n }),\n ];\n },\n});\n"],"names":[],"mappings":";;;AAuCO,MAAM,4BAA4B,IAAI,UAAU,6BAA6B;AAE7E,MAAM,yBAAyB,UAAU,OAAsC;AAAA,EACpF,MAAM;AAAA,EAEN,aAAa;AACX,WAAO;AAAA,MACL,aAAa,MAAM;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAEnB;AAAA,EAEA,wBAAwB;AACtB,UAAM,EAAE,WAAW,aAAa,OAAA,IAAW,KAAK;AAChD,UAAM,UAAU,CAAC,WAImB;AAAA,MAClC,OAAO,MAAM;AAAA,MACb,YAAY,MAAM,cAAc;AAAA,MAChC,MAAM,MAAM;AAAA,IAAA;AAGd,WAAO;AAAA,MACL,WAAiD;AAAA,QAC/C,QAAQ,KAAK;AAAA,QACb,WAAW;AAAA,QACX,MAAM;AAAA;AAAA,QAEN,aAAa;AAAA;AAAA,QAEb,aAAa;AAAA,QACb,iBAAiB,CAAC,KAAK,GAAG;AAAA,QAC1B,OAAO,MAAM,YAAA;AAAA,QACb,OAAO,MAAM,CAAA;AAAA,QACb,SAAS,CAAC,EAAE,QAAQ,OAAO,YAAY;AACrC,iBAAO,EAAE,QAAQ,OAAO,OAAO,OAAO;AAAA,QACxC;AAAA,QACA,QAAQ,OAAO;AAAA,UACb,SAAS,CAAC,UAAU,uCAAW,QAAQ,QAAQ,KAAK;AAAA,UACpD,UAAU,CAAC,UAAU,uCAAW,SAAS,QAAQ,KAAK;AAAA,UACtD,WAAW,CAAC,EAAE,MAAA,OAAY,uCAAW,UAAU,WAAU;AAAA,UACzD,QAAQ,MAAM,uCAAW;AAAA,QAAO;AAAA,MAClC,CACD;AAAA,IAAA;AAAA,EAEL;AACF,CAAC;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const MatchScore = {
|
|
4
|
+
ExactAlias: 0,
|
|
5
|
+
ExactName: 1,
|
|
6
|
+
NameWithArgs: 2,
|
|
7
|
+
AliasPrefix: 3,
|
|
8
|
+
LabelPrefix: 4,
|
|
9
|
+
AliasContains: 5,
|
|
10
|
+
LabelContains: 6,
|
|
11
|
+
AllWords: 7,
|
|
12
|
+
/** Nothing typed yet: every command, in the order given. */
|
|
13
|
+
Any: 8
|
|
14
|
+
};
|
|
15
|
+
const normalized = (text) => text.toLowerCase().trim();
|
|
16
|
+
function hasAllWords({ text, words }) {
|
|
17
|
+
return words.length > 1 && words.every((word) => text.includes(word));
|
|
18
|
+
}
|
|
19
|
+
function scoreCommand({
|
|
20
|
+
command,
|
|
21
|
+
query
|
|
22
|
+
}) {
|
|
23
|
+
const typed = query.trim();
|
|
24
|
+
if (typed === "") return { score: MatchScore.Any, args: "" };
|
|
25
|
+
const lower = normalized(typed);
|
|
26
|
+
const name = normalized(command.name);
|
|
27
|
+
const aliases = (command.aliases ?? []).map(normalized);
|
|
28
|
+
const label = normalized(command.label);
|
|
29
|
+
if (aliases.includes(lower)) return { score: MatchScore.ExactAlias, args: "" };
|
|
30
|
+
if (name === lower) return { score: MatchScore.ExactName, args: "" };
|
|
31
|
+
const word = command.args ? [name, ...aliases].filter((candidate) => candidate !== "" && lower.startsWith(`${candidate} `)).sort((a, b) => b.length - a.length)[0] : void 0;
|
|
32
|
+
if (word !== void 0) {
|
|
33
|
+
return { score: MatchScore.NameWithArgs, args: typed.slice(word.length).trim() };
|
|
34
|
+
}
|
|
35
|
+
if (aliases.some((alias) => alias.startsWith(lower)) || name.startsWith(lower)) {
|
|
36
|
+
return { score: MatchScore.AliasPrefix, args: "" };
|
|
37
|
+
}
|
|
38
|
+
if (label.startsWith(lower)) return { score: MatchScore.LabelPrefix, args: "" };
|
|
39
|
+
if (aliases.some((alias) => alias.includes(lower)) || name.includes(lower)) {
|
|
40
|
+
return { score: MatchScore.AliasContains, args: "" };
|
|
41
|
+
}
|
|
42
|
+
if (label.includes(lower)) return { score: MatchScore.LabelContains, args: "" };
|
|
43
|
+
const words = lower.split(/\s+/).filter(Boolean);
|
|
44
|
+
if ([label, name, ...aliases].some((text) => hasAllWords({ text, words }))) {
|
|
45
|
+
return { score: MatchScore.AllWords, args: "" };
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function matchSlashCommands({
|
|
50
|
+
commands,
|
|
51
|
+
query
|
|
52
|
+
}) {
|
|
53
|
+
if (/^\s/.test(query)) return [];
|
|
54
|
+
const sections = /* @__PURE__ */ new Map();
|
|
55
|
+
commands.forEach((command, index) => {
|
|
56
|
+
const scored = scoreCommand({ command, query });
|
|
57
|
+
if (scored === null) return;
|
|
58
|
+
const title = command.group ?? null;
|
|
59
|
+
const section = sections.get(title) ?? { best: Number.POSITIVE_INFINITY, first: index, scored: [] };
|
|
60
|
+
section.best = Math.min(section.best, scored.score);
|
|
61
|
+
section.scored.push({ match: { command, args: scored.args }, score: scored.score, index });
|
|
62
|
+
sections.set(title, section);
|
|
63
|
+
});
|
|
64
|
+
return [...sections.entries()].sort(([, a], [, b]) => a.best - b.best || a.first - b.first).map(([title, section]) => ({
|
|
65
|
+
title,
|
|
66
|
+
matches: section.scored.sort((a, b) => a.score - b.score || a.index - b.index).map(({ match }) => match)
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
function slashCommandRows(sections) {
|
|
70
|
+
return sections.flatMap((section) => section.matches);
|
|
71
|
+
}
|
|
72
|
+
exports.matchSlashCommands = matchSlashCommands;
|
|
73
|
+
exports.slashCommandRows = slashCommandRows;
|
|
74
|
+
//# sourceMappingURL=slash-commands.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.cjs","sources":["../../../src/chat-ui/composer/slash-commands.ts"],"sourcesContent":["/**\n * The composer's `/` commands: what a host gives the composer\n * (`TiptapComposer`'s `slashCommands`, `AthenaChat`'s `composer.slashCommands`)\n * and how what is typed after `/` finds them. Modelled on Olympus's composer\n * commands (`olympus/src/components/textbox/extensions/slash-commands/`): a\n * command matches by its label, name and aliases, and the text typed after its\n * name is the command's arguments.\n */\n\nimport type { ComponentType } from 'react';\n\n/** A command's icon, such as a `lucide-react` icon. */\nexport type ComposerSlashCommandIcon = ComponentType<{ className?: string; 'aria-hidden'?: boolean }>;\n\n/** What a command's `run` gets. */\nexport interface ComposerSlashCommandContext {\n /**\n * For a command that takes `args`: what was typed after its name or one of\n * its aliases, trimmed (`/open budget` gives `budget`). Empty when nothing\n * was, and always for a command that takes none.\n */\n args: string;\n /** Puts `text` into the draft where the command was typed, as typed (never read as Markdown). */\n insertText: (text: string) => void;\n}\n\n/** A command the composer's `/` menu offers. */\nexport interface ComposerSlashCommand {\n /** Unique among the commands given; typed after `/` it finds the command, and so do `aliases`. */\n name: string;\n /** The menu row's title. */\n label: string;\n /** The line under the title: what the command does. */\n description: string;\n /** Other words that find the command (`todo` finding plan mode). */\n aliases?: readonly string[];\n /**\n * What the command takes after its name, as the menu shows it while none is\n * typed (`a link`). Only a command with `args` stays listed, and runs with\n * them, once more words follow its name: a message that starts with another\n * command's word (\"/new hire onboarding…\") lists nothing, so Enter sends it.\n */\n args?: string;\n icon?: ComposerSlashCommandIcon;\n /** The heading the command lists under; commands of one group list together. */\n group?: string;\n /**\n * Why the command can't run right now (\"Needs a connection…\"): it lists\n * greyed with this reason under its description, and choosing it does\n * nothing. `null` or absent: it runs.\n */\n disabledReason?: string | null;\n /**\n * Runs once the person picks the command (Enter, Tab or a click). The typed\n * `/name args` is already gone from the draft. A promise that rejects is\n * reported on the diagnostics bus (`composer.slash_command`); the command\n * says anything the person should see itself.\n */\n run: (context: ComposerSlashCommandContext) => void | Promise<void>;\n}\n\n/** A command the typed query finds, with the arguments typed after its name. */\nexport interface SlashCommandMatch {\n command: ComposerSlashCommand;\n args: string;\n}\n\n/** One heading of the open menu (`null`: commands with no group) and its matches, best first. */\nexport interface SlashCommandSection {\n title: string | null;\n matches: SlashCommandMatch[];\n}\n\n/** How well a command matches, lower first: as Olympus ranks its commands. */\nconst MatchScore = {\n ExactAlias: 0,\n ExactName: 1,\n NameWithArgs: 2,\n AliasPrefix: 3,\n LabelPrefix: 4,\n AliasContains: 5,\n LabelContains: 6,\n AllWords: 7,\n /** Nothing typed yet: every command, in the order given. */\n Any: 8,\n} as const;\ntype MatchScore = (typeof MatchScore)[keyof typeof MatchScore];\n\nconst normalized = (text: string): string => text.toLowerCase().trim();\n\n/** Every word of the query somewhere in `text`, for a query of two words or more. */\nfunction hasAllWords({ text, words }: { text: string; words: readonly string[] }): boolean {\n return words.length > 1 && words.every((word) => text.includes(word));\n}\n\nfunction scoreCommand({\n command,\n query,\n}: {\n command: ComposerSlashCommand;\n query: string;\n}): { score: MatchScore; args: string } | null {\n const typed = query.trim();\n if (typed === '') return { score: MatchScore.Any, args: '' };\n const lower = normalized(typed);\n const name = normalized(command.name);\n const aliases = (command.aliases ?? []).map(normalized);\n const label = normalized(command.label);\n if (aliases.includes(lower)) return { score: MatchScore.ExactAlias, args: '' };\n if (name === lower) return { score: MatchScore.ExactName, args: '' };\n // A command that takes arguments: its name (or an alias) and then them, by\n // the longest that fits, so `open docs q3` reads past the alias `open docs`.\n const word = command.args\n ? [name, ...aliases]\n .filter((candidate) => candidate !== '' && lower.startsWith(`${candidate} `))\n .sort((a, b) => b.length - a.length)[0]\n : undefined;\n if (word !== undefined) {\n return { score: MatchScore.NameWithArgs, args: typed.slice(word.length).trim() };\n }\n if (aliases.some((alias) => alias.startsWith(lower)) || name.startsWith(lower)) {\n return { score: MatchScore.AliasPrefix, args: '' };\n }\n if (label.startsWith(lower)) return { score: MatchScore.LabelPrefix, args: '' };\n if (aliases.some((alias) => alias.includes(lower)) || name.includes(lower)) {\n return { score: MatchScore.AliasContains, args: '' };\n }\n if (label.includes(lower)) return { score: MatchScore.LabelContains, args: '' };\n const words = lower.split(/\\s+/).filter(Boolean);\n if ([label, name, ...aliases].some((text) => hasAllWords({ text, words }))) {\n return { score: MatchScore.AllWords, args: '' };\n }\n return null;\n}\n\n/** A section's matches while they are ranked: its best score and its first command's place. */\ninterface SectionScores {\n best: number;\n first: number;\n scored: Array<{ match: SlashCommandMatch; score: number; index: number }>;\n}\n\n/**\n * The menu for what is typed after `/` (`query`, the suggestion's text without\n * the slash): the commands it finds, grouped under their `group`, best match\n * first within a group and the group with the best match first, the order the\n * commands were given breaking ties. A query that starts with a space finds\n * nothing (a lone `/` in a sentence is no command). Pure.\n */\nexport function matchSlashCommands({\n commands,\n query,\n}: {\n commands: readonly ComposerSlashCommand[];\n query: string;\n}): SlashCommandSection[] {\n if (/^\\s/.test(query)) return [];\n const sections = new Map<string | null, SectionScores>();\n commands.forEach((command, index) => {\n const scored = scoreCommand({ command, query });\n if (scored === null) return;\n const title = command.group ?? null;\n const section = sections.get(title) ?? { best: Number.POSITIVE_INFINITY, first: index, scored: [] };\n section.best = Math.min(section.best, scored.score);\n section.scored.push({ match: { command, args: scored.args }, score: scored.score, index });\n sections.set(title, section);\n });\n return [...sections.entries()]\n .sort(([, a], [, b]) => a.best - b.best || a.first - b.first)\n .map(([title, section]) => ({\n title,\n matches: section.scored\n .sort((a, b) => a.score - b.score || a.index - b.index)\n .map(({ match }) => match),\n }));\n}\n\n/** The menu's rows in the order the keyboard moves through them. */\nexport function slashCommandRows(sections: readonly SlashCommandSection[]): SlashCommandMatch[] {\n return sections.flatMap((section) => section.matches);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composer's `/` commands: what a host gives the composer
|
|
3
|
+
* (`TiptapComposer`'s `slashCommands`, `AthenaChat`'s `composer.slashCommands`)
|
|
4
|
+
* and how what is typed after `/` finds them. Modelled on Olympus's composer
|
|
5
|
+
* commands (`olympus/src/components/textbox/extensions/slash-commands/`): a
|
|
6
|
+
* command matches by its label, name and aliases, and the text typed after its
|
|
7
|
+
* name is the command's arguments.
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentType } from 'react';
|
|
10
|
+
/** A command's icon, such as a `lucide-react` icon. */
|
|
11
|
+
export type ComposerSlashCommandIcon = ComponentType<{
|
|
12
|
+
className?: string;
|
|
13
|
+
'aria-hidden'?: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
/** What a command's `run` gets. */
|
|
16
|
+
export interface ComposerSlashCommandContext {
|
|
17
|
+
/**
|
|
18
|
+
* For a command that takes `args`: what was typed after its name or one of
|
|
19
|
+
* its aliases, trimmed (`/open budget` gives `budget`). Empty when nothing
|
|
20
|
+
* was, and always for a command that takes none.
|
|
21
|
+
*/
|
|
22
|
+
args: string;
|
|
23
|
+
/** Puts `text` into the draft where the command was typed, as typed (never read as Markdown). */
|
|
24
|
+
insertText: (text: string) => void;
|
|
25
|
+
}
|
|
26
|
+
/** A command the composer's `/` menu offers. */
|
|
27
|
+
export interface ComposerSlashCommand {
|
|
28
|
+
/** Unique among the commands given; typed after `/` it finds the command, and so do `aliases`. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** The menu row's title. */
|
|
31
|
+
label: string;
|
|
32
|
+
/** The line under the title: what the command does. */
|
|
33
|
+
description: string;
|
|
34
|
+
/** Other words that find the command (`todo` finding plan mode). */
|
|
35
|
+
aliases?: readonly string[];
|
|
36
|
+
/**
|
|
37
|
+
* What the command takes after its name, as the menu shows it while none is
|
|
38
|
+
* typed (`a link`). Only a command with `args` stays listed, and runs with
|
|
39
|
+
* them, once more words follow its name: a message that starts with another
|
|
40
|
+
* command's word ("/new hire onboarding…") lists nothing, so Enter sends it.
|
|
41
|
+
*/
|
|
42
|
+
args?: string;
|
|
43
|
+
icon?: ComposerSlashCommandIcon;
|
|
44
|
+
/** The heading the command lists under; commands of one group list together. */
|
|
45
|
+
group?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Why the command can't run right now ("Needs a connection…"): it lists
|
|
48
|
+
* greyed with this reason under its description, and choosing it does
|
|
49
|
+
* nothing. `null` or absent: it runs.
|
|
50
|
+
*/
|
|
51
|
+
disabledReason?: string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Runs once the person picks the command (Enter, Tab or a click). The typed
|
|
54
|
+
* `/name args` is already gone from the draft. A promise that rejects is
|
|
55
|
+
* reported on the diagnostics bus (`composer.slash_command`); the command
|
|
56
|
+
* says anything the person should see itself.
|
|
57
|
+
*/
|
|
58
|
+
run: (context: ComposerSlashCommandContext) => void | Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
/** A command the typed query finds, with the arguments typed after its name. */
|
|
61
|
+
export interface SlashCommandMatch {
|
|
62
|
+
command: ComposerSlashCommand;
|
|
63
|
+
args: string;
|
|
64
|
+
}
|
|
65
|
+
/** One heading of the open menu (`null`: commands with no group) and its matches, best first. */
|
|
66
|
+
export interface SlashCommandSection {
|
|
67
|
+
title: string | null;
|
|
68
|
+
matches: SlashCommandMatch[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The menu for what is typed after `/` (`query`, the suggestion's text without
|
|
72
|
+
* the slash): the commands it finds, grouped under their `group`, best match
|
|
73
|
+
* first within a group and the group with the best match first, the order the
|
|
74
|
+
* commands were given breaking ties. A query that starts with a space finds
|
|
75
|
+
* nothing (a lone `/` in a sentence is no command). Pure.
|
|
76
|
+
*/
|
|
77
|
+
export declare function matchSlashCommands({ commands, query, }: {
|
|
78
|
+
commands: readonly ComposerSlashCommand[];
|
|
79
|
+
query: string;
|
|
80
|
+
}): SlashCommandSection[];
|
|
81
|
+
/** The menu's rows in the order the keyboard moves through them. */
|
|
82
|
+
export declare function slashCommandRows(sections: readonly SlashCommandSection[]): SlashCommandMatch[];
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const MatchScore = {
|
|
2
|
+
ExactAlias: 0,
|
|
3
|
+
ExactName: 1,
|
|
4
|
+
NameWithArgs: 2,
|
|
5
|
+
AliasPrefix: 3,
|
|
6
|
+
LabelPrefix: 4,
|
|
7
|
+
AliasContains: 5,
|
|
8
|
+
LabelContains: 6,
|
|
9
|
+
AllWords: 7,
|
|
10
|
+
/** Nothing typed yet: every command, in the order given. */
|
|
11
|
+
Any: 8
|
|
12
|
+
};
|
|
13
|
+
const normalized = (text) => text.toLowerCase().trim();
|
|
14
|
+
function hasAllWords({ text, words }) {
|
|
15
|
+
return words.length > 1 && words.every((word) => text.includes(word));
|
|
16
|
+
}
|
|
17
|
+
function scoreCommand({
|
|
18
|
+
command,
|
|
19
|
+
query
|
|
20
|
+
}) {
|
|
21
|
+
const typed = query.trim();
|
|
22
|
+
if (typed === "") return { score: MatchScore.Any, args: "" };
|
|
23
|
+
const lower = normalized(typed);
|
|
24
|
+
const name = normalized(command.name);
|
|
25
|
+
const aliases = (command.aliases ?? []).map(normalized);
|
|
26
|
+
const label = normalized(command.label);
|
|
27
|
+
if (aliases.includes(lower)) return { score: MatchScore.ExactAlias, args: "" };
|
|
28
|
+
if (name === lower) return { score: MatchScore.ExactName, args: "" };
|
|
29
|
+
const word = command.args ? [name, ...aliases].filter((candidate) => candidate !== "" && lower.startsWith(`${candidate} `)).sort((a, b) => b.length - a.length)[0] : void 0;
|
|
30
|
+
if (word !== void 0) {
|
|
31
|
+
return { score: MatchScore.NameWithArgs, args: typed.slice(word.length).trim() };
|
|
32
|
+
}
|
|
33
|
+
if (aliases.some((alias) => alias.startsWith(lower)) || name.startsWith(lower)) {
|
|
34
|
+
return { score: MatchScore.AliasPrefix, args: "" };
|
|
35
|
+
}
|
|
36
|
+
if (label.startsWith(lower)) return { score: MatchScore.LabelPrefix, args: "" };
|
|
37
|
+
if (aliases.some((alias) => alias.includes(lower)) || name.includes(lower)) {
|
|
38
|
+
return { score: MatchScore.AliasContains, args: "" };
|
|
39
|
+
}
|
|
40
|
+
if (label.includes(lower)) return { score: MatchScore.LabelContains, args: "" };
|
|
41
|
+
const words = lower.split(/\s+/).filter(Boolean);
|
|
42
|
+
if ([label, name, ...aliases].some((text) => hasAllWords({ text, words }))) {
|
|
43
|
+
return { score: MatchScore.AllWords, args: "" };
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function matchSlashCommands({
|
|
48
|
+
commands,
|
|
49
|
+
query
|
|
50
|
+
}) {
|
|
51
|
+
if (/^\s/.test(query)) return [];
|
|
52
|
+
const sections = /* @__PURE__ */ new Map();
|
|
53
|
+
commands.forEach((command, index) => {
|
|
54
|
+
const scored = scoreCommand({ command, query });
|
|
55
|
+
if (scored === null) return;
|
|
56
|
+
const title = command.group ?? null;
|
|
57
|
+
const section = sections.get(title) ?? { best: Number.POSITIVE_INFINITY, first: index, scored: [] };
|
|
58
|
+
section.best = Math.min(section.best, scored.score);
|
|
59
|
+
section.scored.push({ match: { command, args: scored.args }, score: scored.score, index });
|
|
60
|
+
sections.set(title, section);
|
|
61
|
+
});
|
|
62
|
+
return [...sections.entries()].sort(([, a], [, b]) => a.best - b.best || a.first - b.first).map(([title, section]) => ({
|
|
63
|
+
title,
|
|
64
|
+
matches: section.scored.sort((a, b) => a.score - b.score || a.index - b.index).map(({ match }) => match)
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
function slashCommandRows(sections) {
|
|
68
|
+
return sections.flatMap((section) => section.matches);
|
|
69
|
+
}
|
|
70
|
+
export {
|
|
71
|
+
matchSlashCommands,
|
|
72
|
+
slashCommandRows
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=slash-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.js","sources":["../../../src/chat-ui/composer/slash-commands.ts"],"sourcesContent":["/**\n * The composer's `/` commands: what a host gives the composer\n * (`TiptapComposer`'s `slashCommands`, `AthenaChat`'s `composer.slashCommands`)\n * and how what is typed after `/` finds them. Modelled on Olympus's composer\n * commands (`olympus/src/components/textbox/extensions/slash-commands/`): a\n * command matches by its label, name and aliases, and the text typed after its\n * name is the command's arguments.\n */\n\nimport type { ComponentType } from 'react';\n\n/** A command's icon, such as a `lucide-react` icon. */\nexport type ComposerSlashCommandIcon = ComponentType<{ className?: string; 'aria-hidden'?: boolean }>;\n\n/** What a command's `run` gets. */\nexport interface ComposerSlashCommandContext {\n /**\n * For a command that takes `args`: what was typed after its name or one of\n * its aliases, trimmed (`/open budget` gives `budget`). Empty when nothing\n * was, and always for a command that takes none.\n */\n args: string;\n /** Puts `text` into the draft where the command was typed, as typed (never read as Markdown). */\n insertText: (text: string) => void;\n}\n\n/** A command the composer's `/` menu offers. */\nexport interface ComposerSlashCommand {\n /** Unique among the commands given; typed after `/` it finds the command, and so do `aliases`. */\n name: string;\n /** The menu row's title. */\n label: string;\n /** The line under the title: what the command does. */\n description: string;\n /** Other words that find the command (`todo` finding plan mode). */\n aliases?: readonly string[];\n /**\n * What the command takes after its name, as the menu shows it while none is\n * typed (`a link`). Only a command with `args` stays listed, and runs with\n * them, once more words follow its name: a message that starts with another\n * command's word (\"/new hire onboarding…\") lists nothing, so Enter sends it.\n */\n args?: string;\n icon?: ComposerSlashCommandIcon;\n /** The heading the command lists under; commands of one group list together. */\n group?: string;\n /**\n * Why the command can't run right now (\"Needs a connection…\"): it lists\n * greyed with this reason under its description, and choosing it does\n * nothing. `null` or absent: it runs.\n */\n disabledReason?: string | null;\n /**\n * Runs once the person picks the command (Enter, Tab or a click). The typed\n * `/name args` is already gone from the draft. A promise that rejects is\n * reported on the diagnostics bus (`composer.slash_command`); the command\n * says anything the person should see itself.\n */\n run: (context: ComposerSlashCommandContext) => void | Promise<void>;\n}\n\n/** A command the typed query finds, with the arguments typed after its name. */\nexport interface SlashCommandMatch {\n command: ComposerSlashCommand;\n args: string;\n}\n\n/** One heading of the open menu (`null`: commands with no group) and its matches, best first. */\nexport interface SlashCommandSection {\n title: string | null;\n matches: SlashCommandMatch[];\n}\n\n/** How well a command matches, lower first: as Olympus ranks its commands. */\nconst MatchScore = {\n ExactAlias: 0,\n ExactName: 1,\n NameWithArgs: 2,\n AliasPrefix: 3,\n LabelPrefix: 4,\n AliasContains: 5,\n LabelContains: 6,\n AllWords: 7,\n /** Nothing typed yet: every command, in the order given. */\n Any: 8,\n} as const;\ntype MatchScore = (typeof MatchScore)[keyof typeof MatchScore];\n\nconst normalized = (text: string): string => text.toLowerCase().trim();\n\n/** Every word of the query somewhere in `text`, for a query of two words or more. */\nfunction hasAllWords({ text, words }: { text: string; words: readonly string[] }): boolean {\n return words.length > 1 && words.every((word) => text.includes(word));\n}\n\nfunction scoreCommand({\n command,\n query,\n}: {\n command: ComposerSlashCommand;\n query: string;\n}): { score: MatchScore; args: string } | null {\n const typed = query.trim();\n if (typed === '') return { score: MatchScore.Any, args: '' };\n const lower = normalized(typed);\n const name = normalized(command.name);\n const aliases = (command.aliases ?? []).map(normalized);\n const label = normalized(command.label);\n if (aliases.includes(lower)) return { score: MatchScore.ExactAlias, args: '' };\n if (name === lower) return { score: MatchScore.ExactName, args: '' };\n // A command that takes arguments: its name (or an alias) and then them, by\n // the longest that fits, so `open docs q3` reads past the alias `open docs`.\n const word = command.args\n ? [name, ...aliases]\n .filter((candidate) => candidate !== '' && lower.startsWith(`${candidate} `))\n .sort((a, b) => b.length - a.length)[0]\n : undefined;\n if (word !== undefined) {\n return { score: MatchScore.NameWithArgs, args: typed.slice(word.length).trim() };\n }\n if (aliases.some((alias) => alias.startsWith(lower)) || name.startsWith(lower)) {\n return { score: MatchScore.AliasPrefix, args: '' };\n }\n if (label.startsWith(lower)) return { score: MatchScore.LabelPrefix, args: '' };\n if (aliases.some((alias) => alias.includes(lower)) || name.includes(lower)) {\n return { score: MatchScore.AliasContains, args: '' };\n }\n if (label.includes(lower)) return { score: MatchScore.LabelContains, args: '' };\n const words = lower.split(/\\s+/).filter(Boolean);\n if ([label, name, ...aliases].some((text) => hasAllWords({ text, words }))) {\n return { score: MatchScore.AllWords, args: '' };\n }\n return null;\n}\n\n/** A section's matches while they are ranked: its best score and its first command's place. */\ninterface SectionScores {\n best: number;\n first: number;\n scored: Array<{ match: SlashCommandMatch; score: number; index: number }>;\n}\n\n/**\n * The menu for what is typed after `/` (`query`, the suggestion's text without\n * the slash): the commands it finds, grouped under their `group`, best match\n * first within a group and the group with the best match first, the order the\n * commands were given breaking ties. A query that starts with a space finds\n * nothing (a lone `/` in a sentence is no command). Pure.\n */\nexport function matchSlashCommands({\n commands,\n query,\n}: {\n commands: readonly ComposerSlashCommand[];\n query: string;\n}): SlashCommandSection[] {\n if (/^\\s/.test(query)) return [];\n const sections = new Map<string | null, SectionScores>();\n commands.forEach((command, index) => {\n const scored = scoreCommand({ command, query });\n if (scored === null) return;\n const title = command.group ?? null;\n const section = sections.get(title) ?? { best: Number.POSITIVE_INFINITY, first: index, scored: [] };\n section.best = Math.min(section.best, scored.score);\n section.scored.push({ match: { command, args: scored.args }, score: scored.score, index });\n sections.set(title, section);\n });\n return [...sections.entries()]\n .sort(([, a], [, b]) => a.best - b.best || a.first - b.first)\n .map(([title, section]) => ({\n title,\n matches: section.scored\n .sort((a, b) => a.score - b.score || a.index - b.index)\n .map(({ match }) => match),\n }));\n}\n\n/** The menu's rows in the order the keyboard moves through them. */\nexport function slashCommandRows(sections: readonly SlashCommandSection[]): SlashCommandMatch[] {\n return sections.flatMap((section) => section.matches);\n}\n"],"names":[],"mappings":"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"}
|