@athenaintel/react 0.57.2 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +795 -12
- package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
- package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
- package/dist/agent-runtime/src/addressed-agents.js +16 -0
- package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
- package/dist/agent-runtime/src/answer-label.cjs +4 -3
- package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
- package/dist/agent-runtime/src/answer-label.d.ts +13 -6
- package/dist/agent-runtime/src/answer-label.js +4 -3
- package/dist/agent-runtime/src/answer-label.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
- package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
- package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
- package/dist/agent-runtime/src/chat-outbox.js +492 -547
- package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.cjs +0 -16
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
- package/dist/agent-runtime/src/composer-markdown.js +1 -17
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
- package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
- package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
- package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
- package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
- package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
- package/dist/agent-runtime/src/edit-command.d.ts +1 -1
- package/dist/agent-runtime/src/edit-command.js.map +1 -1
- package/dist/agent-runtime/src/errors.cjs +1 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -1
- package/dist/agent-runtime/src/errors.js +1 -0
- package/dist/agent-runtime/src/errors.js.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
- package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
- package/dist/agent-runtime/src/index.d.ts +14 -8
- package/dist/agent-runtime/src/lane-follow.cjs +289 -0
- package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-follow.js +289 -0
- package/dist/agent-runtime/src/lane-follow.js.map +1 -0
- package/dist/agent-runtime/src/lane-images.cjs +387 -0
- package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-images.js +387 -0
- package/dist/agent-runtime/src/lane-images.js.map +1 -0
- package/dist/agent-runtime/src/message-window.js +1 -1
- package/dist/agent-runtime/src/messages.cjs +19 -1
- package/dist/agent-runtime/src/messages.cjs.map +1 -1
- package/dist/agent-runtime/src/messages.d.ts +8 -0
- package/dist/agent-runtime/src/messages.js +21 -3
- package/dist/agent-runtime/src/messages.js.map +1 -1
- package/dist/agent-runtime/src/named-agents.cjs +301 -0
- package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/named-agents.d.ts +246 -0
- package/dist/agent-runtime/src/named-agents.js +301 -0
- package/dist/agent-runtime/src/named-agents.js.map +1 -0
- package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
- package/dist/agent-runtime/src/offline-status.d.ts +93 -2
- package/dist/agent-runtime/src/offline-status.js.map +1 -1
- package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
- package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
- package/dist/agent-runtime/src/queue.cjs +2 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -1
- package/dist/agent-runtime/src/queue.d.ts +20 -25
- package/dist/agent-runtime/src/queue.js +2 -2
- package/dist/agent-runtime/src/queue.js.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
- package/dist/agent-runtime/src/run-send.cjs +54 -0
- package/dist/agent-runtime/src/run-send.cjs.map +1 -0
- package/dist/agent-runtime/src/run-send.d.ts +51 -0
- package/dist/agent-runtime/src/run-send.js +54 -0
- package/dist/agent-runtime/src/run-send.js.map +1 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
- package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
- package/dist/agent-runtime/src/runtime.d.ts +9 -5
- package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
- package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
- package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
- package/dist/agent-runtime/src/sealed-idb.js +64 -0
- package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
- package/dist/agent-runtime/src/send-recovery.cjs +90 -118
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
- package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
- package/dist/agent-runtime/src/send-recovery.js +90 -118
- package/dist/agent-runtime/src/send-recovery.js.map +1 -1
- package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
- package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
- package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
- package/dist/agent-runtime/src/statewire-state.cjs +4 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-state.js +4 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
- package/dist/agent-runtime/src/statewire-transport.js +8 -2
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
- package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
- package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
- package/dist/agent-runtime/src/subagents.cjs +22 -29
- package/dist/agent-runtime/src/subagents.cjs.map +1 -1
- package/dist/agent-runtime/src/subagents.js +23 -30
- package/dist/agent-runtime/src/subagents.js.map +1 -1
- package/dist/agent-runtime/src/thread-extras.cjs +27 -19
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
- package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
- package/dist/agent-runtime/src/thread-extras.js +27 -19
- package/dist/agent-runtime/src/thread-extras.js.map +1 -1
- package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
- package/dist/agent-runtime/src/tool-metadata.cjs +19 -0
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +19 -0
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/agent-runtime/src/tool-names.cjs +21 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-names.d.ts +8 -0
- package/dist/agent-runtime/src/tool-names.js +21 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -1
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
- package/dist/agent-runtime/src/typed-interrupts.js +48 -0
- package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
- package/dist/agent-runtime/src/types.d.ts +1 -1
- package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
- package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
- package/dist/agent-runtime/src/use-conversation-list.js +1 -0
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
- package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
- package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
- package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
- package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
- package/dist/agent-runtime/src/work-in.d.ts +127 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +13 -5
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +33 -2
- package/dist/assets/asset-panel-store.js +13 -5
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
- package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
- package/dist/auth/AthenaCredentialSourceContext.js +11 -0
- package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
- package/dist/auth/account-identity.cjs +13 -2
- package/dist/auth/account-identity.cjs.map +1 -1
- package/dist/auth/account-identity.d.ts +9 -0
- package/dist/auth/account-identity.js +13 -2
- package/dist/auth/account-identity.js.map +1 -1
- package/dist/auth/credential-source.cjs +20 -4
- package/dist/auth/credential-source.cjs.map +1 -1
- package/dist/auth/credential-source.d.ts +9 -0
- package/dist/auth/credential-source.js +20 -4
- package/dist/auth/credential-source.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +31 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -1
- package/dist/catalog/chat-pickers.d.ts +17 -0
- package/dist/catalog/chat-pickers.js +33 -2
- package/dist/catalog/chat-pickers.js.map +1 -1
- package/dist/catalog/runtime-catalog.cjs +63 -3
- package/dist/catalog/runtime-catalog.cjs.map +1 -1
- package/dist/catalog/runtime-catalog.d.ts +63 -3
- package/dist/catalog/runtime-catalog.js +64 -4
- package/dist/catalog/runtime-catalog.js.map +1 -1
- package/dist/chat/AthenaChat.cjs +301 -98
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +302 -99
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +35 -5
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +55 -2
- package/dist/chat/StatewireApprovalCard.js +37 -7
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +17 -2
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
- package/dist/chat/StatewireQueuedMessages.js +18 -3
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/chat-agent-mentions.cjs +70 -0
- package/dist/chat/chat-agent-mentions.cjs.map +1 -0
- package/dist/chat/chat-agent-mentions.d.ts +13 -0
- package/dist/chat/chat-agent-mentions.js +70 -0
- package/dist/chat/chat-agent-mentions.js.map +1 -0
- package/dist/chat/composer-actions.cjs +12 -0
- package/dist/chat/composer-actions.cjs.map +1 -0
- package/dist/chat/composer-actions.d.ts +22 -0
- package/dist/chat/composer-actions.js +12 -0
- package/dist/chat/composer-actions.js.map +1 -0
- package/dist/chat/follow-up-suggestions.cjs +185 -0
- package/dist/chat/follow-up-suggestions.cjs.map +1 -0
- package/dist/chat/follow-up-suggestions.d.ts +64 -0
- package/dist/chat/follow-up-suggestions.js +185 -0
- package/dist/chat/follow-up-suggestions.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
- package/dist/chat/super-grouping/ToolTimeline.js +4 -3
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/turn-changes.cjs +284 -0
- package/dist/chat/turn-changes.cjs.map +1 -0
- package/dist/chat/turn-changes.d.ts +130 -0
- package/dist/chat/turn-changes.js +284 -0
- package/dist/chat/turn-changes.js.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
- package/dist/chat/typed-interrupts/approval-cards.js +250 -0
- package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
- package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
- package/dist/chat/typed-interrupts/form-cards.js +289 -0
- package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
- package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
- package/dist/chat/typed-interrupts/request-file-card.js +159 -0
- package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
- package/dist/chat-ui/composer/composer-named-agents.js +13 -0
- package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
- package/dist/chat-ui/composer/slash-command-menu.js +143 -0
- package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
- package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands.cjs +74 -0
- package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
- package/dist/chat-ui/composer/slash-commands.js +74 -0
- package/dist/chat-ui/composer/slash-commands.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
- package/dist/chat-ui/composer/tiptap-composer.js +135 -9
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +5 -0
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +4 -2
- package/dist/chat-ui/index.js +5 -0
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +10 -4
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +11 -5
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -1
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +20 -2
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +10 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +22 -4
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +45 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +48 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +45 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.cjs +89 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.d.ts +8 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.js +89 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +140 -116
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.d.ts +46 -12
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +141 -117
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +272 -25
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +274 -27
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
- package/dist/chat-ui/mentions/use-asset-icon-app-url.cjs +12 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.d.ts +8 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.js +12 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.js.map +1 -0
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
- package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
- package/dist/collab/client.cjs +41 -6
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +38 -7
- package/dist/collab/client.js +41 -6
- package/dist/collab/client.js.map +1 -1
- package/dist/composer/ComposerAttachedReferences.cjs +119 -0
- package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
- package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
- package/dist/composer/ComposerAttachedReferences.js +119 -0
- package/dist/composer/ComposerAttachedReferences.js.map +1 -0
- package/dist/composer/ComposerNamedAgents.cjs +63 -0
- package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
- package/dist/composer/ComposerNamedAgents.d.ts +16 -0
- package/dist/composer/ComposerNamedAgents.js +63 -0
- package/dist/composer/ComposerNamedAgents.js.map +1 -0
- package/dist/composer/attached-references.cjs +159 -0
- package/dist/composer/attached-references.cjs.map +1 -0
- package/dist/composer/attached-references.d.ts +86 -0
- package/dist/composer/attached-references.js +159 -0
- package/dist/composer/attached-references.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +14 -7
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +6 -1
- package/dist/composer/build-composed-message.js +14 -7
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +6 -2
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +7 -1
- package/dist/composer/composer-handoff.js +6 -2
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/folder-upload.cjs +149 -0
- package/dist/composer/folder-upload.cjs.map +1 -0
- package/dist/composer/folder-upload.d.ts +79 -0
- package/dist/composer/folder-upload.js +149 -0
- package/dist/composer/folder-upload.js.map +1 -0
- package/dist/composer/index.d.ts +1 -1
- package/dist/composer/staged-message-metadata.cjs +12 -0
- package/dist/composer/staged-message-metadata.cjs.map +1 -0
- package/dist/composer/staged-message-metadata.d.ts +15 -0
- package/dist/composer/staged-message-metadata.js +12 -0
- package/dist/composer/staged-message-metadata.js.map +1 -0
- package/dist/composer/useAttachToChat.cjs +35 -0
- package/dist/composer/useAttachToChat.cjs.map +1 -0
- package/dist/composer/useAttachToChat.d.ts +54 -0
- package/dist/composer/useAttachToChat.js +35 -0
- package/dist/composer/useAttachToChat.js.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
- package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +95 -7
- package/dist/composer/useFileUpload.cjs.map +1 -1
- package/dist/composer/useFileUpload.d.ts +21 -2
- package/dist/composer/useFileUpload.js +95 -7
- package/dist/composer/useFileUpload.js.map +1 -1
- package/dist/data/athena-api-error.cjs +125 -0
- package/dist/data/athena-api-error.cjs.map +1 -0
- package/dist/data/athena-api-error.d.ts +96 -0
- package/dist/data/athena-api-error.js +125 -0
- package/dist/data/athena-api-error.js.map +1 -0
- package/dist/data/athena-data-client.cjs +106 -0
- package/dist/data/athena-data-client.cjs.map +1 -0
- package/dist/data/athena-data-client.d.ts +74 -0
- package/dist/data/athena-data-client.js +106 -0
- package/dist/data/athena-data-client.js.map +1 -0
- package/dist/data/athena-member.cjs +93 -0
- package/dist/data/athena-member.cjs.map +1 -0
- package/dist/data/athena-member.d.ts +125 -0
- package/dist/data/athena-member.js +93 -0
- package/dist/data/athena-member.js.map +1 -0
- package/dist/data/athena-request.cjs +460 -0
- package/dist/data/athena-request.cjs.map +1 -0
- package/dist/data/athena-request.d.ts +120 -0
- package/dist/data/athena-request.js +460 -0
- package/dist/data/athena-request.js.map +1 -0
- package/dist/data/use-athena-fetch.cjs +14 -0
- package/dist/data/use-athena-fetch.cjs.map +1 -0
- package/dist/data/use-athena-fetch.d.ts +19 -0
- package/dist/data/use-athena-fetch.js +14 -0
- package/dist/data/use-athena-fetch.js.map +1 -0
- package/dist/data/use-athena-graphql.cjs +66 -0
- package/dist/data/use-athena-graphql.cjs.map +1 -0
- package/dist/data/use-athena-graphql.d.ts +56 -0
- package/dist/data/use-athena-graphql.js +66 -0
- package/dist/data/use-athena-graphql.js.map +1 -0
- package/dist/data/use-athena-rest.cjs +33 -0
- package/dist/data/use-athena-rest.cjs.map +1 -0
- package/dist/data/use-athena-rest.d.ts +21 -0
- package/dist/data/use-athena-rest.js +33 -0
- package/dist/data/use-athena-rest.js.map +1 -0
- package/dist/data/use-semantic-query.cjs +44 -0
- package/dist/data/use-semantic-query.cjs.map +1 -0
- package/dist/data/use-semantic-query.d.ts +92 -0
- package/dist/data/use-semantic-query.js +44 -0
- package/dist/data/use-semantic-query.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +7 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +7 -0
- package/dist/diagnostics/errors.js +7 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +155 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +72 -13
- package/dist/index.js +148 -4
- package/dist/index.js.map +1 -1
- package/dist/keryx-http/src/initial-sync.cjs +64 -16
- package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
- package/dist/keryx-http/src/initial-sync.d.ts +31 -1
- package/dist/keryx-http/src/initial-sync.js +64 -16
- package/dist/keryx-http/src/initial-sync.js.map +1 -1
- package/dist/keryx-http/src/own-awareness.cjs +20 -0
- package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
- package/dist/keryx-http/src/own-awareness.d.ts +50 -0
- package/dist/keryx-http/src/own-awareness.js +20 -0
- package/dist/keryx-http/src/own-awareness.js.map +1 -0
- package/dist/keryx-http/src/update-attributions.cjs +26 -1
- package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
- package/dist/keryx-http/src/update-attributions.d.ts +10 -1
- package/dist/keryx-http/src/update-attributions.js +26 -1
- package/dist/keryx-http/src/update-attributions.js.map +1 -1
- package/dist/offline/chat-outbox.cjs +262 -26
- package/dist/offline/chat-outbox.cjs.map +1 -1
- package/dist/offline/chat-outbox.d.ts +90 -12
- package/dist/offline/chat-outbox.js +263 -27
- package/dist/offline/chat-outbox.js.map +1 -1
- package/dist/provider/AthenaProvider.cjs +60 -22
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +61 -23
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/react/package.json.cjs +1 -1
- package/dist/react/package.json.js +1 -1
- package/dist/references/src/anchors/parse.cjs +11 -1
- package/dist/references/src/anchors/parse.cjs.map +1 -1
- package/dist/references/src/anchors/parse.js +11 -1
- package/dist/references/src/anchors/parse.js.map +1 -1
- package/dist/references/src/anchors/schemas.d.ts +1 -0
- package/dist/references/src/anchors/serialize.cjs +1 -0
- package/dist/references/src/anchors/serialize.cjs.map +1 -1
- package/dist/references/src/anchors/serialize.js +1 -0
- package/dist/references/src/anchors/serialize.js.map +1 -1
- package/dist/references/src/anchors/types.cjs +5 -0
- package/dist/references/src/anchors/types.cjs.map +1 -1
- package/dist/references/src/anchors/types.d.ts +9 -0
- package/dist/references/src/anchors/types.js +5 -0
- package/dist/references/src/anchors/types.js.map +1 -1
- package/dist/references/src/attachable.cjs +149 -0
- package/dist/references/src/attachable.cjs.map +1 -0
- package/dist/references/src/attachable.d.ts +87 -0
- package/dist/references/src/attachable.js +149 -0
- package/dist/references/src/attachable.js.map +1 -0
- package/dist/references/src/schemas.d.ts +2 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
- package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
- package/dist/runtime/statewire-plan-mode.cjs +71 -0
- package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
- package/dist/runtime/statewire-plan-mode.d.ts +88 -0
- package/dist/runtime/statewire-plan-mode.js +71 -0
- package/dist/runtime/statewire-plan-mode.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +3 -1
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +7 -0
- package/dist/runtime/statewire-run-config.js +3 -1
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-session-key.cjs +11 -5
- package/dist/runtime/statewire-session-key.cjs.map +1 -1
- package/dist/runtime/statewire-session-key.d.ts +22 -10
- package/dist/runtime/statewire-session-key.js +11 -5
- package/dist/runtime/statewire-session-key.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +64 -9
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
- package/dist/runtime/useAthenaStatewireRuntime.js +66 -11
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaAssets.cjs +394 -0
- package/dist/search/useAthenaAssets.cjs.map +1 -0
- package/dist/search/useAthenaAssets.d.ts +186 -0
- package/dist/search/useAthenaAssets.js +394 -0
- package/dist/search/useAthenaAssets.js.map +1 -0
- package/dist/sheet-range/index.cjs +4 -0
- package/dist/sheet-range/index.cjs.map +1 -1
- package/dist/sheet-range/index.d.ts +4 -2
- package/dist/sheet-range/index.js +4 -0
- package/dist/sheet-range/index.js.map +1 -1
- package/dist/sheet-range/query-range.cjs +102 -0
- package/dist/sheet-range/query-range.cjs.map +1 -0
- package/dist/sheet-range/query-range.d.ts +46 -0
- package/dist/sheet-range/query-range.js +102 -0
- package/dist/sheet-range/query-range.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/subagents/index.cjs +49 -0
- package/dist/subagents/index.cjs.map +1 -0
- package/dist/subagents/index.d.ts +16 -0
- package/dist/subagents/index.js +49 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/lane-follow.cjs +19 -0
- package/dist/subagents/lane-follow.cjs.map +1 -0
- package/dist/subagents/lane-follow.d.ts +9 -0
- package/dist/subagents/lane-follow.js +19 -0
- package/dist/subagents/lane-follow.js.map +1 -0
- package/dist/subagents/lane-model.cjs +178 -0
- package/dist/subagents/lane-model.cjs.map +1 -0
- package/dist/subagents/lane-model.d.ts +140 -0
- package/dist/subagents/lane-model.js +178 -0
- package/dist/subagents/lane-model.js.map +1 -0
- package/dist/subagents/lane-parts.cjs +517 -0
- package/dist/subagents/lane-parts.cjs.map +1 -0
- package/dist/subagents/lane-parts.d.ts +130 -0
- package/dist/subagents/lane-parts.js +517 -0
- package/dist/subagents/lane-parts.js.map +1 -0
- package/dist/subagents/subagent-lane-group.cjs +215 -0
- package/dist/subagents/subagent-lane-group.cjs.map +1 -0
- package/dist/subagents/subagent-lane-group.d.ts +67 -0
- package/dist/subagents/subagent-lane-group.js +215 -0
- package/dist/subagents/subagent-lane-group.js.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
- package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
- package/dist/subagents/subagent-transcript-drawer.js +431 -0
- package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
- package/dist/subagents/task-subagent-group.cjs +115 -0
- package/dist/subagents/task-subagent-group.cjs.map +1 -0
- package/dist/subagents/task-subagent-group.d.ts +36 -0
- package/dist/subagents/task-subagent-group.js +115 -0
- package/dist/subagents/task-subagent-group.js.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
- package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
- package/dist/subagents/use-omitted-images-in-view.js +68 -0
- package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
- package/dist/threads/Inbox.cjs +2 -2
- package/dist/threads/Inbox.cjs.map +1 -1
- package/dist/threads/SessionList.cjs +6 -6
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionsPage.cjs +13 -7
- package/dist/threads/SessionsPage.cjs.map +1 -1
- package/dist/threads/SessionsPage.d.ts +10 -1
- package/dist/threads/SessionsPage.js +9 -3
- package/dist/threads/SessionsPage.js.map +1 -1
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +2 -1
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +3 -3
- package/dist/threads/session-row-parts.cjs.map +1 -1
- package/dist/threads/sessions-page-model.cjs +13 -5
- package/dist/threads/sessions-page-model.cjs.map +1 -1
- package/dist/threads/sessions-page-model.d.ts +7 -0
- package/dist/threads/sessions-page-model.js +11 -3
- package/dist/threads/sessions-page-model.js.map +1 -1
- package/dist/threads/sessions-page-storage.cjs +8 -8
- package/dist/threads/sessions-page-storage.cjs.map +1 -1
- package/dist/threads/sessions-page-storage.d.ts +5 -1
- package/dist/threads/sessions-page-storage.js +8 -8
- package/dist/threads/sessions-page-storage.js.map +1 -1
- package/dist/threads/statewire-thread-list.cjs +14 -2
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +11 -2
- package/dist/threads/statewire-thread-list.js +14 -2
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +1 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -1
- package/dist/threads/use-athena-sessions.d.ts +7 -0
- package/dist/threads/use-athena-sessions.js +1 -0
- package/dist/threads/use-athena-sessions.js.map +1 -1
- package/dist/threads/use-athena-thread-agent.cjs +31 -0
- package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
- package/dist/threads/use-athena-thread-agent.d.ts +38 -0
- package/dist/threads/use-athena-thread-agent.js +31 -0
- package/dist/threads/use-athena-thread-agent.js.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.d.ts +1 -0
- package/dist/tools/agent-creations.cjs +97 -0
- package/dist/tools/agent-creations.cjs.map +1 -0
- package/dist/tools/agent-creations.d.ts +38 -0
- package/dist/tools/agent-creations.js +97 -0
- package/dist/tools/agent-creations.js.map +1 -0
- package/dist/tools/agent-highlights.cjs +100 -0
- package/dist/tools/agent-highlights.cjs.map +1 -0
- package/dist/tools/agent-highlights.d.ts +57 -0
- package/dist/tools/agent-highlights.js +100 -0
- package/dist/tools/agent-highlights.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +1 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -1
- package/dist/tools/append-document-tool-ui.d.ts +7 -0
- package/dist/tools/append-document-tool-ui.js +2 -1
- package/dist/tools/append-document-tool-ui.js.map +1 -1
- package/dist/tools/auto-open-tools.cjs +144 -71
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.d.ts +131 -1
- package/dist/tools/auto-open-tools.js +145 -72
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/browser-tool-uis.cjs +594 -0
- package/dist/tools/browser-tool-uis.cjs.map +1 -0
- package/dist/tools/browser-tool-uis.d.ts +8 -0
- package/dist/tools/browser-tool-uis.js +594 -0
- package/dist/tools/browser-tool-uis.js.map +1 -0
- package/dist/tools/computer-asset-tool-uis.cjs +313 -0
- package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
- package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
- package/dist/tools/computer-asset-tool-uis.js +313 -0
- package/dist/tools/computer-asset-tool-uis.js.map +1 -0
- package/dist/tools/document-edit-tool-uis.cjs +218 -0
- package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/document-edit-tool-uis.d.ts +40 -0
- package/dist/tools/document-edit-tool-uis.js +218 -0
- package/dist/tools/document-edit-tool-uis.js.map +1 -0
- package/dist/tools/drive-tool-uis.cjs +429 -0
- package/dist/tools/drive-tool-uis.cjs.map +1 -0
- package/dist/tools/drive-tool-uis.d.ts +121 -0
- package/dist/tools/drive-tool-uis.js +429 -0
- package/dist/tools/drive-tool-uis.js.map +1 -0
- package/dist/tools/email-calendar-tool-uis.cjs +789 -0
- package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
- package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
- package/dist/tools/email-calendar-tool-uis.js +789 -0
- package/dist/tools/email-calendar-tool-uis.js.map +1 -0
- package/dist/tools/ontology-tool-uis.cjs +83 -0
- package/dist/tools/ontology-tool-uis.cjs.map +1 -0
- package/dist/tools/ontology-tool-uis.d.ts +9 -0
- package/dist/tools/ontology-tool-uis.js +83 -0
- package/dist/tools/ontology-tool-uis.js.map +1 -0
- package/dist/tools/orchestration-tool-uis.cjs +586 -0
- package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
- package/dist/tools/orchestration-tool-uis.d.ts +141 -0
- package/dist/tools/orchestration-tool-uis.js +586 -0
- package/dist/tools/orchestration-tool-uis.js.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
- package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
- package/dist/tools/presentation-edit-tool-uis.js +516 -0
- package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
- package/dist/tools/project-tool-uis.cjs +213 -0
- package/dist/tools/project-tool-uis.cjs.map +1 -0
- package/dist/tools/project-tool-uis.d.ts +14 -0
- package/dist/tools/project-tool-uis.js +213 -0
- package/dist/tools/project-tool-uis.js.map +1 -0
- package/dist/tools/sandbox-tool-uis.cjs +491 -0
- package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
- package/dist/tools/sandbox-tool-uis.d.ts +116 -0
- package/dist/tools/sandbox-tool-uis.js +491 -0
- package/dist/tools/sandbox-tool-uis.js.map +1 -0
- package/dist/tools/sheet-query-tool-ui.cjs +138 -0
- package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
- package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
- package/dist/tools/sheet-query-tool-ui.js +138 -0
- package/dist/tools/sheet-query-tool-ui.js.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
- package/dist/tools/studio-screenshot-tool-uis.js +262 -0
- package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
- package/dist/tools/subagent-task-tool-ui.cjs +24 -475
- package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
- package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
- package/dist/tools/subagent-task-tool-ui.js +28 -479
- package/dist/tools/subagent-task-tool-ui.js.map +1 -1
- package/dist/tools/tool-summary.cjs +36 -0
- package/dist/tools/tool-summary.cjs.map +1 -1
- package/dist/tools/tool-summary.js +36 -0
- package/dist/tools/tool-summary.js.map +1 -1
- package/dist/tools/tool-uis.cjs +181 -53
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.d.ts +40 -0
- package/dist/tools/tool-uis.js +183 -55
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/typed-interrupts/index.cjs +15 -0
- package/dist/typed-interrupts/index.cjs.map +1 -0
- package/dist/typed-interrupts/index.d.ts +20 -0
- package/dist/typed-interrupts/index.js +15 -0
- package/dist/typed-interrupts/index.js.map +1 -0
- package/dist/version.cjs +4 -0
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.ts +9 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -1
- package/dist/workbench/live-desktop-api.cjs +2 -1
- package/dist/workbench/live-desktop-api.cjs.map +1 -1
- package/dist/workbench/live-desktop-api.js +2 -1
- package/dist/workbench/live-desktop-api.js.map +1 -1
- package/dist/workbench/session-workbench-panes.cjs +6 -6
- package/dist/workbench/session-workbench-panes.cjs.map +1 -1
- package/dist/workbench/session-workspace-api.cjs +7 -2
- package/dist/workbench/session-workspace-api.cjs.map +1 -1
- package/dist/workbench/session-workspace-api.d.ts +10 -0
- package/dist/workbench/session-workspace-api.js +7 -2
- package/dist/workbench/session-workspace-api.js.map +1 -1
- package/package.json +28 -6
- package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
- package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
- package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const typedInterruptKinds = require("../../agent-runtime/src/typed-interrupt-kinds.cjs");
|
|
5
|
+
const lucideReact = require("lucide-react");
|
|
6
|
+
const require$$0 = require("react");
|
|
7
|
+
const apiClient = require("../../chat-ui/mentions/suggestions/data/api-client.cjs");
|
|
8
|
+
const useMentionAsset = require("../../chat-ui/mentions/use-mention-asset.cjs");
|
|
9
|
+
const athenaUrls = require("../../lib/athena-urls.cjs");
|
|
10
|
+
const button = require("../../ui/button.cjs");
|
|
11
|
+
const athenaCitationLinks = require("../athena-citation-links.cjs");
|
|
12
|
+
const interruptCardShell = require("./interrupt-card-shell.cjs");
|
|
13
|
+
const cnfast = require("cnfast");
|
|
14
|
+
const SCOPE_COPY = {
|
|
15
|
+
session: "for this browser session",
|
|
16
|
+
attempt: "for this one action"
|
|
17
|
+
};
|
|
18
|
+
const PROFILE_TITLE_FALLBACK = "Browse profile";
|
|
19
|
+
function AssetLink({ assetId, children }) {
|
|
20
|
+
const auth = require$$0.useContext(apiClient.MentionAuthCtx);
|
|
21
|
+
const handleLinkClick = athenaCitationLinks.useAthenaLinkClickHandler();
|
|
22
|
+
const href = athenaUrls.createAthenaSpacesUrl({ ...(auth == null ? void 0 : auth.appUrl) ? { appUrl: auth.appUrl } : {}, assetIds: assetId });
|
|
23
|
+
const onClick = (event) => {
|
|
24
|
+
if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
|
|
25
|
+
const handled = handleLinkClick({
|
|
26
|
+
href,
|
|
27
|
+
linkText: children,
|
|
28
|
+
target: event.currentTarget.target,
|
|
29
|
+
nativeEvent: event.nativeEvent
|
|
30
|
+
});
|
|
31
|
+
if (handled) event.preventDefault();
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34
|
+
"a",
|
|
35
|
+
{
|
|
36
|
+
href,
|
|
37
|
+
target: "_blank",
|
|
38
|
+
rel: "noopener noreferrer",
|
|
39
|
+
onClick,
|
|
40
|
+
className: "inline-flex w-fit items-center gap-1 text-muted-foreground text-xs hover:text-foreground hover:underline",
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLinkIcon, { className: "size-3" }),
|
|
43
|
+
children
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
function BrowseProfileRow({ assetId, scope }) {
|
|
49
|
+
const asset = useMentionAsset.useMentionAsset(assetId);
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 px-3 py-2", children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
"div",
|
|
53
|
+
{
|
|
54
|
+
"aria-hidden": true,
|
|
55
|
+
className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-border bg-muted text-muted-foreground",
|
|
56
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRoundIcon, { className: "size-4" })
|
|
57
|
+
}
|
|
58
|
+
),
|
|
59
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-medium text-foreground text-sm", children: (asset == null ? void 0 : asset.title) || PROFILE_TITLE_FALLBACK }),
|
|
61
|
+
/* @__PURE__ */ jsxRuntime.jsx(AssetLink, { assetId, children: "Open in Spaces" })
|
|
62
|
+
] }),
|
|
63
|
+
scope ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "shrink-0 rounded-full bg-muted px-2 py-0.5 text-foreground text-xs", children: [
|
|
64
|
+
"Allow ",
|
|
65
|
+
SCOPE_COPY[scope] ?? scope
|
|
66
|
+
] }) : null
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
function BrowseProfileApprovalCard({ interrupt, resume, engine }) {
|
|
70
|
+
const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;
|
|
71
|
+
const actionsDisabled = isLoading || isConversationStreaming;
|
|
72
|
+
const { profiles, sessionApprovalAllowed } = typedInterruptKinds.readBrowseProfileApprovalContext(interrupt);
|
|
73
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
interruptCardShell.InterruptCardShell,
|
|
75
|
+
{
|
|
76
|
+
title: "Browse Profile Approval",
|
|
77
|
+
description: "The agent wants to use a saved login that requires your approval",
|
|
78
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheckIcon, {}),
|
|
79
|
+
hasTimeout,
|
|
80
|
+
onInteraction: cancelTimeout,
|
|
81
|
+
content: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", "data-testid": "typed-interrupt-browse-profile", children: [
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-foreground text-sm", children: profiles.length > 1 ? "Browse profiles requested:" : "Browse profile requested:" }),
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-border rounded-md border border-border bg-background", children: profiles.map((profile) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
84
|
+
BrowseProfileRow,
|
|
85
|
+
{
|
|
86
|
+
assetId: profile.profile_asset_id,
|
|
87
|
+
scope: profile.approval_scope
|
|
88
|
+
},
|
|
89
|
+
profile.profile_asset_id
|
|
90
|
+
)) }),
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-xs", children: "Only the profile owner or an admin can approve. Approving lets the agent use this login's saved cookies; you won't be re-prompted for the granted scope." })
|
|
92
|
+
] }),
|
|
93
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsx(interruptCardShell.WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => resume(typedInterruptKinds.browseProfileApprovalResume({ action: "approve" })), disabled: actionsDisabled, children: isLoading ? "Processing..." : "Approve" }) }),
|
|
95
|
+
sessionApprovalAllowed ? /* @__PURE__ */ jsxRuntime.jsx(interruptCardShell.WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
96
|
+
button.Button,
|
|
97
|
+
{
|
|
98
|
+
variant: "outline",
|
|
99
|
+
onClick: () => resume(typedInterruptKinds.browseProfileApprovalResume({ action: "approve", forSession: true })),
|
|
100
|
+
disabled: actionsDisabled,
|
|
101
|
+
"data-testid": "browse-profile-approve-session",
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCheckIcon, {}),
|
|
104
|
+
"Approve all for this session"
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
) }) : null,
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx(interruptCardShell.WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
+
button.Button,
|
|
110
|
+
{
|
|
111
|
+
variant: "outline",
|
|
112
|
+
onClick: () => resume(typedInterruptKinds.browseProfileApprovalResume({ action: "reject" })),
|
|
113
|
+
disabled: actionsDisabled,
|
|
114
|
+
children: "Reject"
|
|
115
|
+
}
|
|
116
|
+
) })
|
|
117
|
+
] })
|
|
118
|
+
}
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
const TEXTAREA_CLASS = "mt-1 w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-foreground text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
|
|
122
|
+
function RejectReasonField({
|
|
123
|
+
label,
|
|
124
|
+
value,
|
|
125
|
+
onChange,
|
|
126
|
+
disabled,
|
|
127
|
+
placeholder = "Explain why you're rejecting this action..."
|
|
128
|
+
}) {
|
|
129
|
+
const id = require$$0.useId();
|
|
130
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
131
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: id, className: "font-medium text-foreground text-sm", children: label }),
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
133
|
+
"textarea",
|
|
134
|
+
{
|
|
135
|
+
id,
|
|
136
|
+
value,
|
|
137
|
+
onChange: (event) => onChange(event.target.value),
|
|
138
|
+
placeholder,
|
|
139
|
+
rows: 2,
|
|
140
|
+
disabled,
|
|
141
|
+
className: TEXTAREA_CLASS
|
|
142
|
+
}
|
|
143
|
+
)
|
|
144
|
+
] });
|
|
145
|
+
}
|
|
146
|
+
function AddFeedbackButton({ onClick, className }) {
|
|
147
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
148
|
+
button.Button,
|
|
149
|
+
{
|
|
150
|
+
variant: "ghost",
|
|
151
|
+
size: "sm",
|
|
152
|
+
onClick,
|
|
153
|
+
className: cnfast.cn("h-auto px-0 py-0 text-muted-foreground text-xs hover:text-foreground", className),
|
|
154
|
+
children: [
|
|
155
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageSquareIcon, { className: "size-3" }),
|
|
156
|
+
"Add feedback"
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
const APPROVE_BUTTON_CLASS = "bg-green-600 text-white transition-colors hover:bg-green-700";
|
|
162
|
+
function PmScheduleApprovalCard({ interrupt, resume, engine }) {
|
|
163
|
+
const [reason, setReason] = require$$0.useState("");
|
|
164
|
+
const [showFeedback, setShowFeedback] = require$$0.useState(false);
|
|
165
|
+
const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;
|
|
166
|
+
const actionsDisabled = isLoading || isConversationStreaming;
|
|
167
|
+
const { action, fields } = typedInterruptKinds.readPmScheduleApprovalContext(interrupt);
|
|
168
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
169
|
+
interruptCardShell.InterruptCardShell,
|
|
170
|
+
{
|
|
171
|
+
title: `Approve Schedule ${action === "delete" ? "Deletion" : "Creation"}?`,
|
|
172
|
+
description: interrupt.message,
|
|
173
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarIcon, {}),
|
|
174
|
+
hasTimeout,
|
|
175
|
+
onInteraction: cancelTimeout,
|
|
176
|
+
content: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", "data-testid": "typed-interrupt-pm-schedule", children: [
|
|
177
|
+
fields.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1.5 rounded-md border border-border bg-muted/60 p-3", children: fields.map(([key, value]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2 text-sm", children: [
|
|
178
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 shrink-0 font-medium text-muted-foreground", children: interruptCardShell.formatKeyAsName(key) }),
|
|
179
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 break-words text-foreground", children: value })
|
|
180
|
+
] }, key)) }) : null,
|
|
181
|
+
showFeedback ? /* @__PURE__ */ jsxRuntime.jsx(RejectReasonField, { label: "Reason (optional)", value: reason, onChange: setReason, disabled: isLoading }) : /* @__PURE__ */ jsxRuntime.jsx(AddFeedbackButton, { onClick: () => setShowFeedback(true), className: "w-fit" })
|
|
182
|
+
] }),
|
|
183
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
184
|
+
/* @__PURE__ */ jsxRuntime.jsx(interruptCardShell.WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
+
button.Button,
|
|
186
|
+
{
|
|
187
|
+
onClick: () => resume(typedInterruptKinds.typedApprovalResume({ action: "approve" })),
|
|
188
|
+
disabled: actionsDisabled || reason.trim() !== "",
|
|
189
|
+
className: APPROVE_BUTTON_CLASS,
|
|
190
|
+
children: isLoading ? "Processing..." : "Approve"
|
|
191
|
+
}
|
|
192
|
+
) }),
|
|
193
|
+
/* @__PURE__ */ jsxRuntime.jsx(interruptCardShell.WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
194
|
+
button.Button,
|
|
195
|
+
{
|
|
196
|
+
variant: "outline",
|
|
197
|
+
onClick: () => resume(typedInterruptKinds.typedApprovalResume({ action: "reject", reason: reason || void 0 })),
|
|
198
|
+
disabled: actionsDisabled,
|
|
199
|
+
children: isLoading ? "Processing..." : "Reject"
|
|
200
|
+
}
|
|
201
|
+
) })
|
|
202
|
+
] })
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
function WaitForMinutesCard({ interrupt, cancel, engine }) {
|
|
207
|
+
const { minutes, reason, timeoutSeconds } = typedInterruptKinds.readWaitForMinutesContext(interrupt);
|
|
208
|
+
const total = interrupt.timeout_seconds ?? timeoutSeconds ?? minutes * 60;
|
|
209
|
+
const remaining = Math.ceil(engine.timeoutRemaining ?? typedInterruptKinds.interruptTimeoutRemaining(interrupt) ?? total);
|
|
210
|
+
const progress = total > 0 ? Math.min(100, Math.max(0, (total - remaining) / total * 100)) : 0;
|
|
211
|
+
const cancelDisabled = engine.isLoading || engine.isConversationStreaming;
|
|
212
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 rounded-lg border border-border bg-card p-4", "data-testid": "typed-interrupt-wait", children: [
|
|
213
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
214
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
215
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClockIcon, { className: "size-4 text-blue-500" }),
|
|
216
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground text-sm", children: reason ?? `Waiting for ${minutes} minute${minutes !== 1 ? "s" : ""}` })
|
|
217
|
+
] }),
|
|
218
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
219
|
+
"button",
|
|
220
|
+
{
|
|
221
|
+
type: "button",
|
|
222
|
+
onClick: cancel,
|
|
223
|
+
disabled: cancelDisabled,
|
|
224
|
+
className: "flex items-center gap-1 rounded-md px-2 py-1 font-medium text-muted-foreground text-xs transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
225
|
+
children: [
|
|
226
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "size-3" }),
|
|
227
|
+
"Cancel"
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
)
|
|
231
|
+
] }),
|
|
232
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
233
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1.5 flex-1 overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
234
|
+
"div",
|
|
235
|
+
{
|
|
236
|
+
className: "h-full rounded-full bg-blue-500 transition-all duration-1000 ease-linear",
|
|
237
|
+
style: { width: `${progress}%` }
|
|
238
|
+
}
|
|
239
|
+
) }),
|
|
240
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-muted-foreground text-xs tabular-nums", children: interruptCardShell.formatSecondsForDisplay(remaining) })
|
|
241
|
+
] })
|
|
242
|
+
] });
|
|
243
|
+
}
|
|
244
|
+
exports.APPROVE_BUTTON_CLASS = APPROVE_BUTTON_CLASS;
|
|
245
|
+
exports.AddFeedbackButton = AddFeedbackButton;
|
|
246
|
+
exports.BrowseProfileApprovalCard = BrowseProfileApprovalCard;
|
|
247
|
+
exports.PmScheduleApprovalCard = PmScheduleApprovalCard;
|
|
248
|
+
exports.RejectReasonField = RejectReasonField;
|
|
249
|
+
exports.WaitForMinutesCard = WaitForMinutesCard;
|
|
250
|
+
//# sourceMappingURL=approval-cards.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-cards.cjs","sources":["../../../src/chat/typed-interrupts/approval-cards.tsx"],"sourcesContent":["/**\n * The approval-shaped `custom` parks, each a decision only a person makes\n * (`isTypedApprovalInterrupt`): a saved login the agent asks to use (Olympus's\n * `BrowseProfileApprovalInterruptUi`) and a project manager's schedule\n * (`PMScheduleApprovalInterruptUi`). The engine confirms an approve with the\n * host's passkey check and agora holds it to a signed-in person; a refusal's\n * reason shows on the card. Also the wait a tool announced\n * (`WaitForMinutesInterruptUi`), whose only answer is Cancel.\n */\nimport {\n browseProfileApprovalResume,\n interruptTimeoutRemaining,\n readBrowseProfileApprovalContext,\n readPmScheduleApprovalContext,\n readWaitForMinutesContext,\n typedApprovalResume,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport {\n CalendarIcon,\n CheckCheckIcon,\n ClockIcon,\n ExternalLinkIcon,\n KeyRoundIcon,\n MessageSquareIcon,\n ShieldCheckIcon,\n XIcon,\n} from 'lucide-react';\nimport { type MouseEvent, useContext, useId, useState } from 'react';\nimport { MentionAuthCtx } from '../../chat-ui/mentions/suggestions/data/api-client';\nimport { useMentionAsset } from '../../chat-ui/mentions/use-mention-asset';\nimport { createAthenaSpacesUrl } from '../../lib/athena-urls';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { useAthenaLinkClickHandler } from '../athena-citation-links';\nimport {\n formatKeyAsName,\n formatSecondsForDisplay,\n InterruptCardShell,\n WaitForStreamingHint,\n} from './interrupt-card-shell';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\n\nconst SCOPE_COPY: Record<string, string> = {\n session: 'for this browser session',\n attempt: 'for this one action',\n};\n\nconst PROFILE_TITLE_FALLBACK = 'Browse profile';\n\n/** A link to an asset in Athena on the web, opened through the host's link handling (an asset tab, a panel). */\nfunction AssetLink({ assetId, children }: { assetId: string; children: string }) {\n const auth = useContext(MentionAuthCtx);\n const handleLinkClick = useAthenaLinkClickHandler();\n const href = createAthenaSpacesUrl({ ...(auth?.appUrl ? { appUrl: auth.appUrl } : {}), assetIds: assetId });\n const onClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n const handled = handleLinkClick({\n href,\n linkText: children,\n target: event.currentTarget.target,\n nativeEvent: event.nativeEvent,\n });\n if (handled) event.preventDefault();\n };\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={onClick}\n className=\"inline-flex w-fit items-center gap-1 text-muted-foreground text-xs hover:text-foreground hover:underline\"\n >\n <ExternalLinkIcon className=\"size-3\" />\n {children}\n </a>\n );\n}\n\nfunction BrowseProfileRow({ assetId, scope }: { assetId: string; scope: string | null }) {\n // The title as agora has it, only for a profile the viewer may read.\n const asset = useMentionAsset(assetId);\n return (\n <div className=\"flex items-center gap-3 px-3 py-2\">\n <div\n aria-hidden\n className=\"flex size-8 shrink-0 items-center justify-center rounded-md border border-border bg-muted text-muted-foreground\"\n >\n <KeyRoundIcon className=\"size-4\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate font-medium text-foreground text-sm\">{asset?.title || PROFILE_TITLE_FALLBACK}</span>\n <AssetLink assetId={assetId}>Open in Spaces</AssetLink>\n </div>\n {scope ? (\n <span className=\"shrink-0 rounded-full bg-muted px-2 py-0.5 text-foreground text-xs\">\n Allow {SCOPE_COPY[scope] ?? scope}\n </span>\n ) : null}\n </div>\n );\n}\n\nexport function BrowseProfileApprovalCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const { profiles, sessionApprovalAllowed } = readBrowseProfileApprovalContext(interrupt);\n return (\n <InterruptCardShell\n title=\"Browse Profile Approval\"\n description=\"The agent wants to use a saved login that requires your approval\"\n icon={<ShieldCheckIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-3\" data-testid=\"typed-interrupt-browse-profile\">\n <p className=\"font-medium text-foreground text-sm\">\n {profiles.length > 1 ? 'Browse profiles requested:' : 'Browse profile requested:'}\n </p>\n <div className=\"divide-y divide-border rounded-md border border-border bg-background\">\n {profiles.map((profile) => (\n <BrowseProfileRow\n key={profile.profile_asset_id}\n assetId={profile.profile_asset_id}\n scope={profile.approval_scope}\n />\n ))}\n </div>\n <p className=\"text-muted-foreground text-xs\">\n Only the profile owner or an admin can approve. Approving lets the agent use this login's saved\n cookies; you won't be re-prompted for the granted scope.\n </p>\n </div>\n }\n actions={\n <>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button onClick={() => resume(browseProfileApprovalResume({ action: 'approve' }))} disabled={actionsDisabled}>\n {isLoading ? 'Processing...' : 'Approve'}\n </Button>\n </WaitForStreamingHint>\n {sessionApprovalAllowed ? (\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(browseProfileApprovalResume({ action: 'approve', forSession: true }))}\n disabled={actionsDisabled}\n data-testid=\"browse-profile-approve-session\"\n >\n <CheckCheckIcon />\n Approve all for this session\n </Button>\n </WaitForStreamingHint>\n ) : null}\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(browseProfileApprovalResume({ action: 'reject' }))}\n disabled={actionsDisabled}\n >\n Reject\n </Button>\n </WaitForStreamingHint>\n </>\n }\n />\n );\n}\n\nconst TEXTAREA_CLASS =\n 'mt-1 w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-foreground text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50';\n\n/** The optional reason a reject carries, behind \"Add feedback\". */\nexport function RejectReasonField({\n label,\n value,\n onChange,\n disabled,\n placeholder = \"Explain why you're rejecting this action...\",\n}: {\n label: string;\n value: string;\n onChange: (value: string) => void;\n disabled: boolean;\n placeholder?: string;\n}) {\n const id = useId();\n return (\n <div>\n <label htmlFor={id} className=\"font-medium text-foreground text-sm\">\n {label}\n </label>\n <textarea\n id={id}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n rows={2}\n disabled={disabled}\n className={TEXTAREA_CLASS}\n />\n </div>\n );\n}\n\nexport function AddFeedbackButton({ onClick, className }: { onClick: () => void; className?: string }) {\n return (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClick}\n className={cn('h-auto px-0 py-0 text-muted-foreground text-xs hover:text-foreground', className)}\n >\n <MessageSquareIcon className=\"size-3\" />\n Add feedback\n </Button>\n );\n}\n\n/** Approve's green, as Olympus's approval cards draw it. */\nexport const APPROVE_BUTTON_CLASS = 'bg-green-600 text-white transition-colors hover:bg-green-700';\n\nexport function PmScheduleApprovalCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const [reason, setReason] = useState('');\n const [showFeedback, setShowFeedback] = useState(false);\n const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const { action, fields } = readPmScheduleApprovalContext(interrupt);\n return (\n <InterruptCardShell\n title={`Approve Schedule ${action === 'delete' ? 'Deletion' : 'Creation'}?`}\n description={interrupt.message}\n icon={<CalendarIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-3\" data-testid=\"typed-interrupt-pm-schedule\">\n {fields.length > 0 ? (\n <div className=\"flex flex-col gap-1.5 rounded-md border border-border bg-muted/60 p-3\">\n {fields.map(([key, value]) => (\n <div key={key} className=\"flex gap-2 text-sm\">\n <span className=\"w-24 shrink-0 font-medium text-muted-foreground\">{formatKeyAsName(key)}</span>\n <span className=\"min-w-0 break-words text-foreground\">{value}</span>\n </div>\n ))}\n </div>\n ) : null}\n {showFeedback ? (\n <RejectReasonField label=\"Reason (optional)\" value={reason} onChange={setReason} disabled={isLoading} />\n ) : (\n <AddFeedbackButton onClick={() => setShowFeedback(true)} className=\"w-fit\" />\n )}\n </div>\n }\n actions={\n <>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n onClick={() => resume(typedApprovalResume({ action: 'approve' }))}\n disabled={actionsDisabled || reason.trim() !== ''}\n className={APPROVE_BUTTON_CLASS}\n >\n {isLoading ? 'Processing...' : 'Approve'}\n </Button>\n </WaitForStreamingHint>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(typedApprovalResume({ action: 'reject', reason: reason || undefined }))}\n disabled={actionsDisabled}\n >\n {isLoading ? 'Processing...' : 'Reject'}\n </Button>\n </WaitForStreamingHint>\n </>\n }\n />\n );\n}\n\n/**\n * The wait `wait_for_minutes` announced: a countdown the backend's timer\n * resumes on its own, so the only answer is Cancel, which ends the wait early.\n */\nexport function WaitForMinutesCard({ interrupt, cancel, engine }: TypedInterruptCardProps) {\n const { minutes, reason, timeoutSeconds } = readWaitForMinutesContext(interrupt);\n const total = interrupt.timeout_seconds ?? timeoutSeconds ?? minutes * 60;\n // The engine ticks every second; the first frame reads the deadline itself.\n const remaining = Math.ceil(engine.timeoutRemaining ?? interruptTimeoutRemaining(interrupt) ?? total);\n const progress = total > 0 ? Math.min(100, Math.max(0, ((total - remaining) / total) * 100)) : 0;\n const cancelDisabled = engine.isLoading || engine.isConversationStreaming;\n return (\n <div className=\"flex flex-col gap-3 rounded-lg border border-border bg-card p-4\" data-testid=\"typed-interrupt-wait\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <ClockIcon className=\"size-4 text-blue-500\" />\n <span className=\"font-medium text-foreground text-sm\">\n {reason ?? `Waiting for ${minutes} minute${minutes !== 1 ? 's' : ''}`}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={cancel}\n disabled={cancelDisabled}\n className=\"flex items-center gap-1 rounded-md px-2 py-1 font-medium text-muted-foreground text-xs transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <XIcon className=\"size-3\" />\n Cancel\n </button>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-1.5 flex-1 overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full rounded-full bg-blue-500 transition-all duration-1000 ease-linear\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <span className=\"font-mono text-muted-foreground text-xs tabular-nums\">\n {formatSecondsForDisplay(remaining)}\n </span>\n </div>\n </div>\n );\n}\n"],"names":["useContext","MentionAuthCtx","useAthenaLinkClickHandler","createAthenaSpacesUrl","jsxs","jsx","ExternalLinkIcon","useMentionAsset","KeyRoundIcon","readBrowseProfileApprovalContext","InterruptCardShell","ShieldCheckIcon","Fragment","WaitForStreamingHint","Button","browseProfileApprovalResume","CheckCheckIcon","useId","cn","MessageSquareIcon","useState","readPmScheduleApprovalContext","CalendarIcon","formatKeyAsName","typedApprovalResume","readWaitForMinutesContext","interruptTimeoutRemaining","ClockIcon","XIcon","formatSecondsForDisplay"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { TypedInterruptCardProps } from './typed-interrupt-types';
|
|
2
|
+
export declare function BrowseProfileApprovalCard({ interrupt, resume, engine }: TypedInterruptCardProps): import("react").JSX.Element;
|
|
3
|
+
/** The optional reason a reject carries, behind "Add feedback". */
|
|
4
|
+
export declare function RejectReasonField({ label, value, onChange, disabled, placeholder, }: {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
|
+
disabled: boolean;
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
export declare function AddFeedbackButton({ onClick, className }: {
|
|
12
|
+
onClick: () => void;
|
|
13
|
+
className?: string;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
|
+
/** Approve's green, as Olympus's approval cards draw it. */
|
|
16
|
+
export declare const APPROVE_BUTTON_CLASS = "bg-green-600 text-white transition-colors hover:bg-green-700";
|
|
17
|
+
export declare function PmScheduleApprovalCard({ interrupt, resume, engine }: TypedInterruptCardProps): import("react").JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* The wait `wait_for_minutes` announced: a countdown the backend's timer
|
|
20
|
+
* resumes on its own, so the only answer is Cancel, which ends the wait early.
|
|
21
|
+
*/
|
|
22
|
+
export declare function WaitForMinutesCard({ interrupt, cancel, engine }: TypedInterruptCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { readBrowseProfileApprovalContext, browseProfileApprovalResume, readWaitForMinutesContext, interruptTimeoutRemaining, readPmScheduleApprovalContext, typedApprovalResume } from "../../agent-runtime/src/typed-interrupt-kinds.js";
|
|
3
|
+
import { CheckCheckIcon, ShieldCheckIcon, ClockIcon, XIcon, CalendarIcon, KeyRoundIcon, MessageSquareIcon, ExternalLinkIcon } from "lucide-react";
|
|
4
|
+
import { useState, useId, useContext } from "react";
|
|
5
|
+
import { MentionAuthCtx } from "../../chat-ui/mentions/suggestions/data/api-client.js";
|
|
6
|
+
import { useMentionAsset } from "../../chat-ui/mentions/use-mention-asset.js";
|
|
7
|
+
import { createAthenaSpacesUrl } from "../../lib/athena-urls.js";
|
|
8
|
+
import { Button } from "../../ui/button.js";
|
|
9
|
+
import { useAthenaLinkClickHandler } from "../athena-citation-links.js";
|
|
10
|
+
import { InterruptCardShell, WaitForStreamingHint, formatSecondsForDisplay, formatKeyAsName } from "./interrupt-card-shell.js";
|
|
11
|
+
import { cn } from "cnfast";
|
|
12
|
+
const SCOPE_COPY = {
|
|
13
|
+
session: "for this browser session",
|
|
14
|
+
attempt: "for this one action"
|
|
15
|
+
};
|
|
16
|
+
const PROFILE_TITLE_FALLBACK = "Browse profile";
|
|
17
|
+
function AssetLink({ assetId, children }) {
|
|
18
|
+
const auth = useContext(MentionAuthCtx);
|
|
19
|
+
const handleLinkClick = useAthenaLinkClickHandler();
|
|
20
|
+
const href = createAthenaSpacesUrl({ ...(auth == null ? void 0 : auth.appUrl) ? { appUrl: auth.appUrl } : {}, assetIds: assetId });
|
|
21
|
+
const onClick = (event) => {
|
|
22
|
+
if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
|
|
23
|
+
const handled = handleLinkClick({
|
|
24
|
+
href,
|
|
25
|
+
linkText: children,
|
|
26
|
+
target: event.currentTarget.target,
|
|
27
|
+
nativeEvent: event.nativeEvent
|
|
28
|
+
});
|
|
29
|
+
if (handled) event.preventDefault();
|
|
30
|
+
};
|
|
31
|
+
return /* @__PURE__ */ jsxs(
|
|
32
|
+
"a",
|
|
33
|
+
{
|
|
34
|
+
href,
|
|
35
|
+
target: "_blank",
|
|
36
|
+
rel: "noopener noreferrer",
|
|
37
|
+
onClick,
|
|
38
|
+
className: "inline-flex w-fit items-center gap-1 text-muted-foreground text-xs hover:text-foreground hover:underline",
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ jsx(ExternalLinkIcon, { className: "size-3" }),
|
|
41
|
+
children
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
function BrowseProfileRow({ assetId, scope }) {
|
|
47
|
+
const asset = useMentionAsset(assetId);
|
|
48
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-3 py-2", children: [
|
|
49
|
+
/* @__PURE__ */ jsx(
|
|
50
|
+
"div",
|
|
51
|
+
{
|
|
52
|
+
"aria-hidden": true,
|
|
53
|
+
className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-border bg-muted text-muted-foreground",
|
|
54
|
+
children: /* @__PURE__ */ jsx(KeyRoundIcon, { className: "size-4" })
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
58
|
+
/* @__PURE__ */ jsx("span", { className: "truncate font-medium text-foreground text-sm", children: (asset == null ? void 0 : asset.title) || PROFILE_TITLE_FALLBACK }),
|
|
59
|
+
/* @__PURE__ */ jsx(AssetLink, { assetId, children: "Open in Spaces" })
|
|
60
|
+
] }),
|
|
61
|
+
scope ? /* @__PURE__ */ jsxs("span", { className: "shrink-0 rounded-full bg-muted px-2 py-0.5 text-foreground text-xs", children: [
|
|
62
|
+
"Allow ",
|
|
63
|
+
SCOPE_COPY[scope] ?? scope
|
|
64
|
+
] }) : null
|
|
65
|
+
] });
|
|
66
|
+
}
|
|
67
|
+
function BrowseProfileApprovalCard({ interrupt, resume, engine }) {
|
|
68
|
+
const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;
|
|
69
|
+
const actionsDisabled = isLoading || isConversationStreaming;
|
|
70
|
+
const { profiles, sessionApprovalAllowed } = readBrowseProfileApprovalContext(interrupt);
|
|
71
|
+
return /* @__PURE__ */ jsx(
|
|
72
|
+
InterruptCardShell,
|
|
73
|
+
{
|
|
74
|
+
title: "Browse Profile Approval",
|
|
75
|
+
description: "The agent wants to use a saved login that requires your approval",
|
|
76
|
+
icon: /* @__PURE__ */ jsx(ShieldCheckIcon, {}),
|
|
77
|
+
hasTimeout,
|
|
78
|
+
onInteraction: cancelTimeout,
|
|
79
|
+
content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", "data-testid": "typed-interrupt-browse-profile", children: [
|
|
80
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-foreground text-sm", children: profiles.length > 1 ? "Browse profiles requested:" : "Browse profile requested:" }),
|
|
81
|
+
/* @__PURE__ */ jsx("div", { className: "divide-y divide-border rounded-md border border-border bg-background", children: profiles.map((profile) => /* @__PURE__ */ jsx(
|
|
82
|
+
BrowseProfileRow,
|
|
83
|
+
{
|
|
84
|
+
assetId: profile.profile_asset_id,
|
|
85
|
+
scope: profile.approval_scope
|
|
86
|
+
},
|
|
87
|
+
profile.profile_asset_id
|
|
88
|
+
)) }),
|
|
89
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: "Only the profile owner or an admin can approve. Approving lets the agent use this login's saved cookies; you won't be re-prompted for the granted scope." })
|
|
90
|
+
] }),
|
|
91
|
+
actions: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
92
|
+
/* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(Button, { onClick: () => resume(browseProfileApprovalResume({ action: "approve" })), disabled: actionsDisabled, children: isLoading ? "Processing..." : "Approve" }) }),
|
|
93
|
+
sessionApprovalAllowed ? /* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsxs(
|
|
94
|
+
Button,
|
|
95
|
+
{
|
|
96
|
+
variant: "outline",
|
|
97
|
+
onClick: () => resume(browseProfileApprovalResume({ action: "approve", forSession: true })),
|
|
98
|
+
disabled: actionsDisabled,
|
|
99
|
+
"data-testid": "browse-profile-approve-session",
|
|
100
|
+
children: [
|
|
101
|
+
/* @__PURE__ */ jsx(CheckCheckIcon, {}),
|
|
102
|
+
"Approve all for this session"
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
) }) : null,
|
|
106
|
+
/* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(
|
|
107
|
+
Button,
|
|
108
|
+
{
|
|
109
|
+
variant: "outline",
|
|
110
|
+
onClick: () => resume(browseProfileApprovalResume({ action: "reject" })),
|
|
111
|
+
disabled: actionsDisabled,
|
|
112
|
+
children: "Reject"
|
|
113
|
+
}
|
|
114
|
+
) })
|
|
115
|
+
] })
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
const TEXTAREA_CLASS = "mt-1 w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-foreground text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
|
|
120
|
+
function RejectReasonField({
|
|
121
|
+
label,
|
|
122
|
+
value,
|
|
123
|
+
onChange,
|
|
124
|
+
disabled,
|
|
125
|
+
placeholder = "Explain why you're rejecting this action..."
|
|
126
|
+
}) {
|
|
127
|
+
const id = useId();
|
|
128
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
129
|
+
/* @__PURE__ */ jsx("label", { htmlFor: id, className: "font-medium text-foreground text-sm", children: label }),
|
|
130
|
+
/* @__PURE__ */ jsx(
|
|
131
|
+
"textarea",
|
|
132
|
+
{
|
|
133
|
+
id,
|
|
134
|
+
value,
|
|
135
|
+
onChange: (event) => onChange(event.target.value),
|
|
136
|
+
placeholder,
|
|
137
|
+
rows: 2,
|
|
138
|
+
disabled,
|
|
139
|
+
className: TEXTAREA_CLASS
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
] });
|
|
143
|
+
}
|
|
144
|
+
function AddFeedbackButton({ onClick, className }) {
|
|
145
|
+
return /* @__PURE__ */ jsxs(
|
|
146
|
+
Button,
|
|
147
|
+
{
|
|
148
|
+
variant: "ghost",
|
|
149
|
+
size: "sm",
|
|
150
|
+
onClick,
|
|
151
|
+
className: cn("h-auto px-0 py-0 text-muted-foreground text-xs hover:text-foreground", className),
|
|
152
|
+
children: [
|
|
153
|
+
/* @__PURE__ */ jsx(MessageSquareIcon, { className: "size-3" }),
|
|
154
|
+
"Add feedback"
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
const APPROVE_BUTTON_CLASS = "bg-green-600 text-white transition-colors hover:bg-green-700";
|
|
160
|
+
function PmScheduleApprovalCard({ interrupt, resume, engine }) {
|
|
161
|
+
const [reason, setReason] = useState("");
|
|
162
|
+
const [showFeedback, setShowFeedback] = useState(false);
|
|
163
|
+
const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;
|
|
164
|
+
const actionsDisabled = isLoading || isConversationStreaming;
|
|
165
|
+
const { action, fields } = readPmScheduleApprovalContext(interrupt);
|
|
166
|
+
return /* @__PURE__ */ jsx(
|
|
167
|
+
InterruptCardShell,
|
|
168
|
+
{
|
|
169
|
+
title: `Approve Schedule ${action === "delete" ? "Deletion" : "Creation"}?`,
|
|
170
|
+
description: interrupt.message,
|
|
171
|
+
icon: /* @__PURE__ */ jsx(CalendarIcon, {}),
|
|
172
|
+
hasTimeout,
|
|
173
|
+
onInteraction: cancelTimeout,
|
|
174
|
+
content: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", "data-testid": "typed-interrupt-pm-schedule", children: [
|
|
175
|
+
fields.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1.5 rounded-md border border-border bg-muted/60 p-3", children: fields.map(([key, value]) => /* @__PURE__ */ jsxs("div", { className: "flex gap-2 text-sm", children: [
|
|
176
|
+
/* @__PURE__ */ jsx("span", { className: "w-24 shrink-0 font-medium text-muted-foreground", children: formatKeyAsName(key) }),
|
|
177
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 break-words text-foreground", children: value })
|
|
178
|
+
] }, key)) }) : null,
|
|
179
|
+
showFeedback ? /* @__PURE__ */ jsx(RejectReasonField, { label: "Reason (optional)", value: reason, onChange: setReason, disabled: isLoading }) : /* @__PURE__ */ jsx(AddFeedbackButton, { onClick: () => setShowFeedback(true), className: "w-fit" })
|
|
180
|
+
] }),
|
|
181
|
+
actions: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
182
|
+
/* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(
|
|
183
|
+
Button,
|
|
184
|
+
{
|
|
185
|
+
onClick: () => resume(typedApprovalResume({ action: "approve" })),
|
|
186
|
+
disabled: actionsDisabled || reason.trim() !== "",
|
|
187
|
+
className: APPROVE_BUTTON_CLASS,
|
|
188
|
+
children: isLoading ? "Processing..." : "Approve"
|
|
189
|
+
}
|
|
190
|
+
) }),
|
|
191
|
+
/* @__PURE__ */ jsx(WaitForStreamingHint, { active: isConversationStreaming, children: /* @__PURE__ */ jsx(
|
|
192
|
+
Button,
|
|
193
|
+
{
|
|
194
|
+
variant: "outline",
|
|
195
|
+
onClick: () => resume(typedApprovalResume({ action: "reject", reason: reason || void 0 })),
|
|
196
|
+
disabled: actionsDisabled,
|
|
197
|
+
children: isLoading ? "Processing..." : "Reject"
|
|
198
|
+
}
|
|
199
|
+
) })
|
|
200
|
+
] })
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
function WaitForMinutesCard({ interrupt, cancel, engine }) {
|
|
205
|
+
const { minutes, reason, timeoutSeconds } = readWaitForMinutesContext(interrupt);
|
|
206
|
+
const total = interrupt.timeout_seconds ?? timeoutSeconds ?? minutes * 60;
|
|
207
|
+
const remaining = Math.ceil(engine.timeoutRemaining ?? interruptTimeoutRemaining(interrupt) ?? total);
|
|
208
|
+
const progress = total > 0 ? Math.min(100, Math.max(0, (total - remaining) / total * 100)) : 0;
|
|
209
|
+
const cancelDisabled = engine.isLoading || engine.isConversationStreaming;
|
|
210
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 rounded-lg border border-border bg-card p-4", "data-testid": "typed-interrupt-wait", children: [
|
|
211
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
212
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
213
|
+
/* @__PURE__ */ jsx(ClockIcon, { className: "size-4 text-blue-500" }),
|
|
214
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground text-sm", children: reason ?? `Waiting for ${minutes} minute${minutes !== 1 ? "s" : ""}` })
|
|
215
|
+
] }),
|
|
216
|
+
/* @__PURE__ */ jsxs(
|
|
217
|
+
"button",
|
|
218
|
+
{
|
|
219
|
+
type: "button",
|
|
220
|
+
onClick: cancel,
|
|
221
|
+
disabled: cancelDisabled,
|
|
222
|
+
className: "flex items-center gap-1 rounded-md px-2 py-1 font-medium text-muted-foreground text-xs transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
223
|
+
children: [
|
|
224
|
+
/* @__PURE__ */ jsx(XIcon, { className: "size-3" }),
|
|
225
|
+
"Cancel"
|
|
226
|
+
]
|
|
227
|
+
}
|
|
228
|
+
)
|
|
229
|
+
] }),
|
|
230
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
231
|
+
/* @__PURE__ */ jsx("div", { className: "h-1.5 flex-1 overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsx(
|
|
232
|
+
"div",
|
|
233
|
+
{
|
|
234
|
+
className: "h-full rounded-full bg-blue-500 transition-all duration-1000 ease-linear",
|
|
235
|
+
style: { width: `${progress}%` }
|
|
236
|
+
}
|
|
237
|
+
) }),
|
|
238
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono text-muted-foreground text-xs tabular-nums", children: formatSecondsForDisplay(remaining) })
|
|
239
|
+
] })
|
|
240
|
+
] });
|
|
241
|
+
}
|
|
242
|
+
export {
|
|
243
|
+
APPROVE_BUTTON_CLASS,
|
|
244
|
+
AddFeedbackButton,
|
|
245
|
+
BrowseProfileApprovalCard,
|
|
246
|
+
PmScheduleApprovalCard,
|
|
247
|
+
RejectReasonField,
|
|
248
|
+
WaitForMinutesCard
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=approval-cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-cards.js","sources":["../../../src/chat/typed-interrupts/approval-cards.tsx"],"sourcesContent":["/**\n * The approval-shaped `custom` parks, each a decision only a person makes\n * (`isTypedApprovalInterrupt`): a saved login the agent asks to use (Olympus's\n * `BrowseProfileApprovalInterruptUi`) and a project manager's schedule\n * (`PMScheduleApprovalInterruptUi`). The engine confirms an approve with the\n * host's passkey check and agora holds it to a signed-in person; a refusal's\n * reason shows on the card. Also the wait a tool announced\n * (`WaitForMinutesInterruptUi`), whose only answer is Cancel.\n */\nimport {\n browseProfileApprovalResume,\n interruptTimeoutRemaining,\n readBrowseProfileApprovalContext,\n readPmScheduleApprovalContext,\n readWaitForMinutesContext,\n typedApprovalResume,\n} from '@athenaintel/agent-runtime/typed-interrupt-kinds';\nimport {\n CalendarIcon,\n CheckCheckIcon,\n ClockIcon,\n ExternalLinkIcon,\n KeyRoundIcon,\n MessageSquareIcon,\n ShieldCheckIcon,\n XIcon,\n} from 'lucide-react';\nimport { type MouseEvent, useContext, useId, useState } from 'react';\nimport { MentionAuthCtx } from '../../chat-ui/mentions/suggestions/data/api-client';\nimport { useMentionAsset } from '../../chat-ui/mentions/use-mention-asset';\nimport { createAthenaSpacesUrl } from '../../lib/athena-urls';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { useAthenaLinkClickHandler } from '../athena-citation-links';\nimport {\n formatKeyAsName,\n formatSecondsForDisplay,\n InterruptCardShell,\n WaitForStreamingHint,\n} from './interrupt-card-shell';\nimport type { TypedInterruptCardProps } from './typed-interrupt-types';\n\nconst SCOPE_COPY: Record<string, string> = {\n session: 'for this browser session',\n attempt: 'for this one action',\n};\n\nconst PROFILE_TITLE_FALLBACK = 'Browse profile';\n\n/** A link to an asset in Athena on the web, opened through the host's link handling (an asset tab, a panel). */\nfunction AssetLink({ assetId, children }: { assetId: string; children: string }) {\n const auth = useContext(MentionAuthCtx);\n const handleLinkClick = useAthenaLinkClickHandler();\n const href = createAthenaSpacesUrl({ ...(auth?.appUrl ? { appUrl: auth.appUrl } : {}), assetIds: assetId });\n const onClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n const handled = handleLinkClick({\n href,\n linkText: children,\n target: event.currentTarget.target,\n nativeEvent: event.nativeEvent,\n });\n if (handled) event.preventDefault();\n };\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={onClick}\n className=\"inline-flex w-fit items-center gap-1 text-muted-foreground text-xs hover:text-foreground hover:underline\"\n >\n <ExternalLinkIcon className=\"size-3\" />\n {children}\n </a>\n );\n}\n\nfunction BrowseProfileRow({ assetId, scope }: { assetId: string; scope: string | null }) {\n // The title as agora has it, only for a profile the viewer may read.\n const asset = useMentionAsset(assetId);\n return (\n <div className=\"flex items-center gap-3 px-3 py-2\">\n <div\n aria-hidden\n className=\"flex size-8 shrink-0 items-center justify-center rounded-md border border-border bg-muted text-muted-foreground\"\n >\n <KeyRoundIcon className=\"size-4\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate font-medium text-foreground text-sm\">{asset?.title || PROFILE_TITLE_FALLBACK}</span>\n <AssetLink assetId={assetId}>Open in Spaces</AssetLink>\n </div>\n {scope ? (\n <span className=\"shrink-0 rounded-full bg-muted px-2 py-0.5 text-foreground text-xs\">\n Allow {SCOPE_COPY[scope] ?? scope}\n </span>\n ) : null}\n </div>\n );\n}\n\nexport function BrowseProfileApprovalCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const { profiles, sessionApprovalAllowed } = readBrowseProfileApprovalContext(interrupt);\n return (\n <InterruptCardShell\n title=\"Browse Profile Approval\"\n description=\"The agent wants to use a saved login that requires your approval\"\n icon={<ShieldCheckIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-3\" data-testid=\"typed-interrupt-browse-profile\">\n <p className=\"font-medium text-foreground text-sm\">\n {profiles.length > 1 ? 'Browse profiles requested:' : 'Browse profile requested:'}\n </p>\n <div className=\"divide-y divide-border rounded-md border border-border bg-background\">\n {profiles.map((profile) => (\n <BrowseProfileRow\n key={profile.profile_asset_id}\n assetId={profile.profile_asset_id}\n scope={profile.approval_scope}\n />\n ))}\n </div>\n <p className=\"text-muted-foreground text-xs\">\n Only the profile owner or an admin can approve. Approving lets the agent use this login's saved\n cookies; you won't be re-prompted for the granted scope.\n </p>\n </div>\n }\n actions={\n <>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button onClick={() => resume(browseProfileApprovalResume({ action: 'approve' }))} disabled={actionsDisabled}>\n {isLoading ? 'Processing...' : 'Approve'}\n </Button>\n </WaitForStreamingHint>\n {sessionApprovalAllowed ? (\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(browseProfileApprovalResume({ action: 'approve', forSession: true }))}\n disabled={actionsDisabled}\n data-testid=\"browse-profile-approve-session\"\n >\n <CheckCheckIcon />\n Approve all for this session\n </Button>\n </WaitForStreamingHint>\n ) : null}\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(browseProfileApprovalResume({ action: 'reject' }))}\n disabled={actionsDisabled}\n >\n Reject\n </Button>\n </WaitForStreamingHint>\n </>\n }\n />\n );\n}\n\nconst TEXTAREA_CLASS =\n 'mt-1 w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-foreground text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50';\n\n/** The optional reason a reject carries, behind \"Add feedback\". */\nexport function RejectReasonField({\n label,\n value,\n onChange,\n disabled,\n placeholder = \"Explain why you're rejecting this action...\",\n}: {\n label: string;\n value: string;\n onChange: (value: string) => void;\n disabled: boolean;\n placeholder?: string;\n}) {\n const id = useId();\n return (\n <div>\n <label htmlFor={id} className=\"font-medium text-foreground text-sm\">\n {label}\n </label>\n <textarea\n id={id}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n rows={2}\n disabled={disabled}\n className={TEXTAREA_CLASS}\n />\n </div>\n );\n}\n\nexport function AddFeedbackButton({ onClick, className }: { onClick: () => void; className?: string }) {\n return (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClick}\n className={cn('h-auto px-0 py-0 text-muted-foreground text-xs hover:text-foreground', className)}\n >\n <MessageSquareIcon className=\"size-3\" />\n Add feedback\n </Button>\n );\n}\n\n/** Approve's green, as Olympus's approval cards draw it. */\nexport const APPROVE_BUTTON_CLASS = 'bg-green-600 text-white transition-colors hover:bg-green-700';\n\nexport function PmScheduleApprovalCard({ interrupt, resume, engine }: TypedInterruptCardProps) {\n const [reason, setReason] = useState('');\n const [showFeedback, setShowFeedback] = useState(false);\n const { isLoading, hasTimeout, cancelTimeout, isConversationStreaming } = engine;\n const actionsDisabled = isLoading || isConversationStreaming;\n const { action, fields } = readPmScheduleApprovalContext(interrupt);\n return (\n <InterruptCardShell\n title={`Approve Schedule ${action === 'delete' ? 'Deletion' : 'Creation'}?`}\n description={interrupt.message}\n icon={<CalendarIcon />}\n hasTimeout={hasTimeout}\n onInteraction={cancelTimeout}\n content={\n <div className=\"flex flex-col gap-3\" data-testid=\"typed-interrupt-pm-schedule\">\n {fields.length > 0 ? (\n <div className=\"flex flex-col gap-1.5 rounded-md border border-border bg-muted/60 p-3\">\n {fields.map(([key, value]) => (\n <div key={key} className=\"flex gap-2 text-sm\">\n <span className=\"w-24 shrink-0 font-medium text-muted-foreground\">{formatKeyAsName(key)}</span>\n <span className=\"min-w-0 break-words text-foreground\">{value}</span>\n </div>\n ))}\n </div>\n ) : null}\n {showFeedback ? (\n <RejectReasonField label=\"Reason (optional)\" value={reason} onChange={setReason} disabled={isLoading} />\n ) : (\n <AddFeedbackButton onClick={() => setShowFeedback(true)} className=\"w-fit\" />\n )}\n </div>\n }\n actions={\n <>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n onClick={() => resume(typedApprovalResume({ action: 'approve' }))}\n disabled={actionsDisabled || reason.trim() !== ''}\n className={APPROVE_BUTTON_CLASS}\n >\n {isLoading ? 'Processing...' : 'Approve'}\n </Button>\n </WaitForStreamingHint>\n <WaitForStreamingHint active={isConversationStreaming}>\n <Button\n variant=\"outline\"\n onClick={() => resume(typedApprovalResume({ action: 'reject', reason: reason || undefined }))}\n disabled={actionsDisabled}\n >\n {isLoading ? 'Processing...' : 'Reject'}\n </Button>\n </WaitForStreamingHint>\n </>\n }\n />\n );\n}\n\n/**\n * The wait `wait_for_minutes` announced: a countdown the backend's timer\n * resumes on its own, so the only answer is Cancel, which ends the wait early.\n */\nexport function WaitForMinutesCard({ interrupt, cancel, engine }: TypedInterruptCardProps) {\n const { minutes, reason, timeoutSeconds } = readWaitForMinutesContext(interrupt);\n const total = interrupt.timeout_seconds ?? timeoutSeconds ?? minutes * 60;\n // The engine ticks every second; the first frame reads the deadline itself.\n const remaining = Math.ceil(engine.timeoutRemaining ?? interruptTimeoutRemaining(interrupt) ?? total);\n const progress = total > 0 ? Math.min(100, Math.max(0, ((total - remaining) / total) * 100)) : 0;\n const cancelDisabled = engine.isLoading || engine.isConversationStreaming;\n return (\n <div className=\"flex flex-col gap-3 rounded-lg border border-border bg-card p-4\" data-testid=\"typed-interrupt-wait\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <ClockIcon className=\"size-4 text-blue-500\" />\n <span className=\"font-medium text-foreground text-sm\">\n {reason ?? `Waiting for ${minutes} minute${minutes !== 1 ? 's' : ''}`}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={cancel}\n disabled={cancelDisabled}\n className=\"flex items-center gap-1 rounded-md px-2 py-1 font-medium text-muted-foreground text-xs transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <XIcon className=\"size-3\" />\n Cancel\n </button>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-1.5 flex-1 overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full rounded-full bg-blue-500 transition-all duration-1000 ease-linear\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <span className=\"font-mono text-muted-foreground text-xs tabular-nums\">\n {formatSecondsForDisplay(remaining)}\n </span>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|