@assistant-ui/core 0.3.19 → 0.3.21
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/dist/adapters/attachment.d.ts +50 -43
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +52 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +2 -5
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +7 -8
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +14 -9
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/speech.d.ts +63 -65
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +16 -2
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/suggestion.d.ts +19 -22
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +60 -58
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +8 -11
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +50 -45
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +17 -3
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +70 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +1 -4
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +27 -58
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8 -6
- package/dist/model-context/frame/host.d.ts +20 -23
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +3 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +28 -30
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +6 -0
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.d.ts +24 -27
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/frame/validate.d.ts +3 -0
- package/dist/model-context/frame/validate.d.ts.map +1 -0
- package/dist/model-context/frame/validate.js +26 -0
- package/dist/model-context/frame/validate.js.map +1 -0
- package/dist/model-context/interactable-composer-metadata.d.ts +51 -39
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +30 -6
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry-handles.d.ts +9 -12
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +15 -18
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +15 -17
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +12 -14
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +40 -43
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +9 -12
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -26
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +4 -8
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +28 -23
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +77 -58
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +4 -7
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +6 -9
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +2 -5
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +9 -12
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +3 -6
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +306 -101
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +34 -37
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +2 -1
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts +10 -12
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +4 -8
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -11
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +32 -22
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +160 -122
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +2 -5
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +15 -8
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -9
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +42 -46
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +8 -11
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +7 -9
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -14
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +15 -18
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +13 -6
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +1 -4
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +3 -6
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +26 -29
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +6 -9
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +5 -7
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +1 -4
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +44 -32
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +3 -6
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +7 -10
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +3 -6
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +9 -13
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +13 -16
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +3 -5
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +3 -6
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +40 -40
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -9
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +4 -7
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +7 -9
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +7 -10
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +6 -9
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +2 -5
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +3 -6
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +5 -8
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +1 -4
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +7 -10
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +3 -6
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +8 -11
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -29
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +26 -28
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +13 -13
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +13 -17
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +30 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +42 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +30 -28
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +14 -15
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +122 -120
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +208 -194
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +124 -82
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +8 -11
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +4 -7
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +16 -19
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +61 -64
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -27
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +26 -28
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +6 -9
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +5 -8
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +4 -7
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +7 -10
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +4 -7
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +4 -7
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +5 -1
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +4 -8
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +210 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +70 -46
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +186 -198
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +17 -23
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +3 -1
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +10 -11
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +11 -14
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +6 -8
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +9 -12
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +123 -118
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +7 -10
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +3 -6
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +2 -5
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +7 -10
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +426 -216
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -18
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +146 -125
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +120 -8
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +13 -15
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +5 -7
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +2 -5
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +3 -6
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +9 -11
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +15 -19
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +14 -17
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +17 -21
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
- package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
- package/dist/react/runtimes/external-store-history-copy.js +148 -0
- package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +3 -6
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +2 -5
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +29 -41
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +142 -34
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +3 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +5 -7
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +4 -6
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +72 -70
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +11 -15
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +60 -60
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +21 -24
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +10 -11
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +6 -8
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +35 -37
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +3 -6
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +3 -6
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +28 -31
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +51 -49
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +35 -35
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +215 -201
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +4 -0
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +31 -30
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +25 -2
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -82
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +4 -3
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +54 -57
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +70 -72
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +77 -81
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +306 -308
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +9 -12
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +150 -101
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +400 -122
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +121 -104
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +174 -62
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +30 -31
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +21 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +28 -31
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +23 -2
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +15 -18
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +8 -11
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +98 -83
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +67 -70
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +225 -211
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +25 -20
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +37 -40
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +32 -33
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +10 -2
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/queue/queue-item.d.ts +7 -10
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +9 -11
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +16 -15
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.js +24 -2
- package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
- package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
- package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
- package/dist/runtime/utils/attachment-send-operations.js +34 -0
- package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
- package/dist/runtime/utils/auto-status.d.ts +11 -13
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +3 -5
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +31 -33
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +47 -48
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +6 -5
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +6 -9
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +24 -27
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +52 -54
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +8 -7
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +12 -14
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +7 -10
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +6 -9
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
- package/dist/runtime/utils/stored-message-parts.js +103 -0
- package/dist/runtime/utils/stored-message-parts.js.map +1 -0
- package/dist/runtime/utils/streaming-timing.d.ts +23 -26
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +38 -34
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +16 -6
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +5 -7
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +10 -13
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtime/utils/tool-interactions.d.ts +10 -0
- package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
- package/dist/runtime/utils/tool-interactions.js +92 -0
- package/dist/runtime/utils/tool-interactions.js.map +1 -0
- package/dist/runtimes/assistant-transport/utils.d.ts +1 -4
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +220 -200
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +6 -8
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +3 -6
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +40 -43
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +119 -125
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +71 -18
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +5 -8
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +96 -98
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +20 -16
- package/dist/runtimes/internal.d.ts.map +1 -0
- package/dist/runtimes/local/local-runtime-core.d.ts +7 -10
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +41 -44
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +42 -45
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +94 -93
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +220 -29
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +2 -5
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +77 -55
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -15
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +3 -6
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +2 -5
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +34 -31
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +60 -63
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +31 -33
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +5 -8
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +119 -121
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +147 -149
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +8 -11
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +56 -58
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1270 -741
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +2 -5
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +3 -6
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +3 -1
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +2 -5
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +4 -6
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/submission-message.d.ts +8 -0
- package/dist/store/clients/submission-message.d.ts.map +1 -0
- package/dist/store/clients/submission-message.js +22 -0
- package/dist/store/clients/submission-message.js.map +1 -0
- package/dist/store/clients/suggestions.d.ts +8 -11
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +12 -12
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +81 -82
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +1 -4
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +7 -10
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +1 -4
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/index.d.ts +33 -36
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -5
- package/dist/store/internal.d.ts +12 -12
- package/dist/store/internal.d.ts.map +1 -0
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +14 -16
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +10 -5
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +11 -14
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +2 -5
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +10 -11
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +121 -113
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +5 -8
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +6 -9
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +3 -6
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +28 -29
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +19 -22
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +33 -35
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +147 -135
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +119 -112
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +10 -13
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +53 -50
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +21 -23
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +14 -17
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +18 -21
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +27 -30
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +68 -71
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +197 -200
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +49 -52
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +73 -69
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +35 -7
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +35 -37
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +7 -8
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +13 -16
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +15 -17
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/message.d.ts +358 -318
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +3 -6
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +10 -13
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +1 -4
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +2 -5
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +9 -13
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +16 -19
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +19 -21
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -6
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +1 -4
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +1 -4
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +1 -4
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +5 -8
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +3 -6
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +6 -8
- package/dist/utils/normalizePartStatus.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.js +3 -2
- package/dist/utils/normalizePartStatus.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +2 -4
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +1 -4
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +2 -5
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +2 -5
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +3 -6
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +15 -13
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +77 -20
- package/src/adapters/feedback.ts +1 -0
- package/src/adapters/speech.test.ts +94 -0
- package/src/adapters/speech.ts +16 -2
- package/src/adapters/thread-history.ts +16 -5
- package/src/adapters/voice.test.ts +169 -0
- package/src/adapters/voice.ts +25 -4
- package/src/index.ts +14 -2
- package/src/internal.ts +7 -0
- package/src/model-context/frame/host.test.ts +51 -1
- package/src/model-context/frame/host.ts +3 -1
- package/src/model-context/frame/provider.test.ts +106 -20
- package/src/model-context/frame/provider.ts +8 -1
- package/src/model-context/frame/validate.ts +57 -0
- package/src/model-context/interactable-composer-metadata.test.ts +82 -0
- package/src/model-context/interactable-composer-metadata.ts +45 -2
- package/src/react/RuntimeAdapter.test.ts +4 -1
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +711 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +125 -109
- package/src/react/client/Interactables.test.ts +865 -8
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- package/src/react/client/RemoteThreadList.test.ts +5 -6
- package/src/react/client/RemoteThreadList.ts +6 -0
- package/src/react/client/Tools.ts +2 -3
- package/src/react/client/interactable-model-context.test.ts +56 -13
- package/src/react/client/interactable-model-context.ts +48 -23
- package/src/react/index.ts +2 -2
- package/src/react/interactables-legacy/Interactables.test.ts +221 -4
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- package/src/react/model-context/useInteractable.test.tsx +56 -29
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +170 -0
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +43 -28
- package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
- package/src/react/primitives/message/MessageAttachments.tsx +14 -8
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +155 -8
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
- package/src/react/primitives/message/MessageParts.test.tsx +84 -0
- package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
- package/src/react/primitives/message/MessageParts.tsx +29 -8
- package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
- package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
- package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
- package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
- package/src/react/providers/TextMessagePartProvider.tsx +3 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +181 -21
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +62 -17
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +112 -77
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
- package/src/react/runtimes/RemoteThreadResource.ts +5 -2
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
- package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
- package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
- package/src/react/runtimes/assistant-transport/types.ts +9 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +108 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +463 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +595 -227
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +33 -4
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +275 -6
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +873 -0
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-message-converter.test.ts +7 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +84 -3
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
- package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
- package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
- package/src/react/runtimes/useLocalRuntime.ts +8 -5
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
- package/src/react/types/MessagePartComponentTypes.ts +10 -0
- package/src/react/types/scopes/interactables.ts +3 -0
- package/src/runtime/api/attachment-runtime.ts +10 -5
- package/src/runtime/api/bindings.ts +6 -1
- package/src/runtime/api/composer-runtime.ts +29 -6
- package/src/runtime/api/message-part-runtime.test.ts +215 -0
- package/src/runtime/api/message-part-runtime.ts +44 -1
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +25 -7
- package/src/runtime/api/thread-list-item-runtime.ts +5 -5
- package/src/runtime/api/thread-list-runtime.ts +3 -3
- package/src/runtime/api/thread-runtime.test.ts +59 -0
- package/src/runtime/api/thread-runtime.ts +21 -11
- package/src/runtime/base/base-composer-runtime-core.ts +548 -153
- package/src/runtime/base/base-thread-runtime-core.test.ts +1614 -136
- package/src/runtime/base/base-thread-runtime-core.ts +236 -46
- package/src/runtime/base/default-edit-composer-runtime-core.ts +24 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +33 -3
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +24 -1
- package/src/runtime/queue/message-queue.ts +11 -1
- package/src/runtime/utils/attachment-add-operations.ts +45 -2
- package/src/runtime/utils/attachment-send-operations.ts +54 -0
- package/src/runtime/utils/auto-status.test.ts +54 -0
- package/src/runtime/utils/auto-status.ts +3 -10
- package/src/runtime/utils/external-message-conversion.test.ts +91 -0
- package/src/runtime/utils/external-message-conversion.ts +9 -6
- package/src/runtime/utils/message-repository.test.ts +69 -1
- package/src/runtime/utils/message-repository.ts +14 -7
- package/src/runtime/utils/stored-message-parts.ts +216 -0
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +79 -48
- package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
- package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
- package/src/runtime/utils/tool-interactions.test.ts +193 -0
- package/src/runtime/utils/tool-interactions.ts +147 -0
- package/src/runtimes/external-store/external-store-adapter.ts +25 -0
- package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
- package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +114 -32
- package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +1866 -169
- package/src/runtimes/local/local-thread-runtime-core.ts +365 -40
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
- package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
- package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
- package/src/store/clients/external-thread.test.ts +145 -0
- package/src/store/clients/external-thread.ts +669 -144
- package/src/store/clients/model-context-client.test.ts +8 -8
- package/src/store/clients/no-op-composer-client.ts +2 -0
- package/src/store/clients/submission-message.ts +27 -0
- package/src/store/clients/thread-message-client.test.ts +39 -0
- package/src/store/clients/thread-message-client.ts +13 -6
- package/src/store/index.ts +2 -2
- package/src/store/internal.ts +1 -0
- package/src/store/primitive-predicates.test.ts +119 -0
- package/src/store/primitive-predicates.ts +19 -4
- package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
- package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
- package/src/store/runtime-clients/message-runtime-client.ts +5 -0
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +243 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
- package/src/store/scopes/composer.ts +22 -4
- package/src/store/scopes/message.ts +12 -1
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +205 -3
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/attachment-adapters.test.ts +16 -1
- package/src/tests/auiV0Encode.test.ts +412 -1
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +212 -5
- package/src/tests/composer-can-cancel.test.ts +35 -6
- package/src/tests/composer-can-send.test.ts +120 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +149 -2
- package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +810 -28
- package/src/tests/external-store-thread-runtime-core.test.ts +217 -0
- package/src/tests/external-thread-attachments.test.tsx +763 -26
- package/src/tests/external-thread-feedback.test.tsx +20 -7
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/external-thread-parity.test.tsx +1 -1
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/message-queue.test.ts +45 -10
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/tests/thread-switch-events.test.tsx +11 -7
- package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
- package/src/types/message.test.ts +19 -0
- package/src/types/message.ts +65 -10
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -16
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
- package/dist/tests/remote-thread-list-test-helpers.js +0 -59
- package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","names":["ModelContextProvider","ModelContext","Unsubscribe","Tool","notifySubscribers","notifyStateSubscribers","generateId","FrameMessage","FRAME_MESSAGE_CHANNEL","SerializedModelContext","SerializedTool","getDefaultTargetOrigin","window","location","origin","logCancellationFailure","error","console","deserializeTool","serializedTool","parameters","description","disabled","undefined","type","deserializeModelContext","serialized","system","tools","Object","fromEntries","entries","map","name","tool","getAbortReason","signal","AbortSignal","reason","Error","AssistantFrameHost","_context","_subscribers","Set","_pendingRequests","Map","resolve","value","reject","_iframeWindow","Window","_targetOrigin","_disposed","constructor","iframeWindow","targetOrigin","handleMessage","bind","requestContext","addEventListener","event","MessageEvent","source","data","channel","message","updateContext","context","pending","get","id","result","delete","serializedContext","execute","args","abortSignal","callTool","toolName","Promise","sendRequest","T","timeout","timeoutMessage","aborted","timeoutId","ReturnType","setTimeout","onAbort","cancelToolCall","cleanup","clearTimeout","removeEventListener","set","once","postMessage","onError","getModelContext","subscribe","callback","add","dispose","clear","cancellationFailed","cancellationError"],"sources":["../../../src/model-context/frame/host.ts"],"sourcesContent":["import type { ModelContextProvider, ModelContext } from \"../types\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { Tool } from \"assistant-stream\";\nimport { notifySubscribers as notifyStateSubscribers } from \"../../subscribable/subscribable\";\nimport { generateId } from \"../../utils/id\";\nimport {\n type FrameMessage,\n FRAME_MESSAGE_CHANNEL,\n type SerializedModelContext,\n type SerializedTool,\n} from \"./types\";\n\nconst getDefaultTargetOrigin = () => window.location.origin;\n\nconst logCancellationFailure = (error: unknown) => {\n console.error(\n \"[assistant-ui] AssistantFrameHost tool cancellation could not be sent.\",\n error,\n );\n};\n\n/**\n * Deserializes tools from JSON Schema format back to Tool objects\n */\nconst deserializeTool = (serializedTool: SerializedTool): Tool<any, any> =>\n ({\n parameters: serializedTool.parameters,\n ...(serializedTool.description && {\n description: serializedTool.description,\n }),\n ...(serializedTool.disabled !== undefined && {\n disabled: serializedTool.disabled,\n }),\n ...(serializedTool.type && { type: serializedTool.type }),\n }) as Tool<any, any>;\n\n/**\n * Deserializes a ModelContext from transmission format\n */\nconst deserializeModelContext = (\n serialized: SerializedModelContext,\n): ModelContext => ({\n ...(serialized.system !== undefined && { system: serialized.system }),\n ...(serialized.tools && {\n tools: Object.fromEntries(\n Object.entries(serialized.tools).map(([name, tool]) => [\n name,\n deserializeTool(tool),\n ]),\n ),\n }),\n});\n\nconst getAbortReason = (signal: AbortSignal): unknown => {\n if (signal.reason !== undefined) return signal.reason;\n const error = new Error(\"Tool call was aborted\");\n error.name = \"AbortError\";\n return error;\n};\n\nexport class AssistantFrameHost implements ModelContextProvider {\n private _context: ModelContext = {};\n private _subscribers = new Set<() => void>();\n private _pendingRequests = new Map<\n string,\n {\n resolve: (value: any) => void;\n reject: (error: any) => void;\n }\n >();\n private _iframeWindow: Window;\n private _targetOrigin: string;\n private _disposed = false;\n\n constructor(\n iframeWindow: Window,\n targetOrigin: string = getDefaultTargetOrigin(),\n ) {\n this._iframeWindow = iframeWindow;\n this._targetOrigin = targetOrigin;\n\n this.handleMessage = this.handleMessage.bind(this);\n // A posted message cannot be delivered before this constructor returns, so\n // requesting first means a failed request leaves no listener to clean up.\n this.requestContext();\n window.addEventListener(\"message\", this.handleMessage);\n }\n\n private handleMessage(event: MessageEvent) {\n if (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin)\n return;\n if (event.source !== this._iframeWindow) return;\n if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;\n\n const message = event.data.message as FrameMessage;\n\n switch (message.type) {\n case \"model-context-update\": {\n this.updateContext(message.context);\n break;\n }\n\n case \"tool-result\": {\n const pending = this._pendingRequests.get(message.id);\n if (pending) {\n if (typeof message.error === \"string\") {\n pending.reject(new Error(message.error));\n } else {\n pending.resolve(message.result);\n }\n this._pendingRequests.delete(message.id);\n }\n break;\n }\n }\n }\n\n private updateContext(serializedContext: SerializedModelContext) {\n const context = deserializeModelContext(serializedContext);\n this._context = {\n ...context,\n tools:\n context.tools &&\n Object.fromEntries(\n Object.entries(context.tools).map(([name, tool]) => [\n name,\n {\n ...tool,\n execute: (args: any, context: { abortSignal: AbortSignal }) =>\n this.callTool(name, args, context.abortSignal),\n } as Tool<any, any>,\n ]),\n ),\n };\n this.notifySubscribers();\n }\n\n private callTool(\n toolName: string,\n args: any,\n abortSignal: AbortSignal,\n ): Promise<any> {\n return this.sendRequest(\n {\n type: \"tool-call\",\n id: `tool-${generateId()}`,\n toolName,\n args,\n },\n 30000,\n `Tool call \"${toolName}\" timed out`,\n abortSignal,\n );\n }\n\n private sendRequest<T extends FrameMessage & { id: string }>(\n message: T,\n timeout = 30000,\n timeoutMessage = \"Request timed out\",\n abortSignal?: AbortSignal,\n ): Promise<any> {\n if (this._disposed) {\n return Promise.reject(new Error(\"AssistantFrameHost has been disposed\"));\n }\n if (abortSignal?.aborted) {\n return Promise.reject(getAbortReason(abortSignal));\n }\n\n return new Promise((resolve, reject) => {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n const onAbort = () => {\n if (!abortSignal) return;\n const pending = this._pendingRequests.get(message.id);\n if (pending) {\n this.cancelToolCall(message.id);\n pending.reject(getAbortReason(abortSignal));\n this._pendingRequests.delete(message.id);\n }\n };\n const cleanup = () => {\n if (timeoutId !== undefined) clearTimeout(timeoutId);\n abortSignal?.removeEventListener(\"abort\", onAbort);\n };\n\n this._pendingRequests.set(message.id, {\n resolve: (value: any) => {\n cleanup();\n resolve(value);\n },\n reject: (error: any) => {\n cleanup();\n reject(error);\n },\n });\n\n timeoutId = setTimeout(() => {\n const pending = this._pendingRequests.get(message.id);\n if (pending) {\n this.cancelToolCall(message.id);\n pending.reject(new Error(timeoutMessage));\n this._pendingRequests.delete(message.id);\n }\n }, timeout);\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n\n try {\n this._iframeWindow.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message },\n this._targetOrigin,\n );\n } catch (error) {\n const pending = this._pendingRequests.get(message.id);\n this._pendingRequests.delete(message.id);\n pending?.reject(error);\n }\n });\n }\n\n private cancelToolCall(\n id: string,\n onError: (error: unknown) => void = logCancellationFailure,\n ) {\n try {\n this._iframeWindow.postMessage(\n {\n channel: FRAME_MESSAGE_CHANNEL,\n message: { type: \"tool-cancel\", id } satisfies FrameMessage,\n },\n this._targetOrigin,\n );\n } catch (error) {\n onError(error);\n }\n }\n\n private requestContext() {\n this._iframeWindow.postMessage(\n {\n channel: FRAME_MESSAGE_CHANNEL,\n message: {\n type: \"model-context-request\",\n } as FrameMessage,\n },\n this._targetOrigin,\n );\n }\n\n private notifySubscribers() {\n notifyStateSubscribers(this._subscribers);\n }\n\n getModelContext(): ModelContext {\n return this._context;\n }\n\n subscribe(callback: () => void): Unsubscribe {\n this._subscribers.add(callback);\n return () => this._subscribers.delete(callback);\n }\n\n dispose() {\n this._disposed = true;\n window.removeEventListener(\"message\", this.handleMessage);\n this._subscribers.clear();\n const error = new Error(\"AssistantFrameHost has been disposed\");\n let cancellationFailed = false;\n let cancellationError: unknown;\n\n for (const [id, pending] of this._pendingRequests) {\n this._pendingRequests.delete(id);\n this.cancelToolCall(id, (error) => {\n if (!cancellationFailed) {\n cancellationFailed = true;\n cancellationError = error;\n } else {\n logCancellationFailure(error);\n }\n });\n pending.reject(error);\n }\n\n if (cancellationFailed) throw cancellationError;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host.js","names":["ModelContextProvider","ModelContext","Unsubscribe","Tool","notifySubscribers","notifyStateSubscribers","generateId","FrameMessage","FRAME_MESSAGE_CHANNEL","SerializedModelContext","SerializedTool","isFrameMessage","getDefaultTargetOrigin","window","location","origin","logCancellationFailure","error","console","deserializeTool","serializedTool","parameters","description","disabled","undefined","type","deserializeModelContext","serialized","system","tools","Object","fromEntries","entries","map","name","tool","getAbortReason","signal","AbortSignal","reason","Error","AssistantFrameHost","_context","_subscribers","Set","_pendingRequests","Map","resolve","value","reject","_iframeWindow","Window","_targetOrigin","_disposed","constructor","iframeWindow","targetOrigin","handleMessage","bind","requestContext","addEventListener","event","MessageEvent","source","data","channel","message","updateContext","context","pending","get","id","result","delete","serializedContext","execute","args","abortSignal","callTool","toolName","Promise","sendRequest","T","timeout","timeoutMessage","aborted","timeoutId","ReturnType","setTimeout","onAbort","cancelToolCall","cleanup","clearTimeout","removeEventListener","set","once","postMessage","onError","getModelContext","subscribe","callback","add","dispose","clear","cancellationFailed","cancellationError"],"sources":["../../../src/model-context/frame/host.ts"],"sourcesContent":["import type { ModelContextProvider, ModelContext } from \"../types\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { Tool } from \"assistant-stream\";\nimport { notifySubscribers as notifyStateSubscribers } from \"../../subscribable/subscribable\";\nimport { generateId } from \"../../utils/id\";\nimport {\n type FrameMessage,\n FRAME_MESSAGE_CHANNEL,\n type SerializedModelContext,\n type SerializedTool,\n} from \"./types\";\nimport { isFrameMessage } from \"./validate\";\n\nconst getDefaultTargetOrigin = () => window.location.origin;\n\nconst logCancellationFailure = (error: unknown) => {\n console.error(\n \"[assistant-ui] AssistantFrameHost tool cancellation could not be sent.\",\n error,\n );\n};\n\n/**\n * Deserializes tools from JSON Schema format back to Tool objects\n */\nconst deserializeTool = (serializedTool: SerializedTool): Tool<any, any> =>\n ({\n parameters: serializedTool.parameters,\n ...(serializedTool.description && {\n description: serializedTool.description,\n }),\n ...(serializedTool.disabled !== undefined && {\n disabled: serializedTool.disabled,\n }),\n ...(serializedTool.type && { type: serializedTool.type }),\n }) as Tool<any, any>;\n\n/**\n * Deserializes a ModelContext from transmission format\n */\nconst deserializeModelContext = (\n serialized: SerializedModelContext,\n): ModelContext => ({\n ...(serialized.system !== undefined && { system: serialized.system }),\n ...(serialized.tools && {\n tools: Object.fromEntries(\n Object.entries(serialized.tools).map(([name, tool]) => [\n name,\n deserializeTool(tool),\n ]),\n ),\n }),\n});\n\nconst getAbortReason = (signal: AbortSignal): unknown => {\n if (signal.reason !== undefined) return signal.reason;\n const error = new Error(\"Tool call was aborted\");\n error.name = \"AbortError\";\n return error;\n};\n\nexport class AssistantFrameHost implements ModelContextProvider {\n private _context: ModelContext = {};\n private _subscribers = new Set<() => void>();\n private _pendingRequests = new Map<\n string,\n {\n resolve: (value: any) => void;\n reject: (error: any) => void;\n }\n >();\n private _iframeWindow: Window;\n private _targetOrigin: string;\n private _disposed = false;\n\n constructor(\n iframeWindow: Window,\n targetOrigin: string = getDefaultTargetOrigin(),\n ) {\n this._iframeWindow = iframeWindow;\n this._targetOrigin = targetOrigin;\n\n this.handleMessage = this.handleMessage.bind(this);\n // A posted message cannot be delivered before this constructor returns, so\n // requesting first means a failed request leaves no listener to clean up.\n this.requestContext();\n window.addEventListener(\"message\", this.handleMessage);\n }\n\n private handleMessage(event: MessageEvent) {\n if (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin)\n return;\n if (event.source !== this._iframeWindow) return;\n if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;\n\n const message = event.data.message;\n if (!isFrameMessage(message)) return;\n\n switch (message.type) {\n case \"model-context-update\": {\n this.updateContext(message.context);\n break;\n }\n\n case \"tool-result\": {\n const pending = this._pendingRequests.get(message.id);\n if (pending) {\n if (typeof message.error === \"string\") {\n pending.reject(new Error(message.error));\n } else {\n pending.resolve(message.result);\n }\n this._pendingRequests.delete(message.id);\n }\n break;\n }\n }\n }\n\n private updateContext(serializedContext: SerializedModelContext) {\n const context = deserializeModelContext(serializedContext);\n this._context = {\n ...context,\n tools:\n context.tools &&\n Object.fromEntries(\n Object.entries(context.tools).map(([name, tool]) => [\n name,\n {\n ...tool,\n execute: (args: any, context: { abortSignal: AbortSignal }) =>\n this.callTool(name, args, context.abortSignal),\n } as Tool<any, any>,\n ]),\n ),\n };\n this.notifySubscribers();\n }\n\n private callTool(\n toolName: string,\n args: any,\n abortSignal: AbortSignal,\n ): Promise<any> {\n return this.sendRequest(\n {\n type: \"tool-call\",\n id: `tool-${generateId()}`,\n toolName,\n args,\n },\n 30000,\n `Tool call \"${toolName}\" timed out`,\n abortSignal,\n );\n }\n\n private sendRequest<T extends FrameMessage & { id: string }>(\n message: T,\n timeout = 30000,\n timeoutMessage = \"Request timed out\",\n abortSignal?: AbortSignal,\n ): Promise<any> {\n if (this._disposed) {\n return Promise.reject(new Error(\"AssistantFrameHost has been disposed\"));\n }\n if (abortSignal?.aborted) {\n return Promise.reject(getAbortReason(abortSignal));\n }\n\n return new Promise((resolve, reject) => {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n const onAbort = () => {\n if (!abortSignal) return;\n const pending = this._pendingRequests.get(message.id);\n if (pending) {\n this.cancelToolCall(message.id);\n pending.reject(getAbortReason(abortSignal));\n this._pendingRequests.delete(message.id);\n }\n };\n const cleanup = () => {\n if (timeoutId !== undefined) clearTimeout(timeoutId);\n abortSignal?.removeEventListener(\"abort\", onAbort);\n };\n\n this._pendingRequests.set(message.id, {\n resolve: (value: any) => {\n cleanup();\n resolve(value);\n },\n reject: (error: any) => {\n cleanup();\n reject(error);\n },\n });\n\n timeoutId = setTimeout(() => {\n const pending = this._pendingRequests.get(message.id);\n if (pending) {\n this.cancelToolCall(message.id);\n pending.reject(new Error(timeoutMessage));\n this._pendingRequests.delete(message.id);\n }\n }, timeout);\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n\n try {\n this._iframeWindow.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message },\n this._targetOrigin,\n );\n } catch (error) {\n const pending = this._pendingRequests.get(message.id);\n this._pendingRequests.delete(message.id);\n pending?.reject(error);\n }\n });\n }\n\n private cancelToolCall(\n id: string,\n onError: (error: unknown) => void = logCancellationFailure,\n ) {\n try {\n this._iframeWindow.postMessage(\n {\n channel: FRAME_MESSAGE_CHANNEL,\n message: { type: \"tool-cancel\", id } satisfies FrameMessage,\n },\n this._targetOrigin,\n );\n } catch (error) {\n onError(error);\n }\n }\n\n private requestContext() {\n this._iframeWindow.postMessage(\n {\n channel: FRAME_MESSAGE_CHANNEL,\n message: {\n type: \"model-context-request\",\n } as FrameMessage,\n },\n this._targetOrigin,\n );\n }\n\n private notifySubscribers() {\n notifyStateSubscribers(this._subscribers);\n }\n\n getModelContext(): ModelContext {\n return this._context;\n }\n\n subscribe(callback: () => void): Unsubscribe {\n this._subscribers.add(callback);\n return () => this._subscribers.delete(callback);\n }\n\n dispose() {\n this._disposed = true;\n window.removeEventListener(\"message\", this.handleMessage);\n this._subscribers.clear();\n const error = new Error(\"AssistantFrameHost has been disposed\");\n let cancellationFailed = false;\n let cancellationError: unknown;\n\n for (const [id, pending] of this._pendingRequests) {\n this._pendingRequests.delete(id);\n this.cancelToolCall(id, (error) => {\n if (!cancellationFailed) {\n cancellationFailed = true;\n cancellationError = error;\n } else {\n logCancellationFailure(error);\n }\n });\n pending.reject(error);\n }\n\n if (cancellationFailed) throw cancellationError;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
import type { ModelContextProvider } from "../types.js";
|
|
2
|
+
import type { Unsubscribe } from "../../types/unsubscribe.js";
|
|
3
|
+
export declare class AssistantFrameProvider {
|
|
4
|
+
private static _instance;
|
|
5
|
+
private _providers;
|
|
6
|
+
private _providerUnsubscribes;
|
|
7
|
+
private _activeToolCalls;
|
|
8
|
+
private _targetOrigin;
|
|
9
|
+
private _strictRegistrations;
|
|
10
|
+
private _wildcardRegistrations;
|
|
11
|
+
private _startupTimer;
|
|
12
|
+
private _disposed;
|
|
13
|
+
private constructor();
|
|
14
|
+
private static getInstance;
|
|
15
|
+
private reconcileTargetOrigin;
|
|
16
|
+
private handleMessage;
|
|
17
|
+
private handleToolCall;
|
|
18
|
+
private cancelToolCall;
|
|
19
|
+
private cancelToolCallsForProvider;
|
|
20
|
+
private sendMessage;
|
|
21
|
+
private getProviders;
|
|
22
|
+
private getTool;
|
|
23
|
+
private getModelContext;
|
|
24
|
+
private broadcastUpdate;
|
|
25
|
+
private postModelContext;
|
|
26
|
+
private removeProvider;
|
|
27
|
+
static addModelContextProvider(provider: ModelContextProvider, targetOrigin?: string): Unsubscribe;
|
|
28
|
+
static dispose(): void;
|
|
29
29
|
}
|
|
30
|
-
//#endregion
|
|
31
|
-
export { AssistantFrameProvider };
|
|
32
30
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/model-context/frame/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAgB,oBAAiB;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,mCAAgC;AAiC3D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAuC;IAE/D,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,qBAAqB,CAA8C;IAC3E,OAAO,CAAC,gBAAgB,CAOpB;IACJ,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,aAAa,CAA4C;IACjE,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAWP,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,aAAa;YAgCP,cAAc;IA8D5B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,0BAA0B;IA+BlC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAiCtB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,oBAAoB,EAC9B,YAAY,CAAC,EAAE,MAAM,GACpB,WAAW;IA+Ed,MAAM,CAAC,OAAO;CA+Cf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FRAME_MESSAGE_CHANNEL } from "./types.js";
|
|
2
|
+
import { isFrameMessage } from "./validate.js";
|
|
2
3
|
import { toJSONSchema } from "assistant-stream";
|
|
3
4
|
//#region src/model-context/frame/provider.ts
|
|
4
5
|
const serializeTool = (tool) => ({
|
|
@@ -54,6 +55,7 @@ var AssistantFrameProvider = class AssistantFrameProvider {
|
|
|
54
55
|
if (event.source !== window.parent) return;
|
|
55
56
|
if (event.data?.channel !== "assistant-ui-frame") return;
|
|
56
57
|
const message = event.data.message;
|
|
58
|
+
if (!isFrameMessage(message)) return;
|
|
57
59
|
switch (message.type) {
|
|
58
60
|
case "model-context-request":
|
|
59
61
|
this.sendMessage(event, {
|
|
@@ -172,6 +174,9 @@ var AssistantFrameProvider = class AssistantFrameProvider {
|
|
|
172
174
|
}
|
|
173
175
|
broadcastUpdate() {
|
|
174
176
|
if (this._disposed) return;
|
|
177
|
+
this.postModelContext();
|
|
178
|
+
}
|
|
179
|
+
postModelContext() {
|
|
175
180
|
if (window.parent && window.parent !== window) {
|
|
176
181
|
const updateMessage = {
|
|
177
182
|
type: "model-context-update",
|
|
@@ -281,6 +286,7 @@ var AssistantFrameProvider = class AssistantFrameProvider {
|
|
|
281
286
|
});
|
|
282
287
|
instance._providerUnsubscribes.clear();
|
|
283
288
|
instance._providers.clear();
|
|
289
|
+
runCleanup(() => instance.postModelContext());
|
|
284
290
|
instance._activeToolCalls.forEach(({ abortController, event }, id) => {
|
|
285
291
|
runCleanup(() => {
|
|
286
292
|
abortController.abort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","names":["ModelContextProvider","ModelContext","Unsubscribe","Tool","toJSONSchema","FrameMessage","FRAME_MESSAGE_CHANNEL","SerializedModelContext","SerializedTool","serializeTool","tool","description","parameters","undefined","disabled","type","serializeModelContext","context","system","tools","Object","fromEntries","entries","map","name","getDefaultTargetOrigin","window","location","origin","AssistantFrameProvider","_instance","_providers","Map","_providerUnsubscribes","_activeToolCalls","abortController","AbortController","event","MessageEvent","provider","_targetOrigin","_strictRegistrations","_wildcardRegistrations","_startupTimer","ReturnType","setTimeout","_disposed","constructor","targetOrigin","handleMessage","bind","addEventListener","broadcastUpdate","getInstance","reconcileTargetOrigin","size","Error","source","parent","data","channel","message","sendMessage","getModelContext","handleToolCall","catch","error","console","cancelToolCall","id","Extract","resolvedTool","getTool","toolName","get","abort","activeCall","set","result","execute","args","toolCallId","abortSignal","signal","human","e","String","delete","sendError","cancelToolCallsForProvider","matchingCalls","Array","from","filter","sendFailed","postMessage","getProviders","Set","values","resolved","contexts","reduce","merged","updateMessage","removeProvider","unsubscribe","removedProvider","includes","addModelContextProvider","instance","Symbol","subscribe","cancelError","unsubscribeError","broadcastError","released","cleanupFailed","cleanupError","runCleanup","cleanup","dispose","clearTimeout","removeEventListener","forEach","clear"],"sources":["../../../src/model-context/frame/provider.ts"],"sourcesContent":["import type { ModelContextProvider, ModelContext } from \"../types\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport { type Tool, toJSONSchema } from \"assistant-stream\";\nimport {\n type FrameMessage,\n FRAME_MESSAGE_CHANNEL,\n type SerializedModelContext,\n type SerializedTool,\n} from \"./types\";\n\nconst serializeTool = (tool: Tool<any, any>): SerializedTool => ({\n ...(tool.description && { description: tool.description }),\n parameters: tool.parameters ? toJSONSchema(tool.parameters) : undefined,\n ...(tool.disabled !== undefined && { disabled: tool.disabled }),\n ...(tool.type && { type: tool.type }),\n});\n\nconst serializeModelContext = (\n context: ModelContext,\n): SerializedModelContext => ({\n ...(context.system !== undefined && { system: context.system }),\n ...(context.tools && {\n tools: Object.fromEntries(\n Object.entries(context.tools).map(([name, tool]) => [\n name,\n serializeTool(tool),\n ]),\n ),\n }),\n});\n\nconst getDefaultTargetOrigin = () => window.location.origin;\n\nexport class AssistantFrameProvider {\n private static _instance: AssistantFrameProvider | null = null;\n\n private _providers = new Map<symbol, ModelContextProvider>();\n private _providerUnsubscribes = new Map<symbol, Unsubscribe | undefined>();\n private _activeToolCalls = new Map<\n string,\n {\n abortController: AbortController;\n event: MessageEvent;\n provider: ModelContextProvider | undefined;\n }\n >();\n private _targetOrigin: string;\n private _strictRegistrations = 0;\n private _wildcardRegistrations = 0;\n private _startupTimer: ReturnType<typeof setTimeout> | undefined;\n private _disposed = false;\n\n private constructor(targetOrigin: string = getDefaultTargetOrigin()) {\n this._targetOrigin = targetOrigin;\n this.handleMessage = this.handleMessage.bind(this);\n window.addEventListener(\"message\", this.handleMessage);\n\n this._startupTimer = setTimeout(() => {\n this._startupTimer = undefined;\n this.broadcastUpdate();\n }, 0);\n }\n\n private static getInstance(targetOrigin?: string): AssistantFrameProvider {\n if (!AssistantFrameProvider._instance) {\n AssistantFrameProvider._instance = new AssistantFrameProvider(\n targetOrigin,\n );\n } else {\n AssistantFrameProvider._instance.reconcileTargetOrigin(targetOrigin);\n }\n return AssistantFrameProvider._instance;\n }\n\n private reconcileTargetOrigin(\n targetOrigin: string = getDefaultTargetOrigin(),\n ) {\n if (targetOrigin === this._targetOrigin) return;\n\n if (this._providers.size === 0) {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n if (targetOrigin === \"*\") return;\n\n if (this._targetOrigin === \"*\") {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n throw new Error(\n `AssistantFrameProvider cannot register conflicting target origins: \"${this._targetOrigin}\" and \"${targetOrigin}\"`,\n );\n }\n\n private handleMessage(event: MessageEvent) {\n if (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin)\n return;\n if (event.source !== window.parent) return;\n if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;\n\n const message = event.data.message as FrameMessage;\n\n switch (message.type) {\n case \"model-context-request\":\n this.sendMessage(event, {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n });\n break;\n\n case \"tool-call\":\n void this.handleToolCall(message, event).catch((error: unknown) => {\n console.error(\n \"[assistant-ui] AssistantFrame tool call failed.\",\n error,\n );\n });\n break;\n\n case \"tool-cancel\":\n this.cancelToolCall(message.id);\n break;\n }\n }\n\n private async handleToolCall(\n message: Extract<FrameMessage, { type: \"tool-call\" }>,\n event: MessageEvent,\n ) {\n const resolvedTool = this.getTool(message.toolName);\n const tool = resolvedTool?.tool;\n const abortController = new AbortController();\n this._activeToolCalls.get(message.id)?.abortController.abort();\n const activeCall = {\n abortController,\n event,\n provider: resolvedTool?.provider,\n };\n this._activeToolCalls.set(message.id, activeCall);\n\n let result: any;\n let error: string | undefined;\n\n if (!tool) {\n error = `Tool \"${message.toolName}\" not found`;\n } else {\n try {\n result = tool.execute\n ? await tool.execute(message.args, {\n toolCallId: message.id,\n abortSignal: abortController.signal,\n human: async () => {\n throw new Error(\n \"Tool human input is not supported in frame context\",\n );\n },\n })\n : undefined;\n } catch (e) {\n error = e instanceof Error ? e.message : String(e);\n }\n }\n\n if (this._activeToolCalls.get(message.id) !== activeCall) return;\n this._activeToolCalls.delete(message.id);\n\n try {\n this.sendMessage(event, {\n type: \"tool-result\",\n id: message.id,\n ...(error !== undefined ? { error } : { result }),\n });\n } catch (sendError) {\n if (error !== undefined) throw sendError;\n\n console.error(\n \"[assistant-ui] AssistantFrame tool result could not be sent.\",\n sendError,\n );\n this.sendMessage(event, {\n type: \"tool-result\",\n id: message.id,\n error: \"Tool result could not be sent across the frame boundary\",\n });\n }\n }\n\n private cancelToolCall(id: string) {\n const activeCall = this._activeToolCalls.get(id);\n if (!activeCall) return;\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n private cancelToolCallsForProvider(provider: ModelContextProvider) {\n const matchingCalls = Array.from(this._activeToolCalls).filter(\n ([, activeCall]) => activeCall.provider === provider,\n );\n for (const [id, activeCall] of matchingCalls) {\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n let sendFailed = false;\n let sendError: unknown;\n for (const [id, activeCall] of matchingCalls) {\n try {\n this.sendMessage(activeCall.event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrame tool provider has been removed\",\n });\n } catch (error) {\n if (sendFailed) {\n console.error(error);\n } else {\n sendFailed = true;\n sendError = error;\n }\n }\n }\n\n if (sendFailed) throw sendError;\n }\n\n private sendMessage(event: MessageEvent, message: FrameMessage) {\n event.source?.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message },\n { targetOrigin: event.origin },\n );\n }\n\n private getProviders() {\n return Array.from(new Set(this._providers.values()));\n }\n\n private getTool(toolName: string) {\n let resolved:\n | { provider: ModelContextProvider; tool: Tool<any, any> }\n | undefined;\n\n for (const provider of this.getProviders()) {\n const tool = provider.getModelContext().tools?.[toolName];\n if (tool) resolved = { provider, tool };\n }\n\n return resolved;\n }\n\n private getModelContext(): ModelContext {\n const contexts = this.getProviders().map((provider) =>\n provider.getModelContext(),\n );\n\n return contexts.reduce(\n (merged, context) => ({\n system: context.system\n ? merged.system\n ? `${merged.system}\\n\\n${context.system}`\n : context.system\n : merged.system,\n tools: { ...(merged.tools || {}), ...(context.tools || {}) },\n }),\n {} as ModelContext,\n );\n }\n\n private broadcastUpdate() {\n if (this._disposed) return;\n if (window.parent && window.parent !== window) {\n const updateMessage: FrameMessage = {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n };\n\n window.parent.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message: updateMessage },\n this._targetOrigin,\n );\n }\n }\n\n private removeProvider(\n id: symbol,\n origin: string,\n ): {\n unsubscribe: Unsubscribe | undefined;\n removedProvider: ModelContextProvider | undefined;\n } {\n const provider = this._providers.get(id);\n this._providers.delete(id);\n const unsubscribe = this._providerUnsubscribes.get(id);\n this._providerUnsubscribes.delete(id);\n if (origin === \"*\") {\n this._wildcardRegistrations -= 1;\n if (\n this._wildcardRegistrations === 0 &&\n this._strictRegistrations === 0\n ) {\n this._targetOrigin = getDefaultTargetOrigin();\n }\n } else {\n this._strictRegistrations -= 1;\n if (this._strictRegistrations === 0) {\n this._targetOrigin =\n this._wildcardRegistrations > 0 ? \"*\" : getDefaultTargetOrigin();\n }\n }\n const removedProvider =\n provider && !this.getProviders().includes(provider)\n ? provider\n : undefined;\n return { unsubscribe, removedProvider };\n }\n\n static addModelContextProvider(\n provider: ModelContextProvider,\n targetOrigin?: string,\n ): Unsubscribe {\n const origin = targetOrigin ?? getDefaultTargetOrigin();\n const instance = AssistantFrameProvider.getInstance(origin);\n const id = Symbol();\n instance._providers.set(id, provider);\n if (origin === \"*\") {\n instance._wildcardRegistrations += 1;\n } else {\n instance._strictRegistrations += 1;\n }\n\n try {\n const unsubscribe = provider.subscribe?.(() =>\n instance.broadcastUpdate(),\n );\n if (unsubscribe) {\n instance._providerUnsubscribes.set(id, unsubscribe);\n }\n\n instance.broadcastUpdate();\n } catch (error) {\n const { unsubscribe, removedProvider } = instance.removeProvider(\n id,\n origin,\n );\n // Rollback failures must not replace the registration error.\n try {\n if (removedProvider) {\n instance.cancelToolCallsForProvider(removedProvider);\n }\n } catch (cancelError) {\n console.error(cancelError);\n }\n try {\n unsubscribe?.();\n } catch (unsubscribeError) {\n console.error(unsubscribeError);\n }\n try {\n instance.broadcastUpdate();\n } catch (broadcastError) {\n console.error(broadcastError);\n }\n throw error;\n }\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const { unsubscribe, removedProvider } = instance.removeProvider(\n id,\n origin,\n );\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n if (removedProvider) {\n runCleanup(() => instance.cancelToolCallsForProvider(removedProvider));\n }\n if (unsubscribe) runCleanup(unsubscribe);\n runCleanup(() => instance.broadcastUpdate());\n\n if (cleanupFailed) throw cleanupError;\n };\n }\n\n static dispose() {\n if (AssistantFrameProvider._instance) {\n const instance = AssistantFrameProvider._instance;\n instance._disposed = true;\n if (instance._startupTimer !== undefined) {\n clearTimeout(instance._startupTimer);\n instance._startupTimer = undefined;\n }\n window.removeEventListener(\"message\", instance.handleMessage);\n\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n instance._providerUnsubscribes.forEach((unsubscribe) => {\n if (unsubscribe) runCleanup(unsubscribe);\n });\n instance._providerUnsubscribes.clear();\n instance._providers.clear();\n instance._activeToolCalls.forEach(({ abortController, event }, id) => {\n runCleanup(() => {\n abortController.abort();\n instance.sendMessage(event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrameProvider has been disposed\",\n });\n });\n });\n instance._activeToolCalls.clear();\n\n AssistantFrameProvider._instance = null;\n if (cleanupFailed) throw cleanupError;\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider.js","names":["ModelContextProvider","ModelContext","Unsubscribe","Tool","toJSONSchema","FrameMessage","FRAME_MESSAGE_CHANNEL","SerializedModelContext","SerializedTool","isFrameMessage","serializeTool","tool","description","parameters","undefined","disabled","type","serializeModelContext","context","system","tools","Object","fromEntries","entries","map","name","getDefaultTargetOrigin","window","location","origin","AssistantFrameProvider","_instance","_providers","Map","_providerUnsubscribes","_activeToolCalls","abortController","AbortController","event","MessageEvent","provider","_targetOrigin","_strictRegistrations","_wildcardRegistrations","_startupTimer","ReturnType","setTimeout","_disposed","constructor","targetOrigin","handleMessage","bind","addEventListener","broadcastUpdate","getInstance","reconcileTargetOrigin","size","Error","source","parent","data","channel","message","sendMessage","getModelContext","handleToolCall","catch","error","console","cancelToolCall","id","Extract","resolvedTool","getTool","toolName","get","abort","activeCall","set","result","execute","args","toolCallId","abortSignal","signal","human","e","String","delete","sendError","cancelToolCallsForProvider","matchingCalls","Array","from","filter","sendFailed","postMessage","getProviders","Set","values","resolved","contexts","reduce","merged","postModelContext","updateMessage","removeProvider","unsubscribe","removedProvider","includes","addModelContextProvider","instance","Symbol","subscribe","cancelError","unsubscribeError","broadcastError","released","cleanupFailed","cleanupError","runCleanup","cleanup","dispose","clearTimeout","removeEventListener","forEach","clear"],"sources":["../../../src/model-context/frame/provider.ts"],"sourcesContent":["import type { ModelContextProvider, ModelContext } from \"../types\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport { type Tool, toJSONSchema } from \"assistant-stream\";\nimport {\n type FrameMessage,\n FRAME_MESSAGE_CHANNEL,\n type SerializedModelContext,\n type SerializedTool,\n} from \"./types\";\nimport { isFrameMessage } from \"./validate\";\n\nconst serializeTool = (tool: Tool<any, any>): SerializedTool => ({\n ...(tool.description && { description: tool.description }),\n parameters: tool.parameters ? toJSONSchema(tool.parameters) : undefined,\n ...(tool.disabled !== undefined && { disabled: tool.disabled }),\n ...(tool.type && { type: tool.type }),\n});\n\nconst serializeModelContext = (\n context: ModelContext,\n): SerializedModelContext => ({\n ...(context.system !== undefined && { system: context.system }),\n ...(context.tools && {\n tools: Object.fromEntries(\n Object.entries(context.tools).map(([name, tool]) => [\n name,\n serializeTool(tool),\n ]),\n ),\n }),\n});\n\nconst getDefaultTargetOrigin = () => window.location.origin;\n\nexport class AssistantFrameProvider {\n private static _instance: AssistantFrameProvider | null = null;\n\n private _providers = new Map<symbol, ModelContextProvider>();\n private _providerUnsubscribes = new Map<symbol, Unsubscribe | undefined>();\n private _activeToolCalls = new Map<\n string,\n {\n abortController: AbortController;\n event: MessageEvent;\n provider: ModelContextProvider | undefined;\n }\n >();\n private _targetOrigin: string;\n private _strictRegistrations = 0;\n private _wildcardRegistrations = 0;\n private _startupTimer: ReturnType<typeof setTimeout> | undefined;\n private _disposed = false;\n\n private constructor(targetOrigin: string = getDefaultTargetOrigin()) {\n this._targetOrigin = targetOrigin;\n this.handleMessage = this.handleMessage.bind(this);\n window.addEventListener(\"message\", this.handleMessage);\n\n this._startupTimer = setTimeout(() => {\n this._startupTimer = undefined;\n this.broadcastUpdate();\n }, 0);\n }\n\n private static getInstance(targetOrigin?: string): AssistantFrameProvider {\n if (!AssistantFrameProvider._instance) {\n AssistantFrameProvider._instance = new AssistantFrameProvider(\n targetOrigin,\n );\n } else {\n AssistantFrameProvider._instance.reconcileTargetOrigin(targetOrigin);\n }\n return AssistantFrameProvider._instance;\n }\n\n private reconcileTargetOrigin(\n targetOrigin: string = getDefaultTargetOrigin(),\n ) {\n if (targetOrigin === this._targetOrigin) return;\n\n if (this._providers.size === 0) {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n if (targetOrigin === \"*\") return;\n\n if (this._targetOrigin === \"*\") {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n throw new Error(\n `AssistantFrameProvider cannot register conflicting target origins: \"${this._targetOrigin}\" and \"${targetOrigin}\"`,\n );\n }\n\n private handleMessage(event: MessageEvent) {\n if (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin)\n return;\n if (event.source !== window.parent) return;\n if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;\n\n const message = event.data.message;\n if (!isFrameMessage(message)) return;\n\n switch (message.type) {\n case \"model-context-request\":\n this.sendMessage(event, {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n });\n break;\n\n case \"tool-call\":\n void this.handleToolCall(message, event).catch((error: unknown) => {\n console.error(\n \"[assistant-ui] AssistantFrame tool call failed.\",\n error,\n );\n });\n break;\n\n case \"tool-cancel\":\n this.cancelToolCall(message.id);\n break;\n }\n }\n\n private async handleToolCall(\n message: Extract<FrameMessage, { type: \"tool-call\" }>,\n event: MessageEvent,\n ) {\n const resolvedTool = this.getTool(message.toolName);\n const tool = resolvedTool?.tool;\n const abortController = new AbortController();\n this._activeToolCalls.get(message.id)?.abortController.abort();\n const activeCall = {\n abortController,\n event,\n provider: resolvedTool?.provider,\n };\n this._activeToolCalls.set(message.id, activeCall);\n\n let result: any;\n let error: string | undefined;\n\n if (!tool) {\n error = `Tool \"${message.toolName}\" not found`;\n } else {\n try {\n result = tool.execute\n ? await tool.execute(message.args, {\n toolCallId: message.id,\n abortSignal: abortController.signal,\n human: async () => {\n throw new Error(\n \"Tool human input is not supported in frame context\",\n );\n },\n })\n : undefined;\n } catch (e) {\n error = e instanceof Error ? e.message : String(e);\n }\n }\n\n if (this._activeToolCalls.get(message.id) !== activeCall) return;\n this._activeToolCalls.delete(message.id);\n\n try {\n this.sendMessage(event, {\n type: \"tool-result\",\n id: message.id,\n ...(error !== undefined ? { error } : { result }),\n });\n } catch (sendError) {\n if (error !== undefined) throw sendError;\n\n console.error(\n \"[assistant-ui] AssistantFrame tool result could not be sent.\",\n sendError,\n );\n this.sendMessage(event, {\n type: \"tool-result\",\n id: message.id,\n error: \"Tool result could not be sent across the frame boundary\",\n });\n }\n }\n\n private cancelToolCall(id: string) {\n const activeCall = this._activeToolCalls.get(id);\n if (!activeCall) return;\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n private cancelToolCallsForProvider(provider: ModelContextProvider) {\n const matchingCalls = Array.from(this._activeToolCalls).filter(\n ([, activeCall]) => activeCall.provider === provider,\n );\n for (const [id, activeCall] of matchingCalls) {\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n let sendFailed = false;\n let sendError: unknown;\n for (const [id, activeCall] of matchingCalls) {\n try {\n this.sendMessage(activeCall.event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrame tool provider has been removed\",\n });\n } catch (error) {\n if (sendFailed) {\n console.error(error);\n } else {\n sendFailed = true;\n sendError = error;\n }\n }\n }\n\n if (sendFailed) throw sendError;\n }\n\n private sendMessage(event: MessageEvent, message: FrameMessage) {\n event.source?.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message },\n { targetOrigin: event.origin },\n );\n }\n\n private getProviders() {\n return Array.from(new Set(this._providers.values()));\n }\n\n private getTool(toolName: string) {\n let resolved:\n | { provider: ModelContextProvider; tool: Tool<any, any> }\n | undefined;\n\n for (const provider of this.getProviders()) {\n const tool = provider.getModelContext().tools?.[toolName];\n if (tool) resolved = { provider, tool };\n }\n\n return resolved;\n }\n\n private getModelContext(): ModelContext {\n const contexts = this.getProviders().map((provider) =>\n provider.getModelContext(),\n );\n\n return contexts.reduce(\n (merged, context) => ({\n system: context.system\n ? merged.system\n ? `${merged.system}\\n\\n${context.system}`\n : context.system\n : merged.system,\n tools: { ...(merged.tools || {}), ...(context.tools || {}) },\n }),\n {} as ModelContext,\n );\n }\n\n private broadcastUpdate() {\n if (this._disposed) return;\n this.postModelContext();\n }\n\n private postModelContext() {\n if (window.parent && window.parent !== window) {\n const updateMessage: FrameMessage = {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n };\n\n window.parent.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message: updateMessage },\n this._targetOrigin,\n );\n }\n }\n\n private removeProvider(\n id: symbol,\n origin: string,\n ): {\n unsubscribe: Unsubscribe | undefined;\n removedProvider: ModelContextProvider | undefined;\n } {\n const provider = this._providers.get(id);\n this._providers.delete(id);\n const unsubscribe = this._providerUnsubscribes.get(id);\n this._providerUnsubscribes.delete(id);\n if (origin === \"*\") {\n this._wildcardRegistrations -= 1;\n if (\n this._wildcardRegistrations === 0 &&\n this._strictRegistrations === 0\n ) {\n this._targetOrigin = getDefaultTargetOrigin();\n }\n } else {\n this._strictRegistrations -= 1;\n if (this._strictRegistrations === 0) {\n this._targetOrigin =\n this._wildcardRegistrations > 0 ? \"*\" : getDefaultTargetOrigin();\n }\n }\n const removedProvider =\n provider && !this.getProviders().includes(provider)\n ? provider\n : undefined;\n return { unsubscribe, removedProvider };\n }\n\n static addModelContextProvider(\n provider: ModelContextProvider,\n targetOrigin?: string,\n ): Unsubscribe {\n const origin = targetOrigin ?? getDefaultTargetOrigin();\n const instance = AssistantFrameProvider.getInstance(origin);\n const id = Symbol();\n instance._providers.set(id, provider);\n if (origin === \"*\") {\n instance._wildcardRegistrations += 1;\n } else {\n instance._strictRegistrations += 1;\n }\n\n try {\n const unsubscribe = provider.subscribe?.(() =>\n instance.broadcastUpdate(),\n );\n if (unsubscribe) {\n instance._providerUnsubscribes.set(id, unsubscribe);\n }\n\n instance.broadcastUpdate();\n } catch (error) {\n const { unsubscribe, removedProvider } = instance.removeProvider(\n id,\n origin,\n );\n // Rollback failures must not replace the registration error.\n try {\n if (removedProvider) {\n instance.cancelToolCallsForProvider(removedProvider);\n }\n } catch (cancelError) {\n console.error(cancelError);\n }\n try {\n unsubscribe?.();\n } catch (unsubscribeError) {\n console.error(unsubscribeError);\n }\n try {\n instance.broadcastUpdate();\n } catch (broadcastError) {\n console.error(broadcastError);\n }\n throw error;\n }\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const { unsubscribe, removedProvider } = instance.removeProvider(\n id,\n origin,\n );\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n if (removedProvider) {\n runCleanup(() => instance.cancelToolCallsForProvider(removedProvider));\n }\n if (unsubscribe) runCleanup(unsubscribe);\n runCleanup(() => instance.broadcastUpdate());\n\n if (cleanupFailed) throw cleanupError;\n };\n }\n\n static dispose() {\n if (AssistantFrameProvider._instance) {\n const instance = AssistantFrameProvider._instance;\n instance._disposed = true;\n if (instance._startupTimer !== undefined) {\n clearTimeout(instance._startupTimer);\n instance._startupTimer = undefined;\n }\n window.removeEventListener(\"message\", instance.handleMessage);\n\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n instance._providerUnsubscribes.forEach((unsubscribe) => {\n if (unsubscribe) runCleanup(unsubscribe);\n });\n instance._providerUnsubscribes.clear();\n instance._providers.clear();\n runCleanup(() => instance.postModelContext());\n instance._activeToolCalls.forEach(({ abortController, event }, id) => {\n runCleanup(() => {\n abortController.abort();\n instance.sendMessage(event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrameProvider has been disposed\",\n });\n });\n });\n instance._activeToolCalls.clear();\n\n AssistantFrameProvider._instance = null;\n if (cleanupFailed) throw cleanupError;\n }\n }\n}\n"],"mappings":";;;;AAWA,MAAMU,iBAAiBC,UAA0C;CAC/D,GAAIA,KAAKC,eAAe,EAAEA,aAAaD,KAAKC,YAAY;CACxDC,YAAYF,KAAKE,aAAaT,aAAaO,KAAKE,UAAU,IAAIC,KAAAA;CAC9D,GAAIH,KAAKI,aAAaD,KAAAA,KAAa,EAAEC,UAAUJ,KAAKI,SAAS;CAC7D,GAAIJ,KAAKK,QAAQ,EAAEA,MAAML,KAAKK,KAAK;AACrC;AAEA,MAAMC,yBACJC,aAC4B;CAC5B,GAAIA,QAAQC,WAAWL,KAAAA,KAAa,EAAEK,QAAQD,QAAQC,OAAO;CAC7D,GAAID,QAAQE,SAAS,EACnBA,OAAOC,OAAOC,YACZD,OAAOE,QAAQL,QAAQE,KAAK,CAAC,CAACI,KAAK,CAACC,MAAMd,UAAU,CAClDc,MACAf,cAAcC,IAAI,CAAC,CACpB,CACH,EACF;AACF;AAEA,MAAMe,+BAA+BC,OAAOC,SAASC;AAErD,IAAaC,yBAAb,MAAaA,uBAAuB;CAClC,OAAeC,YAA2C;CAE1D,6BAAqB,IAAIE,IAAkC;CAC3D,wCAAgC,IAAIA,IAAqC;CACzE,mCAA2B,IAAIA,IAO7B;CACF;CACA,uBAA+B;CAC/B,yBAAiC;CACjC;CACA,YAAoB;CAEpB,YAAoBgB,eAAuBvB,uBAAuB,GAAG;EACnE,KAAKe,gBAAgBQ;EACrB,KAAKC,gBAAgB,KAAKA,cAAcC,KAAK,IAAI;EACjDxB,OAAOyB,iBAAiB,WAAW,KAAKF,aAAa;EAErD,KAAKN,gBAAgBE,iBAAiB;GACpC,KAAKF,gBAAgB9B,KAAAA;GACrB,KAAKuC,gBAAgB;EACvB,GAAG,CAAC;CACN;CAEA,OAAeC,YAAYL,cAA+C;EACxE,IAAI,CAACnB,uBAAuBC,WAC1BD,uBAAuBC,YAAY,IAAID,uBACrCmB,YACF;OAEAnB,uBAAuBC,UAAUwB,sBAAsBN,YAAY;EAErE,OAAOnB,uBAAuBC;CAChC;CAEA,sBACEkB,eAAuBvB,uBAAuB,GAC9C;EACA,IAAIuB,iBAAiB,KAAKR,eAAe;EAEzC,IAAI,KAAKT,WAAWwB,SAAS,GAAG;GAC9B,KAAKf,gBAAgBQ;GACrB;EACF;EAEA,IAAIA,iBAAiB,KAAK;EAE1B,IAAI,KAAKR,kBAAkB,KAAK;GAC9B,KAAKA,gBAAgBQ;GACrB;EACF;EAEA,MAAM,IAAIQ,MACR,uEAAuE,KAAKhB,cAAa,SAAUQ,aAAY,EACjH;CACF;CAEA,cAAsBX,OAAqB;EACzC,IAAI,KAAKG,kBAAkB,OAAOH,MAAMT,WAAW,KAAKY,eACtD;EACF,IAAIH,MAAMoB,WAAW/B,OAAOgC,QAAQ;EACpC,IAAIrB,MAAMsB,MAAMC,YAAAA,sBAAmC;EAEnD,MAAMC,UAAUxB,MAAMsB,KAAKE;EAC3B,IAAI,CAACrD,eAAeqD,OAAO,GAAG;EAE9B,QAAQA,QAAQ9C,MAAhB;GACE,KAAK;IACH,KAAK+C,YAAYzB,OAAO;KACtBtB,MAAM;KACNE,SAASD,sBAAsB,KAAK+C,gBAAgB,CAAC;IACvD,CAAC;IACD;GAEF,KAAK;IACH,KAAUC,eAAeH,SAASxB,KAAK,CAAC,CAAC4B,OAAOC,UAAmB;KACjEC,QAAQD,MACN,mDACAA,KACF;IACF,CAAC;IACD;GAEF,KAAK,eACH,KAAKE,eAAeP,QAAQQ,EAAE;EAElC;CACF;CAEA,MAAcL,eACZH,SACAxB,OACA;EACA,MAAMkC,eAAe,KAAKC,QAAQX,QAAQY,QAAQ;EAClD,MAAM/D,OAAO6D,cAAc7D;EAC3B,MAAMyB,kBAAkB,IAAIC,gBAAgB;EAC5C,KAAKF,iBAAiBwC,IAAIb,QAAQQ,EAAE,CAAC,EAAElC,gBAAgBwC,MAAM;EAC7D,MAAMC,aAAa;GACjBzC;GACAE;GACAE,UAAUgC,cAAchC;EAC1B;EACA,KAAKL,iBAAiB2C,IAAIhB,QAAQQ,IAAIO,UAAU;EAEhD,IAAIE;EACJ,IAAIZ;EAEJ,IAAI,CAACxD,MACHwD,QAAQ,SAASL,QAAQY,SAAQ;OAEjC,IAAI;GACFK,SAASpE,KAAKqE,UACV,MAAMrE,KAAKqE,QAAQlB,QAAQmB,MAAM;IAC/BC,YAAYpB,QAAQQ;IACpBa,aAAa/C,gBAAgBgD;IAC7BC,OAAO,YAAY;KACjB,MAAM,IAAI5B,MACR,oDACF;IACF;GACF,CAAC,IACD3C,KAAAA;EACN,SAASwE,GAAG;GACVnB,QAAQmB,aAAa7B,QAAQ6B,EAAExB,UAAUyB,OAAOD,CAAC;EACnD;EAGF,IAAI,KAAKnD,iBAAiBwC,IAAIb,QAAQQ,EAAE,MAAMO,YAAY;EAC1D,KAAK1C,iBAAiBqD,OAAO1B,QAAQQ,EAAE;EAEvC,IAAI;GACF,KAAKP,YAAYzB,OAAO;IACtBtB,MAAM;IACNsD,IAAIR,QAAQQ;IACZ,GAAIH,UAAUrD,KAAAA,IAAY,EAAEqD,MAAM,IAAI,EAAEY,OAAO;GACjD,CAAC;EACH,SAASU,WAAW;GAClB,IAAItB,UAAUrD,KAAAA,GAAW,MAAM2E;GAE/BrB,QAAQD,MACN,gEACAsB,SACF;GACA,KAAK1B,YAAYzB,OAAO;IACtBtB,MAAM;IACNsD,IAAIR,QAAQQ;IACZH,OAAO;GACT,CAAC;EACH;CACF;CAEA,eAAuBG,IAAY;EACjC,MAAMO,aAAa,KAAK1C,iBAAiBwC,IAAIL,EAAE;EAC/C,IAAI,CAACO,YAAY;EACjB,KAAK1C,iBAAiBqD,OAAOlB,EAAE;EAC/BO,WAAWzC,gBAAgBwC,MAAM;CACnC;CAEA,2BAAmCpC,UAAgC;EACjE,MAAMmD,gBAAgBC,MAAMC,KAAK,KAAK1D,gBAAgB,CAAC,CAAC2D,QACrD,GAAGjB,gBAAgBA,WAAWrC,aAAaA,QAC9C;EACA,KAAK,MAAM,CAAC8B,IAAIO,eAAec,eAAe;GAC5C,KAAKxD,iBAAiBqD,OAAOlB,EAAE;GAC/BO,WAAWzC,gBAAgBwC,MAAM;EACnC;EAEA,IAAImB,aAAa;EACjB,IAAIN;EACJ,KAAK,MAAM,CAACnB,IAAIO,eAAec,eAC7B,IAAI;GACF,KAAK5B,YAAYc,WAAWvC,OAAO;IACjCtB,MAAM;IACNsD;IACAH,OAAO;GACT,CAAC;EACH,SAASA,OAAO;GACd,IAAI4B,YACF3B,QAAQD,MAAMA,KAAK;QACd;IACL4B,aAAa;IACbN,YAAYtB;GACd;EACF;EAGF,IAAI4B,YAAY,MAAMN;CACxB;CAEA,YAAoBnD,OAAqBwB,SAAuB;EAC9DxB,MAAMoB,QAAQsC,YACZ;GAAEnC,SAASvD;GAAuBwD;EAAQ,GAC1C,EAAEb,cAAcX,MAAMT,OAAO,CAC/B;CACF;CAEA,eAAuB;EACrB,OAAO+D,MAAMC,KAAK,IAAIK,IAAI,KAAKlE,WAAWmE,OAAO,CAAC,CAAC;CACrD;CAEA,QAAgBzB,UAAkB;EAChC,IAAI0B;EAIJ,KAAK,MAAM5D,YAAY,KAAKyD,aAAa,GAAG;GAC1C,MAAMtF,OAAO6B,SAASwB,gBAAgB,CAAC,CAAC5C,QAAQsD;GAChD,IAAI/D,MAAMyF,WAAW;IAAE5D;IAAU7B;GAAK;EACxC;EAEA,OAAOyF;CACT;CAEA,kBAAwC;EAKtC,OAJiB,KAAKH,aAAa,CAAC,CAACzE,KAAKgB,aACxCA,SAASwB,gBAAgB,CAGpBqC,CAAQ,CAACC,QACbC,QAAQrF,aAAa;GACpBC,QAAQD,QAAQC,SACZoF,OAAOpF,SACL,GAAGoF,OAAOpF,OAAM,MAAOD,QAAQC,WAC/BD,QAAQC,SACVoF,OAAOpF;GACXC,OAAO;IAAE,GAAImF,OAAOnF,SAAS,CAAC;IAAI,GAAIF,QAAQE,SAAS,CAAC;GAAG;EAC7D,IACA,CAAC,CACH;CACF;CAEA,kBAA0B;EACxB,IAAI,KAAK2B,WAAW;EACpB,KAAKyD,iBAAiB;CACxB;CAEA,mBAA2B;EACzB,IAAI7E,OAAOgC,UAAUhC,OAAOgC,WAAWhC,QAAQ;GAC7C,MAAM8E,gBAA8B;IAClCzF,MAAM;IACNE,SAASD,sBAAsB,KAAK+C,gBAAgB,CAAC;GACvD;GAEArC,OAAOgC,OAAOqC,YACZ;IAAEnC,SAASvD;IAAuBwD,SAAS2C;GAAc,GACzD,KAAKhE,aACP;EACF;CACF;CAEA,eACE6B,IACAzC,QAIA;EACA,MAAMW,WAAW,KAAKR,WAAW2C,IAAIL,EAAE;EACvC,KAAKtC,WAAWwD,OAAOlB,EAAE;EACzB,MAAMqC,cAAc,KAAKzE,sBAAsByC,IAAIL,EAAE;EACrD,KAAKpC,sBAAsBsD,OAAOlB,EAAE;EACpC,IAAIzC,WAAW,KAAK;GAClB,KAAKc,0BAA0B;GAC/B,IACE,KAAKA,2BAA2B,KAChC,KAAKD,yBAAyB,GAE9B,KAAKD,gBAAgBf,uBAAuB;EAEhD,OAAO;GACL,KAAKgB,wBAAwB;GAC7B,IAAI,KAAKA,yBAAyB,GAChC,KAAKD,gBACH,KAAKE,yBAAyB,IAAI,MAAMjB,uBAAuB;EAErE;EAKA,OAAO;GAAEiF;GAAaC,iBAHpBpE,YAAY,CAAC,KAAKyD,aAAa,CAAC,CAACY,SAASrE,QAAQ,IAC9CA,WACA1B,KAAAA;EACgC;CACxC;CAEA,OAAOgG,wBACLtE,UACAS,cACa;EACb,MAAMpB,SAASoB,gBAAgBvB,uBAAuB;EACtD,MAAMqF,WAAWjF,uBAAuBwB,YAAYzB,MAAM;EAC1D,MAAMyC,KAAK0C,OAAO;EAClBD,SAAS/E,WAAW8C,IAAIR,IAAI9B,QAAQ;EACpC,IAAIX,WAAW,KACbkF,SAASpE,0BAA0B;OAEnCoE,SAASrE,wBAAwB;EAGnC,IAAI;GACF,MAAMiE,cAAcnE,SAASyE,kBAC3BF,SAAS1D,gBAAgB,CAC3B;GACA,IAAIsD,aACFI,SAAS7E,sBAAsB4C,IAAIR,IAAIqC,WAAW;GAGpDI,SAAS1D,gBAAgB;EAC3B,SAASc,OAAO;GACd,MAAM,EAAEwC,aAAaC,oBAAoBG,SAASL,eAChDpC,IACAzC,MACF;GAEA,IAAI;IACF,IAAI+E,iBACFG,SAASrB,2BAA2BkB,eAAe;GAEvD,SAASM,aAAa;IACpB9C,QAAQD,MAAM+C,WAAW;GAC3B;GACA,IAAI;IACFP,cAAc;GAChB,SAASQ,kBAAkB;IACzB/C,QAAQD,MAAMgD,gBAAgB;GAChC;GACA,IAAI;IACFJ,SAAS1D,gBAAgB;GAC3B,SAAS+D,gBAAgB;IACvBhD,QAAQD,MAAMiD,cAAc;GAC9B;GACA,MAAMjD;EACR;EAEA,IAAIkD,WAAW;EACf,aAAa;GACX,IAAIA,UAAU;GACdA,WAAW;GACX,MAAM,EAAEV,aAAaC,oBAAoBG,SAASL,eAChDpC,IACAzC,MACF;GACA,IAAIyF,gBAAgB;GACpB,IAAIC;GACJ,MAAMC,cAAcC,YAAwB;IAC1C,IAAI;KACFA,QAAQ;IACV,SAAStD,OAAO;KACd,IAAImD,eACFlD,QAAQD,MAAMA,KAAK;UACd;MACLmD,gBAAgB;MAChBC,eAAepD;KACjB;IACF;GACF;GAEA,IAAIyC,iBACFY,iBAAiBT,SAASrB,2BAA2BkB,eAAe,CAAC;GAEvE,IAAID,aAAaa,WAAWb,WAAW;GACvCa,iBAAiBT,SAAS1D,gBAAgB,CAAC;GAE3C,IAAIiE,eAAe,MAAMC;EAC3B;CACF;CAEA,OAAOG,UAAU;EACf,IAAI5F,uBAAuBC,WAAW;GACpC,MAAMgF,WAAWjF,uBAAuBC;GACxCgF,SAAShE,YAAY;GACrB,IAAIgE,SAASnE,kBAAkB9B,KAAAA,GAAW;IACxC6G,aAAaZ,SAASnE,aAAa;IACnCmE,SAASnE,gBAAgB9B,KAAAA;GAC3B;GACAa,OAAOiG,oBAAoB,WAAWb,SAAS7D,aAAa;GAE5D,IAAIoE,gBAAgB;GACpB,IAAIC;GACJ,MAAMC,cAAcC,YAAwB;IAC1C,IAAI;KACFA,QAAQ;IACV,SAAStD,OAAO;KACd,IAAImD,eACFlD,QAAQD,MAAMA,KAAK;UACd;MACLmD,gBAAgB;MAChBC,eAAepD;KACjB;IACF;GACF;GAEA4C,SAAS7E,sBAAsB2F,SAASlB,gBAAgB;IACtD,IAAIA,aAAaa,WAAWb,WAAW;GACzC,CAAC;GACDI,SAAS7E,sBAAsB4F,MAAM;GACrCf,SAAS/E,WAAW8F,MAAM;GAC1BN,iBAAiBT,SAASP,iBAAiB,CAAC;GAC5CO,SAAS5E,iBAAiB0F,SAAS,EAAEzF,iBAAiBE,SAASgC,OAAO;IACpEkD,iBAAiB;KACfpF,gBAAgBwC,MAAM;KACtBmC,SAAShD,YAAYzB,OAAO;MAC1BtB,MAAM;MACNsD;MACAH,OAAO;KACT,CAAC;IACH,CAAC;GACH,CAAC;GACD4C,SAAS5E,iBAAiB2F,MAAM;GAEhChG,uBAAuBC,YAAY;GACnC,IAAIuF,eAAe,MAAMC;EAC3B;CACF;AACF"}
|
|
@@ -1,35 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
type?: string;
|
|
1
|
+
export type SerializedTool = {
|
|
2
|
+
description?: string;
|
|
3
|
+
parameters: any;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
type?: string;
|
|
7
6
|
};
|
|
8
|
-
type SerializedModelContext = {
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export type SerializedModelContext = {
|
|
8
|
+
system?: string;
|
|
9
|
+
tools?: Record<string, SerializedTool>;
|
|
11
10
|
};
|
|
12
|
-
type FrameMessageType = "model-context-request" | "model-context-update" | "tool-call" | "tool-cancel" | "tool-result";
|
|
13
|
-
type FrameMessage = {
|
|
14
|
-
|
|
11
|
+
export type FrameMessageType = "model-context-request" | "model-context-update" | "tool-call" | "tool-cancel" | "tool-result";
|
|
12
|
+
export type FrameMessage = {
|
|
13
|
+
type: "model-context-request";
|
|
15
14
|
} | {
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
type: "model-context-update";
|
|
16
|
+
context: SerializedModelContext;
|
|
18
17
|
} | {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
type: "tool-call";
|
|
19
|
+
id: string;
|
|
20
|
+
toolName: string;
|
|
21
|
+
args: unknown;
|
|
23
22
|
} | {
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
type: "tool-cancel";
|
|
24
|
+
id: string;
|
|
26
25
|
} | {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
type: "tool-result";
|
|
27
|
+
id: string;
|
|
28
|
+
result?: unknown;
|
|
29
|
+
error?: string;
|
|
31
30
|
};
|
|
32
|
-
declare const FRAME_MESSAGE_CHANNEL = "assistant-ui-frame";
|
|
33
|
-
//#endregion
|
|
34
|
-
export { FRAME_MESSAGE_CHANNEL, FrameMessage, FrameMessageType, SerializedModelContext, SerializedTool };
|
|
31
|
+
export declare const FRAME_MESSAGE_CHANNEL = "assistant-ui-frame";
|
|
35
32
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/model-context/frame/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,uBAAuB,GACvB,sBAAsB,GACtB,WAAW,GACX,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,sBAAsB,CAAC;CACjC,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,eAAO,MAAM,qBAAqB,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/model-context/frame/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGb,mBAAgB;AA4BjB,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,YAwBxD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/model-context/frame/validate.ts
|
|
2
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
3
|
+
const hasOptionalPropertyType = (value, property, type) => value[property] === void 0 || typeof value[property] === type;
|
|
4
|
+
const isSerializedTool = (value) => isRecord(value) && Object.hasOwn(value, "parameters") && hasOptionalPropertyType(value, "description", "string") && hasOptionalPropertyType(value, "disabled", "boolean") && hasOptionalPropertyType(value, "type", "string");
|
|
5
|
+
const isSerializedModelContext = (value) => {
|
|
6
|
+
if (!isRecord(value)) return false;
|
|
7
|
+
if (!hasOptionalPropertyType(value, "system", "string")) return false;
|
|
8
|
+
if (value.tools === void 0) return true;
|
|
9
|
+
if (!isRecord(value.tools)) return false;
|
|
10
|
+
return Object.values(value.tools).every(isSerializedTool);
|
|
11
|
+
};
|
|
12
|
+
const isFrameMessage = (value) => {
|
|
13
|
+
if (!isRecord(value) || typeof value.type !== "string") return false;
|
|
14
|
+
switch (value.type) {
|
|
15
|
+
case "model-context-request": return true;
|
|
16
|
+
case "model-context-update": return isSerializedModelContext(value.context);
|
|
17
|
+
case "tool-call": return typeof value.id === "string" && typeof value.toolName === "string" && Object.hasOwn(value, "args");
|
|
18
|
+
case "tool-cancel": return typeof value.id === "string";
|
|
19
|
+
case "tool-result": return typeof value.id === "string" && (value.error == null || typeof value.error === "string");
|
|
20
|
+
default: return false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { isFrameMessage };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","names":["FrameMessage","SerializedModelContext","SerializedTool","isRecord","value","Record","Array","isArray","hasOptionalPropertyType","property","type","undefined","isSerializedTool","Object","hasOwn","isSerializedModelContext","tools","values","every","isFrameMessage","context","id","toolName","error"],"sources":["../../../src/model-context/frame/validate.ts"],"sourcesContent":["import type {\n FrameMessage,\n SerializedModelContext,\n SerializedTool,\n} from \"./types\";\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst hasOptionalPropertyType = (\n value: Record<string, unknown>,\n property: string,\n type: \"boolean\" | \"string\",\n) => value[property] === undefined || typeof value[property] === type;\n\nconst isSerializedTool = (value: unknown): value is SerializedTool =>\n isRecord(value) &&\n Object.hasOwn(value, \"parameters\") &&\n hasOptionalPropertyType(value, \"description\", \"string\") &&\n hasOptionalPropertyType(value, \"disabled\", \"boolean\") &&\n hasOptionalPropertyType(value, \"type\", \"string\");\n\nconst isSerializedModelContext = (\n value: unknown,\n): value is SerializedModelContext => {\n if (!isRecord(value)) return false;\n if (!hasOptionalPropertyType(value, \"system\", \"string\")) return false;\n if (value.tools === undefined) return true;\n if (!isRecord(value.tools)) return false;\n return Object.values(value.tools).every(isSerializedTool);\n};\n\nexport const isFrameMessage = (value: unknown): value is FrameMessage => {\n if (!isRecord(value) || typeof value.type !== \"string\") return false;\n\n switch (value.type) {\n case \"model-context-request\":\n return true;\n case \"model-context-update\":\n return isSerializedModelContext(value.context);\n case \"tool-call\":\n return (\n typeof value.id === \"string\" &&\n typeof value.toolName === \"string\" &&\n Object.hasOwn(value, \"args\")\n );\n case \"tool-cancel\":\n return typeof value.id === \"string\";\n case \"tool-result\":\n return (\n typeof value.id === \"string\" &&\n (value.error == null || typeof value.error === \"string\")\n );\n default:\n return false;\n }\n};\n"],"mappings":";AAMA,MAAMG,YAAYC,UAChB,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACE,MAAMC,QAAQH,KAAK;AAErE,MAAMI,2BACJJ,OACAK,UACAC,SACGN,MAAMK,cAAcE,KAAAA,KAAa,OAAOP,MAAMK,cAAcC;AAEjE,MAAME,oBAAoBR,UACxBD,SAASC,KAAK,KACdS,OAAOC,OAAOV,OAAO,YAAY,KACjCI,wBAAwBJ,OAAO,eAAe,QAAQ,KACtDI,wBAAwBJ,OAAO,YAAY,SAAS,KACpDI,wBAAwBJ,OAAO,QAAQ,QAAQ;AAEjD,MAAMW,4BACJX,UACoC;CACpC,IAAI,CAACD,SAASC,KAAK,GAAG,OAAO;CAC7B,IAAI,CAACI,wBAAwBJ,OAAO,UAAU,QAAQ,GAAG,OAAO;CAChE,IAAIA,MAAMY,UAAUL,KAAAA,GAAW,OAAO;CACtC,IAAI,CAACR,SAASC,MAAMY,KAAK,GAAG,OAAO;CACnC,OAAOH,OAAOI,OAAOb,MAAMY,KAAK,CAAC,CAACE,MAAMN,gBAAgB;AAC1D;AAEA,MAAaO,kBAAkBf,UAA0C;CACvE,IAAI,CAACD,SAASC,KAAK,KAAK,OAAOA,MAAMM,SAAS,UAAU,OAAO;CAE/D,QAAQN,MAAMM,MAAd;EACE,KAAK,yBACH,OAAO;EACT,KAAK,wBACH,OAAOK,yBAAyBX,MAAMgB,OAAO;EAC/C,KAAK,aACH,OACE,OAAOhB,MAAMiB,OAAO,YACpB,OAAOjB,MAAMkB,aAAa,YAC1BT,OAAOC,OAAOV,OAAO,MAAM;EAE/B,KAAK,eACH,OAAO,OAAOA,MAAMiB,OAAO;EAC7B,KAAK,eACH,OACE,OAAOjB,MAAMiB,OAAO,aACnBjB,MAAMmB,SAAS,QAAQ,OAAOnB,MAAMmB,UAAU;EAEnD,SACE,OAAO;CACX;AACF"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
//#region src/model-context/interactable-composer-metadata.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* Unstable / Experimental — the interactables API is still evolving and may change in any release.
|
|
4
3
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
5
4
|
*/
|
|
6
|
-
type Unstable_InteractableSnapshotEntry = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
export type Unstable_InteractableSnapshotEntry = {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
state: unknown;
|
|
9
|
+
/**
|
|
10
|
+
* When true, `state` carries only the top-level fields that changed since
|
|
11
|
+
* the model's last known state; omitted fields are unchanged. The first
|
|
12
|
+
* snapshot of an instance is always full.
|
|
13
|
+
*/
|
|
14
|
+
partial?: boolean | undefined;
|
|
16
15
|
};
|
|
17
16
|
/**
|
|
18
17
|
* Minimal message shape needed to read snapshots and `update_*` tool calls out
|
|
@@ -20,9 +19,9 @@ type Unstable_InteractableSnapshotEntry = {
|
|
|
20
19
|
* SDK's `UIMessage`.
|
|
21
20
|
*/
|
|
22
21
|
type SnapshotCarrierMessage = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
role: string;
|
|
23
|
+
metadata?: unknown;
|
|
24
|
+
content?: readonly unknown[] | undefined;
|
|
26
25
|
};
|
|
27
26
|
/**
|
|
28
27
|
* Reads the interactable snapshots stamped on a message's
|
|
@@ -33,42 +32,56 @@ type SnapshotCarrierMessage = {
|
|
|
33
32
|
*
|
|
34
33
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
35
34
|
*/
|
|
36
|
-
declare function unstable_getInteractableSnapshots(message: {
|
|
37
|
-
|
|
35
|
+
export declare function unstable_getInteractableSnapshots(message: {
|
|
36
|
+
metadata?: unknown;
|
|
38
37
|
}): Unstable_InteractableSnapshotEntry[] | undefined;
|
|
39
38
|
/**
|
|
40
39
|
* Canonical model-facing wording for one snapshot entry.
|
|
41
40
|
*
|
|
42
41
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
43
42
|
*/
|
|
44
|
-
declare function unstable_formatInteractableSnapshot(entry: Unstable_InteractableSnapshotEntry): string;
|
|
43
|
+
export declare function unstable_formatInteractableSnapshot(entry: Unstable_InteractableSnapshotEntry): string;
|
|
45
44
|
/** The model-facing tool name for an interactable `name`. One tool per name. */
|
|
46
|
-
declare function interactableToolName(name: string): string;
|
|
45
|
+
export declare function interactableToolName(name: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Overlays a streamed `value` onto `prev` along the parser's `partialPath`:
|
|
48
|
+
* the record still being written keeps the fields of `prev` it has not
|
|
49
|
+
* reached yet, while every field the parser has closed replaces its previous
|
|
50
|
+
* value, as the final merge will.
|
|
51
|
+
*/
|
|
52
|
+
export declare function overlayPartialPath(prev: unknown, value: unknown, partialPath?: readonly string[]): unknown;
|
|
47
53
|
/**
|
|
48
54
|
* The merge `update_*` tools apply: top-level keys replace, rest preserved.
|
|
49
55
|
* Array fields also accept operation objects (`add`, `update`, `remove`,
|
|
50
56
|
* `clear`, `set`) so collection edits do not need a companion manage_* tool.
|
|
51
57
|
*/
|
|
52
|
-
declare function shallowMergeInteractableState(prev: unknown, partial: unknown, options?: {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
export declare function shallowMergeInteractableState(prev: unknown, partial: unknown, options?: {
|
|
59
|
+
arrayBaseline?: unknown;
|
|
60
|
+
/**
|
|
61
|
+
* Supplies ids for added items in id-keyed array fields. The live
|
|
62
|
+
* execute path mints fresh ids; history folds replay ids previously
|
|
63
|
+
* returned by execute.
|
|
64
|
+
*/
|
|
65
|
+
idFactory?: (field: string) => string | undefined;
|
|
66
|
+
idKeyedFields?: ReadonlySet<string>;
|
|
67
|
+
/**
|
|
68
|
+
* The path of the value the argument parser reports as still
|
|
69
|
+
* streaming. The record there is overlaid onto its previous value
|
|
70
|
+
* so its unwritten fields hold until the model writes them; omitted
|
|
71
|
+
* once the arguments are complete.
|
|
72
|
+
*/
|
|
73
|
+
partialPath?: readonly string[] | undefined;
|
|
61
74
|
} | undefined): unknown;
|
|
62
75
|
/**
|
|
63
76
|
* Unstable / Experimental — the interactables API is still evolving and may change in any release.
|
|
64
77
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
65
78
|
*/
|
|
66
|
-
type Unstable_InteractableVersion = {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
79
|
+
export type Unstable_InteractableVersion = {
|
|
80
|
+
/** The full state as of this version. */
|
|
81
|
+
state: unknown;
|
|
82
|
+
origin: "create" | "update" | "user-edit";
|
|
83
|
+
/** For create/update versions, the tool call that produced this version. */
|
|
84
|
+
toolCallId?: string | undefined;
|
|
72
85
|
};
|
|
73
86
|
/**
|
|
74
87
|
* Every version of interactable `id` recorded in the thread, oldest first,
|
|
@@ -86,13 +99,13 @@ type Unstable_InteractableVersion = {
|
|
|
86
99
|
*
|
|
87
100
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
88
101
|
*/
|
|
89
|
-
declare function unstable_getInteractableVersions(messages: readonly SnapshotCarrierMessage[], id: string, name: string): Unstable_InteractableVersion[];
|
|
102
|
+
export declare function unstable_getInteractableVersions(messages: readonly SnapshotCarrierMessage[], id: string, name: string): Unstable_InteractableVersion[];
|
|
90
103
|
/**
|
|
91
104
|
* The state the model knows for interactable `id` — its latest recorded
|
|
92
105
|
* version, or `undefined` when no baseline exists yet.
|
|
93
106
|
*/
|
|
94
|
-
declare function findModelKnownState(messages: readonly SnapshotCarrierMessage[], id: string, name: string): {
|
|
95
|
-
|
|
107
|
+
export declare function findModelKnownState(messages: readonly SnapshotCarrierMessage[], id: string, name: string): {
|
|
108
|
+
state: unknown;
|
|
96
109
|
} | undefined;
|
|
97
110
|
/**
|
|
98
111
|
* Snapshot gate. Stamps an interactable only when the model doesn't already
|
|
@@ -101,7 +114,6 @@ declare function findModelKnownState(messages: readonly SnapshotCarrierMessage[]
|
|
|
101
114
|
* snapshot carrying just the changed fields; otherwise the full state is
|
|
102
115
|
* stamped. Other metadata keys pass through untouched.
|
|
103
116
|
*/
|
|
104
|
-
declare function gateInteractableComposerMetadata(meta: Record<string, unknown> | undefined, messages: readonly SnapshotCarrierMessage[]): Record<string, unknown> | undefined;
|
|
105
|
-
|
|
106
|
-
export { Unstable_InteractableSnapshotEntry, Unstable_InteractableVersion, findModelKnownState, gateInteractableComposerMetadata, interactableToolName, shallowMergeInteractableState, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions };
|
|
117
|
+
export declare function gateInteractableComposerMetadata(meta: Record<string, unknown> | undefined, messages: readonly SnapshotCarrierMessage[]): Record<string, unknown> | undefined;
|
|
118
|
+
export {};
|
|
107
119
|
//# sourceMappingURL=interactable-composer-metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactable-composer-metadata.d.ts","
|
|
1
|
+
{"version":3,"file":"interactable-composer-metadata.d.ts","sourceRoot":"","sources":["../../src/model-context/interactable-composer-metadata.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,kCAAkC,EAAE,GAAG,SAAS,CASnD;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,kCAAkC,GACxC,MAAM,CAKR;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAQD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EACd,WAAW,GAAE,SAAS,MAAM,EAAO,GAClC,OAAO,CAQT;AA2DD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EACJ;IACE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C,GACD,SAAS,GACZ,OAAO,CA4BT;AAqED;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1C,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AASF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAC3C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,4BAA4B,EAAE,CAkEhC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAC3C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAIhC;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAkCrC"}
|