@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sources":["../../../../agent-runtime/src/queue.ts"],"sourcesContent":["/**\n * Derivations for the server-owned statewire queue and steer lanes, shared by\n * every queued-messages tray (Olympus, the React SDK, the Chrome extension).\n *\n * The queue is SERVER-owned: statewire surfaces it on the runs projection.\n * \"Send now\" moves an item into the steer lane (`run/steer` — the host stops\n * the run and dispatches it once the run settles; on a stopped/errored thread\n * the same move dispatches immediately as a stop-/error-continue run) and\n * remove issues `run/dequeue`. While the thread rests stopped/errored,\n * stranded steer-lane entries list ahead of the queue — they dispatch first,\n * as one batch, so they carry Remove but no per-row Send now.\n *\n * Pure helpers only: the host component reads `useStatewireRuns()` and\n * `useDeepAgentThreadStatus()` itself (both mockable per surface) and passes\n * the values in.\n */\n\nimport type { StatewireThread } from '@assistant-ui/react-statewire';\nimport { DEEP_AGENT_COMPOSER_MARKDOWN_KEY } from './composer-markdown';\nimport { ATHENA_RUN_MARKER_CANCELLED, isServerUpdateStopSource } from './messages';\nimport type { DeepAgentThreadStatus } from './thread-status';\n\n/** The text content of a queued entry (non-text parts render as fallbacks). */\nexport function queueEntryText(\n parts: readonly { type: string; text?: string }[],\n): string {\n return parts\n .flatMap((part) =>\n part.type === 'text' && typeof part.text === 'string' ? [part.text] : [],\n )\n .join('\\n\\n');\n}\n\n/**\n * Whether a lane entry is still awaiting its send's settle: the host stamps\n * `meta` on every entry it admits (`_op_meta` — submitter and contextSync\n * snapshot), so a meta-less entry is this client's own optimistic fold. The\n * send is still in flight and can still be refused (billing gate, auth,\n * reconnect), which the tray must not render as an accepted queue position.\n */\nexport function isQueueEntryUnsettled(entry: StatewireThread.RunsQueueEntry): boolean {\n return entry.meta === undefined;\n}\n\n/**\n * The ids of queued entries the user prioritized (⚡ — `run/prioritize`), as\n * the host records them in its durable `prioritizedQueueIds` state. A\n * prioritized entry heads the queue lane and the live run ends at its next\n * model-call boundary to deliver it, so trays render these rows lit and offer\n * \"Remove priority\" instead of \"Prioritize\". Tolerates the key being absent\n * (a thread that never prioritized, a pre-feature host) and ignores anything\n * that is not a string id.\n */\nexport function readPrioritizedQueueIds(raw: unknown): readonly string[] {\n return Array.isArray(raw)\n ? raw.filter((id): id is string => typeof id === 'string')\n : [];\n}\n\nexport interface QueueLaneFlags {\n isRunning: boolean;\n /** A stopped/errored thread can continue with its queued work. */\n isContinuable: boolean;\n}\n\n/** The thread-status split every queue tray keys its affordances on. */\nexport function queueLaneFlags(status: DeepAgentThreadStatus): QueueLaneFlags {\n return {\n isRunning: status === 'running',\n isContinuable: status === 'stopped' || status === 'error',\n };\n}\n\nexport interface StatewireQueueRow {\n item: StatewireThread.RunsQueueEntry;\n lane: 'queue' | 'steer';\n}\n\n/**\n * The rows a queue tray renders, in dispatch order: stranded steer-lane\n * entries first (only while the thread rests continuable — during a run they\n * already render in the message list), then the queue lane.\n */\nexport function buildStatewireQueueRows(options: {\n queue: readonly StatewireThread.RunsQueueEntry[];\n steerQueue: readonly StatewireThread.RunsQueueEntry[];\n isContinuable: boolean;\n}): StatewireQueueRow[] {\n const { queue, steerQueue, isContinuable } = options;\n return [\n ...(isContinuable\n ? steerQueue.map((item) => ({ item, lane: 'steer' as const }))\n : []),\n ...queue.map((item) => ({ item, lane: 'queue' as const })),\n ];\n}\n\n/**\n * Whether a row offers \"Send now\": queue-lane rows only (steer entries already\n * dispatch first), every row while the thread rests continuable, and only the\n * head row while a run is live (later rows would jump the queue order).\n */\nexport function showQueueRowSendNow(options: {\n lane: 'queue' | 'steer';\n index: number;\n isRunning: boolean;\n isContinuable: boolean;\n}): boolean {\n const { lane, index, isRunning, isContinuable } = options;\n return lane === 'queue' && (isContinuable || (isRunning && index === 0));\n}\n\n/**\n * Whether a row offers \"Steer\" (`run/steer-live`): queue-lane rows while a run\n * is live. Steer folds the entry into the RUNNING turn at its next model call\n * — after the in-flight tool chain, never mid-tool — and the run goes on with\n * it in context (ChatGPT's and Codex's Steer, versus Queue). Nothing is\n * cancelled and no second run starts, so every queued row qualifies, not just\n * the head. At rest there is no turn to steer: Send now already dispatches.\n */\nexport function showQueueRowSteer(options: {\n lane: 'queue' | 'steer';\n isRunning: boolean;\n}): boolean {\n return options.lane === 'queue' && options.isRunning;\n}\n\nexport type QueueEditCommand =\n | { type: 'run/steer'; runId: string; message: StatewireThread.UserMessage }\n | { type: 'run/enqueue'; runId: string; message: StatewireThread.UserMessage };\n\n/**\n * Re-send a queued entry under its own id on its own lane with edited text:\n * the host replaces the queued message's content in place, leaving its queue\n * position and lane untouched (a same-id send never dispatches). The built-in\n * queue client has no update command, so this goes straight to the runs\n * protocol. Returns `null` when there is nothing to send — blank or unchanged\n * text, or no live run entry to address.\n */\nexport function buildQueueEditCommand(options: {\n item: StatewireThread.RunsQueueEntry;\n lane: 'queue' | 'steer';\n runId: string | null;\n text: string;\n /**\n * The edited message's metadata, replacing the entry's (the host replaces\n * the queued message whole). Omitted, the entry's metadata is kept, minus a\n * composer markdown that described the old text.\n */\n metadata?: Readonly<Record<string, unknown>> | undefined;\n}): QueueEditCommand | null {\n const { item, lane, runId, text } = options;\n const textChanged: boolean = text !== queueEntryText(item.parts);\n const previous: Readonly<Record<string, unknown>> | undefined = nonEmpty(item.metadata);\n const next: Readonly<Record<string, unknown>> | undefined = nonEmpty(\n options.metadata !== undefined\n ? options.metadata\n : textChanged\n ? withoutComposerMarkdown(item.metadata)\n : item.metadata,\n );\n if (\n !text.trim() ||\n runId === null ||\n (!textChanged && stableJson(next ?? null) === stableJson(previous ?? null))\n ) {\n return null;\n }\n // An entry that had metadata and keeps none sends an empty object: the\n // optimistic lane keeps an entry's metadata when the command carries none,\n // and would go on showing the old composer markdown until the host answers.\n const metadata: Readonly<Record<string, unknown>> | undefined =\n next ?? (previous === undefined ? undefined : {});\n const message: StatewireThread.UserMessage = {\n id: item.id,\n role: 'user',\n parts: [{ type: 'text', text }, ...item.parts.filter((part) => part.type !== 'text')],\n ...(metadata === undefined ? {} : { metadata: { ...metadata } }),\n };\n return lane === 'steer'\n ? { type: 'run/steer', runId, message }\n : { type: 'run/enqueue', runId, message };\n}\n\n/** `metadata` unless it is empty. */\nfunction nonEmpty(\n metadata: Readonly<Record<string, unknown>> | undefined,\n): Readonly<Record<string, unknown>> | undefined {\n return metadata !== undefined && Object.keys(metadata).length > 0 ? metadata : undefined;\n}\n\n/** JSON with object keys sorted, so equal metadata compares equal whatever its key order. */\nfunction stableJson(value: unknown): string {\n const sorted = (entry: unknown): unknown =>\n Array.isArray(entry)\n ? entry.map(sorted)\n : typeof entry === 'object' && entry !== null\n ? Object.fromEntries(\n Object.keys(entry)\n .sort()\n .map((key) => [key, sorted((entry as Record<string, unknown>)[key])]),\n )\n : entry;\n return JSON.stringify(sorted(value));\n}\n\n/** Entry metadata without a composer markdown, `undefined` when nothing is left. */\nfunction withoutComposerMarkdown(\n metadata: Readonly<Record<string, unknown>> | undefined,\n): Readonly<Record<string, unknown>> | undefined {\n if (metadata === undefined || !(DEEP_AGENT_COMPOSER_MARKDOWN_KEY in metadata)) return metadata;\n const { [DEEP_AGENT_COMPOSER_MARKDOWN_KEY]: _stale, ...rest } = metadata;\n return Object.keys(rest).length > 0 ? rest : undefined;\n}\n\n/**\n * Grace between observing a stranded settle and auto-promoting the queue\n * head — long enough for the host's own settle bookkeeping (or a status flap\n * during reconnect) to resolve first, short enough to read as \"it just\n * continued\" rather than \"it hung\".\n */\nexport const QUEUE_AUTO_CONTINUE_DELAY_MS = 2_000;\n\n/** Whether the last cancellation marker records a user or client stop. */\nexport function userStopBlocksQueueAutoContinue(options: {\n marker: string | undefined;\n source: string | undefined;\n}): boolean {\n return (\n options.marker === ATHENA_RUN_MARKER_CANCELLED && !isServerUpdateStopSource(options.source)\n );\n}\n\n/** `fate (cause)[: message]` — the detail a failed-send row carries. */\nexport function describeQueueSendFailure(\n failure: StatewireThread.RunsFailedEntry['sendFailure'],\n): string {\n const message =\n 'message' in failure && failure.message !== undefined ? `: ${failure.message}` : '';\n return `${failure.fate} (${failure.cause})${message}`;\n}\n\n/**\n * Whether a `retryFailed` / `discardFailed` throw is the covered drop race:\n * statewire drops a failed entry on its own as soon as a canonical update\n * shows the message landed, and acting on a just-dropped entry throws. Both\n * the session record (\"unknown failed command\") and the adapter's projection\n * (\"unknown failed entry\") use this prefix. Nothing is lost in that race — the\n * message already made it and the row is about to disappear — so a tray\n * swallows it (keeping telemetry) instead of crashing the click handler.\n */\nexport function isFailedSendEntryRace(error: unknown): boolean {\n return error instanceof Error && error.message.startsWith('statewire: unknown failed');\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queue.js","sources":["../../../../agent-runtime/src/queue.ts"],"sourcesContent":["/**\n * Derivations for the server-owned statewire queue and steer lanes, shared by\n * every queued-messages tray (Olympus, the React SDK, the Chrome extension).\n *\n * The queue is SERVER-owned: statewire surfaces it on the runs projection.\n * \"Send now\" moves an item into the steer lane and stops the live run\n * (`run/send` `preempt` — the run settles and the steer lane dispatches next;\n * on a stopped/errored thread the same move dispatches immediately as a\n * stop-/error-continue run) and remove issues `run/dequeue`. While the thread rests stopped/errored,\n * stranded steer-lane entries list ahead of the queue — they dispatch first,\n * as one batch, so they carry Remove but no per-row Send now.\n *\n * Pure helpers only: the host component reads `useStatewireRuns()` and\n * `useDeepAgentThreadStatus()` itself (both mockable per surface) and passes\n * the values in.\n */\n\nimport type { StatewireThread } from '@assistant-ui/react-statewire';\nimport type { StatewireClient } from 'statewire';\nimport { DEEP_AGENT_COMPOSER_MARKDOWN_KEY } from './composer-markdown';\nimport { ATHENA_RUN_MARKER_CANCELLED, isServerUpdateStopSource } from './messages';\nimport type { DeepAgentThreadStatus } from './thread-status';\n\n/** The text content of a queued entry (non-text parts render as fallbacks). */\nexport function queueEntryText(\n parts: readonly { type: string; text?: string }[],\n): string {\n return parts\n .flatMap((part) =>\n part.type === 'text' && typeof part.text === 'string' ? [part.text] : [],\n )\n .join('\\n\\n');\n}\n\n/**\n * Whether a lane entry is still awaiting its send's settle: the host stamps\n * `meta` on every entry it admits (`_op_meta` — submitter and contextSync\n * snapshot), so a meta-less entry is this client's own optimistic fold. The\n * send is still in flight and can still be refused (billing gate, auth,\n * reconnect), which the tray must not render as an accepted queue position.\n */\nexport function isQueueEntryUnsettled(entry: StatewireThread.RunsQueueEntry): boolean {\n return entry.meta === undefined;\n}\n\n/**\n * The ids of queued entries a backend delivery prioritized, as the host\n * records them in its durable `prioritizedQueueIds` state. A prioritized entry\n * heads the queue lane and the live run ends at its next model-call boundary\n * to deliver it, so trays render these rows lit. Tolerates the key being\n * absent and ignores anything that is not a string id.\n */\nexport function readPrioritizedQueueIds(raw: unknown): readonly string[] {\n return Array.isArray(raw)\n ? raw.filter((id): id is string => typeof id === 'string')\n : [];\n}\n\nexport interface QueueLaneFlags {\n isRunning: boolean;\n /** A stopped/errored thread can continue with its queued work. */\n isContinuable: boolean;\n}\n\n/** The thread-status split every queue tray keys its affordances on. */\nexport function queueLaneFlags(status: DeepAgentThreadStatus): QueueLaneFlags {\n return {\n isRunning: status === 'running',\n isContinuable: status === 'stopped' || status === 'error',\n };\n}\n\nexport interface StatewireQueueRow {\n item: StatewireThread.RunsQueueEntry;\n lane: 'queue' | 'steer';\n}\n\n/**\n * The rows a queue tray renders, in dispatch order: stranded steer-lane\n * entries first (only while the thread rests continuable — during a run they\n * already render in the message list), then the queue lane.\n */\nexport function buildStatewireQueueRows(options: {\n queue: readonly StatewireThread.RunsQueueEntry[];\n steerQueue: readonly StatewireThread.RunsQueueEntry[];\n isContinuable: boolean;\n}): StatewireQueueRow[] {\n const { queue, steerQueue, isContinuable } = options;\n return [\n ...(isContinuable\n ? steerQueue.map((item) => ({ item, lane: 'steer' as const }))\n : []),\n ...queue.map((item) => ({ item, lane: 'queue' as const })),\n ];\n}\n\n/**\n * Whether a row offers \"Send now\": queue-lane rows only (steer entries already\n * dispatch first), every row while the thread rests continuable, and only the\n * head row while a run is live (later rows would jump the queue order).\n */\nexport function showQueueRowSendNow(options: {\n lane: 'queue' | 'steer';\n index: number;\n isRunning: boolean;\n isContinuable: boolean;\n}): boolean {\n const { lane, index, isRunning, isContinuable } = options;\n return lane === 'queue' && (isContinuable || (isRunning && index === 0));\n}\n\n/**\n * Whether a row offers \"Steer\" (`run/send` `steer`): queue-lane rows while a\n * run is live. Steer folds the entry into the RUNNING turn at its next model call\n * — after the in-flight tool chain, never mid-tool — and the run goes on with\n * it in context (ChatGPT's and Codex's Steer, versus Queue). Nothing is\n * cancelled and no second run starts, so every queued row qualifies, not just\n * the head. At rest there is no turn to steer: Send now already dispatches.\n */\nexport function showQueueRowSteer(options: {\n lane: 'queue' | 'steer';\n isRunning: boolean;\n}): boolean {\n return options.lane === 'queue' && options.isRunning;\n}\n\nexport type QueueEditCommand = {\n type: 'run/send';\n runId: string;\n behavior: 'steer' | 'queue';\n message: StatewireThread.UserMessage;\n};\n\n/**\n * Re-send a queued entry under its own id on its own lane with edited text:\n * the host replaces the queued message's content in place, leaving its queue\n * position and lane untouched (a same-id send never dispatches). The built-in\n * queue client has no update command, so this goes straight to the runs\n * protocol. Returns `null` when there is nothing to send — blank or unchanged\n * text, or no live run entry to address.\n */\nexport function buildQueueEditCommand(options: {\n item: StatewireThread.RunsQueueEntry;\n lane: 'queue' | 'steer';\n runId: string | null;\n text: string;\n /**\n * The edited message's metadata, replacing the entry's (the host replaces\n * the queued message whole). Omitted, the entry's metadata is kept, minus a\n * composer markdown that described the old text.\n */\n metadata?: Readonly<Record<string, unknown>> | undefined;\n}): QueueEditCommand | null {\n const { item, lane, runId, text } = options;\n const textChanged: boolean = text !== queueEntryText(item.parts);\n const previous: Readonly<Record<string, unknown>> | undefined = nonEmpty(item.metadata);\n const next: Readonly<Record<string, unknown>> | undefined = nonEmpty(\n options.metadata !== undefined\n ? options.metadata\n : textChanged\n ? withoutComposerMarkdown(item.metadata)\n : item.metadata,\n );\n if (\n !text.trim() ||\n runId === null ||\n (!textChanged && stableJson(next ?? null) === stableJson(previous ?? null))\n ) {\n return null;\n }\n // An entry that had metadata and keeps none sends an empty object: the\n // optimistic lane keeps an entry's metadata when the command carries none,\n // and would go on showing the old composer markdown until the host answers.\n const metadata: Readonly<Record<string, unknown>> | undefined =\n next ?? (previous === undefined ? undefined : {});\n const message: StatewireThread.UserMessage = {\n id: item.id,\n role: 'user',\n parts: [{ type: 'text', text }, ...item.parts.filter((part) => part.type !== 'text')],\n ...(metadata === undefined ? {} : { metadata: { ...metadata } }),\n };\n return { type: 'run/send', runId, behavior: lane, message };\n}\n\n/** `metadata` unless it is empty. */\nfunction nonEmpty(\n metadata: Readonly<Record<string, unknown>> | undefined,\n): Readonly<Record<string, unknown>> | undefined {\n return metadata !== undefined && Object.keys(metadata).length > 0 ? metadata : undefined;\n}\n\n/** JSON with object keys sorted, so equal metadata compares equal whatever its key order. */\nfunction stableJson(value: unknown): string {\n const sorted = (entry: unknown): unknown =>\n Array.isArray(entry)\n ? entry.map(sorted)\n : typeof entry === 'object' && entry !== null\n ? Object.fromEntries(\n Object.keys(entry)\n .sort()\n .map((key) => [key, sorted((entry as Record<string, unknown>)[key])]),\n )\n : entry;\n return JSON.stringify(sorted(value));\n}\n\n/** Entry metadata without a composer markdown, `undefined` when nothing is left. */\nfunction withoutComposerMarkdown(\n metadata: Readonly<Record<string, unknown>> | undefined,\n): Readonly<Record<string, unknown>> | undefined {\n if (metadata === undefined || !(DEEP_AGENT_COMPOSER_MARKDOWN_KEY in metadata)) return metadata;\n const { [DEEP_AGENT_COMPOSER_MARKDOWN_KEY]: _stale, ...rest } = metadata;\n return Object.keys(rest).length > 0 ? rest : undefined;\n}\n\n/**\n * Grace between observing a stranded settle and auto-promoting the queue\n * head — long enough for the host's own settle bookkeeping (or a status flap\n * during reconnect) to resolve first, short enough to read as \"it just\n * continued\" rather than \"it hung\".\n */\nexport const QUEUE_AUTO_CONTINUE_DELAY_MS = 2_000;\n\n/** Whether the last cancellation marker records a user or client stop. */\nexport function userStopBlocksQueueAutoContinue(options: {\n marker: string | undefined;\n source: string | undefined;\n}): boolean {\n return (\n options.marker === ATHENA_RUN_MARKER_CANCELLED && !isServerUpdateStopSource(options.source)\n );\n}\n\n/** `fate (cause)[: message]` — the detail a failed-send row carries. */\nexport function describeQueueSendFailure(failure: StatewireClient.SendFailure): string {\n const message =\n 'message' in failure && failure.message !== undefined ? `: ${failure.message}` : '';\n return `${failure.fate} (${failure.cause})${message}`;\n}\n\n/**\n * Whether a `retryFailed` / `discardFailed` throw is the drop race: the held\n * failed send left the outbox (another tab retried or discarded it, or its\n * retry is already in flight) between the render and the click. The lookup\n * (\"unknown failed entry\") and the outbox verbs (\"outbox: no entry …\",\n * \"outbox: … is in flight\") report it. Nothing is lost in that race, so a tray\n * swallows it (keeping telemetry) instead of crashing the click handler.\n */\nexport function isFailedSendEntryRace(error: unknown): boolean {\n return (\n error instanceof Error &&\n (error.message.startsWith('statewire: unknown failed') ||\n error.message.startsWith('outbox: no entry') ||\n /^outbox: .* is in flight$/.test(error.message))\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,54 @@ const tap = require("@assistant-ui/tap");
|
|
|
4
4
|
const storage = require("statewire/storage");
|
|
5
5
|
const require$$0 = require("react");
|
|
6
6
|
const sessionLaneScope = require("./session-lane-scope.cjs");
|
|
7
|
+
const runSend = require("./run-send.cjs");
|
|
7
8
|
const statewireTransport = require("./statewire-transport.cjs");
|
|
8
9
|
const SESSION_PREFIX = "aui:statewire-session:";
|
|
9
10
|
const SESSION_LOCK_PREFIX = "aui:statewire-session-lock:";
|
|
10
11
|
const SESSION_ACTIVE_PREFIX = "aui:statewire-session-active:";
|
|
12
|
+
const TAB_LOCK_PREFIX = "statewire-tab:";
|
|
13
|
+
const NOTIFY_LOCK_PREFIX = "statewire-notify:";
|
|
11
14
|
const DAY_MS = 24 * 60 * 60 * 1e3;
|
|
12
|
-
const
|
|
15
|
+
const LOCAL_SESSION_RECORD_BYTES = 512 * 1024;
|
|
16
|
+
const READABLE_STORAGE_VERSIONS = /* @__PURE__ */ new Set([1, 2, 3, 4, 5, 6]);
|
|
13
17
|
const browserGlobals = globalThis;
|
|
18
|
+
function sessionPrincipal(subject) {
|
|
19
|
+
return `user:${subject}`;
|
|
20
|
+
}
|
|
21
|
+
function localStorageSessionKey({
|
|
22
|
+
namespace,
|
|
23
|
+
principal,
|
|
24
|
+
threadId
|
|
25
|
+
}) {
|
|
26
|
+
return storage.sessionNamespace(namespace, principal) + threadId;
|
|
27
|
+
}
|
|
28
|
+
function adoptUnscopedLocalStorageSessions({
|
|
29
|
+
namespace,
|
|
30
|
+
principal,
|
|
31
|
+
unscopedPrefix,
|
|
32
|
+
threadId,
|
|
33
|
+
storage: storage2 = browserGlobals.localStorage
|
|
34
|
+
}) {
|
|
35
|
+
if (!storage2) return 0;
|
|
36
|
+
const from = SESSION_PREFIX + unscopedPrefix;
|
|
37
|
+
let moved = 0;
|
|
38
|
+
try {
|
|
39
|
+
const keys = threadId === void 0 ? Array.from({ length: storage2.length }, (_, index) => storage2.key(index)).filter(
|
|
40
|
+
(key) => (key == null ? void 0 : key.startsWith(from)) === true
|
|
41
|
+
) : [from + threadId];
|
|
42
|
+
for (const key of keys) {
|
|
43
|
+
const raw = storage2.getItem(key);
|
|
44
|
+
if (raw === null) continue;
|
|
45
|
+
const target = SESSION_PREFIX + localStorageSessionKey({ namespace, principal, threadId: key.slice(from.length) });
|
|
46
|
+
if (target === key || storage2.getItem(target) !== null) continue;
|
|
47
|
+
storage2.setItem(target, raw);
|
|
48
|
+
storage2.removeItem(key);
|
|
49
|
+
moved += 1;
|
|
50
|
+
}
|
|
51
|
+
} catch {
|
|
52
|
+
}
|
|
53
|
+
return moved;
|
|
54
|
+
}
|
|
14
55
|
function readPersistedFailedSendStamps(sessionKey) {
|
|
15
56
|
const storage2 = browserGlobals.localStorage;
|
|
16
57
|
if (!storage2) return null;
|
|
@@ -30,9 +71,12 @@ function readFailedSendStampsFromRecord(record) {
|
|
|
30
71
|
const lanes = record.lanes && typeof record.lanes === "object" ? record.lanes : {};
|
|
31
72
|
const failed = [
|
|
32
73
|
...Array.isArray(record.failed) ? record.failed : [],
|
|
33
|
-
...Object.values(lanes).flatMap(
|
|
34
|
-
|
|
35
|
-
|
|
74
|
+
...Object.values(lanes).flatMap((lane) => [
|
|
75
|
+
...Array.isArray(lane == null ? void 0 : lane.failed) ? lane.failed : [],
|
|
76
|
+
...Array.isArray(lane == null ? void 0 : lane.inbox) ? lane.inbox.filter(
|
|
77
|
+
(entry) => (entry == null ? void 0 : entry.failure) !== void 0
|
|
78
|
+
) : []
|
|
79
|
+
])
|
|
36
80
|
];
|
|
37
81
|
for (const entry of failed) {
|
|
38
82
|
const failed2 = entry;
|
|
@@ -62,42 +106,73 @@ const replayableOnCurrentWire = (protocol, command, current) => command.produced
|
|
|
62
106
|
{ ...command, produced: { ...command.produced, wire: current.wire } },
|
|
63
107
|
current
|
|
64
108
|
);
|
|
109
|
+
function upgradeLegacyAthenaStatement(protocol, command, current) {
|
|
110
|
+
if (protocol !== statewireTransport.DEEP_AGENT_STATEWIRE_PROTOCOL || current.protocols === "*") return void 0;
|
|
111
|
+
const produced = command.produced;
|
|
112
|
+
if (produced === void 0 || produced.protocols === "*") return void 0;
|
|
113
|
+
const athena = produced.protocols.find((p) => p.name === protocol);
|
|
114
|
+
const offer = current.protocols.find((p) => p.name === protocol);
|
|
115
|
+
if ((athena == null ? void 0 : athena.version) !== statewireTransport.DEEP_AGENT_LEGACY_STATEWIRE_PROTOCOL_VERSION || offer === void 0 || inRange(athena.version, offer))
|
|
116
|
+
return void 0;
|
|
117
|
+
const upgraded = runSend.upgradeLegacyRunCommand(command);
|
|
118
|
+
if (upgraded === null && command.method in runSend.LEGACY_RUN_SEND_BEHAVIORS) return null;
|
|
119
|
+
return {
|
|
120
|
+
...command,
|
|
121
|
+
...upgraded ?? {},
|
|
122
|
+
produced: {
|
|
123
|
+
...produced,
|
|
124
|
+
protocols: produced.protocols.map((p) => p.name === protocol ? offer : p)
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
65
128
|
function parkIncompatibleSessionCommands(record, current, now = Date.now()) {
|
|
66
129
|
let parked = 0;
|
|
67
130
|
let restamped = 0;
|
|
68
131
|
const lanes = {};
|
|
132
|
+
const park = (command) => ({
|
|
133
|
+
id: command.id,
|
|
134
|
+
method: command.method,
|
|
135
|
+
params: command.params,
|
|
136
|
+
...command.meta !== void 0 && { meta: command.meta },
|
|
137
|
+
ts: now,
|
|
138
|
+
...command.seq !== void 0 && { seq: command.seq },
|
|
139
|
+
...command.localMeta !== void 0 && { localMeta: command.localMeta },
|
|
140
|
+
failure: { fate: "lost", cause: "session-lost" }
|
|
141
|
+
});
|
|
69
142
|
for (const [protocol, lane] of Object.entries(record.lanes)) {
|
|
70
|
-
const
|
|
71
|
-
const failed = [];
|
|
143
|
+
const inbox = [];
|
|
72
144
|
let laneRestamped = 0;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
145
|
+
const sort = (stored) => stored.flatMap((original) => {
|
|
146
|
+
const upgraded = upgradeLegacyAthenaStatement(protocol, original, current);
|
|
147
|
+
if (upgraded === null) {
|
|
148
|
+
inbox.push(park(original));
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
const command = upgraded ?? original;
|
|
152
|
+
if (upgraded !== void 0 && storedCommandCompatible(protocol, command, current)) {
|
|
153
|
+
laneRestamped += 1;
|
|
154
|
+
return [command];
|
|
77
155
|
}
|
|
156
|
+
if (storedCommandCompatible(protocol, command, current))
|
|
157
|
+
return [command];
|
|
78
158
|
if (replayableOnCurrentWire(protocol, command, current)) {
|
|
79
|
-
kept.push({ ...command, produced: current });
|
|
80
159
|
laneRestamped += 1;
|
|
81
|
-
|
|
160
|
+
return [{ ...command, produced: current }];
|
|
82
161
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
failure: { fate: "lost", cause: "session-lost" },
|
|
90
|
-
ts: now,
|
|
91
|
-
seq: command.seq
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
parked += failed.length;
|
|
162
|
+
inbox.push(park(command));
|
|
163
|
+
return [];
|
|
164
|
+
});
|
|
165
|
+
const commands = sort(lane.commands);
|
|
166
|
+
const outbox = lane.outbox === void 0 ? void 0 : sort(lane.outbox);
|
|
167
|
+
parked += inbox.length;
|
|
95
168
|
restamped += laneRestamped;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
169
|
+
const { outbox: _outbox, ...rest } = lane;
|
|
170
|
+
lanes[protocol] = inbox.length === 0 && laneRestamped === 0 ? lane : {
|
|
171
|
+
...rest,
|
|
172
|
+
commands,
|
|
173
|
+
...outbox !== void 0 && outbox.length > 0 && { outbox },
|
|
174
|
+
...(inbox.length > 0 || lane.inbox !== void 0) && {
|
|
175
|
+
inbox: [...lane.inbox ?? [], ...inbox]
|
|
101
176
|
}
|
|
102
177
|
};
|
|
103
178
|
}
|
|
@@ -110,21 +185,12 @@ function isStorageQuotaError(error) {
|
|
|
110
185
|
message
|
|
111
186
|
);
|
|
112
187
|
}
|
|
113
|
-
function
|
|
114
|
-
if (error instanceof Error && error.name === "QuotaExceededError")
|
|
115
|
-
return error;
|
|
116
|
-
const normalized = new Error(
|
|
117
|
-
error instanceof Error ? error.message : "storage quota exceeded"
|
|
118
|
-
);
|
|
119
|
-
normalized.name = "QuotaExceededError";
|
|
120
|
-
return normalized;
|
|
121
|
-
}
|
|
122
|
-
function unreadableRecord(raw) {
|
|
188
|
+
function unreadableRecord(key, raw) {
|
|
123
189
|
let parsed;
|
|
124
190
|
try {
|
|
125
191
|
parsed = JSON.parse(raw);
|
|
126
|
-
} catch
|
|
127
|
-
return
|
|
192
|
+
} catch {
|
|
193
|
+
return void 0;
|
|
128
194
|
}
|
|
129
195
|
if (typeof parsed !== "object" || parsed === null) {
|
|
130
196
|
return new Error("stored session record is not an object");
|
|
@@ -135,6 +201,10 @@ function unreadableRecord(raw) {
|
|
|
135
201
|
`stored session record uses storage version ${String(version)}`
|
|
136
202
|
);
|
|
137
203
|
}
|
|
204
|
+
const owner = parsed.principal;
|
|
205
|
+
if (version === 6 && typeof owner === "string" && !key.includes(`:${encodeURIComponent(owner)}:`)) {
|
|
206
|
+
return new Error("stored session record belongs to another principal");
|
|
207
|
+
}
|
|
138
208
|
return void 0;
|
|
139
209
|
}
|
|
140
210
|
function browserBackend({
|
|
@@ -165,24 +235,48 @@ function browserBackend({
|
|
|
165
235
|
);
|
|
166
236
|
}
|
|
167
237
|
);
|
|
238
|
+
},
|
|
239
|
+
subscribe: (listener) => {
|
|
240
|
+
var _a;
|
|
241
|
+
const onStorage = (event) => {
|
|
242
|
+
if (event.key !== null) listener(event.key);
|
|
243
|
+
};
|
|
244
|
+
(_a = browserGlobals.addEventListener) == null ? void 0 : _a.call(browserGlobals, "storage", onStorage);
|
|
245
|
+
return () => {
|
|
246
|
+
var _a2;
|
|
247
|
+
return (_a2 = browserGlobals.removeEventListener) == null ? void 0 : _a2.call(browserGlobals, "storage", onStorage);
|
|
248
|
+
};
|
|
168
249
|
}
|
|
169
250
|
};
|
|
170
251
|
}
|
|
171
252
|
function quotaTolerantBackend({
|
|
172
253
|
inner,
|
|
173
|
-
onDegraded
|
|
254
|
+
onDegraded,
|
|
255
|
+
onQuota
|
|
174
256
|
}) {
|
|
175
|
-
const
|
|
257
|
+
const reclaimed = /* @__PURE__ */ new Set();
|
|
176
258
|
const overlay = /* @__PURE__ */ new Map();
|
|
177
259
|
const shielded = /* @__PURE__ */ new Set();
|
|
178
260
|
const checked = /* @__PURE__ */ new Map();
|
|
179
261
|
const readable = (key, raw) => {
|
|
180
262
|
const previous = checked.get(key);
|
|
181
263
|
if (previous !== void 0 && previous.raw === raw) return previous.verdict;
|
|
182
|
-
const verdict = unreadableRecord(raw);
|
|
264
|
+
const verdict = unreadableRecord(key, raw);
|
|
183
265
|
checked.set(key, { raw, verdict });
|
|
184
266
|
return verdict;
|
|
185
267
|
};
|
|
268
|
+
const writeThrough = (key) => {
|
|
269
|
+
const value = overlay.get(key);
|
|
270
|
+
if (value === void 0 || shielded.has(key)) return;
|
|
271
|
+
try {
|
|
272
|
+
inner.setItem(key, value);
|
|
273
|
+
} catch (error) {
|
|
274
|
+
onDegraded({ operation: "setItem", key, error });
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
if (overlay.get(key) === value) overlay.delete(key);
|
|
278
|
+
reclaimed.delete(key);
|
|
279
|
+
};
|
|
186
280
|
return {
|
|
187
281
|
getItem: (key) => {
|
|
188
282
|
const shadowed = overlay.get(key);
|
|
@@ -211,13 +305,17 @@ function quotaTolerantBackend({
|
|
|
211
305
|
try {
|
|
212
306
|
inner.setItem(key, value);
|
|
213
307
|
overlay.delete(key);
|
|
214
|
-
|
|
308
|
+
reclaimed.delete(key);
|
|
215
309
|
} catch (error) {
|
|
216
|
-
if (isStorageQuotaError(error) && !quotaSurfaced.has(key)) {
|
|
217
|
-
quotaSurfaced.add(key);
|
|
218
|
-
throw asStatewireQuotaError(error);
|
|
219
|
-
}
|
|
220
310
|
overlay.set(key, value);
|
|
311
|
+
if (isStorageQuotaError(error) && onQuota && !reclaimed.has(key)) {
|
|
312
|
+
reclaimed.add(key);
|
|
313
|
+
onQuota(key).then(
|
|
314
|
+
() => writeThrough(key),
|
|
315
|
+
(reclaimError) => onDegraded({ operation: "withUnused", key, error: reclaimError })
|
|
316
|
+
);
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
221
319
|
onDegraded({ operation: "setItem", key, error });
|
|
222
320
|
}
|
|
223
321
|
},
|
|
@@ -245,10 +343,12 @@ function quotaTolerantBackend({
|
|
|
245
343
|
} catch (error) {
|
|
246
344
|
onDegraded({ operation: "withUnused", key, error });
|
|
247
345
|
}
|
|
248
|
-
}
|
|
346
|
+
},
|
|
347
|
+
...inner.subscribe !== void 0 && { subscribe: inner.subscribe }
|
|
249
348
|
};
|
|
250
349
|
}
|
|
251
|
-
|
|
350
|
+
const asList = (value) => Array.isArray(value) ? value : [];
|
|
351
|
+
function retentionView(raw) {
|
|
252
352
|
if (raw === null) return void 0;
|
|
253
353
|
let parsed;
|
|
254
354
|
try {
|
|
@@ -257,23 +357,61 @@ function savedAtOf(raw) {
|
|
|
257
357
|
return void 0;
|
|
258
358
|
}
|
|
259
359
|
if (typeof parsed !== "object" || parsed === null) return void 0;
|
|
260
|
-
const
|
|
261
|
-
const stamp = savedAt ?? updatedAt;
|
|
262
|
-
|
|
360
|
+
const record = parsed;
|
|
361
|
+
const stamp = record.savedAt ?? record.updatedAt;
|
|
362
|
+
const lanes = typeof record.lanes === "object" && record.lanes !== null ? Object.values(record.lanes) : [];
|
|
363
|
+
const holdsSends = asList(record.commands).length > 0 || asList(record.failed).length > 0 || lanes.some((lane) => {
|
|
364
|
+
if (typeof lane !== "object" || lane === null) return false;
|
|
365
|
+
const fields = lane;
|
|
366
|
+
return [
|
|
367
|
+
"commands",
|
|
368
|
+
"outbox",
|
|
369
|
+
"inbox",
|
|
370
|
+
"removed",
|
|
371
|
+
"verdicts",
|
|
372
|
+
"failed"
|
|
373
|
+
].some((field) => asList(fields[field]).length > 0);
|
|
374
|
+
});
|
|
375
|
+
return {
|
|
376
|
+
savedAt: typeof stamp === "number" && Number.isFinite(stamp) ? stamp : void 0,
|
|
377
|
+
holdsSends
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
function persistedSessionHoldsSends(sessionKey) {
|
|
381
|
+
var _a;
|
|
382
|
+
const storage2 = browserGlobals.localStorage;
|
|
383
|
+
if (!storage2) return false;
|
|
384
|
+
let raw;
|
|
385
|
+
try {
|
|
386
|
+
raw = storage2.getItem(SESSION_PREFIX + sessionKey);
|
|
387
|
+
} catch {
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
return ((_a = retentionView(raw)) == null ? void 0 : _a.holdsSends) ?? false;
|
|
263
391
|
}
|
|
264
392
|
async function retireExpiredSessionRecords({
|
|
265
393
|
backend,
|
|
266
394
|
mounted,
|
|
267
395
|
maxAgeMs,
|
|
396
|
+
quota = false,
|
|
268
397
|
now = Date.now()
|
|
269
398
|
}) {
|
|
399
|
+
const empty = [];
|
|
270
400
|
for (const key of backend.getAllKeys()) {
|
|
271
401
|
if (!key.startsWith(SESSION_PREFIX) || mounted.has(key)) continue;
|
|
272
|
-
const
|
|
273
|
-
if (
|
|
402
|
+
const view = retentionView(backend.getItem(key));
|
|
403
|
+
if ((view == null ? void 0 : view.savedAt) === void 0 || view.holdsSends) continue;
|
|
404
|
+
empty.push({ key, savedAt: view.savedAt });
|
|
405
|
+
}
|
|
406
|
+
empty.sort((a, b) => b.savedAt - a.savedAt);
|
|
407
|
+
const quotaStart = Math.floor(empty.length / 2);
|
|
408
|
+
for (const [index, { key, savedAt }] of empty.entries()) {
|
|
409
|
+
const expired = now - savedAt > maxAgeMs;
|
|
410
|
+
if (!expired && !(quota && index >= quotaStart)) continue;
|
|
274
411
|
await backend.withUnused(key, async () => {
|
|
275
|
-
if (mounted.has(key)
|
|
276
|
-
|
|
412
|
+
if (mounted.has(key)) return;
|
|
413
|
+
const again = retentionView(backend.getItem(key));
|
|
414
|
+
if ((again == null ? void 0 : again.savedAt) !== savedAt || again.holdsSends) return;
|
|
277
415
|
backend.removeItem(key);
|
|
278
416
|
});
|
|
279
417
|
}
|
|
@@ -286,26 +424,63 @@ function sharedBackend({
|
|
|
286
424
|
let shared = sharedBackends.get(storage2);
|
|
287
425
|
if (shared === void 0) {
|
|
288
426
|
const listeners = /* @__PURE__ */ new Set();
|
|
427
|
+
const mounted = /* @__PURE__ */ new Map();
|
|
428
|
+
const maxAgeMs = /* @__PURE__ */ new Map();
|
|
429
|
+
const inner = browserBackend({ storage: storage2, locks });
|
|
289
430
|
shared = {
|
|
290
431
|
listeners,
|
|
291
|
-
mounted
|
|
432
|
+
mounted,
|
|
433
|
+
maxAgeMs,
|
|
292
434
|
backend: quotaTolerantBackend({
|
|
293
|
-
inner
|
|
435
|
+
inner,
|
|
294
436
|
onDegraded: (degradation) => {
|
|
295
437
|
for (const listener of listeners) listener(degradation);
|
|
296
|
-
}
|
|
438
|
+
},
|
|
439
|
+
onQuota: () => retireExpiredSessionRecords({
|
|
440
|
+
backend: inner,
|
|
441
|
+
mounted,
|
|
442
|
+
maxAgeMs: Math.max(7 * DAY_MS, ...maxAgeMs.values()),
|
|
443
|
+
quota: true
|
|
444
|
+
})
|
|
297
445
|
})
|
|
298
446
|
};
|
|
299
447
|
sharedBackends.set(storage2, shared);
|
|
300
448
|
}
|
|
301
449
|
return shared;
|
|
302
450
|
}
|
|
451
|
+
async function underLock({
|
|
452
|
+
locks,
|
|
453
|
+
name,
|
|
454
|
+
fn,
|
|
455
|
+
onRefused
|
|
456
|
+
}) {
|
|
457
|
+
let granted = false;
|
|
458
|
+
try {
|
|
459
|
+
return await locks.request(name, async () => {
|
|
460
|
+
granted = true;
|
|
461
|
+
return fn();
|
|
462
|
+
});
|
|
463
|
+
} catch (error) {
|
|
464
|
+
if (granted) throw error;
|
|
465
|
+
onRefused(error);
|
|
466
|
+
return fn();
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
function newTabId() {
|
|
470
|
+
var _a, _b;
|
|
471
|
+
const host = globalThis;
|
|
472
|
+
return ((_b = (_a = host.crypto) == null ? void 0 : _a.randomUUID) == null ? void 0 : _b.call(_a)) ?? `tab-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
473
|
+
}
|
|
303
474
|
const useQuotaSafeLocalStorageSession = ({
|
|
304
475
|
threadId,
|
|
305
|
-
|
|
476
|
+
namespace,
|
|
477
|
+
principal,
|
|
478
|
+
unscopedPrefix,
|
|
306
479
|
ttl = 7 * DAY_MS,
|
|
307
480
|
max = 50,
|
|
308
|
-
|
|
481
|
+
recordBytes = LOCAL_SESSION_RECORD_BYTES,
|
|
482
|
+
onStorageDegraded,
|
|
483
|
+
onEvict
|
|
309
484
|
}) => {
|
|
310
485
|
var _a;
|
|
311
486
|
const storage$1 = browserGlobals.localStorage;
|
|
@@ -318,18 +493,31 @@ const useQuotaSafeLocalStorageSession = ({
|
|
|
318
493
|
throw new Error(
|
|
319
494
|
"statewire: QuotaSafeLocalStorageSession requires the Web Locks API (navigator.locks)"
|
|
320
495
|
);
|
|
321
|
-
const sessionKey =
|
|
496
|
+
const sessionKey = localStorageSessionKey({ namespace, principal, threadId });
|
|
322
497
|
const storageKey = SESSION_PREFIX + sessionKey;
|
|
323
498
|
const lockName = SESSION_LOCK_PREFIX + sessionKey;
|
|
324
499
|
const mountedScope = require$$0.useRef({
|
|
325
500
|
threadId,
|
|
326
501
|
laneKey: sessionKey
|
|
327
502
|
});
|
|
328
|
-
if (!sessionLaneScope.isSameSessionLaneScope({
|
|
503
|
+
if (!sessionLaneScope.isSameSessionLaneScope({
|
|
504
|
+
scope: mountedScope.current,
|
|
505
|
+
key: (id) => localStorageSessionKey({ namespace, principal, threadId: id })
|
|
506
|
+
})) {
|
|
329
507
|
throw new Error(
|
|
330
508
|
"statewire: principal changed; remount the account's thread/session"
|
|
331
509
|
);
|
|
332
510
|
}
|
|
511
|
+
require$$0.useMemo(() => {
|
|
512
|
+
if (unscopedPrefix === void 0) return;
|
|
513
|
+
adoptUnscopedLocalStorageSessions({
|
|
514
|
+
namespace,
|
|
515
|
+
principal,
|
|
516
|
+
unscopedPrefix,
|
|
517
|
+
threadId,
|
|
518
|
+
storage: storage$1
|
|
519
|
+
});
|
|
520
|
+
}, [namespace, principal, unscopedPrefix, threadId, storage$1]);
|
|
333
521
|
const latestOnDegraded = require$$0.useRef(onStorageDegraded);
|
|
334
522
|
latestOnDegraded.current = onStorageDegraded;
|
|
335
523
|
const reportDegradation = require$$0.useMemo(() => {
|
|
@@ -352,6 +540,18 @@ const useQuotaSafeLocalStorageSession = ({
|
|
|
352
540
|
);
|
|
353
541
|
};
|
|
354
542
|
}, []);
|
|
543
|
+
const latestOnEvict = require$$0.useRef(onEvict);
|
|
544
|
+
latestOnEvict.current = onEvict;
|
|
545
|
+
const reportEvict = require$$0.useCallback(
|
|
546
|
+
(event) => {
|
|
547
|
+
var _a2;
|
|
548
|
+
try {
|
|
549
|
+
(_a2 = latestOnEvict.current) == null ? void 0 : _a2.call(latestOnEvict, event);
|
|
550
|
+
} catch {
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
[]
|
|
554
|
+
);
|
|
355
555
|
const shared = sharedBackend({ storage: storage$1, locks });
|
|
356
556
|
shared.listeners.add(reportDegradation);
|
|
357
557
|
require$$0.useEffect(() => {
|
|
@@ -361,8 +561,9 @@ const useQuotaSafeLocalStorageSession = ({
|
|
|
361
561
|
};
|
|
362
562
|
}, [shared, reportDegradation]);
|
|
363
563
|
require$$0.useEffect(() => {
|
|
364
|
-
const { mounted } = shared;
|
|
564
|
+
const { mounted, maxAgeMs } = shared;
|
|
365
565
|
mounted.set(storageKey, (mounted.get(storageKey) ?? 0) + 1);
|
|
566
|
+
maxAgeMs.set(storageKey, ttl);
|
|
366
567
|
retireExpiredSessionRecords({
|
|
367
568
|
backend: shared.backend,
|
|
368
569
|
mounted,
|
|
@@ -372,10 +573,23 @@ const useQuotaSafeLocalStorageSession = ({
|
|
|
372
573
|
);
|
|
373
574
|
return () => {
|
|
374
575
|
const count = (mounted.get(storageKey) ?? 1) - 1;
|
|
375
|
-
if (count === 0)
|
|
376
|
-
|
|
576
|
+
if (count === 0) {
|
|
577
|
+
mounted.delete(storageKey);
|
|
578
|
+
maxAgeMs.delete(storageKey);
|
|
579
|
+
} else mounted.set(storageKey, count);
|
|
377
580
|
};
|
|
378
581
|
}, [shared, storageKey, ttl, reportDegradation]);
|
|
582
|
+
const [tabId] = require$$0.useState(newTabId);
|
|
583
|
+
require$$0.useEffect(() => {
|
|
584
|
+
let release;
|
|
585
|
+
const held = new Promise((resolve) => {
|
|
586
|
+
release = resolve;
|
|
587
|
+
});
|
|
588
|
+
Promise.resolve(locks.request(TAB_LOCK_PREFIX + tabId, () => held)).catch(
|
|
589
|
+
(error) => reportDegradation({ operation: "lock", key: storageKey, error })
|
|
590
|
+
);
|
|
591
|
+
return () => release == null ? void 0 : release();
|
|
592
|
+
}, [locks, tabId, storageKey, reportDegradation]);
|
|
379
593
|
require$$0.useEffect(() => {
|
|
380
594
|
let release;
|
|
381
595
|
let disposed = false;
|
|
@@ -416,31 +630,42 @@ const useQuotaSafeLocalStorageSession = ({
|
|
|
416
630
|
const sessionStorage = tap.useResource(
|
|
417
631
|
storage.KeyValueSessionStorage({
|
|
418
632
|
backend: shared.backend,
|
|
419
|
-
key:
|
|
420
|
-
namespace: SESSION_PREFIX,
|
|
633
|
+
key: threadId,
|
|
634
|
+
namespace: SESSION_PREFIX + namespace,
|
|
635
|
+
principal,
|
|
421
636
|
protocol: statewireTransport.DEEP_AGENT_STATEWIRE_PROTOCOL,
|
|
422
637
|
migrate,
|
|
638
|
+
// statewire 0.27.1 retires a record past maxAgeMs even while it holds
|
|
639
|
+
// sends: kept failures with their full params were what filled the
|
|
640
|
+
// origin (#52031).
|
|
423
641
|
retention: { maxAgeMs: ttl, maxEntries: max },
|
|
642
|
+
limits: { recordBytes },
|
|
424
643
|
// A failure statewire raises itself (a structurally invalid stored
|
|
425
644
|
// record) still stops the session; it is at least reported the same way.
|
|
426
|
-
onError: (error) => reportDegradation({ operation: "session", key: storageKey, error })
|
|
645
|
+
onError: (error) => reportDegradation({ operation: "session", key: storageKey, error }),
|
|
646
|
+
onEvict: reportEvict
|
|
427
647
|
})
|
|
428
648
|
);
|
|
429
649
|
return require$$0.useMemo(
|
|
430
650
|
() => ({
|
|
431
651
|
...sessionStorage,
|
|
432
|
-
lock:
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
652
|
+
lock: (fn) => underLock({
|
|
653
|
+
locks,
|
|
654
|
+
name: lockName,
|
|
655
|
+
fn,
|
|
656
|
+
onRefused: (error) => reportDegradation({ operation: "lock", key: storageKey, error })
|
|
657
|
+
}),
|
|
658
|
+
notifyLock: (fn) => underLock({
|
|
659
|
+
locks,
|
|
660
|
+
name: NOTIFY_LOCK_PREFIX + storageKey,
|
|
661
|
+
fn,
|
|
662
|
+
onRefused: (error) => reportDegradation({ operation: "lock", key: storageKey, error })
|
|
663
|
+
}),
|
|
664
|
+
owner: {
|
|
665
|
+
id: tabId,
|
|
666
|
+
whenGone: (id, signal) => Promise.resolve(
|
|
667
|
+
locks.request(TAB_LOCK_PREFIX + id, { signal }, () => void 0)
|
|
668
|
+
)
|
|
444
669
|
},
|
|
445
670
|
subscribe: (listener) => {
|
|
446
671
|
var _a2;
|
|
@@ -454,18 +679,23 @@ const useQuotaSafeLocalStorageSession = ({
|
|
|
454
679
|
};
|
|
455
680
|
}
|
|
456
681
|
}),
|
|
457
|
-
[sessionStorage, locks, storageKey, lockName, reportDegradation]
|
|
682
|
+
[sessionStorage, locks, storageKey, lockName, tabId, reportDegradation]
|
|
458
683
|
);
|
|
459
684
|
};
|
|
460
685
|
const QuotaSafeLocalStorageSession = tap.resource(
|
|
461
686
|
useQuotaSafeLocalStorageSession
|
|
462
687
|
);
|
|
688
|
+
exports.LOCAL_SESSION_RECORD_BYTES = LOCAL_SESSION_RECORD_BYTES;
|
|
463
689
|
exports.QuotaSafeLocalStorageSession = QuotaSafeLocalStorageSession;
|
|
464
690
|
exports.STORED_STATEMENT_WIRE_FLOOR = STORED_STATEMENT_WIRE_FLOOR;
|
|
691
|
+
exports.adoptUnscopedLocalStorageSessions = adoptUnscopedLocalStorageSessions;
|
|
465
692
|
exports.isStorageQuotaError = isStorageQuotaError;
|
|
693
|
+
exports.localStorageSessionKey = localStorageSessionKey;
|
|
466
694
|
exports.parkIncompatibleSessionCommands = parkIncompatibleSessionCommands;
|
|
695
|
+
exports.persistedSessionHoldsSends = persistedSessionHoldsSends;
|
|
467
696
|
exports.quotaTolerantBackend = quotaTolerantBackend;
|
|
468
697
|
exports.readFailedSendStampsFromRecord = readFailedSendStampsFromRecord;
|
|
469
698
|
exports.readPersistedFailedSendStamps = readPersistedFailedSendStamps;
|
|
470
699
|
exports.retireExpiredSessionRecords = retireExpiredSessionRecords;
|
|
700
|
+
exports.sessionPrincipal = sessionPrincipal;
|
|
471
701
|
//# sourceMappingURL=quota-safe-local-storage-session.cjs.map
|