@athenaintel/react 0.57.1 → 0.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +778 -9
- package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
- package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
- package/dist/agent-runtime/src/addressed-agents.js +16 -0
- package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
- package/dist/agent-runtime/src/answer-label.cjs +4 -3
- package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
- package/dist/agent-runtime/src/answer-label.d.ts +13 -6
- package/dist/agent-runtime/src/answer-label.js +4 -3
- package/dist/agent-runtime/src/answer-label.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
- package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
- package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
- package/dist/agent-runtime/src/chat-outbox.js +492 -547
- package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
- package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
- package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
- package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
- package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
- package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
- package/dist/agent-runtime/src/edit-command.d.ts +1 -1
- package/dist/agent-runtime/src/edit-command.js.map +1 -1
- package/dist/agent-runtime/src/errors.cjs +1 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -1
- package/dist/agent-runtime/src/errors.js +1 -0
- package/dist/agent-runtime/src/errors.js.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
- package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
- package/dist/agent-runtime/src/index.d.ts +14 -8
- package/dist/agent-runtime/src/lane-follow.cjs +289 -0
- package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-follow.js +289 -0
- package/dist/agent-runtime/src/lane-follow.js.map +1 -0
- package/dist/agent-runtime/src/lane-images.cjs +387 -0
- package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-images.js +387 -0
- package/dist/agent-runtime/src/lane-images.js.map +1 -0
- package/dist/agent-runtime/src/message-window.js +1 -1
- package/dist/agent-runtime/src/messages.cjs +19 -1
- package/dist/agent-runtime/src/messages.cjs.map +1 -1
- package/dist/agent-runtime/src/messages.d.ts +8 -0
- package/dist/agent-runtime/src/messages.js +21 -3
- package/dist/agent-runtime/src/messages.js.map +1 -1
- package/dist/agent-runtime/src/named-agents.cjs +301 -0
- package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/named-agents.d.ts +246 -0
- package/dist/agent-runtime/src/named-agents.js +301 -0
- package/dist/agent-runtime/src/named-agents.js.map +1 -0
- package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
- package/dist/agent-runtime/src/offline-status.d.ts +66 -2
- package/dist/agent-runtime/src/offline-status.js.map +1 -1
- package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
- package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
- package/dist/agent-runtime/src/queue.cjs +2 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -1
- package/dist/agent-runtime/src/queue.d.ts +20 -25
- package/dist/agent-runtime/src/queue.js +2 -2
- package/dist/agent-runtime/src/queue.js.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
- package/dist/agent-runtime/src/run-send.cjs +54 -0
- package/dist/agent-runtime/src/run-send.cjs.map +1 -0
- package/dist/agent-runtime/src/run-send.d.ts +51 -0
- package/dist/agent-runtime/src/run-send.js +54 -0
- package/dist/agent-runtime/src/run-send.js.map +1 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
- package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
- package/dist/agent-runtime/src/runtime.d.ts +9 -5
- package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
- package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
- package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
- package/dist/agent-runtime/src/sealed-idb.js +64 -0
- package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
- package/dist/agent-runtime/src/send-recovery.cjs +90 -118
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
- package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
- package/dist/agent-runtime/src/send-recovery.js +90 -118
- package/dist/agent-runtime/src/send-recovery.js.map +1 -1
- package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
- package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
- package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
- package/dist/agent-runtime/src/statewire-state.cjs +4 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-state.js +4 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
- package/dist/agent-runtime/src/statewire-transport.js +8 -2
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
- package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
- package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
- package/dist/agent-runtime/src/subagents.cjs +22 -29
- package/dist/agent-runtime/src/subagents.cjs.map +1 -1
- package/dist/agent-runtime/src/subagents.js +23 -30
- package/dist/agent-runtime/src/subagents.js.map +1 -1
- package/dist/agent-runtime/src/thread-extras.cjs +27 -19
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
- package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
- package/dist/agent-runtime/src/thread-extras.js +27 -19
- package/dist/agent-runtime/src/thread-extras.js.map +1 -1
- package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
- package/dist/agent-runtime/src/tool-metadata.cjs +12 -0
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +12 -0
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/agent-runtime/src/tool-names.cjs +21 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-names.d.ts +8 -0
- package/dist/agent-runtime/src/tool-names.js +21 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -1
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
- package/dist/agent-runtime/src/typed-interrupts.js +48 -0
- package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
- package/dist/agent-runtime/src/types.d.ts +1 -1
- package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
- package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
- package/dist/agent-runtime/src/use-conversation-list.js +1 -0
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
- package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
- package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
- package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
- package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
- package/dist/agent-runtime/src/work-in.d.ts +127 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +13 -5
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +33 -2
- package/dist/assets/asset-panel-store.js +13 -5
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
- package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
- package/dist/auth/AthenaCredentialSourceContext.js +11 -0
- package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
- package/dist/auth/account-identity.cjs +13 -2
- package/dist/auth/account-identity.cjs.map +1 -1
- package/dist/auth/account-identity.d.ts +9 -0
- package/dist/auth/account-identity.js +13 -2
- package/dist/auth/account-identity.js.map +1 -1
- package/dist/auth/credential-source.cjs +20 -4
- package/dist/auth/credential-source.cjs.map +1 -1
- package/dist/auth/credential-source.d.ts +9 -0
- package/dist/auth/credential-source.js +20 -4
- package/dist/auth/credential-source.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +31 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -1
- package/dist/catalog/chat-pickers.d.ts +17 -0
- package/dist/catalog/chat-pickers.js +33 -2
- package/dist/catalog/chat-pickers.js.map +1 -1
- package/dist/catalog/runtime-catalog.cjs +63 -3
- package/dist/catalog/runtime-catalog.cjs.map +1 -1
- package/dist/catalog/runtime-catalog.d.ts +63 -3
- package/dist/catalog/runtime-catalog.js +64 -4
- package/dist/catalog/runtime-catalog.js.map +1 -1
- package/dist/chat/AthenaChat.cjs +337 -99
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +337 -99
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +35 -5
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +55 -2
- package/dist/chat/StatewireApprovalCard.js +37 -7
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +17 -2
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
- package/dist/chat/StatewireQueuedMessages.js +18 -3
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/chat-agent-mentions.cjs +70 -0
- package/dist/chat/chat-agent-mentions.cjs.map +1 -0
- package/dist/chat/chat-agent-mentions.d.ts +13 -0
- package/dist/chat/chat-agent-mentions.js +70 -0
- package/dist/chat/chat-agent-mentions.js.map +1 -0
- package/dist/chat/composer-actions.cjs +12 -0
- package/dist/chat/composer-actions.cjs.map +1 -0
- package/dist/chat/composer-actions.d.ts +22 -0
- package/dist/chat/composer-actions.js +12 -0
- package/dist/chat/composer-actions.js.map +1 -0
- package/dist/chat/follow-up-suggestions.cjs +185 -0
- package/dist/chat/follow-up-suggestions.cjs.map +1 -0
- package/dist/chat/follow-up-suggestions.d.ts +64 -0
- package/dist/chat/follow-up-suggestions.js +185 -0
- package/dist/chat/follow-up-suggestions.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
- package/dist/chat/super-grouping/ToolTimeline.js +4 -3
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/turn-changes.cjs +284 -0
- package/dist/chat/turn-changes.cjs.map +1 -0
- package/dist/chat/turn-changes.d.ts +130 -0
- package/dist/chat/turn-changes.js +284 -0
- package/dist/chat/turn-changes.js.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
- package/dist/chat/typed-interrupts/approval-cards.js +250 -0
- package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
- package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
- package/dist/chat/typed-interrupts/form-cards.js +289 -0
- package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
- package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
- package/dist/chat/typed-interrupts/request-file-card.js +159 -0
- package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
- package/dist/chat-ui/composer/composer-named-agents.js +13 -0
- package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
- package/dist/chat-ui/composer/slash-command-menu.js +143 -0
- package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
- package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands.cjs +74 -0
- package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
- package/dist/chat-ui/composer/slash-commands.js +74 -0
- package/dist/chat-ui/composer/slash-commands.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
- package/dist/chat-ui/composer/tiptap-composer.js +135 -9
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +3 -0
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +3 -2
- package/dist/chat-ui/index.js +3 -0
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +2 -2
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -1
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +2 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +3 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +36 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +42 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +36 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +235 -19
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +236 -20
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
- package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
- package/dist/collab/client.cjs +17 -5
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +22 -7
- package/dist/collab/client.js +17 -5
- package/dist/collab/client.js.map +1 -1
- package/dist/composer/ComposerAttachedReferences.cjs +119 -0
- package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
- package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
- package/dist/composer/ComposerAttachedReferences.js +119 -0
- package/dist/composer/ComposerAttachedReferences.js.map +1 -0
- package/dist/composer/ComposerNamedAgents.cjs +63 -0
- package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
- package/dist/composer/ComposerNamedAgents.d.ts +16 -0
- package/dist/composer/ComposerNamedAgents.js +63 -0
- package/dist/composer/ComposerNamedAgents.js.map +1 -0
- package/dist/composer/attached-references.cjs +159 -0
- package/dist/composer/attached-references.cjs.map +1 -0
- package/dist/composer/attached-references.d.ts +86 -0
- package/dist/composer/attached-references.js +159 -0
- package/dist/composer/attached-references.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +14 -7
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +6 -1
- package/dist/composer/build-composed-message.js +14 -7
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +6 -2
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +7 -1
- package/dist/composer/composer-handoff.js +6 -2
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/folder-upload.cjs +149 -0
- package/dist/composer/folder-upload.cjs.map +1 -0
- package/dist/composer/folder-upload.d.ts +79 -0
- package/dist/composer/folder-upload.js +149 -0
- package/dist/composer/folder-upload.js.map +1 -0
- package/dist/composer/index.d.ts +1 -1
- package/dist/composer/useAttachToChat.cjs +35 -0
- package/dist/composer/useAttachToChat.cjs.map +1 -0
- package/dist/composer/useAttachToChat.d.ts +54 -0
- package/dist/composer/useAttachToChat.js +35 -0
- package/dist/composer/useAttachToChat.js.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
- package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +95 -7
- package/dist/composer/useFileUpload.cjs.map +1 -1
- package/dist/composer/useFileUpload.d.ts +21 -2
- package/dist/composer/useFileUpload.js +95 -7
- package/dist/composer/useFileUpload.js.map +1 -1
- package/dist/data/athena-api-error.cjs +125 -0
- package/dist/data/athena-api-error.cjs.map +1 -0
- package/dist/data/athena-api-error.d.ts +96 -0
- package/dist/data/athena-api-error.js +125 -0
- package/dist/data/athena-api-error.js.map +1 -0
- package/dist/data/athena-data-client.cjs +106 -0
- package/dist/data/athena-data-client.cjs.map +1 -0
- package/dist/data/athena-data-client.d.ts +74 -0
- package/dist/data/athena-data-client.js +106 -0
- package/dist/data/athena-data-client.js.map +1 -0
- package/dist/data/athena-member.cjs +93 -0
- package/dist/data/athena-member.cjs.map +1 -0
- package/dist/data/athena-member.d.ts +125 -0
- package/dist/data/athena-member.js +93 -0
- package/dist/data/athena-member.js.map +1 -0
- package/dist/data/athena-request.cjs +458 -0
- package/dist/data/athena-request.cjs.map +1 -0
- package/dist/data/athena-request.d.ts +120 -0
- package/dist/data/athena-request.js +458 -0
- package/dist/data/athena-request.js.map +1 -0
- package/dist/data/use-athena-fetch.cjs +14 -0
- package/dist/data/use-athena-fetch.cjs.map +1 -0
- package/dist/data/use-athena-fetch.d.ts +19 -0
- package/dist/data/use-athena-fetch.js +14 -0
- package/dist/data/use-athena-fetch.js.map +1 -0
- package/dist/data/use-athena-graphql.cjs +66 -0
- package/dist/data/use-athena-graphql.cjs.map +1 -0
- package/dist/data/use-athena-graphql.d.ts +56 -0
- package/dist/data/use-athena-graphql.js +66 -0
- package/dist/data/use-athena-graphql.js.map +1 -0
- package/dist/data/use-athena-rest.cjs +33 -0
- package/dist/data/use-athena-rest.cjs.map +1 -0
- package/dist/data/use-athena-rest.d.ts +21 -0
- package/dist/data/use-athena-rest.js +33 -0
- package/dist/data/use-athena-rest.js.map +1 -0
- package/dist/data/use-semantic-query.cjs +44 -0
- package/dist/data/use-semantic-query.cjs.map +1 -0
- package/dist/data/use-semantic-query.d.ts +92 -0
- package/dist/data/use-semantic-query.js +44 -0
- package/dist/data/use-semantic-query.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +7 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +7 -0
- package/dist/diagnostics/errors.js +7 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +155 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +72 -13
- package/dist/index.js +148 -4
- package/dist/index.js.map +1 -1
- package/dist/keryx-http/src/initial-sync.cjs +64 -16
- package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
- package/dist/keryx-http/src/initial-sync.d.ts +31 -1
- package/dist/keryx-http/src/initial-sync.js +64 -16
- package/dist/keryx-http/src/initial-sync.js.map +1 -1
- package/dist/keryx-http/src/own-awareness.cjs +20 -0
- package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
- package/dist/keryx-http/src/own-awareness.d.ts +50 -0
- package/dist/keryx-http/src/own-awareness.js +20 -0
- package/dist/keryx-http/src/own-awareness.js.map +1 -0
- package/dist/keryx-http/src/update-attributions.cjs +26 -1
- package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
- package/dist/keryx-http/src/update-attributions.d.ts +10 -1
- package/dist/keryx-http/src/update-attributions.js +26 -1
- package/dist/keryx-http/src/update-attributions.js.map +1 -1
- package/dist/offline/chat-outbox.cjs +262 -26
- package/dist/offline/chat-outbox.cjs.map +1 -1
- package/dist/offline/chat-outbox.d.ts +90 -12
- package/dist/offline/chat-outbox.js +263 -27
- package/dist/offline/chat-outbox.js.map +1 -1
- package/dist/provider/AthenaProvider.cjs +63 -19
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +66 -22
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/react/package.json.cjs +1 -1
- package/dist/react/package.json.js +1 -1
- package/dist/references/src/anchors/types.cjs +5 -0
- package/dist/references/src/anchors/types.cjs.map +1 -1
- package/dist/references/src/anchors/types.js +5 -0
- package/dist/references/src/anchors/types.js.map +1 -1
- package/dist/references/src/attachable.cjs +149 -0
- package/dist/references/src/attachable.cjs.map +1 -0
- package/dist/references/src/attachable.d.ts +87 -0
- package/dist/references/src/attachable.js +149 -0
- package/dist/references/src/attachable.js.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
- package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
- package/dist/runtime/statewire-plan-mode.cjs +71 -0
- package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
- package/dist/runtime/statewire-plan-mode.d.ts +88 -0
- package/dist/runtime/statewire-plan-mode.js +71 -0
- package/dist/runtime/statewire-plan-mode.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +18 -1
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +20 -0
- package/dist/runtime/statewire-run-config.js +18 -1
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-session-key.cjs +11 -5
- package/dist/runtime/statewire-session-key.cjs.map +1 -1
- package/dist/runtime/statewire-session-key.d.ts +22 -10
- package/dist/runtime/statewire-session-key.js +11 -5
- package/dist/runtime/statewire-session-key.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +65 -8
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
- package/dist/runtime/useAthenaStatewireRuntime.js +67 -10
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaAssets.cjs +394 -0
- package/dist/search/useAthenaAssets.cjs.map +1 -0
- package/dist/search/useAthenaAssets.d.ts +186 -0
- package/dist/search/useAthenaAssets.js +394 -0
- package/dist/search/useAthenaAssets.js.map +1 -0
- package/dist/sheet-range/index.cjs +4 -0
- package/dist/sheet-range/index.cjs.map +1 -1
- package/dist/sheet-range/index.d.ts +4 -2
- package/dist/sheet-range/index.js +4 -0
- package/dist/sheet-range/index.js.map +1 -1
- package/dist/sheet-range/query-range.cjs +102 -0
- package/dist/sheet-range/query-range.cjs.map +1 -0
- package/dist/sheet-range/query-range.d.ts +46 -0
- package/dist/sheet-range/query-range.js +102 -0
- package/dist/sheet-range/query-range.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/subagents/index.cjs +49 -0
- package/dist/subagents/index.cjs.map +1 -0
- package/dist/subagents/index.d.ts +16 -0
- package/dist/subagents/index.js +49 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/lane-follow.cjs +19 -0
- package/dist/subagents/lane-follow.cjs.map +1 -0
- package/dist/subagents/lane-follow.d.ts +9 -0
- package/dist/subagents/lane-follow.js +19 -0
- package/dist/subagents/lane-follow.js.map +1 -0
- package/dist/subagents/lane-model.cjs +178 -0
- package/dist/subagents/lane-model.cjs.map +1 -0
- package/dist/subagents/lane-model.d.ts +140 -0
- package/dist/subagents/lane-model.js +178 -0
- package/dist/subagents/lane-model.js.map +1 -0
- package/dist/subagents/lane-parts.cjs +517 -0
- package/dist/subagents/lane-parts.cjs.map +1 -0
- package/dist/subagents/lane-parts.d.ts +130 -0
- package/dist/subagents/lane-parts.js +517 -0
- package/dist/subagents/lane-parts.js.map +1 -0
- package/dist/subagents/subagent-lane-group.cjs +215 -0
- package/dist/subagents/subagent-lane-group.cjs.map +1 -0
- package/dist/subagents/subagent-lane-group.d.ts +67 -0
- package/dist/subagents/subagent-lane-group.js +215 -0
- package/dist/subagents/subagent-lane-group.js.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
- package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
- package/dist/subagents/subagent-transcript-drawer.js +431 -0
- package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
- package/dist/subagents/task-subagent-group.cjs +115 -0
- package/dist/subagents/task-subagent-group.cjs.map +1 -0
- package/dist/subagents/task-subagent-group.d.ts +36 -0
- package/dist/subagents/task-subagent-group.js +115 -0
- package/dist/subagents/task-subagent-group.js.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
- package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
- package/dist/subagents/use-omitted-images-in-view.js +68 -0
- package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
- package/dist/threads/Inbox.cjs +2 -2
- package/dist/threads/Inbox.cjs.map +1 -1
- package/dist/threads/SessionList.cjs +27 -24
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionList.js +22 -19
- package/dist/threads/SessionList.js.map +1 -1
- package/dist/threads/SessionsPage.cjs +13 -7
- package/dist/threads/SessionsPage.cjs.map +1 -1
- package/dist/threads/SessionsPage.d.ts +10 -1
- package/dist/threads/SessionsPage.js +9 -3
- package/dist/threads/SessionsPage.js.map +1 -1
- package/dist/threads/live-session-rows.cjs +207 -0
- package/dist/threads/live-session-rows.cjs.map +1 -0
- package/dist/threads/live-session-rows.d.ts +175 -0
- package/dist/threads/live-session-rows.js +207 -0
- package/dist/threads/live-session-rows.js.map +1 -0
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +2 -1
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +3 -3
- package/dist/threads/session-row-parts.cjs.map +1 -1
- package/dist/threads/sessions-page-model.cjs +13 -5
- package/dist/threads/sessions-page-model.cjs.map +1 -1
- package/dist/threads/sessions-page-model.d.ts +7 -0
- package/dist/threads/sessions-page-model.js +11 -3
- package/dist/threads/sessions-page-model.js.map +1 -1
- package/dist/threads/sessions-page-storage.cjs +8 -8
- package/dist/threads/sessions-page-storage.cjs.map +1 -1
- package/dist/threads/sessions-page-storage.d.ts +5 -1
- package/dist/threads/sessions-page-storage.js +8 -8
- package/dist/threads/sessions-page-storage.js.map +1 -1
- package/dist/threads/statewire-thread-list.cjs +173 -20
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +44 -1
- package/dist/threads/statewire-thread-list.js +174 -21
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +1 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -1
- package/dist/threads/use-athena-sessions.d.ts +7 -0
- package/dist/threads/use-athena-sessions.js +1 -0
- package/dist/threads/use-athena-sessions.js.map +1 -1
- package/dist/threads/use-athena-thread-agent.cjs +31 -0
- package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
- package/dist/threads/use-athena-thread-agent.d.ts +38 -0
- package/dist/threads/use-athena-thread-agent.js +31 -0
- package/dist/threads/use-athena-thread-agent.js.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.d.ts +1 -0
- package/dist/tools/agent-creations.cjs +97 -0
- package/dist/tools/agent-creations.cjs.map +1 -0
- package/dist/tools/agent-creations.d.ts +38 -0
- package/dist/tools/agent-creations.js +97 -0
- package/dist/tools/agent-creations.js.map +1 -0
- package/dist/tools/agent-highlights.cjs +100 -0
- package/dist/tools/agent-highlights.cjs.map +1 -0
- package/dist/tools/agent-highlights.d.ts +57 -0
- package/dist/tools/agent-highlights.js +100 -0
- package/dist/tools/agent-highlights.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +1 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -1
- package/dist/tools/append-document-tool-ui.d.ts +7 -0
- package/dist/tools/append-document-tool-ui.js +2 -1
- package/dist/tools/append-document-tool-ui.js.map +1 -1
- package/dist/tools/auto-open-tools.cjs +144 -71
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.d.ts +131 -1
- package/dist/tools/auto-open-tools.js +145 -72
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/browser-tool-uis.cjs +594 -0
- package/dist/tools/browser-tool-uis.cjs.map +1 -0
- package/dist/tools/browser-tool-uis.d.ts +8 -0
- package/dist/tools/browser-tool-uis.js +594 -0
- package/dist/tools/browser-tool-uis.js.map +1 -0
- package/dist/tools/computer-asset-tool-uis.cjs +313 -0
- package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
- package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
- package/dist/tools/computer-asset-tool-uis.js +313 -0
- package/dist/tools/computer-asset-tool-uis.js.map +1 -0
- package/dist/tools/document-edit-tool-uis.cjs +218 -0
- package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/document-edit-tool-uis.d.ts +40 -0
- package/dist/tools/document-edit-tool-uis.js +218 -0
- package/dist/tools/document-edit-tool-uis.js.map +1 -0
- package/dist/tools/drive-tool-uis.cjs +425 -0
- package/dist/tools/drive-tool-uis.cjs.map +1 -0
- package/dist/tools/drive-tool-uis.d.ts +120 -0
- package/dist/tools/drive-tool-uis.js +425 -0
- package/dist/tools/drive-tool-uis.js.map +1 -0
- package/dist/tools/email-calendar-tool-uis.cjs +789 -0
- package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
- package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
- package/dist/tools/email-calendar-tool-uis.js +789 -0
- package/dist/tools/email-calendar-tool-uis.js.map +1 -0
- package/dist/tools/ontology-tool-uis.cjs +83 -0
- package/dist/tools/ontology-tool-uis.cjs.map +1 -0
- package/dist/tools/ontology-tool-uis.d.ts +9 -0
- package/dist/tools/ontology-tool-uis.js +83 -0
- package/dist/tools/ontology-tool-uis.js.map +1 -0
- package/dist/tools/orchestration-tool-uis.cjs +586 -0
- package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
- package/dist/tools/orchestration-tool-uis.d.ts +141 -0
- package/dist/tools/orchestration-tool-uis.js +586 -0
- package/dist/tools/orchestration-tool-uis.js.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
- package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
- package/dist/tools/presentation-edit-tool-uis.js +516 -0
- package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
- package/dist/tools/project-tool-uis.cjs +213 -0
- package/dist/tools/project-tool-uis.cjs.map +1 -0
- package/dist/tools/project-tool-uis.d.ts +14 -0
- package/dist/tools/project-tool-uis.js +213 -0
- package/dist/tools/project-tool-uis.js.map +1 -0
- package/dist/tools/sandbox-tool-uis.cjs +491 -0
- package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
- package/dist/tools/sandbox-tool-uis.d.ts +116 -0
- package/dist/tools/sandbox-tool-uis.js +491 -0
- package/dist/tools/sandbox-tool-uis.js.map +1 -0
- package/dist/tools/sheet-query-tool-ui.cjs +138 -0
- package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
- package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
- package/dist/tools/sheet-query-tool-ui.js +138 -0
- package/dist/tools/sheet-query-tool-ui.js.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
- package/dist/tools/studio-screenshot-tool-uis.js +262 -0
- package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
- package/dist/tools/subagent-task-tool-ui.cjs +24 -475
- package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
- package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
- package/dist/tools/subagent-task-tool-ui.js +28 -479
- package/dist/tools/subagent-task-tool-ui.js.map +1 -1
- package/dist/tools/tool-summary.cjs +36 -0
- package/dist/tools/tool-summary.cjs.map +1 -1
- package/dist/tools/tool-summary.js +36 -0
- package/dist/tools/tool-summary.js.map +1 -1
- package/dist/tools/tool-uis.cjs +181 -53
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.d.ts +40 -0
- package/dist/tools/tool-uis.js +183 -55
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/typed-interrupts/index.cjs +15 -0
- package/dist/typed-interrupts/index.cjs.map +1 -0
- package/dist/typed-interrupts/index.d.ts +20 -0
- package/dist/typed-interrupts/index.js +15 -0
- package/dist/typed-interrupts/index.js.map +1 -0
- package/dist/workbench/session-workbench-panes.cjs +6 -6
- package/dist/workbench/session-workbench-panes.cjs.map +1 -1
- package/package.json +28 -6
- package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
- package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
- package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { MonitorIcon, CircleIcon, ExternalLinkIcon } from "lucide-react";
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import { truncate, ToolCard, ExpandableSection } from "./primitives.js";
|
|
5
|
+
import { ToolFallback } from "./tool-fallback.js";
|
|
6
|
+
import { isRecord, classifyToolResult, resultRecord } from "../agent-runtime/src/tool-result.js";
|
|
7
|
+
import { getToolDisplayMeta } from "../agent-runtime/src/tool-metadata.js";
|
|
8
|
+
import { cn } from "cnfast";
|
|
9
|
+
const TOOL_STATUS = {
|
|
10
|
+
running: "running",
|
|
11
|
+
awaiting: "requires-action",
|
|
12
|
+
complete: "complete",
|
|
13
|
+
failed: "incomplete"
|
|
14
|
+
};
|
|
15
|
+
function callState(call) {
|
|
16
|
+
const classification = classifyToolResult({
|
|
17
|
+
status: call.status,
|
|
18
|
+
result: call.result,
|
|
19
|
+
isError: call.isError
|
|
20
|
+
});
|
|
21
|
+
switch (classification.state) {
|
|
22
|
+
case "running":
|
|
23
|
+
return { kind: "running" };
|
|
24
|
+
case "requires-action":
|
|
25
|
+
return { kind: "awaiting" };
|
|
26
|
+
case "complete":
|
|
27
|
+
return { kind: "complete" };
|
|
28
|
+
case "error":
|
|
29
|
+
return { kind: "failed", error: classification.failure.message };
|
|
30
|
+
case "rejected":
|
|
31
|
+
case "paused":
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function cardLine(state, words, toolName) {
|
|
36
|
+
switch (state.kind) {
|
|
37
|
+
case "running":
|
|
38
|
+
return words.running;
|
|
39
|
+
case "complete":
|
|
40
|
+
return words.done;
|
|
41
|
+
case "awaiting":
|
|
42
|
+
return {
|
|
43
|
+
title: `Waiting for confirmation of ${getToolDisplayMeta(toolName).displayName}`,
|
|
44
|
+
subtitle: words.running.subtitle
|
|
45
|
+
};
|
|
46
|
+
case "failed":
|
|
47
|
+
return {
|
|
48
|
+
title: words.running.title.replace(/(\.{3}|…)\s*$/u, ""),
|
|
49
|
+
subtitle: words.running.subtitle
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function computerAssetToolUI(Card, displayName) {
|
|
54
|
+
const Impl = (props) => {
|
|
55
|
+
const call = {
|
|
56
|
+
toolName: props.toolName,
|
|
57
|
+
args: isRecord(props.args) ? props.args : {},
|
|
58
|
+
result: props.result,
|
|
59
|
+
status: props.status,
|
|
60
|
+
isError: props.isError
|
|
61
|
+
};
|
|
62
|
+
const state = callState(call);
|
|
63
|
+
if (!state) return /* @__PURE__ */ jsx(ToolFallback, { ...props, icon: MonitorIcon });
|
|
64
|
+
return /* @__PURE__ */ jsx(Card, { call, state });
|
|
65
|
+
};
|
|
66
|
+
const ToolUI = memo(Impl);
|
|
67
|
+
ToolUI.displayName = displayName;
|
|
68
|
+
return ToolUI;
|
|
69
|
+
}
|
|
70
|
+
function stringField(value) {
|
|
71
|
+
return typeof value === "string" ? value : void 0;
|
|
72
|
+
}
|
|
73
|
+
function scalarField(value) {
|
|
74
|
+
if (typeof value === "string") return value;
|
|
75
|
+
if (typeof value === "number" && Number.isFinite(value)) return String(value);
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
function stateLabel(state) {
|
|
79
|
+
if (!state) return "unknown";
|
|
80
|
+
if (state === "started") return "Running";
|
|
81
|
+
if (state === "stopped") return "Stopped";
|
|
82
|
+
if (state === "error") return "Error";
|
|
83
|
+
return state.charAt(0).toUpperCase() + state.slice(1);
|
|
84
|
+
}
|
|
85
|
+
function secretCountText(count) {
|
|
86
|
+
return `with ${count} startup Secret${count === 1 ? "" : "s"}`;
|
|
87
|
+
}
|
|
88
|
+
const COMPUTER_ASSET_ID = /^asset_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
89
|
+
function isComputerAssetId(value) {
|
|
90
|
+
return typeof value === "string" && COMPUTER_ASSET_ID.test(value);
|
|
91
|
+
}
|
|
92
|
+
function retainedCreation(value) {
|
|
93
|
+
if (value.code !== "COMPUTER_CREATION_RETAINED") return null;
|
|
94
|
+
if (!isComputerAssetId(value.computer_asset_id)) return null;
|
|
95
|
+
if (value.asset_id !== void 0 && value.asset_id !== value.computer_asset_id) return null;
|
|
96
|
+
if (value.recoverable !== false) return null;
|
|
97
|
+
const status = value.error_status_code;
|
|
98
|
+
if (typeof status !== "number" || !Number.isInteger(status) || status < 400 || status > 599) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
if (value.creation_confirmed === true && value.created === true) return { confirmed: true };
|
|
102
|
+
if (value.creation_confirmed === false && value.created === null) return { confirmed: false };
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
function isWellFormedCreation(value) {
|
|
106
|
+
const optional = (key, accepts) => value[key] === void 0 || accepts(value[key]);
|
|
107
|
+
const typed = optional("computer_asset_id", isComputerAssetId) && optional("asset_id", isComputerAssetId) && optional("code", (field) => typeof field === "string") && optional("created", (field) => field === null || typeof field === "boolean") && optional("creation_confirmed", (field) => typeof field === "boolean") && optional("recoverable", (field) => typeof field === "boolean") && optional("error_status_code", (field) => typeof field === "number") && (value.error == null || typeof value.error === "string") && (value.state == null || typeof value.state === "string") && optional(
|
|
108
|
+
"startup_secret_count",
|
|
109
|
+
(field) => typeof field === "number" && Number.isInteger(field) && field >= 0
|
|
110
|
+
);
|
|
111
|
+
if (!typed) return false;
|
|
112
|
+
const retained = retainedCreation(value) !== null;
|
|
113
|
+
if (value.code !== void 0 && !retained) return false;
|
|
114
|
+
if (!retained && !(value.created !== null && value.created !== false && value.creation_confirmed !== false && (!value.error || value.created === true || !value.computer_asset_id && !value.asset_id))) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
return !value.asset_id || !value.computer_asset_id || value.asset_id === value.computer_asset_id;
|
|
118
|
+
}
|
|
119
|
+
function computerCreationDisplay(value) {
|
|
120
|
+
const retained = value ? retainedCreation(value) : null;
|
|
121
|
+
if (retained) {
|
|
122
|
+
return {
|
|
123
|
+
isFailure: true,
|
|
124
|
+
message: retained.confirmed ? "Computer created, but initialization could not be confirmed. Inspect this computer before creating another." : "Computer creation could not be confirmed. Inspect this computer before creating another."
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
if (!value || !isWellFormedCreation(value) || value.code !== void 0 || value.created === null || value.created === false || value.creation_confirmed === false) {
|
|
128
|
+
return { isFailure: true, message: "Computer creation could not be confirmed." };
|
|
129
|
+
}
|
|
130
|
+
const assetId = stringField(value.computer_asset_id) ?? stringField(value.asset_id);
|
|
131
|
+
if (value.error) {
|
|
132
|
+
return {
|
|
133
|
+
isFailure: true,
|
|
134
|
+
message: value.created === true && assetId ? "Computer created, but follow-up setup could not be confirmed. Inspect this computer before creating another." : "Computer creation failed."
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (!assetId) return { isFailure: true, message: "Computer creation could not be confirmed." };
|
|
138
|
+
const secretCount = typeof value.startup_secret_count === "number" ? value.startup_secret_count : 0;
|
|
139
|
+
const state = stringField(value.state);
|
|
140
|
+
const stateWord = state ? state === "started" || state === "running" ? "Running" : state.charAt(0).toUpperCase() + state.slice(1) : void 0;
|
|
141
|
+
const secrets = secretCount > 0 ? secretCountText(secretCount) : void 0;
|
|
142
|
+
const subtitle = [secrets, stateWord].filter((part) => !!part).join(" — ");
|
|
143
|
+
return { isFailure: false, line: { title: "Computer created", subtitle: subtitle || void 0 } };
|
|
144
|
+
}
|
|
145
|
+
function CreateComputerCard({ call, state }) {
|
|
146
|
+
const provider = stringField(call.args.provider) ?? "computer";
|
|
147
|
+
const template = stringField(call.args.template);
|
|
148
|
+
const secretCount = Array.isArray(call.args.startup_secret_ids) ? call.args.startup_secret_ids.length : 0;
|
|
149
|
+
const running = template ? {
|
|
150
|
+
title: `Creating ${provider} runtime...`,
|
|
151
|
+
subtitle: `from template "${truncate(template, 40)}"${secretCount > 0 ? ` ${secretCountText(secretCount)}` : ""}`
|
|
152
|
+
} : { title: `Creating ${provider} runtime...` };
|
|
153
|
+
const record = resultRecord(call.result);
|
|
154
|
+
const display = computerCreationDisplay(record);
|
|
155
|
+
const shown = display.isFailure && (state.kind === "complete" || state.kind === "failed" && record) ? { kind: "failed", error: display.message } : state;
|
|
156
|
+
const line = cardLine(
|
|
157
|
+
shown,
|
|
158
|
+
{ running, done: display.isFailure ? { title: display.message } : display.line },
|
|
159
|
+
call.toolName
|
|
160
|
+
);
|
|
161
|
+
return /* @__PURE__ */ jsx(
|
|
162
|
+
ToolCard,
|
|
163
|
+
{
|
|
164
|
+
icon: MonitorIcon,
|
|
165
|
+
status: TOOL_STATUS[shown.kind],
|
|
166
|
+
title: line.title,
|
|
167
|
+
subtitle: line.subtitle,
|
|
168
|
+
toolName: call.toolName,
|
|
169
|
+
error: shown.kind === "failed" ? shown.error : void 0,
|
|
170
|
+
args: call.args,
|
|
171
|
+
result: call.result
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
const ComputerAssetCreateToolUI = computerAssetToolUI(
|
|
176
|
+
CreateComputerCard,
|
|
177
|
+
"ComputerAssetCreateToolUI"
|
|
178
|
+
);
|
|
179
|
+
function EnsureSandboxCard({ call, state }) {
|
|
180
|
+
const record = resultRecord(call.result);
|
|
181
|
+
const sandboxState = stringField(record == null ? void 0 : record.state);
|
|
182
|
+
const detail = sandboxState === "started" ? void 0 : stringField(record == null ? void 0 : record.detail);
|
|
183
|
+
const done = !record ? { title: "Sandbox check complete" } : sandboxState === "started" ? { title: "Sandbox is running" } : {
|
|
184
|
+
title: `Sandbox state: ${stateLabel(sandboxState)}${!detail && record.recoverable === true ? " (recoverable)" : ""}`
|
|
185
|
+
};
|
|
186
|
+
const line = cardLine(
|
|
187
|
+
state,
|
|
188
|
+
{ running: { title: "Ensuring computer sandbox is ready..." }, done },
|
|
189
|
+
call.toolName
|
|
190
|
+
);
|
|
191
|
+
return /* @__PURE__ */ jsx(
|
|
192
|
+
ToolCard,
|
|
193
|
+
{
|
|
194
|
+
icon: MonitorIcon,
|
|
195
|
+
status: TOOL_STATUS[state.kind],
|
|
196
|
+
title: line.title,
|
|
197
|
+
subtitle: line.subtitle,
|
|
198
|
+
toolName: call.toolName,
|
|
199
|
+
error: state.kind === "failed" ? state.error : void 0,
|
|
200
|
+
args: call.args,
|
|
201
|
+
result: call.result,
|
|
202
|
+
children: state.kind === "complete" && detail ? /* @__PURE__ */ jsx(ExpandableSection, { defaultOpen: true, children: /* @__PURE__ */ jsx("p", { className: "text-[12px] leading-relaxed text-muted-foreground", children: detail }) }) : null
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
const ComputerAssetEnsureSandboxToolUI = computerAssetToolUI(
|
|
207
|
+
EnsureSandboxCard,
|
|
208
|
+
"ComputerAssetEnsureSandboxToolUI"
|
|
209
|
+
);
|
|
210
|
+
function GetStatusCard({ call, state }) {
|
|
211
|
+
const record = resultRecord(call.result);
|
|
212
|
+
const computerState = stringField(record == null ? void 0 : record.state);
|
|
213
|
+
const line = cardLine(
|
|
214
|
+
state,
|
|
215
|
+
{
|
|
216
|
+
running: { title: "Checking computer status..." },
|
|
217
|
+
done: { title: record ? `Computer is ${stateLabel(computerState)}` : "Status check complete" }
|
|
218
|
+
},
|
|
219
|
+
call.toolName
|
|
220
|
+
);
|
|
221
|
+
return /* @__PURE__ */ jsx(
|
|
222
|
+
ToolCard,
|
|
223
|
+
{
|
|
224
|
+
icon: MonitorIcon,
|
|
225
|
+
status: TOOL_STATUS[state.kind],
|
|
226
|
+
title: line.title,
|
|
227
|
+
subtitle: line.subtitle,
|
|
228
|
+
toolName: call.toolName,
|
|
229
|
+
error: state.kind === "failed" ? state.error : void 0,
|
|
230
|
+
args: call.args,
|
|
231
|
+
result: call.result,
|
|
232
|
+
children: state.kind === "complete" && record ? /* @__PURE__ */ jsx(ExpandableSection, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 text-xs text-muted-foreground", children: [
|
|
233
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
234
|
+
/* @__PURE__ */ jsx(
|
|
235
|
+
CircleIcon,
|
|
236
|
+
{
|
|
237
|
+
className: cn(
|
|
238
|
+
"size-2.5",
|
|
239
|
+
computerState === "started" && "fill-emerald-600 text-emerald-600",
|
|
240
|
+
computerState === "stopped" && "fill-muted-foreground text-muted-foreground",
|
|
241
|
+
computerState === "error" && "fill-destructive text-destructive"
|
|
242
|
+
)
|
|
243
|
+
}
|
|
244
|
+
),
|
|
245
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium", children: stateLabel(computerState) })
|
|
246
|
+
] }),
|
|
247
|
+
record.recoverable === true ? /* @__PURE__ */ jsx("span", { className: "rounded bg-amber-500/10 px-1.5 py-0.5 text-[10px] font-medium text-amber-600", children: "Recoverable" }) : null
|
|
248
|
+
] }) }) : null
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
const ComputerAssetGetStatusToolUI = computerAssetToolUI(
|
|
253
|
+
GetStatusCard,
|
|
254
|
+
"ComputerAssetGetStatusToolUI"
|
|
255
|
+
);
|
|
256
|
+
function DeployCard({ call, state }) {
|
|
257
|
+
const record = resultRecord(call.result);
|
|
258
|
+
const url = typeof (record == null ? void 0 : record.url) === "string" && /^https?:\/\//i.test(record.url) ? record.url : void 0;
|
|
259
|
+
const deployedPorts = Array.isArray(record == null ? void 0 : record.deployed_ports) ? record.deployed_ports.map(scalarField).filter((port) => port !== void 0) : [];
|
|
260
|
+
const line = state.kind === "failed" ? { title: "Deployment failed" } : cardLine(
|
|
261
|
+
state,
|
|
262
|
+
{
|
|
263
|
+
running: { title: `Deploying on port ${scalarField(call.args.port) ?? "3000"}...` },
|
|
264
|
+
done: {
|
|
265
|
+
title: record ? `Deployed on port ${scalarField(record.port) ?? "3000"}` : "Deployment finished"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
call.toolName
|
|
269
|
+
);
|
|
270
|
+
return /* @__PURE__ */ jsx(
|
|
271
|
+
ToolCard,
|
|
272
|
+
{
|
|
273
|
+
icon: MonitorIcon,
|
|
274
|
+
status: TOOL_STATUS[state.kind],
|
|
275
|
+
title: line.title,
|
|
276
|
+
subtitle: line.subtitle,
|
|
277
|
+
toolName: call.toolName,
|
|
278
|
+
error: state.kind === "failed" ? state.error : void 0,
|
|
279
|
+
args: call.args,
|
|
280
|
+
result: call.result,
|
|
281
|
+
children: state.kind === "complete" && url ? /* @__PURE__ */ jsx(ExpandableSection, { defaultOpen: true, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
282
|
+
/* @__PURE__ */ jsxs(
|
|
283
|
+
"a",
|
|
284
|
+
{
|
|
285
|
+
href: url,
|
|
286
|
+
target: "_blank",
|
|
287
|
+
rel: "noopener noreferrer",
|
|
288
|
+
className: "inline-flex items-center gap-1.5 break-all text-xs text-blue-600 transition-colors hover:underline",
|
|
289
|
+
children: [
|
|
290
|
+
/* @__PURE__ */ jsx(ExternalLinkIcon, { className: "size-3 shrink-0" }),
|
|
291
|
+
url
|
|
292
|
+
]
|
|
293
|
+
}
|
|
294
|
+
),
|
|
295
|
+
deployedPorts.length > 1 ? /* @__PURE__ */ jsxs("span", { className: "text-[11px] text-muted-foreground", children: [
|
|
296
|
+
"All deployed ports: ",
|
|
297
|
+
deployedPorts.join(", ")
|
|
298
|
+
] }) : null
|
|
299
|
+
] }) }) : null
|
|
300
|
+
}
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
const ComputerAssetDeployToolUI = computerAssetToolUI(
|
|
304
|
+
DeployCard,
|
|
305
|
+
"ComputerAssetDeployToolUI"
|
|
306
|
+
);
|
|
307
|
+
export {
|
|
308
|
+
ComputerAssetCreateToolUI,
|
|
309
|
+
ComputerAssetDeployToolUI,
|
|
310
|
+
ComputerAssetEnsureSandboxToolUI,
|
|
311
|
+
ComputerAssetGetStatusToolUI
|
|
312
|
+
};
|
|
313
|
+
//# sourceMappingURL=computer-asset-tool-uis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computer-asset-tool-uis.js","sources":["../../src/tools/computer-asset-tool-uis.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Cards for the Computer Asset toolkit: `computer_asset_create`,\n * `computer_asset_ensure_sandbox`, `computer_asset_get_status` and\n * `computer_asset_deploy`, in the wording of Olympus's\n * `ComputerAssetToolkitUis.tsx`. Olympus's fixed words are the title; a value\n * they name (a template, a secret count, a state) is the subtitle, and a long\n * explanation the result carries is the card's body.\n *\n * A card reads only its own call. Olympus's computer thumbnail (an asset\n * lookup) and its opening of a computer it just created stay in Olympus.\n * Success and failure follow the shared result rules (`classifyToolResult`):\n * these tools answer a refusal with `{ error }` inside a completed call.\n */\nimport { CircleIcon, ExternalLinkIcon, MonitorIcon } from \"lucide-react\";\nimport { type ComponentType, memo } from \"react\";\nimport type {\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n ToolCallMessagePartStatus,\n} from \"@assistant-ui/react\";\nimport {\n classifyToolResult,\n getToolDisplayMeta,\n isRecord,\n resultRecord,\n} from \"@athenaintel/agent-runtime\";\nimport { cn } from \"../lib/utils\";\nimport { ExpandableSection, ToolCard, type ToolStatus, truncate } from \"./primitives\";\nimport { ToolFallback } from \"./tool-fallback\";\n\n// ─── Call state ──────────────────────────────────────────────────────\n\ninterface ComputerAssetCall {\n toolName: string;\n args: Record<string, unknown>;\n result: unknown;\n status: ToolCallMessagePartStatus | undefined;\n isError: boolean | undefined;\n}\n\ntype CallState =\n | { kind: \"running\" }\n | { kind: \"awaiting\" }\n | { kind: \"complete\" }\n | { kind: \"failed\"; error: string };\n\nconst TOOL_STATUS: Record<CallState[\"kind\"], ToolStatus> = {\n running: \"running\",\n awaiting: \"requires-action\",\n complete: \"complete\",\n failed: \"incomplete\",\n};\n\n/**\n * The call's state under the shared result rules, or `null` for a call the\n * generic card owns: one the person refused at the approval gate, or one the\n * runtime parked.\n */\nfunction callState(call: ComputerAssetCall): CallState | null {\n const classification = classifyToolResult({\n status: call.status,\n result: call.result,\n isError: call.isError,\n });\n switch (classification.state) {\n case \"running\":\n return { kind: \"running\" };\n case \"requires-action\":\n return { kind: \"awaiting\" };\n case \"complete\":\n return { kind: \"complete\" };\n case \"error\":\n return { kind: \"failed\", error: classification.failure.message };\n case \"rejected\":\n case \"paused\":\n return null;\n }\n}\n\ninterface CardLine {\n title: string;\n subtitle?: string;\n}\n\n/**\n * The line for `state`: the running or done words, an approval wait naming\n * the tool, or for a failed call the attempt (the running words without their\n * ellipsis), with the failure in the card's error notice.\n */\nfunction cardLine(\n state: CallState,\n words: { running: CardLine; done: CardLine },\n toolName: string,\n): CardLine {\n switch (state.kind) {\n case \"running\":\n return words.running;\n case \"complete\":\n return words.done;\n case \"awaiting\":\n return {\n title: `Waiting for confirmation of ${getToolDisplayMeta(toolName).displayName}`,\n subtitle: words.running.subtitle,\n };\n case \"failed\":\n return {\n title: words.running.title.replace(/(\\.{3}|…)\\s*$/u, \"\"),\n subtitle: words.running.subtitle,\n };\n }\n}\n\ninterface ComputerAssetCardProps {\n call: ComputerAssetCall;\n state: CallState;\n}\n\n/** The registered card: the generic card owns a refused or parked call, `Card` the rest. */\nfunction computerAssetToolUI(\n Card: ComponentType<ComputerAssetCardProps>,\n displayName: string,\n): ToolCallMessagePartComponent {\n const Impl: ToolCallMessagePartComponent = (props: ToolCallMessagePartProps) => {\n const call: ComputerAssetCall = {\n toolName: props.toolName,\n args: isRecord(props.args) ? props.args : {},\n result: props.result,\n status: props.status,\n isError: props.isError,\n };\n const state = callState(call);\n if (!state) return <ToolFallback {...props} icon={MonitorIcon} />;\n return <Card call={call} state={state} />;\n };\n const ToolUI = memo(Impl) as unknown as ToolCallMessagePartComponent;\n ToolUI.displayName = displayName;\n return ToolUI;\n}\n\nfunction stringField(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\n/** A string or number as text (a port arrives as either). */\nfunction scalarField(value: unknown): string | undefined {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" && Number.isFinite(value)) return String(value);\n return undefined;\n}\n\n/** Olympus's name for a runtime state: `started` is \"Running\"; a missing state is \"unknown\". */\nfunction stateLabel(state: string | undefined): string {\n if (!state) return \"unknown\";\n if (state === \"started\") return \"Running\";\n if (state === \"stopped\") return \"Stopped\";\n if (state === \"error\") return \"Error\";\n return state.charAt(0).toUpperCase() + state.slice(1);\n}\n\nfunction secretCountText(count: number): string {\n return `with ${count} startup Secret${count === 1 ? \"\" : \"s\"}`;\n}\n\n// ─── computer_asset_create ───────────────────────────────────────────\n\nconst COMPUTER_ASSET_ID = /^asset_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n\nfunction isComputerAssetId(value: unknown): value is string {\n return typeof value === \"string\" && COMPUTER_ASSET_ID.test(value);\n}\n\n/**\n * A creation the backend retained after its setup failed: the computer\n * exists (or may), so the person must inspect it before creating another.\n * Only the structured disposition (`COMPUTER_CREATION_RETAINED`) counts.\n */\nfunction retainedCreation(value: Record<string, unknown>): { confirmed: boolean } | null {\n if (value.code !== \"COMPUTER_CREATION_RETAINED\") return null;\n if (!isComputerAssetId(value.computer_asset_id)) return null;\n if (value.asset_id !== undefined && value.asset_id !== value.computer_asset_id) return null;\n if (value.recoverable !== false) return null;\n const status = value.error_status_code;\n if (typeof status !== \"number\" || !Number.isInteger(status) || status < 400 || status > 599) {\n return null;\n }\n if (value.creation_confirmed === true && value.created === true) return { confirmed: true };\n if (value.creation_confirmed === false && value.created === null) return { confirmed: false };\n return null;\n}\n\n/**\n * Whether a create result has the shape a confirmed outcome needs: typed\n * fields, a `code` only on a retained creation, no explicit uncertainty\n * (`created` null or false, `creation_confirmed` false), an error beside an\n * id only when the computer was created, and one id when both are named.\n */\nfunction isWellFormedCreation(value: Record<string, unknown>): boolean {\n const optional = (key: string, accepts: (field: unknown) => boolean): boolean =>\n value[key] === undefined || accepts(value[key]);\n const typed =\n optional(\"computer_asset_id\", isComputerAssetId) &&\n optional(\"asset_id\", isComputerAssetId) &&\n optional(\"code\", (field) => typeof field === \"string\") &&\n optional(\"created\", (field) => field === null || typeof field === \"boolean\") &&\n optional(\"creation_confirmed\", (field) => typeof field === \"boolean\") &&\n optional(\"recoverable\", (field) => typeof field === \"boolean\") &&\n optional(\"error_status_code\", (field) => typeof field === \"number\") &&\n (value.error == null || typeof value.error === \"string\") &&\n (value.state == null || typeof value.state === \"string\") &&\n optional(\n \"startup_secret_count\",\n (field) => typeof field === \"number\" && Number.isInteger(field) && field >= 0,\n );\n if (!typed) return false;\n const retained = retainedCreation(value) !== null;\n if (value.code !== undefined && !retained) return false;\n if (\n !retained &&\n !(\n value.created !== null &&\n value.created !== false &&\n value.creation_confirmed !== false &&\n (!value.error || value.created === true || (!value.computer_asset_id && !value.asset_id))\n )\n ) {\n return false;\n }\n return !value.asset_id || !value.computer_asset_id || value.asset_id === value.computer_asset_id;\n}\n\ntype CreationDisplay = { isFailure: true; message: string } | { isFailure: false; line: CardLine };\n\n/**\n * What a `computer_asset_create` result says, in Olympus's words. A finished\n * call is not a success by itself: a retained, unconfirmed or malformed\n * result is a failure, and so is an error.\n */\nfunction computerCreationDisplay(value: Record<string, unknown> | null): CreationDisplay {\n const retained = value ? retainedCreation(value) : null;\n if (retained) {\n return {\n isFailure: true,\n message: retained.confirmed\n ? \"Computer created, but initialization could not be confirmed. Inspect this computer before creating another.\"\n : \"Computer creation could not be confirmed. Inspect this computer before creating another.\",\n };\n }\n if (\n !value ||\n !isWellFormedCreation(value) ||\n value.code !== undefined ||\n value.created === null ||\n value.created === false ||\n value.creation_confirmed === false\n ) {\n return { isFailure: true, message: \"Computer creation could not be confirmed.\" };\n }\n const assetId = stringField(value.computer_asset_id) ?? stringField(value.asset_id);\n if (value.error) {\n return {\n isFailure: true,\n message:\n value.created === true && assetId\n ? \"Computer created, but follow-up setup could not be confirmed. Inspect this computer before creating another.\"\n : \"Computer creation failed.\",\n };\n }\n if (!assetId) return { isFailure: true, message: \"Computer creation could not be confirmed.\" };\n const secretCount =\n typeof value.startup_secret_count === \"number\" ? value.startup_secret_count : 0;\n const state = stringField(value.state);\n const stateWord = state\n ? state === \"started\" || state === \"running\"\n ? \"Running\"\n : state.charAt(0).toUpperCase() + state.slice(1)\n : undefined;\n // Olympus's \"Computer created with 2 startup Secrets — Running\", split at\n // the value it names.\n const secrets = secretCount > 0 ? secretCountText(secretCount) : undefined;\n const subtitle = [secrets, stateWord].filter((part): part is string => !!part).join(\" — \");\n return { isFailure: false, line: { title: \"Computer created\", subtitle: subtitle || undefined } };\n}\n\nfunction CreateComputerCard({ call, state }: ComputerAssetCardProps) {\n const provider = stringField(call.args.provider) ?? \"computer\";\n const template = stringField(call.args.template);\n const secretCount = Array.isArray(call.args.startup_secret_ids)\n ? call.args.startup_secret_ids.length\n : 0;\n const running: CardLine = template\n ? {\n title: `Creating ${provider} runtime...`,\n subtitle: `from template \"${truncate(template, 40)}\"${secretCount > 0 ? ` ${secretCountText(secretCount)}` : \"\"}`,\n }\n : { title: `Creating ${provider} runtime...` };\n const record = resultRecord(call.result);\n const display = computerCreationDisplay(record);\n // A result that reports a failure is shown in Olympus's words, whatever the\n // call's own status says; a call that never returned one keeps its error.\n const shown: CallState =\n display.isFailure && (state.kind === \"complete\" || (state.kind === \"failed\" && record))\n ? { kind: \"failed\", error: display.message }\n : state;\n const line = cardLine(\n shown,\n { running, done: display.isFailure ? { title: display.message } : display.line },\n call.toolName,\n );\n return (\n <ToolCard\n icon={MonitorIcon}\n status={TOOL_STATUS[shown.kind]}\n title={line.title}\n subtitle={line.subtitle}\n toolName={call.toolName}\n error={shown.kind === \"failed\" ? shown.error : undefined}\n args={call.args}\n result={call.result}\n />\n );\n}\n\nexport const ComputerAssetCreateToolUI = computerAssetToolUI(\n CreateComputerCard,\n \"ComputerAssetCreateToolUI\",\n);\n\n// ─── computer_asset_ensure_sandbox ───────────────────────────────────\n\nfunction EnsureSandboxCard({ call, state }: ComputerAssetCardProps) {\n const record = resultRecord(call.result);\n const sandboxState = stringField(record?.state);\n const detail = sandboxState === \"started\" ? undefined : stringField(record?.detail);\n const done: CardLine = !record\n ? { title: \"Sandbox check complete\" }\n : sandboxState === \"started\"\n ? { title: \"Sandbox is running\" }\n : {\n title: `Sandbox state: ${stateLabel(sandboxState)}${!detail && record.recoverable === true ? \" (recoverable)\" : \"\"}`,\n };\n const line = cardLine(\n state,\n { running: { title: \"Ensuring computer sandbox is ready...\" }, done },\n call.toolName,\n );\n return (\n <ToolCard\n icon={MonitorIcon}\n status={TOOL_STATUS[state.kind]}\n title={line.title}\n subtitle={line.subtitle}\n toolName={call.toolName}\n error={state.kind === \"failed\" ? state.error : undefined}\n args={call.args}\n result={call.result}\n >\n {state.kind === \"complete\" && detail ? (\n <ExpandableSection defaultOpen>\n <p className=\"text-[12px] leading-relaxed text-muted-foreground\">{detail}</p>\n </ExpandableSection>\n ) : null}\n </ToolCard>\n );\n}\n\nexport const ComputerAssetEnsureSandboxToolUI = computerAssetToolUI(\n EnsureSandboxCard,\n \"ComputerAssetEnsureSandboxToolUI\",\n);\n\n// ─── computer_asset_get_status ───────────────────────────────────────\n\nfunction GetStatusCard({ call, state }: ComputerAssetCardProps) {\n const record = resultRecord(call.result);\n const computerState = stringField(record?.state);\n const line = cardLine(\n state,\n {\n running: { title: \"Checking computer status...\" },\n done: { title: record ? `Computer is ${stateLabel(computerState)}` : \"Status check complete\" },\n },\n call.toolName,\n );\n return (\n <ToolCard\n icon={MonitorIcon}\n status={TOOL_STATUS[state.kind]}\n title={line.title}\n subtitle={line.subtitle}\n toolName={call.toolName}\n error={state.kind === \"failed\" ? state.error : undefined}\n args={call.args}\n result={call.result}\n >\n {state.kind === \"complete\" && record ? (\n <ExpandableSection>\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n <div className=\"flex items-center gap-1.5\">\n <CircleIcon\n className={cn(\n \"size-2.5\",\n computerState === \"started\" && \"fill-emerald-600 text-emerald-600\",\n computerState === \"stopped\" && \"fill-muted-foreground text-muted-foreground\",\n computerState === \"error\" && \"fill-destructive text-destructive\",\n )}\n />\n <span className=\"font-medium\">{stateLabel(computerState)}</span>\n </div>\n {record.recoverable === true ? (\n <span className=\"rounded bg-amber-500/10 px-1.5 py-0.5 text-[10px] font-medium text-amber-600\">\n Recoverable\n </span>\n ) : null}\n </div>\n </ExpandableSection>\n ) : null}\n </ToolCard>\n );\n}\n\nexport const ComputerAssetGetStatusToolUI = computerAssetToolUI(\n GetStatusCard,\n \"ComputerAssetGetStatusToolUI\",\n);\n\n// ─── computer_asset_deploy ───────────────────────────────────────────\n\nfunction DeployCard({ call, state }: ComputerAssetCardProps) {\n const record = resultRecord(call.result);\n const url =\n typeof record?.url === \"string\" && /^https?:\\/\\//i.test(record.url) ? record.url : undefined;\n const deployedPorts = Array.isArray(record?.deployed_ports)\n ? record.deployed_ports\n .map(scalarField)\n .filter((port): port is string => port !== undefined)\n : [];\n const line =\n state.kind === \"failed\"\n ? { title: \"Deployment failed\" }\n : cardLine(\n state,\n {\n running: { title: `Deploying on port ${scalarField(call.args.port) ?? \"3000\"}...` },\n done: {\n title: record\n ? `Deployed on port ${scalarField(record.port) ?? \"3000\"}`\n : \"Deployment finished\",\n },\n },\n call.toolName,\n );\n return (\n <ToolCard\n icon={MonitorIcon}\n status={TOOL_STATUS[state.kind]}\n title={line.title}\n subtitle={line.subtitle}\n toolName={call.toolName}\n error={state.kind === \"failed\" ? state.error : undefined}\n args={call.args}\n result={call.result}\n >\n {state.kind === \"complete\" && url ? (\n <ExpandableSection defaultOpen>\n <div className=\"flex flex-col gap-1.5\">\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1.5 break-all text-xs text-blue-600 transition-colors hover:underline\"\n >\n <ExternalLinkIcon className=\"size-3 shrink-0\" />\n {url}\n </a>\n {deployedPorts.length > 1 ? (\n <span className=\"text-[11px] text-muted-foreground\">\n All deployed ports: {deployedPorts.join(\", \")}\n </span>\n ) : null}\n </div>\n </ExpandableSection>\n ) : null}\n </ToolCard>\n );\n}\n\nexport const ComputerAssetDeployToolUI = computerAssetToolUI(\n DeployCard,\n \"ComputerAssetDeployToolUI\",\n);\n"],"names":[],"mappings":";;;;;;;;AAgDA,MAAM,cAAqD;AAAA,EACzD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AACV;AAOA,SAAS,UAAU,MAA2C;AAC5D,QAAM,iBAAiB,mBAAmB;AAAA,IACxC,QAAQ,KAAK;AAAA,IACb,QAAQ,KAAK;AAAA,IACb,SAAS,KAAK;AAAA,EAAA,CACf;AACD,UAAQ,eAAe,OAAA;AAAA,IACrB,KAAK;AACH,aAAO,EAAE,MAAM,UAAA;AAAA,IACjB,KAAK;AACH,aAAO,EAAE,MAAM,WAAA;AAAA,IACjB,KAAK;AACH,aAAO,EAAE,MAAM,WAAA;AAAA,IACjB,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,OAAO,eAAe,QAAQ,QAAA;AAAA,IACzD,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EAAA;AAEb;AAYA,SAAS,SACP,OACA,OACA,UACU;AACV,UAAQ,MAAM,MAAA;AAAA,IACZ,KAAK;AACH,aAAO,MAAM;AAAA,IACf,KAAK;AACH,aAAO,MAAM;AAAA,IACf,KAAK;AACH,aAAO;AAAA,QACL,OAAO,+BAA+B,mBAAmB,QAAQ,EAAE,WAAW;AAAA,QAC9E,UAAU,MAAM,QAAQ;AAAA,MAAA;AAAA,IAE5B,KAAK;AACH,aAAO;AAAA,QACL,OAAO,MAAM,QAAQ,MAAM,QAAQ,kBAAkB,EAAE;AAAA,QACvD,UAAU,MAAM,QAAQ;AAAA,MAAA;AAAA,EAC1B;AAEN;AAQA,SAAS,oBACP,MACA,aAC8B;AAC9B,QAAM,OAAqC,CAAC,UAAoC;AAC9E,UAAM,OAA0B;AAAA,MAC9B,UAAU,MAAM;AAAA,MAChB,MAAM,SAAS,MAAM,IAAI,IAAI,MAAM,OAAO,CAAA;AAAA,MAC1C,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,IAAA;AAEjB,UAAM,QAAQ,UAAU,IAAI;AAC5B,QAAI,CAAC,MAAO,QAAO,oBAAC,gBAAc,GAAG,OAAO,MAAM,aAAa;AAC/D,WAAO,oBAAC,MAAA,EAAK,MAAY,MAAA,CAAc;AAAA,EACzC;AACA,QAAM,SAAS,KAAK,IAAI;AACxB,SAAO,cAAc;AACrB,SAAO;AACT;AAEA,SAAS,YAAY,OAAoC;AACvD,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAGA,SAAS,YAAY,OAAoC;AACvD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,EAAG,QAAO,OAAO,KAAK;AAC5E,SAAO;AACT;AAGA,SAAS,WAAW,OAAmC;AACrD,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI,UAAU,UAAW,QAAO;AAChC,MAAI,UAAU,UAAW,QAAO;AAChC,MAAI,UAAU,QAAS,QAAO;AAC9B,SAAO,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,MAAM,CAAC;AACtD;AAEA,SAAS,gBAAgB,OAAuB;AAC9C,SAAO,QAAQ,KAAK,kBAAkB,UAAU,IAAI,KAAK,GAAG;AAC9D;AAIA,MAAM,oBAAoB;AAE1B,SAAS,kBAAkB,OAAiC;AAC1D,SAAO,OAAO,UAAU,YAAY,kBAAkB,KAAK,KAAK;AAClE;AAOA,SAAS,iBAAiB,OAA+D;AACvF,MAAI,MAAM,SAAS,6BAA8B,QAAO;AACxD,MAAI,CAAC,kBAAkB,MAAM,iBAAiB,EAAG,QAAO;AACxD,MAAI,MAAM,aAAa,UAAa,MAAM,aAAa,MAAM,kBAAmB,QAAO;AACvF,MAAI,MAAM,gBAAgB,MAAO,QAAO;AACxC,QAAM,SAAS,MAAM;AACrB,MAAI,OAAO,WAAW,YAAY,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,OAAO,SAAS,KAAK;AAC3F,WAAO;AAAA,EACT;AACA,MAAI,MAAM,uBAAuB,QAAQ,MAAM,YAAY,KAAM,QAAO,EAAE,WAAW,KAAA;AACrF,MAAI,MAAM,uBAAuB,SAAS,MAAM,YAAY,KAAM,QAAO,EAAE,WAAW,MAAA;AACtF,SAAO;AACT;AAQA,SAAS,qBAAqB,OAAyC;AACrE,QAAM,WAAW,CAAC,KAAa,YAC7B,MAAM,GAAG,MAAM,UAAa,QAAQ,MAAM,GAAG,CAAC;AAChD,QAAM,QACJ,SAAS,qBAAqB,iBAAiB,KAC/C,SAAS,YAAY,iBAAiB,KACtC,SAAS,QAAQ,CAAC,UAAU,OAAO,UAAU,QAAQ,KACrD,SAAS,WAAW,CAAC,UAAU,UAAU,QAAQ,OAAO,UAAU,SAAS,KAC3E,SAAS,sBAAsB,CAAC,UAAU,OAAO,UAAU,SAAS,KACpE,SAAS,eAAe,CAAC,UAAU,OAAO,UAAU,SAAS,KAC7D,SAAS,qBAAqB,CAAC,UAAU,OAAO,UAAU,QAAQ,MACjE,MAAM,SAAS,QAAQ,OAAO,MAAM,UAAU,cAC9C,MAAM,SAAS,QAAQ,OAAO,MAAM,UAAU,aAC/C;AAAA,IACE;AAAA,IACA,CAAC,UAAU,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,SAAS;AAAA,EAAA;AAEhF,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,WAAW,iBAAiB,KAAK,MAAM;AAC7C,MAAI,MAAM,SAAS,UAAa,CAAC,SAAU,QAAO;AAClD,MACE,CAAC,YACD,EACE,MAAM,YAAY,QAClB,MAAM,YAAY,SAClB,MAAM,uBAAuB,UAC5B,CAAC,MAAM,SAAS,MAAM,YAAY,QAAS,CAAC,MAAM,qBAAqB,CAAC,MAAM,YAEjF;AACA,WAAO;AAAA,EACT;AACA,SAAO,CAAC,MAAM,YAAY,CAAC,MAAM,qBAAqB,MAAM,aAAa,MAAM;AACjF;AASA,SAAS,wBAAwB,OAAwD;AACvF,QAAM,WAAW,QAAQ,iBAAiB,KAAK,IAAI;AACnD,MAAI,UAAU;AACZ,WAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS,SAAS,YACd,gHACA;AAAA,IAAA;AAAA,EAER;AACA,MACE,CAAC,SACD,CAAC,qBAAqB,KAAK,KAC3B,MAAM,SAAS,UACf,MAAM,YAAY,QAClB,MAAM,YAAY,SAClB,MAAM,uBAAuB,OAC7B;AACA,WAAO,EAAE,WAAW,MAAM,SAAS,4CAAA;AAAA,EACrC;AACA,QAAM,UAAU,YAAY,MAAM,iBAAiB,KAAK,YAAY,MAAM,QAAQ;AAClF,MAAI,MAAM,OAAO;AACf,WAAO;AAAA,MACL,WAAW;AAAA,MACX,SACE,MAAM,YAAY,QAAQ,UACtB,iHACA;AAAA,IAAA;AAAA,EAEV;AACA,MAAI,CAAC,QAAS,QAAO,EAAE,WAAW,MAAM,SAAS,4CAAA;AACjD,QAAM,cACJ,OAAO,MAAM,yBAAyB,WAAW,MAAM,uBAAuB;AAChF,QAAM,QAAQ,YAAY,MAAM,KAAK;AACrC,QAAM,YAAY,QACd,UAAU,aAAa,UAAU,YAC/B,YACA,MAAM,OAAO,CAAC,EAAE,YAAA,IAAgB,MAAM,MAAM,CAAC,IAC/C;AAGJ,QAAM,UAAU,cAAc,IAAI,gBAAgB,WAAW,IAAI;AACjE,QAAM,WAAW,CAAC,SAAS,SAAS,EAAE,OAAO,CAAC,SAAyB,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACzF,SAAO,EAAE,WAAW,OAAO,MAAM,EAAE,OAAO,oBAAoB,UAAU,YAAY,SAAU;AAChG;AAEA,SAAS,mBAAmB,EAAE,MAAM,SAAiC;AACnE,QAAM,WAAW,YAAY,KAAK,KAAK,QAAQ,KAAK;AACpD,QAAM,WAAW,YAAY,KAAK,KAAK,QAAQ;AAC/C,QAAM,cAAc,MAAM,QAAQ,KAAK,KAAK,kBAAkB,IAC1D,KAAK,KAAK,mBAAmB,SAC7B;AACJ,QAAM,UAAoB,WACtB;AAAA,IACE,OAAO,YAAY,QAAQ;AAAA,IAC3B,UAAU,kBAAkB,SAAS,UAAU,EAAE,CAAC,IAAI,cAAc,IAAI,IAAI,gBAAgB,WAAW,CAAC,KAAK,EAAE;AAAA,EAAA,IAEjH,EAAE,OAAO,YAAY,QAAQ,cAAA;AACjC,QAAM,SAAS,aAAa,KAAK,MAAM;AACvC,QAAM,UAAU,wBAAwB,MAAM;AAG9C,QAAM,QACJ,QAAQ,cAAc,MAAM,SAAS,cAAe,MAAM,SAAS,YAAY,UAC3E,EAAE,MAAM,UAAU,OAAO,QAAQ,YACjC;AACN,QAAM,OAAO;AAAA,IACX;AAAA,IACA,EAAE,SAAS,MAAM,QAAQ,YAAY,EAAE,OAAO,QAAQ,QAAA,IAAY,QAAQ,KAAA;AAAA,IAC1E,KAAK;AAAA,EAAA;AAEP,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,YAAY,MAAM,IAAI;AAAA,MAC9B,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,OAAO,MAAM,SAAS,WAAW,MAAM,QAAQ;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,IAAA;AAAA,EAAA;AAGnB;AAEO,MAAM,4BAA4B;AAAA,EACvC;AAAA,EACA;AACF;AAIA,SAAS,kBAAkB,EAAE,MAAM,SAAiC;AAClE,QAAM,SAAS,aAAa,KAAK,MAAM;AACvC,QAAM,eAAe,YAAY,iCAAQ,KAAK;AAC9C,QAAM,SAAS,iBAAiB,YAAY,SAAY,YAAY,iCAAQ,MAAM;AAClF,QAAM,OAAiB,CAAC,SACpB,EAAE,OAAO,6BACT,iBAAiB,YACf,EAAE,OAAO,qBAAA,IACT;AAAA,IACE,OAAO,kBAAkB,WAAW,YAAY,CAAC,GAAG,CAAC,UAAU,OAAO,gBAAgB,OAAO,mBAAmB,EAAE;AAAA,EAAA;AAE1H,QAAM,OAAO;AAAA,IACX;AAAA,IACA,EAAE,SAAS,EAAE,OAAO,wCAAA,GAA2C,KAAA;AAAA,IAC/D,KAAK;AAAA,EAAA;AAEP,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,YAAY,MAAM,IAAI;AAAA,MAC9B,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,OAAO,MAAM,SAAS,WAAW,MAAM,QAAQ;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MAEZ,UAAA,MAAM,SAAS,cAAc,6BAC3B,mBAAA,EAAkB,aAAW,MAC5B,UAAA,oBAAC,KAAA,EAAE,WAAU,qDAAqD,UAAA,QAAO,GAC3E,IACE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEO,MAAM,mCAAmC;AAAA,EAC9C;AAAA,EACA;AACF;AAIA,SAAS,cAAc,EAAE,MAAM,SAAiC;AAC9D,QAAM,SAAS,aAAa,KAAK,MAAM;AACvC,QAAM,gBAAgB,YAAY,iCAAQ,KAAK;AAC/C,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,MACE,SAAS,EAAE,OAAO,8BAAA;AAAA,MAClB,MAAM,EAAE,OAAO,SAAS,eAAe,WAAW,aAAa,CAAC,KAAK,wBAAA;AAAA,IAAwB;AAAA,IAE/F,KAAK;AAAA,EAAA;AAEP,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,YAAY,MAAM,IAAI;AAAA,MAC9B,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,OAAO,MAAM,SAAS,WAAW,MAAM,QAAQ;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MAEZ,UAAA,MAAM,SAAS,cAAc,6BAC3B,mBAAA,EACC,UAAA,qBAAC,OAAA,EAAI,WAAU,yDACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,kBAAkB,aAAa;AAAA,gBAC/B,kBAAkB,aAAa;AAAA,gBAC/B,kBAAkB,WAAW;AAAA,cAAA;AAAA,YAC/B;AAAA,UAAA;AAAA,8BAED,QAAA,EAAK,WAAU,eAAe,UAAA,WAAW,aAAa,EAAA,CAAE;AAAA,QAAA,GAC3D;AAAA,QACC,OAAO,gBAAgB,OACtB,oBAAC,UAAK,WAAU,gFAA+E,yBAE/F,IACE;AAAA,MAAA,EAAA,CACN,GACF,IACE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEO,MAAM,+BAA+B;AAAA,EAC1C;AAAA,EACA;AACF;AAIA,SAAS,WAAW,EAAE,MAAM,SAAiC;AAC3D,QAAM,SAAS,aAAa,KAAK,MAAM;AACvC,QAAM,MACJ,QAAO,iCAAQ,SAAQ,YAAY,gBAAgB,KAAK,OAAO,GAAG,IAAI,OAAO,MAAM;AACrF,QAAM,gBAAgB,MAAM,QAAQ,iCAAQ,cAAc,IACtD,OAAO,eACJ,IAAI,WAAW,EACf,OAAO,CAAC,SAAyB,SAAS,MAAS,IACtD,CAAA;AACJ,QAAM,OACJ,MAAM,SAAS,WACX,EAAE,OAAO,wBACT;AAAA,IACE;AAAA,IACA;AAAA,MACE,SAAS,EAAE,OAAO,qBAAqB,YAAY,KAAK,KAAK,IAAI,KAAK,MAAM,MAAA;AAAA,MAC5E,MAAM;AAAA,QACJ,OAAO,SACH,oBAAoB,YAAY,OAAO,IAAI,KAAK,MAAM,KACtD;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,KAAK;AAAA,EAAA;AAEb,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,YAAY,MAAM,IAAI;AAAA,MAC9B,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,OAAO,MAAM,SAAS,WAAW,MAAM,QAAQ;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MAEZ,UAAA,MAAM,SAAS,cAAc,MAC5B,oBAAC,mBAAA,EAAkB,aAAW,MAC5B,UAAA,qBAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,oBAAC,kBAAA,EAAiB,WAAU,kBAAA,CAAkB;AAAA,cAC7C;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,cAAc,SAAS,IACtB,qBAAC,QAAA,EAAK,WAAU,qCAAoC,UAAA;AAAA,UAAA;AAAA,UAC7B,cAAc,KAAK,IAAI;AAAA,QAAA,EAAA,CAC9C,IACE;AAAA,MAAA,EAAA,CACN,GACF,IACE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEO,MAAM,4BAA4B;AAAA,EACvC;AAAA,EACA;AACF;"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const require$$0 = require("react");
|
|
5
|
+
const lucideReact = require("lucide-react");
|
|
6
|
+
const assetPanelStore = require("../assets/asset-panel-store.cjs");
|
|
7
|
+
const appendDocumentToolUi = require("./append-document-tool-ui.cjs");
|
|
8
|
+
const assetUtils = require("./asset-utils.cjs");
|
|
9
|
+
const primitives = require("./primitives.cjs");
|
|
10
|
+
const toolFallback = require("./tool-fallback.cjs");
|
|
11
|
+
const toolResult = require("../agent-runtime/src/tool-result.cjs");
|
|
12
|
+
const toolMetadata = require("../agent-runtime/src/tool-metadata.cjs");
|
|
13
|
+
function recordOf(value) {
|
|
14
|
+
return toolResult.isRecord(value) ? value : {};
|
|
15
|
+
}
|
|
16
|
+
function rendersAsGenericCard({
|
|
17
|
+
status,
|
|
18
|
+
result,
|
|
19
|
+
isError
|
|
20
|
+
}) {
|
|
21
|
+
if ((status == null ? void 0 : status.type) === "incomplete" && status.reason === "cancelled") return true;
|
|
22
|
+
const { state } = toolResult.classifyToolResult({ status, result, isError });
|
|
23
|
+
return state === "rejected" || state === "paused";
|
|
24
|
+
}
|
|
25
|
+
const TOOL_BLOCKED_MARKER = "🚫 Tool Blocked:";
|
|
26
|
+
const NOT_ENABLED_CODES = /* @__PURE__ */ new Set(["tool_blocked", "tool_not_enabled"]);
|
|
27
|
+
function readBlockedToolError(result) {
|
|
28
|
+
const data = primitives.normalizeResult(result);
|
|
29
|
+
if (data) {
|
|
30
|
+
if (data.status === "error" && typeof data.error_code === "string" && typeof data.message === "string") {
|
|
31
|
+
return { code: data.error_code, message: data.message };
|
|
32
|
+
}
|
|
33
|
+
const inner = typeof data.content === "string" ? data.content : typeof data.result === "string" ? data.result : null;
|
|
34
|
+
return (inner == null ? void 0 : inner.includes(TOOL_BLOCKED_MARKER)) ? { code: "tool_blocked", message: inner } : null;
|
|
35
|
+
}
|
|
36
|
+
return typeof result === "string" && result.includes(TOOL_BLOCKED_MARKER) ? { code: "tool_blocked", message: result } : null;
|
|
37
|
+
}
|
|
38
|
+
function blockedToolErrorLabels({
|
|
39
|
+
toolName,
|
|
40
|
+
blocked
|
|
41
|
+
}) {
|
|
42
|
+
const name = toolMetadata.getToolDisplayMeta(toolName).displayName;
|
|
43
|
+
return NOT_ENABLED_CODES.has(blocked.code) ? { title: `${name} is not enabled`, detail: null } : { title: `${name} failed`, detail: blocked.message };
|
|
44
|
+
}
|
|
45
|
+
function waitingTitle(toolName) {
|
|
46
|
+
return `Waiting for confirmation of ${toolMetadata.getToolDisplayMeta(toolName).displayName}`;
|
|
47
|
+
}
|
|
48
|
+
function proposedEditMessage(data) {
|
|
49
|
+
const message = (data == null ? void 0 : data.status) === "proposed" ? data.message : null;
|
|
50
|
+
return typeof message === "string" && message.trim() ? message : null;
|
|
51
|
+
}
|
|
52
|
+
function readDocumentCallOutcome({
|
|
53
|
+
toolName,
|
|
54
|
+
status,
|
|
55
|
+
result,
|
|
56
|
+
isError
|
|
57
|
+
}) {
|
|
58
|
+
const classification = toolResult.classifyToolResult({ status, result, isError });
|
|
59
|
+
if (classification.state === "running") return { kind: "running" };
|
|
60
|
+
if (classification.state === "requires-action") return { kind: "waiting" };
|
|
61
|
+
const blocked = readBlockedToolError(result);
|
|
62
|
+
if (blocked) return { kind: "failed", ...blockedToolErrorLabels({ toolName, blocked }) };
|
|
63
|
+
if (classification.state === "error") {
|
|
64
|
+
return {
|
|
65
|
+
kind: "failed",
|
|
66
|
+
title: `${toolMetadata.getToolDisplayMeta(toolName).displayName} failed`,
|
|
67
|
+
detail: classification.failure.message
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const proposed = proposedEditMessage(primitives.normalizeResult(result));
|
|
71
|
+
return proposed ? { kind: "proposed", message: proposed } : { kind: "done" };
|
|
72
|
+
}
|
|
73
|
+
function outcomeStatus(outcome) {
|
|
74
|
+
switch (outcome.kind) {
|
|
75
|
+
case "running":
|
|
76
|
+
return "running";
|
|
77
|
+
case "waiting":
|
|
78
|
+
case "proposed":
|
|
79
|
+
return "requires-action";
|
|
80
|
+
case "failed":
|
|
81
|
+
return "incomplete";
|
|
82
|
+
case "done":
|
|
83
|
+
return "complete";
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function plural(count, unit) {
|
|
87
|
+
return `${count.toLocaleString()} ${unit}${count === 1 ? "" : "s"}`;
|
|
88
|
+
}
|
|
89
|
+
function documentSizeBadge(data) {
|
|
90
|
+
const lines = data == null ? void 0 : data.non_empty_line_count;
|
|
91
|
+
const words = data == null ? void 0 : data.word_count;
|
|
92
|
+
const parts = [
|
|
93
|
+
typeof lines === "number" && lines > 0 ? plural(lines, "line") : null,
|
|
94
|
+
typeof words === "number" && words > 0 ? plural(words, "word") : null
|
|
95
|
+
].filter((part) => part !== null);
|
|
96
|
+
return parts.length > 0 ? parts.join(" · ") : void 0;
|
|
97
|
+
}
|
|
98
|
+
function markdownOf(args) {
|
|
99
|
+
return toolResult.stringField(args, ["markdownText", "markdown_text"]) ?? "";
|
|
100
|
+
}
|
|
101
|
+
function makeDocumentEditToolUI(spec) {
|
|
102
|
+
const Impl = (props) => {
|
|
103
|
+
const { toolName, args, result, status, isError } = props;
|
|
104
|
+
if (rendersAsGenericCard(props)) return /* @__PURE__ */ jsxRuntime.jsx(toolFallback.ToolFallback, { ...props, icon: spec.icon });
|
|
105
|
+
const typedArgs = recordOf(args);
|
|
106
|
+
const assetId = toolResult.stringField(typedArgs, ["asset_id", "assetId"]);
|
|
107
|
+
const markdown = spec.previewsMarkdown ? markdownOf(typedArgs) : "";
|
|
108
|
+
const outcome = readDocumentCallOutcome({ toolName, status, result, isError });
|
|
109
|
+
const title = outcome.kind === "running" ? `${spec.loading}...` : outcome.kind === "waiting" ? waitingTitle(toolName) : outcome.kind === "proposed" ? "Not changed yet" : outcome.kind === "failed" ? outcome.title : spec.done;
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
111
|
+
primitives.ToolCard,
|
|
112
|
+
{
|
|
113
|
+
icon: spec.icon,
|
|
114
|
+
status: outcomeStatus(outcome),
|
|
115
|
+
title,
|
|
116
|
+
subtitle: assetId ? assetUtils.getAssetInfo(assetId).name : void 0,
|
|
117
|
+
toolName,
|
|
118
|
+
badge: outcome.kind === "done" ? documentSizeBadge(primitives.normalizeResult(result)) : void 0,
|
|
119
|
+
error: outcome.kind === "failed" ? outcome.detail : null,
|
|
120
|
+
args: typedArgs,
|
|
121
|
+
result,
|
|
122
|
+
children: [
|
|
123
|
+
outcome.kind === "proposed" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border/40 bg-amber-500/10 px-4 py-2.5", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] leading-relaxed text-amber-600", children: outcome.message }) }) : null,
|
|
124
|
+
markdown ? /* @__PURE__ */ jsxRuntime.jsx(primitives.ExpandableSection, { label: "Show content preview", children: /* @__PURE__ */ jsxRuntime.jsx(appendDocumentToolUi.MarkdownPreview, { content: markdown }) }) : null
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
};
|
|
129
|
+
const DocumentEdit = require$$0.memo(Impl);
|
|
130
|
+
DocumentEdit.displayName = spec.displayName;
|
|
131
|
+
return DocumentEdit;
|
|
132
|
+
}
|
|
133
|
+
const ReplaceDocumentContentToolUI = makeDocumentEditToolUI({
|
|
134
|
+
displayName: "ReplaceDocumentContentToolUI",
|
|
135
|
+
icon: lucideReact.NotebookPenIcon,
|
|
136
|
+
loading: "Replacing content in document",
|
|
137
|
+
done: "Content replaced in the document",
|
|
138
|
+
previewsMarkdown: true
|
|
139
|
+
});
|
|
140
|
+
const InsertDocumentContentBeforeToolUI = makeDocumentEditToolUI({
|
|
141
|
+
displayName: "InsertDocumentContentBeforeToolUI",
|
|
142
|
+
icon: lucideReact.NotebookPenIcon,
|
|
143
|
+
loading: "Inserting content before block",
|
|
144
|
+
done: "Content inserted before block",
|
|
145
|
+
previewsMarkdown: true
|
|
146
|
+
});
|
|
147
|
+
const InsertDocumentContentAfterToolUI = makeDocumentEditToolUI({
|
|
148
|
+
displayName: "InsertDocumentContentAfterToolUI",
|
|
149
|
+
icon: lucideReact.NotebookPenIcon,
|
|
150
|
+
loading: "Inserting content after block",
|
|
151
|
+
done: "Content inserted after block",
|
|
152
|
+
previewsMarkdown: true
|
|
153
|
+
});
|
|
154
|
+
const DeleteDocumentBlocksToolUI = makeDocumentEditToolUI({
|
|
155
|
+
displayName: "DeleteDocumentBlocksToolUI",
|
|
156
|
+
icon: lucideReact.Trash2Icon,
|
|
157
|
+
loading: "Deleting blocks from document",
|
|
158
|
+
done: "Blocks deleted from the document",
|
|
159
|
+
previewsMarkdown: false
|
|
160
|
+
});
|
|
161
|
+
const ClearDocumentToolUI = makeDocumentEditToolUI({
|
|
162
|
+
displayName: "ClearDocumentToolUI",
|
|
163
|
+
icon: lucideReact.Trash2Icon,
|
|
164
|
+
loading: "Clearing all content from document",
|
|
165
|
+
done: "All content cleared from document",
|
|
166
|
+
previewsMarkdown: false
|
|
167
|
+
});
|
|
168
|
+
const ConvertDocumentToPdfToolUIImpl = (props) => {
|
|
169
|
+
const { toolName, args, result, status, isError } = props;
|
|
170
|
+
const openAsset = assetPanelStore.useAssetPanelStore((s) => s.openAsset);
|
|
171
|
+
if (rendersAsGenericCard(props)) return /* @__PURE__ */ jsxRuntime.jsx(toolFallback.ToolFallback, { ...props, icon: lucideReact.FileTextIcon });
|
|
172
|
+
const typedArgs = recordOf(args);
|
|
173
|
+
const assetId = toolResult.stringField(typedArgs, ["asset_id", "assetId"]);
|
|
174
|
+
const pdfName = toolResult.stringField(typedArgs, ["new_pdf_name"]) ?? void 0;
|
|
175
|
+
const outcome = readDocumentCallOutcome({ toolName, status, result, isError });
|
|
176
|
+
const pdfAssetId = outcome.kind === "done" ? toolResult.stringField(primitives.normalizeResult(result), ["asset_id"]) : null;
|
|
177
|
+
const title = outcome.kind === "running" ? "Converting document to PDF..." : outcome.kind === "waiting" ? waitingTitle(toolName) : outcome.kind === "failed" ? outcome.title : "Document converted to PDF";
|
|
178
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
179
|
+
primitives.ToolCard,
|
|
180
|
+
{
|
|
181
|
+
icon: lucideReact.FileTextIcon,
|
|
182
|
+
status: outcomeStatus(outcome),
|
|
183
|
+
title,
|
|
184
|
+
subtitle: assetId ? assetUtils.getAssetInfo(assetId).name : void 0,
|
|
185
|
+
toolName,
|
|
186
|
+
error: outcome.kind === "failed" ? outcome.detail : null,
|
|
187
|
+
args: typedArgs,
|
|
188
|
+
result,
|
|
189
|
+
children: (pdfAssetId == null ? void 0 : pdfAssetId.startsWith("asset_")) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border/40 px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
190
|
+
"button",
|
|
191
|
+
{
|
|
192
|
+
type: "button",
|
|
193
|
+
onClick: () => openAsset(pdfAssetId, { name: pdfName }),
|
|
194
|
+
className: "flex items-center gap-1.5 rounded-md border border-border/60 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground",
|
|
195
|
+
children: [
|
|
196
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLinkIcon, { className: "size-3" }),
|
|
197
|
+
"Open PDF in Workspace"
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
) }) : null
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
};
|
|
204
|
+
const ConvertDocumentToPdfToolUI = require$$0.memo(
|
|
205
|
+
ConvertDocumentToPdfToolUIImpl
|
|
206
|
+
);
|
|
207
|
+
ConvertDocumentToPdfToolUI.displayName = "ConvertDocumentToPdfToolUI";
|
|
208
|
+
exports.ClearDocumentToolUI = ClearDocumentToolUI;
|
|
209
|
+
exports.ConvertDocumentToPdfToolUI = ConvertDocumentToPdfToolUI;
|
|
210
|
+
exports.DeleteDocumentBlocksToolUI = DeleteDocumentBlocksToolUI;
|
|
211
|
+
exports.InsertDocumentContentAfterToolUI = InsertDocumentContentAfterToolUI;
|
|
212
|
+
exports.InsertDocumentContentBeforeToolUI = InsertDocumentContentBeforeToolUI;
|
|
213
|
+
exports.ReplaceDocumentContentToolUI = ReplaceDocumentContentToolUI;
|
|
214
|
+
exports.blockedToolErrorLabels = blockedToolErrorLabels;
|
|
215
|
+
exports.readBlockedToolError = readBlockedToolError;
|
|
216
|
+
exports.rendersAsGenericCard = rendersAsGenericCard;
|
|
217
|
+
exports.waitingTitle = waitingTitle;
|
|
218
|
+
//# sourceMappingURL=document-edit-tool-uis.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-edit-tool-uis.cjs","sources":["../../src/tools/document-edit-tool-uis.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Cards for the Athena document toolkit's block edits (replace, insert before\n * or after a block, delete blocks, clear) and its PDF export, on\n * `AppendDocumentToolUI`'s pattern with Olympus's wording: what the call did\n * to which document, the document's size after the write, and the markdown it\n * wrote behind \"Show content preview\".\n *\n * The document is named by the id the call carries: its title lives only in\n * Olympus's asset cache. Olympus's scroll-to-block button needs its studio\n * editor and its \"View changes\" button needs Keryx history inside Spaces, so\n * neither is here.\n */\nimport { memo, type ElementType } from \"react\";\nimport type {\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n} from \"@assistant-ui/react\";\nimport {\n ExternalLinkIcon,\n FileTextIcon,\n NotebookPenIcon,\n Trash2Icon,\n} from \"lucide-react\";\nimport {\n classifyToolResult,\n getToolDisplayMeta,\n isRecord,\n stringField,\n} from \"@athenaintel/agent-runtime\";\nimport { useAssetPanelStore } from \"../assets/asset-panel-store\";\nimport { MarkdownPreview } from \"./append-document-tool-ui\";\nimport { getAssetInfo } from \"./asset-utils\";\nimport {\n ExpandableSection,\n normalizeResult,\n ToolCard,\n type ToolStatus,\n} from \"./primitives\";\nimport { ToolFallback } from \"./tool-fallback\";\n\n// ─── Shared reading ──────────────────────────────────────────────────\n\nfunction recordOf(value: unknown): Record<string, unknown> {\n return isRecord(value) ? value : {};\n}\n\n/**\n * A call the generic card already draws right — refused at the approval\n * gate, parked by the runtime, or cancelled — so a dedicated card never\n * labels it done or failed. Shared with the email, calendar and presentation\n * cards.\n */\nexport function rendersAsGenericCard({\n status,\n result,\n isError,\n}: Pick<ToolCallMessagePartProps, \"status\" | \"result\" | \"isError\">): boolean {\n if (status?.type === \"incomplete\" && status.reason === \"cancelled\") return true;\n const { state } = classifyToolResult({ status, result, isError });\n return state === \"rejected\" || state === \"paused\";\n}\n\nconst TOOL_BLOCKED_MARKER = \"🚫 Tool Blocked:\";\nconst NOT_ENABLED_CODES: ReadonlySet<string> = new Set([\"tool_blocked\", \"tool_not_enabled\"]);\n\nexport interface BlockedToolError {\n code: string;\n message: string;\n}\n\n/**\n * The tool gate's refusal — `{ status: \"error\", error_code, message }`, or the\n * legacy \"🚫 Tool Blocked:\" text — which the shared classifier reads as a\n * success (it carries no `error` field), or `null`.\n */\nexport function readBlockedToolError(result: unknown): BlockedToolError | null {\n const data = normalizeResult(result);\n if (data) {\n if (\n data.status === \"error\" &&\n typeof data.error_code === \"string\" &&\n typeof data.message === \"string\"\n ) {\n return { code: data.error_code, message: data.message };\n }\n const inner =\n typeof data.content === \"string\"\n ? data.content\n : typeof data.result === \"string\"\n ? data.result\n : null;\n return inner?.includes(TOOL_BLOCKED_MARKER) ? { code: \"tool_blocked\", message: inner } : null;\n }\n return typeof result === \"string\" && result.includes(TOOL_BLOCKED_MARKER)\n ? { code: \"tool_blocked\", message: result }\n : null;\n}\n\n/** \"Replace in Document failed\", or \"… is not enabled\" when the tool is switched off. */\nexport function blockedToolErrorLabels({\n toolName,\n blocked,\n}: {\n toolName: string;\n blocked: BlockedToolError;\n}): { title: string; detail: string | null } {\n const name = getToolDisplayMeta(toolName).displayName;\n return NOT_ENABLED_CODES.has(blocked.code)\n ? { title: `${name} is not enabled`, detail: null }\n : { title: `${name} failed`, detail: blocked.message };\n}\n\n/** A call held at the approval gate, as Olympus words it: \"Waiting for confirmation of Clear Document\". */\nexport function waitingTitle(toolName: string): string {\n return `Waiting for confirmation of ${getToolDisplayMeta(toolName).displayName}`;\n}\n\n/** What a settled (or settling) document call amounts to. */\ntype DocumentCallOutcome =\n | { kind: \"running\" }\n | { kind: \"waiting\" }\n | { kind: \"done\" }\n | { kind: \"proposed\"; message: string }\n | { kind: \"failed\"; title: string; detail: string | null };\n\n/**\n * A team agent's edit to a document it always reads goes to its sponsor:\n * agora answers `{ status: \"proposed\", message }` and writes nothing.\n */\nfunction proposedEditMessage(data: Record<string, unknown> | null): string | null {\n const message = data?.status === \"proposed\" ? data.message : null;\n return typeof message === \"string\" && message.trim() ? message : null;\n}\n\nfunction readDocumentCallOutcome({\n toolName,\n status,\n result,\n isError,\n}: Pick<ToolCallMessagePartProps, \"toolName\" | \"status\" | \"result\" | \"isError\">): DocumentCallOutcome {\n const classification = classifyToolResult({ status, result, isError });\n if (classification.state === \"running\") return { kind: \"running\" };\n if (classification.state === \"requires-action\") return { kind: \"waiting\" };\n const blocked = readBlockedToolError(result);\n if (blocked) return { kind: \"failed\", ...blockedToolErrorLabels({ toolName, blocked }) };\n if (classification.state === \"error\") {\n return {\n kind: \"failed\",\n title: `${getToolDisplayMeta(toolName).displayName} failed`,\n detail: classification.failure.message,\n };\n }\n const proposed = proposedEditMessage(normalizeResult(result));\n return proposed ? { kind: \"proposed\", message: proposed } : { kind: \"done\" };\n}\n\nfunction outcomeStatus(outcome: DocumentCallOutcome): ToolStatus {\n switch (outcome.kind) {\n case \"running\":\n return \"running\";\n case \"waiting\":\n case \"proposed\":\n return \"requires-action\";\n case \"failed\":\n return \"incomplete\";\n case \"done\":\n return \"complete\";\n }\n}\n\nfunction plural(count: number, unit: string): string {\n return `${count.toLocaleString()} ${unit}${count === 1 ? \"\" : \"s\"}`;\n}\n\n/**\n * The document's size after the write (\"12 lines · 340 words\"), from the\n * stats every edit returns; agora sends -1 when it could not count.\n */\nfunction documentSizeBadge(data: Record<string, unknown> | null): string | undefined {\n const lines = data?.non_empty_line_count;\n const words = data?.word_count;\n const parts = [\n typeof lines === \"number\" && lines > 0 ? plural(lines, \"line\") : null,\n typeof words === \"number\" && words > 0 ? plural(words, \"word\") : null,\n ].filter((part): part is string => part !== null);\n return parts.length > 0 ? parts.join(\" · \") : undefined;\n}\n\n// ─── Block edits ─────────────────────────────────────────────────────\n\ninterface DocumentEditSpec {\n displayName: string;\n icon: ElementType;\n /** Olympus's progress line. */\n loading: string;\n /** Olympus's completion line (the document's title, which Olympus appends, is not known here). */\n done: string;\n /** The call writes markdown the card previews. */\n previewsMarkdown: boolean;\n}\n\n/** The markdown argument; the model sends it as `markdownText` or `markdown_text`. */\nfunction markdownOf(args: Record<string, unknown>): string {\n return stringField(args, [\"markdownText\", \"markdown_text\"]) ?? \"\";\n}\n\nfunction makeDocumentEditToolUI(spec: DocumentEditSpec): ToolCallMessagePartComponent {\n const Impl: ToolCallMessagePartComponent = (props) => {\n const { toolName, args, result, status, isError } = props;\n if (rendersAsGenericCard(props)) return <ToolFallback {...props} icon={spec.icon} />;\n\n const typedArgs = recordOf(args);\n const assetId = stringField(typedArgs, [\"asset_id\", \"assetId\"]);\n const markdown = spec.previewsMarkdown ? markdownOf(typedArgs) : \"\";\n const outcome = readDocumentCallOutcome({ toolName, status, result, isError });\n\n const title =\n outcome.kind === \"running\"\n ? `${spec.loading}...`\n : outcome.kind === \"waiting\"\n ? waitingTitle(toolName)\n : outcome.kind === \"proposed\"\n ? \"Not changed yet\"\n : outcome.kind === \"failed\"\n ? outcome.title\n : spec.done;\n\n return (\n <ToolCard\n icon={spec.icon}\n status={outcomeStatus(outcome)}\n title={title}\n subtitle={assetId ? getAssetInfo(assetId).name : undefined}\n toolName={toolName}\n badge={outcome.kind === \"done\" ? documentSizeBadge(normalizeResult(result)) : undefined}\n error={outcome.kind === \"failed\" ? outcome.detail : null}\n args={typedArgs}\n result={result}\n >\n {outcome.kind === \"proposed\" ? (\n <div className=\"border-t border-border/40 bg-amber-500/10 px-4 py-2.5\">\n <p className=\"text-[12px] leading-relaxed text-amber-600\">{outcome.message}</p>\n </div>\n ) : null}\n {markdown ? (\n <ExpandableSection label=\"Show content preview\">\n <MarkdownPreview content={markdown} />\n </ExpandableSection>\n ) : null}\n </ToolCard>\n );\n };\n const DocumentEdit = memo(Impl) as unknown as ToolCallMessagePartComponent;\n DocumentEdit.displayName = spec.displayName;\n return DocumentEdit;\n}\n\n/** `replace_markdown_in_athena_document`: the named blocks swapped for new markdown. */\nexport const ReplaceDocumentContentToolUI = makeDocumentEditToolUI({\n displayName: \"ReplaceDocumentContentToolUI\",\n icon: NotebookPenIcon,\n loading: \"Replacing content in document\",\n done: \"Content replaced in the document\",\n previewsMarkdown: true,\n});\n\n/** `insert_markdown_before_block`: markdown written ahead of a block. */\nexport const InsertDocumentContentBeforeToolUI = makeDocumentEditToolUI({\n displayName: \"InsertDocumentContentBeforeToolUI\",\n icon: NotebookPenIcon,\n loading: \"Inserting content before block\",\n done: \"Content inserted before block\",\n previewsMarkdown: true,\n});\n\n/** `insert_markdown_after_block`: markdown written after a block. */\nexport const InsertDocumentContentAfterToolUI = makeDocumentEditToolUI({\n displayName: \"InsertDocumentContentAfterToolUI\",\n icon: NotebookPenIcon,\n loading: \"Inserting content after block\",\n done: \"Content inserted after block\",\n previewsMarkdown: true,\n});\n\n/** `delete_blocks_from_athena_document`: the named blocks removed. */\nexport const DeleteDocumentBlocksToolUI = makeDocumentEditToolUI({\n displayName: \"DeleteDocumentBlocksToolUI\",\n icon: Trash2Icon,\n loading: \"Deleting blocks from document\",\n done: \"Blocks deleted from the document\",\n previewsMarkdown: false,\n});\n\n/** `clear_athena_document`: every block removed (agora snapshots the document first). */\nexport const ClearDocumentToolUI = makeDocumentEditToolUI({\n displayName: \"ClearDocumentToolUI\",\n icon: Trash2Icon,\n loading: \"Clearing all content from document\",\n done: \"All content cleared from document\",\n previewsMarkdown: false,\n});\n\n// ─── PDF export ──────────────────────────────────────────────────────\n\nconst ConvertDocumentToPdfToolUIImpl: ToolCallMessagePartComponent = (props) => {\n const { toolName, args, result, status, isError } = props;\n const openAsset = useAssetPanelStore((s) => s.openAsset);\n if (rendersAsGenericCard(props)) return <ToolFallback {...props} icon={FileTextIcon} />;\n\n const typedArgs = recordOf(args);\n const assetId = stringField(typedArgs, [\"asset_id\", \"assetId\"]);\n const pdfName = stringField(typedArgs, [\"new_pdf_name\"]) ?? undefined;\n const outcome = readDocumentCallOutcome({ toolName, status, result, isError });\n const pdfAssetId =\n outcome.kind === \"done\" ? stringField(normalizeResult(result), [\"asset_id\"]) : null;\n\n const title =\n outcome.kind === \"running\"\n ? \"Converting document to PDF...\"\n : outcome.kind === \"waiting\"\n ? waitingTitle(toolName)\n : outcome.kind === \"failed\"\n ? outcome.title\n : \"Document converted to PDF\";\n\n return (\n <ToolCard\n icon={FileTextIcon}\n status={outcomeStatus(outcome)}\n title={title}\n subtitle={assetId ? getAssetInfo(assetId).name : undefined}\n toolName={toolName}\n error={outcome.kind === \"failed\" ? outcome.detail : null}\n args={typedArgs}\n result={result}\n >\n {pdfAssetId?.startsWith(\"asset_\") ? (\n <div className=\"border-t border-border/40 px-4 py-2\">\n <button\n type=\"button\"\n onClick={() => openAsset(pdfAssetId, { name: pdfName })}\n className=\"flex items-center gap-1.5 rounded-md border border-border/60 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground\"\n >\n <ExternalLinkIcon className=\"size-3\" />\n Open PDF in Workspace\n </button>\n </div>\n ) : null}\n </ToolCard>\n );\n};\n\n/** `convert_athena_doc_to_pdf`: the document exported as a new PDF asset, with a button that opens it. */\nexport const ConvertDocumentToPdfToolUI = memo(\n ConvertDocumentToPdfToolUIImpl,\n) as unknown as ToolCallMessagePartComponent;\nConvertDocumentToPdfToolUI.displayName = \"ConvertDocumentToPdfToolUI\";\n"],"names":["isRecord","classifyToolResult","normalizeResult","getToolDisplayMeta","stringField","jsx","ToolFallback","jsxs","ToolCard","getAssetInfo","ExpandableSection","MarkdownPreview","memo","NotebookPenIcon","Trash2Icon","useAssetPanelStore","FileTextIcon","ExternalLinkIcon"],"mappings":"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"}
|