@assistant-ui/core 0.2.19 → 0.2.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 +2 -2
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +14 -7
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +0 -1
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +0 -1
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +2 -2
- package/dist/adapters/index.js +2 -1
- package/dist/adapters/speech.d.ts +0 -1
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/suggestion.d.ts +16 -2
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/suggestion.js +36 -0
- package/dist/adapters/suggestion.js.map +1 -0
- package/dist/adapters/thread-history.d.ts +2 -2
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +5 -3
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +0 -1
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +7 -1
- package/dist/internal.js +6 -2
- package/dist/model-context/frame/host.d.ts +0 -1
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/provider.d.ts +0 -1
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.d.ts +4 -2
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/registry-handles.d.ts +0 -1
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +0 -1
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +23 -9
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/tool.js +0 -25
- package/dist/model-context/tool.js.map +1 -1
- package/dist/model-context/types.d.ts +0 -1
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +0 -1
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +1 -6
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +1 -0
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +13 -2
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +122 -7
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +0 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +0 -1
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +0 -1
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Tools.d.ts +3 -2
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +0 -1
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/interactables-legacy/Interactables.d.ts +0 -1
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +0 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +4 -2
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +0 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +19 -4
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.js +17 -5
- package/dist/react/model-context/define-mcp-toolkit.js.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +1 -2
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +2 -2
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +2 -2
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +2 -2
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +2 -2
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +0 -1
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +5 -5
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +1 -0
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +3 -2
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +1 -0
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +4 -2
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +3 -2
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +0 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +0 -1
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +7 -4
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +0 -1
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +3 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +1 -4
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +0 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +0 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.js +5 -1
- package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +1 -5
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +0 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +0 -1
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +7 -4
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +4 -3
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +4 -3
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +2 -2
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +2 -2
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +4 -3
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +1 -6
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +42 -24
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +2 -1
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +2 -2
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +0 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +2 -2
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +35 -17
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +6 -4
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -3
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +0 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +0 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +0 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +0 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +0 -1
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +0 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +0 -1
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +0 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +0 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +0 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +0 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +0 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +2 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +3 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +21 -19
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +0 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +0 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +6 -3
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +12 -2
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +30 -1
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +0 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +1 -7
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +0 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +1 -8
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +42 -44
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +0 -1
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +0 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +2 -5
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +0 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +0 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +6 -3
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +4 -2
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +5 -3
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +1 -2
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +0 -1
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +2 -2
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +0 -1
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +0 -1
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/bindings.d.ts +0 -1
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +6 -4
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +0 -1
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +6 -16
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +1 -1
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +0 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +0 -1
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +3 -1
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +0 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +0 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +17 -3
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -4
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -5
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -0
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +0 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +2 -2
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +0 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +2 -2
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +0 -1
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +6 -4
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +1 -1
- package/dist/runtime/utils/auto-status.d.ts +0 -1
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +0 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +0 -1
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +1 -5
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +3 -1
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +0 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/streaming-timing.d.ts +5 -3
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +2 -2
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +2 -2
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +0 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +0 -1
- 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 +0 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -0
- 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 +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +0 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-core.d.ts +0 -1
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +0 -1
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +0 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +5 -21
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +24 -15
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +0 -1
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/local/should-continue.js +2 -2
- package/dist/runtimes/local/should-continue.js.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +0 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.js +5 -3
- package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +0 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +6 -4
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +0 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +0 -1
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +2 -2
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +0 -1
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +0 -1
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +0 -1
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +0 -1
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/suggestions.d.ts +0 -1
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +0 -1
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +0 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +0 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +0 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +0 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +0 -1
- 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 +0 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +0 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +0 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +1 -2
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +0 -1
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +0 -1
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +0 -1
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +6 -4
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +0 -1
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +0 -1
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +0 -1
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +0 -1
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +4 -3
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +0 -1
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +0 -1
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
- package/dist/types/attachment.d.ts +1 -1
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/directive.d.ts +3 -2
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +15 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +46 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/message.d.ts +70 -33
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +0 -1
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +1 -0
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +0 -1
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/is-json.js +1 -1
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +7 -0
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -0
- package/dist/utils/json/stable-stringify-tool-args.js +32 -0
- package/dist/utils/json/stable-stringify-tool-args.js.map +1 -0
- package/dist/utils/text.d.ts +0 -1
- package/dist/utils/text.d.ts.map +1 -1
- package/package.json +12 -9
- package/src/adapters/attachment.test.ts +107 -0
- package/src/adapters/attachment.ts +20 -10
- package/src/adapters/index.ts +6 -1
- package/src/adapters/suggestion.test.ts +187 -0
- package/src/adapters/suggestion.ts +75 -1
- package/src/index.ts +15 -1
- package/src/internal.ts +16 -0
- package/src/model-context/tool.test.ts +110 -0
- package/src/model-context/tool.ts +31 -9
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +222 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +214 -7
- package/src/react/index.ts +2 -0
- package/src/react/model-context/define-mcp-toolkit.ts +39 -6
- package/src/react/model-context/define-toolkit.test.ts +107 -0
- package/src/react/primitive-hooks/useMessageError.test.ts +64 -0
- package/src/react/primitive-hooks/useMessageError.ts +19 -6
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +5 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +3 -1
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +48 -19
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +111 -0
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +13 -3
- package/src/react/runtimes/cloud/auiV0.ts +71 -2
- package/src/react/runtimes/external-message-converter.test.tsx +102 -0
- package/src/react/runtimes/external-message-converter.ts +35 -10
- package/src/runtime/base/base-composer-runtime-core.ts +26 -7
- package/src/runtime/utils/message-repository.ts +8 -3
- package/src/runtime/utils/thread-message-like.ts +2 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +127 -3
- package/src/runtimes/local/local-thread-runtime-core.ts +25 -23
- package/src/runtimes/local/should-continue.ts +5 -2
- package/src/runtimes/remote-thread-list/adapter/in-memory.test.ts +14 -0
- package/src/runtimes/remote-thread-list/adapter/in-memory.ts +13 -5
- package/src/tests/MessageRepository.test.ts +26 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +42 -0
- package/src/tests/attachment-adapters.test.ts +14 -2
- package/src/tests/auiV0Encode.test.ts +134 -1
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +79 -5
- package/src/tests/base-composer-runtime-core-send.test.ts +145 -0
- package/src/tests/thread-message-like.test.ts +40 -0
- package/src/types/attachment.ts +1 -0
- package/src/types/error.test.ts +122 -0
- package/src/types/error.ts +74 -0
- package/src/types/index.ts +1 -0
- package/src/types/message.ts +11 -3
- package/src/utils/json/is-json-equal.test.ts +84 -0
- package/src/utils/json/is-json.test.ts +123 -0
- package/src/utils/json/is-json.ts +1 -1
- package/src/utils/json/stable-stringify-tool-args.test.ts +105 -0
- package/src/utils/json/stable-stringify-tool-args.ts +70 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { generateId } from "../../utils/id.js";
|
|
2
|
+
import { getThreadMessageText } from "../../utils/text.js";
|
|
2
3
|
import { fromThreadMessageLike } from "../../runtime/utils/thread-message-like.js";
|
|
3
4
|
import { bindExternalStoreMessage, getExternalStoreMessages } from "../../runtime/utils/external-store-message.js";
|
|
4
5
|
import { getAutoStatus, isAutoStatus } from "../../runtime/utils/auto-status.js";
|
|
5
6
|
import { ExportedMessageRepository, MessageRepository } from "../../runtime/utils/message-repository.js";
|
|
6
7
|
import { EMPTY_QUEUE_ITEMS } from "../../store/scopes/queue-item.js";
|
|
7
|
-
import { getThreadMessageText } from "../../utils/text.js";
|
|
8
8
|
import { BaseThreadRuntimeCore } from "../../runtime/base/base-thread-runtime-core.js";
|
|
9
9
|
import { ThreadMessageConverter } from "./thread-message-converter.js";
|
|
10
10
|
import { ToolInvocationTracker } from "../tool-invocations/ToolInvocationTracker.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ThreadMessage } from "../../types/message.js";
|
|
2
|
-
|
|
3
2
|
//#region src/runtimes/external-store/thread-message-converter.d.ts
|
|
4
3
|
type ConverterCallback<TIn> = (cache: ThreadMessage | undefined, message: TIn, idx: number) => ThreadMessage;
|
|
5
4
|
declare class ThreadMessageConverter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-message-converter.d.ts","names":[],"sources":["../../../src/runtimes/external-store/thread-message-converter.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"thread-message-converter.d.ts","names":[],"sources":["../../../src/runtimes/external-store/thread-message-converter.ts"],"mappings":";;KAEY,kBAAkB,QAC5B,OAAO,2BACP,SAAS,KACT,gBACG;cAEQ;mBACM;EAEjB,gBAAgB,YAAY,SAC1B,mBAAmB,OACnB,WAAW,kBAAkB,OAC5B"}
|
|
@@ -2,7 +2,6 @@ import { ThreadMessageLike } from "../../runtime/utils/thread-message-like.js";
|
|
|
2
2
|
import { BaseAssistantRuntimeCore } from "../../runtime/base/base-assistant-runtime-core.js";
|
|
3
3
|
import { LocalRuntimeOptionsBase } from "./local-runtime-options.js";
|
|
4
4
|
import { LocalThreadListRuntimeCore } from "./local-thread-list-runtime-core.js";
|
|
5
|
-
|
|
6
5
|
//#region src/runtimes/local/local-runtime-core.d.ts
|
|
7
6
|
declare class LocalRuntimeCore extends BaseAssistantRuntimeCore {
|
|
8
7
|
readonly threads: LocalThreadListRuntimeCore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-core.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-core.ts"],"mappings":";;;;;cAOa,yBAAyB;WACpB,SAAO;WACP;UAER;cAGN,SAAS,yBACT,0BAA0B"}
|
|
@@ -5,7 +5,6 @@ import { RealtimeVoiceAdapter } from "../../adapters/voice.js";
|
|
|
5
5
|
import { ChatModelAdapter } from "../../runtime/utils/chat-model-adapter.js";
|
|
6
6
|
import { SuggestionAdapter } from "../../adapters/suggestion.js";
|
|
7
7
|
import { ThreadHistoryAdapter } from "../../adapters/thread-history.js";
|
|
8
|
-
|
|
9
8
|
//#region src/runtimes/local/local-runtime-options.d.ts
|
|
10
9
|
type LocalRuntimeOptionsBase = {
|
|
11
10
|
maxSteps?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runtime-options.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-options.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-runtime-options.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-options.ts"],"mappings":";;;;;;;;KAWY;EACV;EACA;IACE,WAAW;IACX,UAAU;IACV,cAAc;IACd,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,aAAa;;;;;EAMf;;;;;EAMA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core.js";
|
|
2
2
|
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
3
3
|
import { LocalThreadRuntimeCore } from "./local-thread-runtime-core.js";
|
|
4
|
-
|
|
5
4
|
//#region src/runtimes/local/local-thread-list-runtime-core.d.ts
|
|
6
5
|
type LocalThreadFactory = () => LocalThreadRuntimeCore;
|
|
7
6
|
declare class LocalThreadListRuntimeCore extends BaseSubscribable implements ThreadListRuntimeCore {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-list-runtime-core.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-list-runtime-core.ts"],"mappings":";;;;KAIY,2BAA2B;cAa1B,mCACH,4BACG;UAEH;cACI,gBAAgB;MAMjB;EAIJ,4BAAwB;MAIpB;MAIA;MAIA;MAIA;MAIA,eAAW;;;;;;;;;EAIf;EAIA,yBAAyB;EAIzB,YAAY;;;;;;;;EAcN,kBAAkB;EAIxB,qBAAqB;EAIrB,UAAU;EAIV,WAAW;EAIX,UAAU;EAIV,aAAa;EAIb,UAAU;EAIV,WACL,mBACC;IAAU;IAAkB;;EAIxB"}
|
|
@@ -11,6 +11,7 @@ import { SuggestionAdapter } from "../../adapters/suggestion.js";
|
|
|
11
11
|
import { ThreadHistoryAdapter } from "../../adapters/thread-history.js";
|
|
12
12
|
import { BaseThreadRuntimeCore } from "../../runtime/base/base-thread-runtime-core.js";
|
|
13
13
|
import { LocalRuntimeOptionsBase } from "./local-runtime-options.js";
|
|
14
|
+
import "../../index.js";
|
|
14
15
|
//#region src/runtimes/local/local-thread-runtime-core.d.ts
|
|
15
16
|
declare class LocalThreadRuntimeCore extends BaseThreadRuntimeCore implements ThreadRuntimeCore {
|
|
16
17
|
readonly capabilities: {
|
|
@@ -65,34 +66,17 @@ declare class LocalThreadRuntimeCore extends BaseThreadRuntimeCore implements Th
|
|
|
65
66
|
removeQueueItem(queueItemId: string): void;
|
|
66
67
|
private _runAppend;
|
|
67
68
|
deleteMessage(messageId: string): Promise<void>;
|
|
68
|
-
resumeRun({
|
|
69
|
-
stream,
|
|
70
|
-
...startConfig
|
|
71
|
-
}: ResumeRunConfig): Promise<void>;
|
|
69
|
+
resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void>;
|
|
72
70
|
exportExternalState(): any;
|
|
73
71
|
importExternalState(): void;
|
|
74
|
-
startRun({
|
|
75
|
-
parentId,
|
|
76
|
-
runConfig
|
|
77
|
-
}: StartRunConfig, runCallback?: ChatModelAdapter["run"]): Promise<void>;
|
|
72
|
+
startRun({ parentId, runConfig }: StartRunConfig, runCallback?: ChatModelAdapter["run"]): Promise<void>;
|
|
78
73
|
private _runLoop;
|
|
79
74
|
private performRoundtrip;
|
|
80
75
|
detach(): void;
|
|
81
76
|
cancelRun(): void;
|
|
82
|
-
addToolResult({
|
|
83
|
-
messageId,
|
|
84
|
-
toolCallId,
|
|
85
|
-
result,
|
|
86
|
-
isError,
|
|
87
|
-
artifact
|
|
88
|
-
}: AddToolResultOptions): void;
|
|
77
|
+
addToolResult({ messageId, toolCallId, result, isError, artifact }: AddToolResultOptions): void;
|
|
89
78
|
resumeToolCall(_options: ResumeToolCallOptions): void;
|
|
90
|
-
respondToToolApproval({
|
|
91
|
-
approvalId,
|
|
92
|
-
approved,
|
|
93
|
-
optionId,
|
|
94
|
-
reason
|
|
95
|
-
}: RespondToToolApprovalOptions): void;
|
|
79
|
+
respondToToolApproval({ approvalId, approved, optionId, reason }: RespondToToolApprovalOptions): void;
|
|
96
80
|
}
|
|
97
81
|
//#endregion
|
|
98
82
|
export { LocalThreadRuntimeCore };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;;cA6Ca,+BACH,iCACG;WAEK;;;;;;;;;;;;;;;UAgBR;UAEA;UACA;WAEQ;WACA;UAER;MACG;UAIH;UACA;MACG,wBAAwB;MAIxB;;;;;;;;;;cAKT,iBAAiB,sBACjB,SAAS;UAMH;UAEA;UAEA;EAED,0BAA0B;UAIzB;EAED,mCACL,kBAAkB;MAKT;EAIJ,sBAAsB,SAAS;UAuE9B;EACD,mBAAe;EAuCT,OAAO,SAAS,gBAAgB;EAWtC,0BAA0B;EAM1B,eAAe;EAIf,gBAAgB;UAIT;EAgCD,cAAc,oBAAoB;EAmBxC,YAAY,WAAW,eAAe,kBAAkB;EAMxD;EAIA;EAIM,WACT,UAAU,aAAa,gBACzB,cAAc,0BACb;UAuBW;UA2DA;EA+KP;EASA;EASA,gBACL,WACA,YACA,QACA,SACA,YACC;EA2CI,eAAe,UAAU;EAMzB,wBACL,YACA,UACA,UACA,UACC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { generateId } from "../../utils/id.js";
|
|
2
|
+
import { consumeSuggestionResult } from "../../adapters/suggestion.js";
|
|
3
|
+
import { toAssistantError } from "../../types/error.js";
|
|
2
4
|
import { fromThreadMessageLike } from "../../runtime/utils/thread-message-like.js";
|
|
3
5
|
import { EMPTY_QUEUE_ITEMS } from "../../store/scopes/queue-item.js";
|
|
4
6
|
import { createMessageQueue } from "../../runtime/queue/message-queue.js";
|
|
@@ -240,21 +242,24 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
240
242
|
this._notifyEventSubscribers("runEnd", {});
|
|
241
243
|
if (!this._queueRunInFlight) queueMicrotask(() => this._queue?.notifyIdle());
|
|
242
244
|
}
|
|
243
|
-
this._suggestionsController = new AbortController();
|
|
244
|
-
const signal = this._suggestionsController.signal;
|
|
245
245
|
if (this.adapters.suggestion && message.status?.type !== "requires-action") {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
246
|
+
this._suggestionsController = new AbortController();
|
|
247
|
+
const signal = this._suggestionsController.signal;
|
|
248
|
+
const adapter = this.adapters.suggestion;
|
|
249
|
+
(async () => {
|
|
250
|
+
try {
|
|
251
|
+
await consumeSuggestionResult(adapter.generate({
|
|
252
|
+
messages: this.messages,
|
|
253
|
+
signal
|
|
254
|
+
}), {
|
|
255
|
+
signal,
|
|
256
|
+
onUpdate: (r) => {
|
|
257
|
+
this._suggestions = r;
|
|
258
|
+
this._notifySubscribers();
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
} catch {}
|
|
262
|
+
})();
|
|
258
263
|
}
|
|
259
264
|
}
|
|
260
265
|
async performRoundtrip(parentId, message, runConfig, runCallback) {
|
|
@@ -351,7 +356,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
351
356
|
updateMessage({ status: {
|
|
352
357
|
type: "incomplete",
|
|
353
358
|
reason: "error",
|
|
354
|
-
error:
|
|
359
|
+
error: toAssistantError(e)
|
|
355
360
|
} });
|
|
356
361
|
throw e;
|
|
357
362
|
}
|
|
@@ -370,12 +375,16 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
370
375
|
const error = new AbortError(true);
|
|
371
376
|
this.abortController?.abort(error);
|
|
372
377
|
this.abortController = null;
|
|
378
|
+
this._suggestionsController?.abort();
|
|
379
|
+
this._suggestionsController = null;
|
|
373
380
|
}
|
|
374
381
|
cancelRun() {
|
|
375
382
|
this._queue?.adapter.clear("cancel-run");
|
|
376
383
|
const error = new AbortError(false);
|
|
377
384
|
this.abortController?.abort(error);
|
|
378
385
|
this.abortController = null;
|
|
386
|
+
this._suggestionsController?.abort();
|
|
387
|
+
this._suggestionsController = null;
|
|
379
388
|
}
|
|
380
389
|
addToolResult({ messageId, toolCallId, result, isError, artifact }) {
|
|
381
390
|
const messageData = this.repository.getMessage(messageId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-thread-runtime-core.js","names":["fromThreadMessageLike","generateId","ChatModelAdapter","ChatModelRunResult","shouldContinue","LocalRuntimeOptionsBase","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","ThreadSuggestion","ThreadRuntimeCore","StartRunConfig","ResumeRunConfig","BaseThreadRuntimeCore","AppendMessage","ThreadAssistantMessage","RunConfig","ModelContextProvider","createMessageQueue","MessageQueueController","EMPTY_QUEUE_ITEMS","QueueItemState","AbortError","Error","name","detach","constructor","message","LocalThreadRuntimeCore","capabilities","switchToBranch","switchBranchDuringRun","edit","delete","reload","cancel","unstable_copy","speech","dictation","voice","attachments","feedback","queue","abortController","AbortController","_queue","_queueRunInFlight","isDisabled","isSendDisabled","_isLoading","isLoading","_suggestions","_suggestionsController","suggestions","adapters","_options","contextProvider","options","__internal_setOptions","_lastRunConfig","_getThreadId","__internal_setGetThreadId","getThreadId","_getInitializePromise","Promise","__internal_setGetInitializePromise","getPromise","extras","undefined","hasUpdates","canSpeak","canDictate","canVoice","canAttach","canFeedback","canDelete","history","canQueue","unstable_enableMessageQueue","run","_runAppend","finally","notifyIdle","catch","subscribe","_notifySubscribers","adapter","clear","_loadPromise","__internal_load","promise","load","resolve","then","repo","repository","import","messages","length","ensureInitialized","resume","bind","unstable_resume","startRun","parentId","headId","sourceId","runConfig","append","isTail","at","id","willRun","role","enqueue","steer","getQueueItems","items","steerQueueItem","queueItemId","removeQueueItem","remove","initPromise","newMessage","type","reason","addOrUpdateMessage","resetHead","deleteMessage","messageId","getMessages","messageIndex","findIndex","m","resumeRun","stream","startConfig","exportExternalState","importExternalState","runCallback","status","content","metadata","unstable_state","state","unstable_annotations","unstable_data","steps","custom","createdAt","Date","_runLoop","_notifyEventSubscribers","notifyBusy","abort","performRoundtrip","unstable_humanToolNames","queueMicrotask","signal","suggestion","promiseOrGenerator","generate","Symbol","asyncIterator","r","aborted","result","initialContent","initialAnnotations","initialData","initialSteps","initialCustom","updateMessage","Partial","newSteps","newAnnotations","newData","annotations","data","timing","maxSteps","unstable_composerMetadata","_","context","getModelContext","chatModel","abortSignal","threadId","unstable_assistantMessageId","unstable_threadId","unstable_parentId","unstable_getMessage","e","error","String","toString","cancelRun","addToolResult","toolCallId","isError","artifact","messageData","getMessage","added","found","newContent","map","c","resumeToolCall","respondToToolApproval","approvalId","approved","optionId","findLast","some","approval","target","find","resolution","targetApproval"],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"sourcesContent":["import { fromThreadMessageLike } from \"../../runtime/utils/thread-message-like\";\nimport { generateId } from \"../../utils/id\";\nimport type {\n ChatModelAdapter,\n ChatModelRunResult,\n} from \"../../runtime/utils/chat-model-adapter\";\nimport { shouldContinue } from \"./should-continue\";\nimport type { LocalRuntimeOptionsBase } from \"./local-runtime-options\";\nimport type {\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n StartRunConfig,\n ResumeRunConfig,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport { BaseThreadRuntimeCore } from \"../../runtime/base/base-thread-runtime-core\";\nimport type {\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types/message\";\nimport type { RunConfig } from \"../../types/message\";\nimport type { ModelContextProvider } from \"../../model-context/types\";\nimport {\n createMessageQueue,\n type MessageQueueController,\n} from \"../../runtime/queue/message-queue\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../store/scopes/queue-item\";\n\nclass AbortError extends Error {\n override name = \"AbortError\";\n detach: boolean;\n\n constructor(detach: boolean, message?: string) {\n super(message);\n this.detach = detach;\n }\n}\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n switchBranchDuringRun: true,\n edit: true,\n delete: false,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n dictation: false,\n voice: false,\n attachments: false,\n feedback: false,\n queue: false,\n };\n\n private abortController: AbortController | null = null;\n\n private _queue: MessageQueueController | null = null;\n private _queueRunInFlight = false;\n\n public readonly isDisabled = false;\n public readonly isSendDisabled = false;\n\n private _isLoading = false;\n public get isLoading() {\n return this._isLoading;\n }\n\n private _suggestions: readonly ThreadSuggestion[] = [];\n private _suggestionsController: AbortController | null = null;\n public get suggestions(): readonly ThreadSuggestion[] {\n return this._suggestions;\n }\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n contextProvider: ModelContextProvider,\n options: LocalRuntimeOptionsBase,\n ) {\n super(contextProvider);\n this.__internal_setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n private _lastRunConfig: RunConfig = {};\n\n private _getThreadId?: () => string | undefined;\n\n public __internal_setGetThreadId(getThreadId: () => string | undefined) {\n this._getThreadId = getThreadId;\n }\n\n private _getInitializePromise?: () => Promise<unknown> | undefined;\n\n public __internal_setGetInitializePromise(\n getPromise: () => Promise<unknown> | undefined,\n ) {\n this._getInitializePromise = getPromise;\n }\n\n public get extras() {\n return undefined;\n }\n\n public __internal_setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canDictate = options.adapters?.dictation !== undefined;\n if (this.capabilities.dictation !== canDictate) {\n this.capabilities.dictation = canDictate;\n hasUpdates = true;\n }\n\n const canVoice = options.adapters?.voice !== undefined;\n if (this.capabilities.voice !== canVoice) {\n this.capabilities.voice = canVoice;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n const canDelete = options.adapters?.history?.delete !== undefined;\n if (this.capabilities.delete !== canDelete) {\n this.capabilities.delete = canDelete;\n hasUpdates = true;\n }\n\n const canQueue = options.unstable_enableMessageQueue === true;\n if (canQueue && !this._queue) {\n this._queue = createMessageQueue({\n run: (message) => {\n // release the queue when the dispatch settles, even if it rejects\n // before reaching startRun's finally, so a failure can't deadlock it\n this._queueRunInFlight = true;\n void this._runAppend(message)\n .finally(() => {\n this._queueRunInFlight = false;\n this._queue?.notifyIdle();\n })\n .catch(() => {});\n },\n });\n this._queue.subscribe(() => this._notifySubscribers());\n } else if (!canQueue && this._queue) {\n this._queue.adapter.clear(\"cancel-run\");\n this._queue = null;\n }\n if (this.capabilities.queue !== canQueue) {\n this.capabilities.queue = canQueue;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n private _loadPromise: Promise<void> | undefined;\n public __internal_load() {\n if (this._loadPromise) return this._loadPromise;\n\n const promise = this.adapters.history?.load() ?? Promise.resolve(null);\n\n this._isLoading = true;\n this._notifySubscribers();\n\n this._loadPromise = promise\n .then((repo) => {\n if (!repo) return;\n this.repository.import(repo);\n if (repo.messages.length > 0) {\n this.ensureInitialized();\n }\n this._notifySubscribers();\n\n const resume = this.adapters.history?.resume?.bind(\n this.adapters.history,\n );\n if (repo.unstable_resume && resume) {\n this.startRun(\n {\n parentId: this.repository.headId,\n sourceId: this.repository.headId,\n runConfig: this._lastRunConfig,\n },\n resume,\n ).catch(() => {});\n }\n })\n .finally(() => {\n this._isLoading = false;\n this._notifySubscribers();\n });\n\n return this._loadPromise;\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);\n const willRun = message.startRun ?? message.role === \"user\";\n if (this._queue && willRun && isTail) {\n this._queue.adapter.enqueue(message, { steer: message.steer ?? false });\n return;\n }\n if (this._queue && !isTail) this._queue.adapter.clear(\"edit\");\n return this._runAppend(message);\n }\n\n public getQueueItems(): readonly QueueItemState[] {\n // Reads can arrive during base-thread construction, before the queue field\n // is assigned, so guard against the unset field.\n return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;\n }\n\n public steerQueueItem(queueItemId: string): void {\n this._queue?.adapter.steer(queueItemId);\n }\n\n public removeQueueItem(queueItemId: string): void {\n this._queue?.adapter.remove(queueItemId);\n }\n\n private async _runAppend(message: AppendMessage): Promise<void> {\n this.ensureInitialized();\n\n const initPromise = this._getInitializePromise?.();\n if (initPromise) {\n await initPromise;\n }\n\n const newMessage = fromThreadMessageLike(message, generateId(), {\n type: \"complete\",\n reason: \"unknown\",\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n this._options.adapters.history?.append({\n parentId: message.parentId,\n message: newMessage,\n ...(message.runConfig !== undefined && { runConfig: message.runConfig }),\n });\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n await this.startRun({\n parentId: newMessage.id,\n sourceId: message.sourceId,\n runConfig: message.runConfig ?? {},\n });\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async deleteMessage(messageId: string): Promise<void> {\n const adapter = this._options.adapters.history;\n if (!adapter?.delete)\n throw new Error(\"Runtime does not support deleting messages.\");\n\n const messages = this.repository.getMessages();\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) throw new Error(\"Message not found.\");\n\n const message = messages[messageIndex]!;\n const parentId = messages[messageIndex - 1]?.id ?? null;\n const items = [{ parentId, message }];\n\n await adapter.delete(items);\n\n this.repository.deleteMessage(messageId);\n this._notifySubscribers();\n }\n\n public resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void> {\n if (!stream)\n throw new Error(\"You must pass a stream parameter to resume runs.\");\n return this.startRun(startConfig, stream);\n }\n\n public exportExternalState(): any {\n throw new Error(\"Runtime does not support exporting external states.\");\n }\n\n public importExternalState(): void {\n throw new Error(\"Runtime does not support importing external states.\");\n }\n\n public async startRun(\n { parentId, runConfig }: StartRunConfig,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this.ensureInitialized();\n\n // add assistant message\n const id = generateId();\n const message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n metadata: {\n unstable_state: this.state,\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n createdAt: new Date(),\n };\n\n return this._runLoop(parentId, message, runConfig, runCallback);\n }\n\n private async _runLoop(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this._notifyEventSubscribers(\"runStart\", {});\n\n try {\n // mark busy for runs not started through the queue (regenerate, resume)\n this._queue?.notifyBusy();\n this._suggestions = [];\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n this._notifySubscribers();\n\n do {\n message = await this.performRoundtrip(\n parentId,\n message,\n runConfig,\n runCallback,\n );\n runCallback = undefined;\n } while (shouldContinue(message, this._options.unstable_humanToolNames));\n } finally {\n this._notifyEventSubscribers(\"runEnd\", {});\n // queue-driven runs release from the driver settle handler; a direct\n // run (regenerate, resume) releases here\n if (!this._queueRunInFlight) {\n queueMicrotask(() => this._queue?.notifyIdle());\n }\n }\n\n this._suggestionsController = new AbortController();\n const signal = this._suggestionsController.signal;\n if (\n this.adapters.suggestion &&\n message.status?.type !== \"requires-action\"\n ) {\n const promiseOrGenerator = this.adapters.suggestion?.generate({\n messages: this.messages,\n });\n\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (signal.aborted) break;\n this._suggestions = r;\n this._notifySubscribers();\n }\n } else {\n const result = await promiseOrGenerator;\n if (signal.aborted) return;\n this._suggestions = result;\n this._notifySubscribers();\n }\n }\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ) {\n const messages = parentId ? this.repository.getMessages(parentId) : [];\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialAnnotations = message.metadata?.unstable_annotations;\n const initialData = message.metadata?.unstable_data;\n const initialSteps = message.metadata?.steps;\n const initialCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n const newAnnotations = m.metadata?.unstable_annotations;\n const newData = m.metadata?.unstable_data;\n const annotations = newAnnotations\n ? [...(initialAnnotations ?? []), ...newAnnotations]\n : undefined;\n const data = newData ? [...(initialData ?? []), ...newData] : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(m.metadata.unstable_state\n ? { unstable_state: m.metadata.unstable_state }\n : undefined),\n ...(annotations\n ? { unstable_annotations: annotations }\n : undefined),\n ...(data ? { unstable_data: data } : undefined),\n ...(steps ? { steps } : undefined),\n ...(m.metadata?.timing\n ? { timing: m.metadata.timing }\n : undefined),\n ...(m.metadata?.custom\n ? {\n custom: {\n ...(initialCustom ?? {}),\n ...m.metadata.custom,\n },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps ?? 2;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n\n // Switch to the new message branch right after adding it for the first time\n this.repository.resetHead(message.id);\n this._notifySubscribers();\n }\n\n try {\n this._lastRunConfig = runConfig ?? {};\n // unstable_composerMetadata is composer-only (stamped onto the outgoing\n // message); never expose it to the chat-model adapter's run context.\n const { unstable_composerMetadata: _, ...context } =\n this.getModelContext();\n\n runCallback =\n runCallback ??\n this.adapters.chatModel.run.bind(this.adapters.chatModel);\n\n const abortSignal = this.abortController.signal;\n const threadId = this._getThreadId?.();\n const promiseOrGenerator = runCallback({\n messages,\n runConfig: this._lastRunConfig,\n abortSignal,\n context,\n unstable_assistantMessageId: message.id,\n unstable_threadId: threadId,\n unstable_parentId: parentId,\n unstable_getMessage() {\n return message;\n },\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (abortSignal.aborted) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n break;\n }\n\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n // TODO this should be handled by the run result stream\n if (e instanceof AbortError) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"error\",\n error:\n e instanceof Error\n ? e.message\n : `[${typeof e}] ${new String(e).toString()}`,\n },\n });\n\n throw e;\n }\n } finally {\n this.abortController = null;\n\n if (\n message.status.type === \"complete\" ||\n message.status.type === \"incomplete\"\n ) {\n await this._options.adapters.history?.append({\n parentId,\n message: message,\n runConfig: this._lastRunConfig,\n });\n }\n }\n return message;\n }\n\n public detach() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(true);\n this.abortController?.abort(error);\n this.abortController = null;\n }\n\n public cancelRun() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(false);\n this.abortController?.abort(error);\n this.abortController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n isError,\n artifact,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n artifact,\n isError,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n // a result may arrive mid-run or on a non-head message; the resume\n // intentionally aborts any in-flight run, unlike respondToToolApproval\n if (\n added &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n\n public resumeToolCall(_options: ResumeToolCallOptions) {\n throw new Error(\n \"Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.\",\n );\n }\n\n public respondToToolApproval({\n approvalId,\n approved,\n optionId,\n reason,\n }: RespondToToolApprovalOptions) {\n let message = this.repository\n .getMessages()\n .findLast(\n (m): m is ThreadAssistantMessage =>\n m.role === \"assistant\" &&\n m.content.some(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n ),\n );\n\n if (!message)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n\n if (this.abortController !== null)\n throw new Error(\n \"Tried to respond to a tool approval while a run is in progress\",\n );\n\n if (message.status?.type !== \"requires-action\")\n throw new Error(\n \"Tried to respond to a tool approval on a message whose status is not requires-action\",\n );\n\n const target = message.content.find(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n );\n if (target?.type !== \"tool-call\" || !target.approval)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n if (target.approval.resolution !== undefined)\n throw new Error(\n \"Tried to respond to a tool approval that was cancelled or expired\",\n );\n if (target.approval.approved !== undefined)\n throw new Error(\"Tried to respond to an already decided tool approval\");\n\n const targetApproval = target.approval;\n const newContent = message.content.map((c) => {\n if (c !== target) return c;\n const approval = {\n ...targetApproval,\n approved,\n ...(optionId != null && { optionId }),\n ...(reason != null && { reason }),\n };\n if (approved) return { ...c, approval };\n return {\n ...c,\n approval,\n result: { error: reason || \"Tool approval denied\" },\n isError: true,\n };\n });\n\n message = { ...message, content: newContent };\n const { parentId } = this.repository.getMessage(message.id);\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n if (\n this.repository.headId === message.id &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-thread-runtime-core.js","names":["fromThreadMessageLike","generateId","ChatModelAdapter","ChatModelRunResult","shouldContinue","LocalRuntimeOptionsBase","consumeSuggestionResult","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","ThreadSuggestion","ThreadRuntimeCore","StartRunConfig","ResumeRunConfig","BaseThreadRuntimeCore","AppendMessage","ThreadAssistantMessage","RunConfig","toAssistantError","ModelContextProvider","createMessageQueue","MessageQueueController","EMPTY_QUEUE_ITEMS","QueueItemState","AbortError","Error","name","detach","constructor","message","LocalThreadRuntimeCore","capabilities","switchToBranch","switchBranchDuringRun","edit","delete","reload","cancel","unstable_copy","speech","dictation","voice","attachments","feedback","queue","abortController","AbortController","_queue","_queueRunInFlight","isDisabled","isSendDisabled","_isLoading","isLoading","_suggestions","_suggestionsController","suggestions","adapters","_options","contextProvider","options","__internal_setOptions","_lastRunConfig","_getThreadId","__internal_setGetThreadId","getThreadId","_getInitializePromise","Promise","__internal_setGetInitializePromise","getPromise","extras","undefined","hasUpdates","canSpeak","canDictate","canVoice","canAttach","canFeedback","canDelete","history","canQueue","unstable_enableMessageQueue","run","_runAppend","finally","notifyIdle","catch","subscribe","_notifySubscribers","adapter","clear","_loadPromise","__internal_load","promise","load","resolve","then","repo","repository","import","messages","length","ensureInitialized","resume","bind","unstable_resume","startRun","parentId","headId","sourceId","runConfig","append","isTail","at","id","willRun","role","enqueue","steer","getQueueItems","items","steerQueueItem","queueItemId","removeQueueItem","remove","initPromise","newMessage","type","reason","addOrUpdateMessage","resetHead","deleteMessage","messageId","getMessages","messageIndex","findIndex","m","resumeRun","stream","startConfig","exportExternalState","importExternalState","runCallback","status","content","metadata","unstable_state","state","unstable_annotations","unstable_data","steps","custom","createdAt","Date","_runLoop","_notifyEventSubscribers","notifyBusy","abort","performRoundtrip","unstable_humanToolNames","queueMicrotask","suggestion","signal","promiseOrGenerator","generate","onUpdate","r","initialContent","initialAnnotations","initialData","initialSteps","initialCustom","updateMessage","Partial","newSteps","newAnnotations","newData","annotations","data","timing","maxSteps","unstable_composerMetadata","_","context","getModelContext","chatModel","abortSignal","threadId","unstable_assistantMessageId","unstable_threadId","unstable_parentId","unstable_getMessage","Symbol","asyncIterator","aborted","e","error","cancelRun","addToolResult","toolCallId","result","isError","artifact","messageData","getMessage","added","found","newContent","map","c","resumeToolCall","respondToToolApproval","approvalId","approved","optionId","findLast","some","approval","target","find","resolution","targetApproval"],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"sourcesContent":["import { fromThreadMessageLike } from \"../../runtime/utils/thread-message-like\";\nimport { generateId } from \"../../utils/id\";\nimport type {\n ChatModelAdapter,\n ChatModelRunResult,\n} from \"../../runtime/utils/chat-model-adapter\";\nimport { shouldContinue } from \"./should-continue\";\nimport type { LocalRuntimeOptionsBase } from \"./local-runtime-options\";\nimport { consumeSuggestionResult } from \"../../adapters/suggestion\";\nimport type {\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n StartRunConfig,\n ResumeRunConfig,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport { BaseThreadRuntimeCore } from \"../../runtime/base/base-thread-runtime-core\";\nimport type {\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types/message\";\nimport type { RunConfig } from \"../../types/message\";\nimport { toAssistantError } from \"../../types/error\";\nimport type { ModelContextProvider } from \"../../model-context/types\";\nimport {\n createMessageQueue,\n type MessageQueueController,\n} from \"../../runtime/queue/message-queue\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../store/scopes/queue-item\";\n\nclass AbortError extends Error {\n override name = \"AbortError\";\n detach: boolean;\n\n constructor(detach: boolean, message?: string) {\n super(message);\n this.detach = detach;\n }\n}\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n switchBranchDuringRun: true,\n edit: true,\n delete: false,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n dictation: false,\n voice: false,\n attachments: false,\n feedback: false,\n queue: false,\n };\n\n private abortController: AbortController | null = null;\n\n private _queue: MessageQueueController | null = null;\n private _queueRunInFlight = false;\n\n public readonly isDisabled = false;\n public readonly isSendDisabled = false;\n\n private _isLoading = false;\n public get isLoading() {\n return this._isLoading;\n }\n\n private _suggestions: readonly ThreadSuggestion[] = [];\n private _suggestionsController: AbortController | null = null;\n public get suggestions(): readonly ThreadSuggestion[] {\n return this._suggestions;\n }\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n contextProvider: ModelContextProvider,\n options: LocalRuntimeOptionsBase,\n ) {\n super(contextProvider);\n this.__internal_setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n private _lastRunConfig: RunConfig = {};\n\n private _getThreadId?: () => string | undefined;\n\n public __internal_setGetThreadId(getThreadId: () => string | undefined) {\n this._getThreadId = getThreadId;\n }\n\n private _getInitializePromise?: () => Promise<unknown> | undefined;\n\n public __internal_setGetInitializePromise(\n getPromise: () => Promise<unknown> | undefined,\n ) {\n this._getInitializePromise = getPromise;\n }\n\n public get extras() {\n return undefined;\n }\n\n public __internal_setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canDictate = options.adapters?.dictation !== undefined;\n if (this.capabilities.dictation !== canDictate) {\n this.capabilities.dictation = canDictate;\n hasUpdates = true;\n }\n\n const canVoice = options.adapters?.voice !== undefined;\n if (this.capabilities.voice !== canVoice) {\n this.capabilities.voice = canVoice;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n const canDelete = options.adapters?.history?.delete !== undefined;\n if (this.capabilities.delete !== canDelete) {\n this.capabilities.delete = canDelete;\n hasUpdates = true;\n }\n\n const canQueue = options.unstable_enableMessageQueue === true;\n if (canQueue && !this._queue) {\n this._queue = createMessageQueue({\n run: (message) => {\n // release the queue when the dispatch settles, even if it rejects\n // before reaching startRun's finally, so a failure can't deadlock it\n this._queueRunInFlight = true;\n void this._runAppend(message)\n .finally(() => {\n this._queueRunInFlight = false;\n this._queue?.notifyIdle();\n })\n .catch(() => {});\n },\n });\n this._queue.subscribe(() => this._notifySubscribers());\n } else if (!canQueue && this._queue) {\n this._queue.adapter.clear(\"cancel-run\");\n this._queue = null;\n }\n if (this.capabilities.queue !== canQueue) {\n this.capabilities.queue = canQueue;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n private _loadPromise: Promise<void> | undefined;\n public __internal_load() {\n if (this._loadPromise) return this._loadPromise;\n\n const promise = this.adapters.history?.load() ?? Promise.resolve(null);\n\n this._isLoading = true;\n this._notifySubscribers();\n\n this._loadPromise = promise\n .then((repo) => {\n if (!repo) return;\n this.repository.import(repo);\n if (repo.messages.length > 0) {\n this.ensureInitialized();\n }\n this._notifySubscribers();\n\n const resume = this.adapters.history?.resume?.bind(\n this.adapters.history,\n );\n if (repo.unstable_resume && resume) {\n this.startRun(\n {\n parentId: this.repository.headId,\n sourceId: this.repository.headId,\n runConfig: this._lastRunConfig,\n },\n resume,\n ).catch(() => {});\n }\n })\n .finally(() => {\n this._isLoading = false;\n this._notifySubscribers();\n });\n\n return this._loadPromise;\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);\n const willRun = message.startRun ?? message.role === \"user\";\n if (this._queue && willRun && isTail) {\n this._queue.adapter.enqueue(message, { steer: message.steer ?? false });\n return;\n }\n if (this._queue && !isTail) this._queue.adapter.clear(\"edit\");\n return this._runAppend(message);\n }\n\n public getQueueItems(): readonly QueueItemState[] {\n // Reads can arrive during base-thread construction, before the queue field\n // is assigned, so guard against the unset field.\n return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;\n }\n\n public steerQueueItem(queueItemId: string): void {\n this._queue?.adapter.steer(queueItemId);\n }\n\n public removeQueueItem(queueItemId: string): void {\n this._queue?.adapter.remove(queueItemId);\n }\n\n private async _runAppend(message: AppendMessage): Promise<void> {\n this.ensureInitialized();\n\n const initPromise = this._getInitializePromise?.();\n if (initPromise) {\n await initPromise;\n }\n\n const newMessage = fromThreadMessageLike(message, generateId(), {\n type: \"complete\",\n reason: \"unknown\",\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n this._options.adapters.history?.append({\n parentId: message.parentId,\n message: newMessage,\n ...(message.runConfig !== undefined && { runConfig: message.runConfig }),\n });\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n await this.startRun({\n parentId: newMessage.id,\n sourceId: message.sourceId,\n runConfig: message.runConfig ?? {},\n });\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async deleteMessage(messageId: string): Promise<void> {\n const adapter = this._options.adapters.history;\n if (!adapter?.delete)\n throw new Error(\"Runtime does not support deleting messages.\");\n\n const messages = this.repository.getMessages();\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) throw new Error(\"Message not found.\");\n\n const message = messages[messageIndex]!;\n const parentId = messages[messageIndex - 1]?.id ?? null;\n const items = [{ parentId, message }];\n\n await adapter.delete(items);\n\n this.repository.deleteMessage(messageId);\n this._notifySubscribers();\n }\n\n public resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void> {\n if (!stream)\n throw new Error(\"You must pass a stream parameter to resume runs.\");\n return this.startRun(startConfig, stream);\n }\n\n public exportExternalState(): any {\n throw new Error(\"Runtime does not support exporting external states.\");\n }\n\n public importExternalState(): void {\n throw new Error(\"Runtime does not support importing external states.\");\n }\n\n public async startRun(\n { parentId, runConfig }: StartRunConfig,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this.ensureInitialized();\n\n // add assistant message\n const id = generateId();\n const message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n metadata: {\n unstable_state: this.state,\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n createdAt: new Date(),\n };\n\n return this._runLoop(parentId, message, runConfig, runCallback);\n }\n\n private async _runLoop(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this._notifyEventSubscribers(\"runStart\", {});\n\n try {\n // mark busy for runs not started through the queue (regenerate, resume)\n this._queue?.notifyBusy();\n this._suggestions = [];\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n this._notifySubscribers();\n\n do {\n message = await this.performRoundtrip(\n parentId,\n message,\n runConfig,\n runCallback,\n );\n runCallback = undefined;\n } while (shouldContinue(message, this._options.unstable_humanToolNames));\n } finally {\n this._notifyEventSubscribers(\"runEnd\", {});\n // queue-driven runs release from the driver settle handler; a direct\n // run (regenerate, resume) releases here\n if (!this._queueRunInFlight) {\n queueMicrotask(() => this._queue?.notifyIdle());\n }\n }\n\n if (\n this.adapters.suggestion &&\n message.status?.type !== \"requires-action\"\n ) {\n this._suggestionsController = new AbortController();\n const signal = this._suggestionsController.signal;\n const adapter = this.adapters.suggestion;\n void (async () => {\n try {\n const promiseOrGenerator = adapter.generate({\n messages: this.messages,\n signal,\n });\n await consumeSuggestionResult(promiseOrGenerator, {\n signal,\n onUpdate: (r) => {\n this._suggestions = r;\n this._notifySubscribers();\n },\n });\n } catch {}\n })();\n }\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ) {\n const messages = parentId ? this.repository.getMessages(parentId) : [];\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialAnnotations = message.metadata?.unstable_annotations;\n const initialData = message.metadata?.unstable_data;\n const initialSteps = message.metadata?.steps;\n const initialCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n const newAnnotations = m.metadata?.unstable_annotations;\n const newData = m.metadata?.unstable_data;\n const annotations = newAnnotations\n ? [...(initialAnnotations ?? []), ...newAnnotations]\n : undefined;\n const data = newData ? [...(initialData ?? []), ...newData] : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(m.metadata.unstable_state\n ? { unstable_state: m.metadata.unstable_state }\n : undefined),\n ...(annotations\n ? { unstable_annotations: annotations }\n : undefined),\n ...(data ? { unstable_data: data } : undefined),\n ...(steps ? { steps } : undefined),\n ...(m.metadata?.timing\n ? { timing: m.metadata.timing }\n : undefined),\n ...(m.metadata?.custom\n ? {\n custom: {\n ...(initialCustom ?? {}),\n ...m.metadata.custom,\n },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps ?? 2;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n\n // Switch to the new message branch right after adding it for the first time\n this.repository.resetHead(message.id);\n this._notifySubscribers();\n }\n\n try {\n this._lastRunConfig = runConfig ?? {};\n // unstable_composerMetadata is composer-only (stamped onto the outgoing\n // message); never expose it to the chat-model adapter's run context.\n const { unstable_composerMetadata: _, ...context } =\n this.getModelContext();\n\n runCallback =\n runCallback ??\n this.adapters.chatModel.run.bind(this.adapters.chatModel);\n\n const abortSignal = this.abortController.signal;\n const threadId = this._getThreadId?.();\n const promiseOrGenerator = runCallback({\n messages,\n runConfig: this._lastRunConfig,\n abortSignal,\n context,\n unstable_assistantMessageId: message.id,\n unstable_threadId: threadId,\n unstable_parentId: parentId,\n unstable_getMessage() {\n return message;\n },\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (abortSignal.aborted) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n break;\n }\n\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n if (e instanceof AbortError) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"error\",\n error: toAssistantError(e),\n },\n });\n\n throw e;\n }\n } finally {\n this.abortController = null;\n\n if (\n message.status.type === \"complete\" ||\n message.status.type === \"incomplete\"\n ) {\n await this._options.adapters.history?.append({\n parentId,\n message: message,\n runConfig: this._lastRunConfig,\n });\n }\n }\n return message;\n }\n\n public detach() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(true);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public cancelRun() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(false);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n isError,\n artifact,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n artifact,\n isError,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n // a result may arrive mid-run or on a non-head message; the resume\n // intentionally aborts any in-flight run, unlike respondToToolApproval\n if (\n added &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n\n public resumeToolCall(_options: ResumeToolCallOptions) {\n throw new Error(\n \"Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.\",\n );\n }\n\n public respondToToolApproval({\n approvalId,\n approved,\n optionId,\n reason,\n }: RespondToToolApprovalOptions) {\n let message = this.repository\n .getMessages()\n .findLast(\n (m): m is ThreadAssistantMessage =>\n m.role === \"assistant\" &&\n m.content.some(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n ),\n );\n\n if (!message)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n\n if (this.abortController !== null)\n throw new Error(\n \"Tried to respond to a tool approval while a run is in progress\",\n );\n\n if (message.status?.type !== \"requires-action\")\n throw new Error(\n \"Tried to respond to a tool approval on a message whose status is not requires-action\",\n );\n\n const target = message.content.find(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n );\n if (target?.type !== \"tool-call\" || !target.approval)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n if (target.approval.resolution !== undefined)\n throw new Error(\n \"Tried to respond to a tool approval that was cancelled or expired\",\n );\n if (target.approval.approved !== undefined)\n throw new Error(\"Tried to respond to an already decided tool approval\");\n\n const targetApproval = target.approval;\n const newContent = message.content.map((c) => {\n if (c !== target) return c;\n const approval = {\n ...targetApproval,\n approved,\n ...(optionId != null && { optionId }),\n ...(reason != null && { reason }),\n };\n if (approved) return { ...c, approval };\n return {\n ...c,\n approval,\n result: { error: reason || \"Tool approval denied\" },\n isError: true,\n };\n });\n\n message = { ...message, content: newContent };\n const { parentId } = this.repository.getMessage(message.id);\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n if (\n this.repository.headId === message.id &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n}\n"],"mappings":";;;;;;;;;AAmCA,IAAMwB,aAAN,cAAyBC,MAAM;CAC7B,OAAgB;CAChBE;CAEAC,YAAYD,QAAiBE,SAAkB;EAC7C,MAAMA,OAAO;EACb,KAAKF,SAASA;CAChB;AACF;AAEA,IAAaG,yBAAb,cACUhB,sBAEV;CACE,eAA+B;EAC7BkB,gBAAgB;EAChBC,uBAAuB;EACvBC,MAAM;EACNC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,eAAe;EACfC,QAAQ;EACRC,WAAW;EACXC,OAAO;EACPC,aAAa;EACbC,UAAU;EACVC,OAAO;CACT;CAEA,kBAAkD;CAElD,SAAgD;CAChD,oBAA4B;CAE5B,aAA6B;CAC7B,iBAAiC;CAEjC,aAAqB;CACrB,IAAWQ,YAAY;EACrB,OAAO,KAAKD;CACd;CAEA,eAAoD,CAAA;CACpD,yBAAyD;CACzD,IAAWI,cAA2C;EACpD,OAAO,KAAKF;CACd;CAEA,IAAWG,WAAW;EACpB,OAAO,KAAKC,SAASD;CACvB;CAEA5B,YACE8B,iBACAC,SACA;EACA,MAAMD,eAAe;EACrB,KAAKE,sBAAsBD,OAAO;CACpC;CAEA;CAEA,iBAAoC,CAAC;CAErC;CAEA,0BAAiCK,aAAuC;EACtE,KAAKF,eAAeE;CACtB;CAEA;CAEA,mCACEI,YACA;EACA,KAAKH,wBAAwBG;CAC/B;CAEA,IAAWC,SAAS,CAEpB;CAEA,sBAA6BV,SAAkC;EAC7D,IAAI,KAAKF,aAAaE,SAAS;EAE/B,KAAKF,WAAWE;EAEhB,IAAIY,aAAa;EAEjB,MAAMC,WAAWb,QAAQH,UAAUjB,WAAW+B,KAAAA;EAC9C,IAAI,KAAKvC,aAAaQ,WAAWiC,UAAU;GACzC,KAAKzC,aAAaQ,SAASiC;GAC3BD,aAAa;EACf;EAEA,MAAME,aAAad,QAAQH,UAAUhB,cAAc8B,KAAAA;EACnD,IAAI,KAAKvC,aAAaS,cAAciC,YAAY;GAC9C,KAAK1C,aAAaS,YAAYiC;GAC9BF,aAAa;EACf;EAEA,MAAMG,WAAWf,QAAQH,UAAUf,UAAU6B,KAAAA;EAC7C,IAAI,KAAKvC,aAAaU,UAAUiC,UAAU;GACxC,KAAK3C,aAAaU,QAAQiC;GAC1BH,aAAa;EACf;EAEA,MAAMI,YAAYhB,QAAQH,UAAUd,gBAAgB4B,KAAAA;EACpD,IAAI,KAAKvC,aAAaW,gBAAgBiC,WAAW;GAC/C,KAAK5C,aAAaW,cAAciC;GAChCJ,aAAa;EACf;EAEA,MAAMK,cAAcjB,QAAQH,UAAUb,aAAa2B,KAAAA;EACnD,IAAI,KAAKvC,aAAaY,aAAaiC,aAAa;GAC9C,KAAK7C,aAAaY,WAAWiC;GAC7BL,aAAa;EACf;EAEA,MAAMM,YAAYlB,QAAQH,UAAUsB,SAAS3C,WAAWmC,KAAAA;EACxD,IAAI,KAAKvC,aAAaI,WAAW0C,WAAW;GAC1C,KAAK9C,aAAaI,SAAS0C;GAC3BN,aAAa;EACf;EAEA,MAAMQ,WAAWpB,QAAQqB,gCAAgC;EACzD,IAAID,YAAY,CAAC,KAAKhC,QAAQ;GAC5B,KAAKA,SAAS3B,mBAAmB,EAC/B6D,MAAMpD,YAAY;IAGhB,KAAKmB,oBAAoB;IACzB,KAAUkC,WAAWrD,OAAO,CAAC,CAC1BsD,cAAc;KACb,KAAKnC,oBAAoB;KACzB,KAAKD,QAAQqC,WAAW;IAC1B,CAAC,CAAC,CACDC,YAAY,CAAC,CAAC;GACnB,EACF,CAAC;GACD,KAAKtC,OAAOuC,gBAAgB,KAAKC,mBAAmB,CAAC;EACvD,OAAO,IAAI,CAACR,YAAY,KAAKhC,QAAQ;GACnC,KAAKA,OAAOyC,QAAQC,MAAM,YAAY;GACtC,KAAK1C,SAAS;EAChB;EACA,IAAI,KAAKhB,aAAaa,UAAUmC,UAAU;GACxC,KAAKhD,aAAaa,QAAQmC;GAC1BR,aAAa;EACf;EAEA,IAAIA,YAAY,KAAKgB,mBAAmB;CAC1C;CAEA;CACA,kBAAyB;EACvB,IAAI,KAAKG,cAAc,OAAO,KAAKA;EAEnC,MAAME,UAAU,KAAKpC,SAASsB,SAASe,KAAK,KAAK3B,QAAQ4B,QAAQ,IAAI;EAErE,KAAK3C,aAAa;EAClB,KAAKoC,mBAAmB;EAExB,KAAKG,eAAeE,QACjBG,MAAMC,SAAS;GACd,IAAI,CAACA,MAAM;GACX,KAAKC,WAAWC,OAAOF,IAAI;GAC3B,IAAIA,KAAKG,SAASC,SAAS,GACzB,KAAKC,kBAAkB;GAEzB,KAAKd,mBAAmB;GAExB,MAAMe,SAAS,KAAK9C,SAASsB,SAASwB,QAAQC,KAC5C,KAAK/C,SAASsB,OAChB;GACA,IAAIkB,KAAKQ,mBAAmBF,QAC1B,KAAKG,SACH;IACEC,UAAU,KAAKT,WAAWU;IAC1BC,UAAU,KAAKX,WAAWU;IAC1BE,WAAW,KAAKhD;GAClB,GACAyC,MACF,CAAC,CAACjB,YAAY,CAAC,CAAC;EAEpB,CAAC,CAAC,CACDF,cAAc;GACb,KAAKhC,aAAa;GAClB,KAAKoC,mBAAmB;EAC1B,CAAC;EAEH,OAAO,KAAKG;CACd;CAEA,MAAaoB,OAAOjF,SAAuC;EACzD,MAAMkF,SAASlF,QAAQ6E,cAAc,KAAKP,SAASa,GAAG,EAAE,CAAC,EAAEC,MAAM;EACjE,MAAMC,UAAUrF,QAAQ4E,YAAY5E,QAAQsF,SAAS;EACrD,IAAI,KAAKpE,UAAUmE,WAAWH,QAAQ;GACpC,KAAKhE,OAAOyC,QAAQ4B,QAAQvF,SAAS,EAAEwF,OAAOxF,QAAQwF,SAAS,MAAM,CAAC;GACtE;EACF;EACA,IAAI,KAAKtE,UAAU,CAACgE,QAAQ,KAAKhE,OAAOyC,QAAQC,MAAM,MAAM;EAC5D,OAAO,KAAKP,WAAWrD,OAAO;CAChC;CAEA,gBAAkD;EAGhD,OAAO,KAAKkB,QAAQyC,QAAQ+B,SAASjG;CACvC;CAEA,eAAsBmG,aAA2B;EAC/C,KAAK1E,QAAQyC,QAAQ6B,MAAMI,WAAW;CACxC;CAEA,gBAAuBA,aAA2B;EAChD,KAAK1E,QAAQyC,QAAQmC,OAAOF,WAAW;CACzC;CAEA,MAAcvC,WAAWrD,SAAuC;EAC9D,KAAKwE,kBAAkB;EAEvB,MAAMuB,cAAc,KAAK3D,wBAAwB;EACjD,IAAI2D,aACF,MAAMA;EAGR,MAAMC,aAAa7H,sBAAsB6B,SAAS5B,WAAW,GAAG;GAC9D6H,MAAM;GACNC,QAAQ;EACV,CAAC;EACD,KAAK9B,WAAW+B,mBAAmBnG,QAAQ6E,UAAUmB,UAAU;EAC/D,KAAKpE,SAASD,SAASsB,SAASgC,OAAO;GACrCJ,UAAU7E,QAAQ6E;GAClB7E,SAASgG;GACT,GAAIhG,QAAQgF,cAAcvC,KAAAA,KAAa,EAAEuC,WAAWhF,QAAQgF,UAAU;EACxE,CAAC;EAGD,IADiBhF,QAAQ4E,YAAY5E,QAAQsF,SAAS,QAEpD,MAAM,KAAKV,SAAS;GAClBC,UAAUmB,WAAWZ;GACrBL,UAAU/E,QAAQ+E;GAClBC,WAAWhF,QAAQgF,aAAa,CAAC;EACnC,CAAC;OACI;GACL,KAAKZ,WAAWgC,UAAUJ,WAAWZ,EAAE;GACvC,KAAK1B,mBAAmB;EAC1B;CACF;CAEA,MAAa2C,cAAcC,WAAkC;EAC3D,MAAM3C,UAAU,KAAK/B,SAASD,SAASsB;EACvC,IAAI,CAACU,SAASrD,QACZ,MAAM,IAAIV,MAAM,6CAA6C;EAE/D,MAAM0E,WAAW,KAAKF,WAAWmC,YAAY;EAC7C,MAAMC,eAAelC,SAASmC,WAAWC,MAAMA,EAAEtB,OAAOkB,SAAS;EACjE,IAAIE,iBAAiB,IAAI,MAAM,IAAI5G,MAAM,oBAAoB;EAE7D,MAAMI,UAAUsE,SAASkC;EAEzB,MAAMd,QAAQ,CAAC;GAAEb,UADAP,SAASkC,eAAe,EAAE,EAAEpB,MAAM;GACxBpF;EAAQ,CAAC;EAEpC,MAAM2D,QAAQrD,OAAOoF,KAAK;EAE1B,KAAKtB,WAAWiC,cAAcC,SAAS;EACvC,KAAK5C,mBAAmB;CAC1B;CAEA,UAAiB,EAAEkD,QAAQ,GAAGC,eAA+C;EAC3E,IAAI,CAACD,QACH,MAAM,IAAIhH,MAAM,kDAAkD;EACpE,OAAO,KAAKgF,SAASiC,aAAaD,MAAM;CAC1C;CAEA,sBAAkC;EAChC,MAAM,IAAIhH,MAAM,qDAAqD;CACvE;CAEA,sBAAmC;EACjC,MAAM,IAAIA,MAAM,qDAAqD;CACvE;CAEA,MAAagF,SACX,EAAEC,UAAUG,aACZgC,aACe;EACf,KAAKxC,kBAAkB;EAIvB,MAAMxE,UAAkC;GACtCoF,IAFShH,WAETgH;GACAE,MAAM;GACN2B,QAAQ,EAAEhB,MAAM,UAAU;GAC1BiB,SAAS,CAAA;GACTC,UAAU;IACRC,gBAAgB,KAAKC;IACrBC,sBAAsB,CAAA;IACtBC,eAAe,CAAA;IACfC,OAAO,CAAA;IACPC,QAAQ,CAAC;GACX;GACAC,2BAAW,IAAIC,KAAK;EACtB;EAEA,OAAO,KAAKC,SAAS/C,UAAU7E,SAASgF,WAAWgC,WAAW;CAChE;CAEA,MAAcY,SACZ/C,UACA7E,SACAgF,WACAgC,aACe;EACf,KAAKa,wBAAwB,YAAY,CAAC,CAAC;EAE3C,IAAI;GAEF,KAAK3G,QAAQ4G,WAAW;GACxB,KAAKtG,eAAe,CAAA;GACpB,KAAKC,wBAAwBsG,MAAM;GACnC,KAAKtG,yBAAyB;GAC9B,KAAKiC,mBAAmB;GAExB,GAAG;IACD1D,UAAU,MAAM,KAAKgI,iBACnBnD,UACA7E,SACAgF,WACAgC,WACF;IACAA,cAAcvE,KAAAA;GAChB,SAASlE,eAAeyB,SAAS,KAAK4B,SAASqG,uBAAuB;EACxE,UAAU;GACR,KAAKJ,wBAAwB,UAAU,CAAC,CAAC;GAGzC,IAAI,CAAC,KAAK1G,mBACR+G,qBAAqB,KAAKhH,QAAQqC,WAAW,CAAC;EAElD;EAEA,IACE,KAAK5B,SAASwG,cACdnI,QAAQiH,QAAQhB,SAAS,mBACzB;GACA,KAAKxE,yBAAyB,IAAIR,gBAAgB;GAClD,MAAMmH,SAAS,KAAK3G,uBAAuB2G;GAC3C,MAAMzE,UAAU,KAAKhC,SAASwG;GAC9B,CAAM,YAAY;IAChB,IAAI;KAKF,MAAM1J,wBAJqBkF,QAAQ2E,SAAS;MAC1ChE,UAAU,KAAKA;MACf8D;KACF,CAC8BC,GAAoB;MAChDD;MACAG,WAAWC,MAAM;OACf,KAAKhH,eAAegH;OACpB,KAAK9E,mBAAmB;MAC1B;KACF,CAAC;IACH,QAAQ,CAAC;GACX,EAAA,CAAG;EACL;CACF;CAEA,MAAcsE,iBACZnD,UACA7E,SACAgF,WACAgC,aACA;EACA,MAAM1C,WAAWO,WAAW,KAAKT,WAAWmC,YAAY1B,QAAQ,IAAI,CAAA;EAGpE,KAAK7D,iBAAiB+G,MAAM;EAC5B,KAAK/G,kBAAkB,IAAIC,gBAAgB;EAE3C,MAAMwH,iBAAiBzI,QAAQkH;EAC/B,MAAMwB,qBAAqB1I,QAAQmH,UAAUG;EAC7C,MAAMqB,cAAc3I,QAAQmH,UAAUI;EACtC,MAAMqB,eAAe5I,QAAQmH,UAAUK;EACvC,MAAMqB,gBAAgB7I,QAAQmH,UAAUM;EACxC,MAAMqB,iBAAiBpC,MAAmC;GACxD,MAAMsC,WAAWtC,EAAES,UAAUK;GAC7B,MAAMA,QAAQwB,WACV,CAAC,GAAIJ,gBAAgB,CAAA,GAAK,GAAGI,QAAQ,IACrCvG,KAAAA;GAEJ,MAAMwG,iBAAiBvC,EAAES,UAAUG;GACnC,MAAM4B,UAAUxC,EAAES,UAAUI;GAC5B,MAAM4B,cAAcF,iBAChB,CAAC,GAAIP,sBAAsB,CAAA,GAAK,GAAGO,cAAc,IACjDxG,KAAAA;GACJ,MAAM2G,OAAOF,UAAU,CAAC,GAAIP,eAAe,CAAA,GAAK,GAAGO,OAAO,IAAIzG,KAAAA;GAE9DzC,UAAU;IACR,GAAGA;IACH,GAAI0G,EAAEQ,UACF,EAAEA,SAAS,CAAC,GAAGuB,gBAAgB,GAAI/B,EAAEQ,WAAW,CAAA,CAAG,EAAE,IACrDzE,KAAAA;IACJwE,QAAQP,EAAEO,UAAUjH,QAAQiH;IAC5B,GAAIP,EAAES,WACF,EACEA,UAAU;KACR,GAAGnH,QAAQmH;KACX,GAAIT,EAAES,SAASC,iBACX,EAAEA,gBAAgBV,EAAES,SAASC,eAAe,IAC5C3E,KAAAA;KACJ,GAAI0G,cACA,EAAE7B,sBAAsB6B,YAAY,IACpC1G,KAAAA;KACJ,GAAI2G,OAAO,EAAE7B,eAAe6B,KAAK,IAAI3G,KAAAA;KACrC,GAAI+E,QAAQ,EAAEA,MAAM,IAAI/E,KAAAA;KACxB,GAAIiE,EAAES,UAAUkC,SACZ,EAAEA,QAAQ3C,EAAES,SAASkC,OAAO,IAC5B5G,KAAAA;KACJ,GAAIiE,EAAES,UAAUM,SACZ,EACEA,QAAQ;MACN,GAAIoB,iBAAiB,CAAC;MACtB,GAAGnC,EAAES,SAASM;KAChB,EACF,IACAhF,KAAAA;IACN,EACF,IACAA,KAAAA;GACN;GACA,KAAK2B,WAAW+B,mBAAmBtB,UAAU7E,OAAO;GACpD,KAAK0D,mBAAmB;EAC1B;EAEA,MAAM4F,WAAW,KAAK1H,SAAS0H,YAAY;EAG3C,KADctJ,QAAQmH,UAAUK,OAAOjD,UAAU,MACpC+E,UAAU;GAErBR,cAAc,EACZ7B,QAAQ;IACNhB,MAAM;IACNC,QAAQ;GACV,EACF,CAAC;GACD,OAAOlG;EACT,OAAO;GACL8I,cAAc,EACZ7B,QAAQ,EACNhB,MAAM,UACR,EACF,CAAC;GAGD,KAAK7B,WAAWgC,UAAUpG,QAAQoF,EAAE;GACpC,KAAK1B,mBAAmB;EAC1B;EAEA,IAAI;GACF,KAAK1B,iBAAiBgD,aAAa,CAAC;GAGpC,MAAM,EAAEuE,2BAA2BC,GAAG,GAAGC,YACvC,KAAKC,gBAAgB;GAEvB1C,cACEA,eACA,KAAKrF,SAASgI,UAAUvG,IAAIsB,KAAK,KAAK/C,SAASgI,SAAS;GAE1D,MAAMC,cAAc,KAAK5I,gBAAgBoH;GACzC,MAAMyB,WAAW,KAAK5H,eAAe;GACrC,MAAMoG,qBAAqBrB,YAAY;IACrC1C;IACAU,WAAW,KAAKhD;IAChB4H;IACAH;IACAK,6BAA6B9J,QAAQoF;IACrC2E,mBAAmBF;IACnBG,mBAAmBnF;IACnBoF,sBAAsB;KACpB,OAAOjK;IACT;GACF,CAAC;GAGD,IAAIkK,OAAOC,iBAAiB9B,oBAC1B,WAAW,MAAMG,KAAKH,oBAAoB;IACxC,IAAIuB,YAAYQ,SAAS;KACvBtB,cAAc,EACZ7B,QAAQ;MAAEhB,MAAM;MAAcC,QAAQ;KAAY,EACpD,CAAC;KACD;IACF;IAEA4C,cAAcN,CAAC;GACjB;QAEAM,cAAc,MAAMT,kBAAkB;GAGxC,IAAIrI,QAAQiH,OAAOhB,SAAS,WAC1B6C,cAAc,EACZ7B,QAAQ;IAAEhB,MAAM;IAAYC,QAAQ;GAAU,EAChD,CAAC;EAEL,SAASmE,GAAG;GACV,IAAIA,aAAa1K,YACfmJ,cAAc,EACZ7B,QAAQ;IAAEhB,MAAM;IAAcC,QAAQ;GAAY,EACpD,CAAC;QACI,IAAImE,aAAazK,SAASyK,EAAExK,SAAS,cAC1CiJ,cAAc,EACZ7B,QAAQ;IAAEhB,MAAM;IAAcC,QAAQ;GAAY,EACpD,CAAC;QACI;IACL4C,cAAc,EACZ7B,QAAQ;KACNhB,MAAM;KACNC,QAAQ;KACRoE,OAAOjL,iBAAiBgL,CAAC;IAC3B,EACF,CAAC;IAED,MAAMA;GACR;EACF,UAAU;GACR,KAAKrJ,kBAAkB;GAEvB,IACEhB,QAAQiH,OAAOhB,SAAS,cACxBjG,QAAQiH,OAAOhB,SAAS,cAExB,MAAM,KAAKrE,SAASD,SAASsB,SAASgC,OAAO;IAC3CJ;IACS7E;IACTgF,WAAW,KAAKhD;GAClB,CAAC;EAEL;EACA,OAAOhC;CACT;CAEA,SAAgB;EACd,KAAKkB,QAAQyC,QAAQC,MAAM,YAAY;EACvC,MAAM0G,QAAQ,IAAI3K,WAAW,IAAI;EACjC,KAAKqB,iBAAiB+G,MAAMuC,KAAK;EACjC,KAAKtJ,kBAAkB;EACvB,KAAKS,wBAAwBsG,MAAM;EACnC,KAAKtG,yBAAyB;CAChC;CAEA,YAAmB;EACjB,KAAKP,QAAQyC,QAAQC,MAAM,YAAY;EACvC,MAAM0G,QAAQ,IAAI3K,WAAW,KAAK;EAClC,KAAKqB,iBAAiB+G,MAAMuC,KAAK;EACjC,KAAKtJ,kBAAkB;EACvB,KAAKS,wBAAwBsG,MAAM;EACnC,KAAKtG,yBAAyB;CAChC;CAEA,cAAqB,EACnB6E,WACAmE,YACAC,QACAC,SACAC,YACuB;EACvB,MAAMC,cAAc,KAAKzG,WAAW0G,WAAWxE,SAAS;EACxD,MAAM,EAAEzB,aAAagG;EACrB,IAAI,EAAE7K,YAAY6K;EAElB,IAAI7K,QAAQsF,SAAS,aACnB,MAAM,IAAI1F,MAAM,mDAAmD;EAErE,IAAImL,QAAQ;EACZ,IAAIC,QAAQ;EACZ,MAAMC,aAAajL,QAAQkH,QAAQgE,KAAKC,MAAM;GAC5C,IAAIA,EAAElF,SAAS,aAAa,OAAOkF;GACnC,IAAIA,EAAEV,eAAeA,YAAY,OAAOU;GACxCH,QAAQ;GACR,IAAI,CAACG,EAAET,QAAQK,QAAQ;GACvB,OAAO;IACL,GAAGI;IACHT;IACAE;IACAD;GACF;EACF,CAAC;EAED,IAAI,CAACK,OACH,MAAM,IAAIpL,MAAM,oDAAoD;EAEtEI,UAAU;GACR,GAAGA;GACHkH,SAAS+D;EACX;EACA,KAAK7G,WAAW+B,mBAAmBtB,UAAU7E,OAAO;EACpD,KAAK0D,mBAAmB;EAIxB,IACEqH,SACAxM,eAAeyB,SAAS,KAAK4B,SAASqG,uBAAuB,GAE7D,KAAKL,SAAS/C,UAAU7E,SAAS,KAAKgC,cAAc,CAAC,CAACwB,YAAY,CAAC,CAAC;CAExE;CAEA,eAAsB5B,UAAiC;EACrD,MAAM,IAAIhC,MACR,qKACF;CACF;CAEA,sBAA6B,EAC3B0L,YACAC,UACAC,UACAtF,UAC+B;EAC/B,IAAIlG,UAAU,KAAKoE,WAChBmC,YAAY,CAAC,CACbkF,UACE/E,MACCA,EAAEpB,SAAS,eACXoB,EAAEQ,QAAQwE,MACPP,MAAMA,EAAElF,SAAS,eAAekF,EAAEQ,UAAUvG,OAAOkG,UACtD,CACJ;EAEF,IAAI,CAACtL,SACH,MAAM,IAAIJ,MAAM,kDAAkD;EAEpE,IAAI,KAAKoB,oBAAoB,MAC3B,MAAM,IAAIpB,MACR,gEACF;EAEF,IAAII,QAAQiH,QAAQhB,SAAS,mBAC3B,MAAM,IAAIrG,MACR,sFACF;EAEF,MAAMgM,SAAS5L,QAAQkH,QAAQ2E,MAC5BV,MAAMA,EAAElF,SAAS,eAAekF,EAAEQ,UAAUvG,OAAOkG,UACtD;EACA,IAAIM,QAAQ3F,SAAS,eAAe,CAAC2F,OAAOD,UAC1C,MAAM,IAAI/L,MAAM,kDAAkD;EACpE,IAAIgM,OAAOD,SAASG,eAAerJ,KAAAA,GACjC,MAAM,IAAI7C,MACR,mEACF;EACF,IAAIgM,OAAOD,SAASJ,aAAa9I,KAAAA,GAC/B,MAAM,IAAI7C,MAAM,sDAAsD;EAExE,MAAMmM,iBAAiBH,OAAOD;EAC9B,MAAMV,aAAajL,QAAQkH,QAAQgE,KAAKC,MAAM;GAC5C,IAAIA,MAAMS,QAAQ,OAAOT;GACzB,MAAMQ,WAAW;IACf,GAAGI;IACHR;IACA,GAAIC,YAAY,QAAQ,EAAEA,SAAS;IACnC,GAAItF,UAAU,QAAQ,EAAEA,OAAO;GACjC;GACA,IAAIqF,UAAU,OAAO;IAAE,GAAGJ;IAAGQ;GAAS;GACtC,OAAO;IACL,GAAGR;IACHQ;IACAjB,QAAQ,EAAEJ,OAAOpE,UAAU,uBAAuB;IAClDyE,SAAS;GACX;EACF,CAAC;EAED3K,UAAU;GAAE,GAAGA;GAASkH,SAAS+D;EAAW;EAC5C,MAAM,EAAEpG,aAAa,KAAKT,WAAW0G,WAAW9K,QAAQoF,EAAE;EAC1D,KAAKhB,WAAW+B,mBAAmBtB,UAAU7E,OAAO;EACpD,KAAK0D,mBAAmB;EAExB,IACE,KAAKU,WAAWU,WAAW9E,QAAQoF,MACnC7G,eAAeyB,SAAS,KAAK4B,SAASqG,uBAAuB,GAE7D,KAAKL,SAAS/C,UAAU7E,SAAS,KAAKgC,cAAc,CAAC,CAACwB,YAAY,CAAC,CAAC;CAExE;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"should-continue.d.ts","names":[],"sources":["../../../src/runtimes/local/should-continue.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"should-continue.d.ts","names":[],"sources":["../../../src/runtimes/local/should-continue.ts"],"mappings":";;cAEa,iBACX,QAAQ,wBACR"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
const shouldContinue = (result, humanToolNames) => {
|
|
3
3
|
if (result.status?.type !== "requires-action" || result.status.reason !== "tool-calls") return false;
|
|
4
4
|
if (result.content.some((c) => c.type === "tool-call" && c.result === void 0 && c.approval !== void 0 && c.approval.approved === void 0 && c.approval.resolution === void 0)) return false;
|
|
5
|
-
if (humanToolNames === void 0) return result.content.every((c) => c.type !== "tool-call" ||
|
|
6
|
-
return result.content.every((c) => c.type !== "tool-call" ||
|
|
5
|
+
if (humanToolNames === void 0) return result.content.every((c) => c.type !== "tool-call" || c.result !== void 0 || c.approval !== void 0);
|
|
6
|
+
return result.content.every((c) => c.type !== "tool-call" || c.result !== void 0 || c.approval !== void 0 || !humanToolNames.includes(c.toolName));
|
|
7
7
|
};
|
|
8
8
|
//#endregion
|
|
9
9
|
export { shouldContinue };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"should-continue.js","names":["ThreadAssistantMessage","shouldContinue","result","humanToolNames","status","type","reason","hasPendingApproval","content","some","c","undefined","approval","approved","resolution","every","includes","toolName"],"sources":["../../../src/runtimes/local/should-continue.ts"],"sourcesContent":["import type { ThreadAssistantMessage } from \"../../types/message\";\n\nexport const shouldContinue = (\n result: ThreadAssistantMessage,\n humanToolNames: string[] | undefined,\n) => {\n if (\n result.status?.type !== \"requires-action\" ||\n result.status.reason !== \"tool-calls\"\n )\n return false;\n\n const hasPendingApproval = result.content.some(\n (c) =>\n c.type === \"tool-call\" &&\n c.result === undefined &&\n c.approval !== undefined &&\n c.approval.approved === undefined &&\n c.approval.resolution === undefined,\n );\n if (hasPendingApproval) return false;\n\n // TODO legacy behavior -- make specifying human tool names required\n if (humanToolNames === undefined) {\n return result.content.every(\n (c)
|
|
1
|
+
{"version":3,"file":"should-continue.js","names":["ThreadAssistantMessage","shouldContinue","result","humanToolNames","status","type","reason","hasPendingApproval","content","some","c","undefined","approval","approved","resolution","every","includes","toolName"],"sources":["../../../src/runtimes/local/should-continue.ts"],"sourcesContent":["import type { ThreadAssistantMessage } from \"../../types/message\";\n\nexport const shouldContinue = (\n result: ThreadAssistantMessage,\n humanToolNames: string[] | undefined,\n) => {\n if (\n result.status?.type !== \"requires-action\" ||\n result.status.reason !== \"tool-calls\"\n )\n return false;\n\n const hasPendingApproval = result.content.some(\n (c) =>\n c.type === \"tool-call\" &&\n c.result === undefined &&\n c.approval !== undefined &&\n c.approval.approved === undefined &&\n c.approval.resolution === undefined,\n );\n if (hasPendingApproval) return false;\n\n // TODO legacy behavior -- make specifying human tool names required\n if (humanToolNames === undefined) {\n return result.content.every(\n (c) =>\n c.type !== \"tool-call\" ||\n c.result !== undefined ||\n c.approval !== undefined,\n );\n }\n\n return result.content.every(\n (c) =>\n c.type !== \"tool-call\" ||\n c.result !== undefined ||\n c.approval !== undefined ||\n !humanToolNames.includes(c.toolName),\n );\n};\n"],"mappings":";AAEA,MAAaC,kBACXC,QACAC,mBACG;CACH,IACED,OAAOE,QAAQC,SAAS,qBACxBH,OAAOE,OAAOE,WAAW,cAEzB,OAAO;CAUT,IAR2BJ,OAAOM,QAAQC,MACvCC,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,KACfD,EAAEE,SAASC,aAAaF,KAAAA,KACxBD,EAAEE,SAASE,eAAeH,KAAAA,CAE1BJ,GAAoB,OAAO;CAG/B,IAAIJ,mBAAmBQ,KAAAA,GACrB,OAAOT,OAAOM,QAAQO,OACnBL,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,CACnB;CAGF,OAAOT,OAAOM,QAAQO,OACnBL,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,KACf,CAACR,eAAea,SAASN,EAAEO,QAAQ,CACvC;AACF"}
|
|
@@ -2,7 +2,6 @@ import { ThreadMessage } from "../../types/message.js";
|
|
|
2
2
|
import { Unsubscribe } from "../../types/unsubscribe.js";
|
|
3
3
|
import { ThreadRuntimeCore } from "../../runtime/interfaces/thread-runtime-core.js";
|
|
4
4
|
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
5
|
-
|
|
6
5
|
//#region src/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts
|
|
7
6
|
declare class ReadonlyThreadRuntimeCore extends BaseSubscribable implements ThreadRuntimeCore {
|
|
8
7
|
private _messages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadonlyThreadRuntimeCore.d.ts","names":[],"sources":["../../../src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReadonlyThreadRuntimeCore.d.ts","names":[],"sources":["../../../src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts"],"mappings":";;;;;cASa,kCACH,4BACG;UAEH;MAEJ,qBAAQ;EAIZ,YAAY,mBAAmB;EAM/B,eAAe;;;;;EAUf,YAAY;EAMZ;EAIA;EAIA;EAIA;EAIA;EAIA;EAEA;EAIA;EAIA;EAIA;EAIA;EAEA;EAIA;EAEA;EACA,4BAA2B;EAE3B;EAIA;EAIA;EAIA;EAIA;EAIA;EAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+EA;EAIA;EAIA;EACA;EAEA;;;;;;;;;;;;;;;EAgBA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAIA;;;;;;EASA;EAIA,eAAe"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RemoteThreadInitializeResponse, RemoteThreadListAdapter, RemoteThreadListResponse, RemoteThreadMetadata } from "../types.js";
|
|
2
2
|
import { AssistantStream } from "assistant-stream";
|
|
3
|
-
|
|
4
3
|
//#region src/runtimes/remote-thread-list/adapter/in-memory.d.ts
|
|
5
4
|
declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
|
|
6
5
|
list(): Promise<RemoteThreadListResponse>;
|
|
@@ -11,7 +10,7 @@ declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
|
|
|
11
10
|
delete(): Promise<void>;
|
|
12
11
|
initialize(threadId: string): Promise<RemoteThreadInitializeResponse>;
|
|
13
12
|
generateTitle(): Promise<AssistantStream>;
|
|
14
|
-
fetch(
|
|
13
|
+
fetch(threadId: string): Promise<RemoteThreadMetadata>;
|
|
15
14
|
}
|
|
16
15
|
//#endregion
|
|
17
16
|
export { InMemoryThreadListAdapter };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"mappings":";;;cAQa,qCAAqC;EAChD,QAAQ,QAAQ;EAMhB,UAAU;EAIV,gBAAgB;EAIhB,WAAW;EAIX,aAAa;EAIb,UAAU;EAIV,WAAW,mBAAmB,QAAQ;EAItC,iBAAiB,QAAQ;EAUzB,MAAM,mBAAmB,QAAQ"}
|
|
@@ -25,10 +25,12 @@ var InMemoryThreadListAdapter = class {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
generateTitle() {
|
|
28
|
-
return Promise.resolve(new ReadableStream()
|
|
28
|
+
return Promise.resolve(new ReadableStream({ start(controller) {
|
|
29
|
+
controller.close();
|
|
30
|
+
} }));
|
|
29
31
|
}
|
|
30
|
-
fetch(
|
|
31
|
-
return Promise.reject(/* @__PURE__ */ new Error(
|
|
32
|
+
fetch(threadId) {
|
|
33
|
+
return Promise.reject(/* @__PURE__ */ new Error(`Thread "${threadId}" not found in in-memory thread list.`));
|
|
32
34
|
}
|
|
33
35
|
};
|
|
34
36
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory.js","names":["AssistantStream","AssistantStreamChunk","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","InMemoryThreadListAdapter","list","Promise","resolve","threads","rename","updateCustom","archive","unarchive","delete","initialize","threadId","remoteId","externalId","undefined","generateTitle","ReadableStream","
|
|
1
|
+
{"version":3,"file":"in-memory.js","names":["AssistantStream","AssistantStreamChunk","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","InMemoryThreadListAdapter","list","Promise","resolve","threads","rename","updateCustom","archive","unarchive","delete","initialize","threadId","remoteId","externalId","undefined","generateTitle","ReadableStream","start","controller","close","fetch","reject","Error"],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"sourcesContent":["import type { AssistantStream, AssistantStreamChunk } from \"assistant-stream\";\nimport type {\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n} from \"../types\";\n\nexport class InMemoryThreadListAdapter implements RemoteThreadListAdapter {\n list(): Promise<RemoteThreadListResponse> {\n return Promise.resolve({\n threads: [],\n });\n }\n\n rename(): Promise<void> {\n return Promise.resolve();\n }\n\n updateCustom(): Promise<void> {\n return Promise.resolve();\n }\n\n archive(): Promise<void> {\n return Promise.resolve();\n }\n\n unarchive(): Promise<void> {\n return Promise.resolve();\n }\n\n delete(): Promise<void> {\n return Promise.resolve();\n }\n\n initialize(threadId: string): Promise<RemoteThreadInitializeResponse> {\n return Promise.resolve({ remoteId: threadId, externalId: undefined });\n }\n\n generateTitle(): Promise<AssistantStream> {\n return Promise.resolve(\n new ReadableStream<AssistantStreamChunk>({\n start(controller) {\n controller.close();\n },\n }),\n );\n }\n\n fetch(threadId: string): Promise<RemoteThreadMetadata> {\n return Promise.reject(\n new Error(`Thread \"${threadId}\" not found in in-memory thread list.`),\n );\n }\n}\n"],"mappings":";AAQA,IAAaM,4BAAb,MAA0E;CACxEC,OAA0C;EACxC,OAAOC,QAAQC,QAAQ,EACrBC,SAAS,CAAA,EACX,CAAC;CACH;CAEAC,SAAwB;EACtB,OAAOH,QAAQC,QAAQ;CACzB;CAEAG,eAA8B;EAC5B,OAAOJ,QAAQC,QAAQ;CACzB;CAEAI,UAAyB;EACvB,OAAOL,QAAQC,QAAQ;CACzB;CAEAK,YAA2B;EACzB,OAAON,QAAQC,QAAQ;CACzB;CAEAM,SAAwB;EACtB,OAAOP,QAAQC,QAAQ;CACzB;CAEAO,WAAWC,UAA2D;EACpE,OAAOT,QAAQC,QAAQ;GAAES,UAAUD;GAAUE,YAAYC,KAAAA;EAAU,CAAC;CACtE;CAEAC,gBAA0C;EACxC,OAAOb,QAAQC,QACb,IAAIa,eAAqC,EACvCC,MAAMC,YAAY;GAChBA,WAAWC,MAAM;EACnB,EACF,CAAC,CACH;CACF;CAEAC,MAAMT,UAAiD;EACrD,OAAOT,QAAQmB,uBACb,IAAIC,MAAM,WAAWX,SAAQ,sCAAuC,CACtE;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-thread-core.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/empty-thread-core.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"empty-thread-core.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/empty-thread-core.ts"],"mappings":";;cAKa,mBAAmB"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
2
|
-
|
|
3
2
|
//#region src/runtimes/remote-thread-list/optimistic-state.d.ts
|
|
4
3
|
type Transform<TState, TResult> = {
|
|
5
|
-
execute: () => Promise<TResult>;
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
execute: () => Promise<TResult>;
|
|
5
|
+
/** transform the state after the promise resolves */
|
|
6
|
+
then?: (state: TState, result: TResult) => TState;
|
|
7
|
+
/** transform the state during resolution and afterwards */
|
|
8
|
+
optimistic?: (state: TState) => TState;
|
|
9
|
+
/** transform the state only while loading */
|
|
8
10
|
loading?: (state: TState, task: Promise<TResult>) => TState;
|
|
9
11
|
};
|
|
10
12
|
declare class OptimisticState<TState> extends BaseSubscribable {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimistic-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/optimistic-state.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"optimistic-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/optimistic-state.ts"],"mappings":";;KAEK,UAAU,QAAQ;EACrB,eAAe,QAAQ;;EAGvB,QAAQ,OAAO,QAAQ,QAAQ,YAAY;;EAG3C,cAAc,OAAO,WAAW;;EAGhC,WAAW,OAAO,QAAQ,MAAM,QAAQ,aAAa;;cAiB1C,gBAAgB,gBAAgB;mBAC1B;;;;;;;;;mBAWA;UAET;UACA;cAEW,cAAc;UAMzB;MAWG,aAAa;MAIb,SAAS;EAIb,OAAO,OAAO;EAKR,iBAAiB,SAC5B,WAAW,UAAU,QAAQ,WAC5B,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-thread-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/remote-thread-state.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote-thread-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/remote-thread-state.ts"],"mappings":";;KAKY;WAEG;WACA;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA,gBAAgB;WAChB,SAAS;;KAGZ;EAA+B;;iBAE3B,sBAAsB,aAAa;cAItC,kBAAmB;KAG3B;EACH;EACA;EACA,aAAa,eAAe;EAC5B,YAAY,OAAO,mBAAmB;;cAG3B,kBACX,kBAAkB,wBAClB,KAAK,wBACJ;KAoCS;WACD;WACA;WACA;WACA;WACA;WACA;WACA,aAAa,SAAS,eAAe;WACrC,YAAY,SAAS,OAAO,mBAAmB;;cAG7C,gBACX,OAAO,mBACP,+BAA0B;cAOf,sBACX,OAAO,mBACP,4BACA,kDAA6C"}
|
|
@@ -2,7 +2,6 @@ import { ThreadMessage } from "../../types/message.js";
|
|
|
2
2
|
import { AssistantRuntime } from "../../runtime/api/assistant-runtime.js";
|
|
3
3
|
import { AssistantStream } from "assistant-stream";
|
|
4
4
|
import { ComponentType, PropsWithChildren } from "react";
|
|
5
|
-
|
|
6
5
|
//#region src/runtimes/remote-thread-list/types.d.ts
|
|
7
6
|
type RemoteThreadInitializeResponse = {
|
|
8
7
|
remoteId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/types.ts"],"mappings":";;;;;KAKY;EACV;EACA;;KAGU;WACD;WACA;WACA;WACA;WACA,gBAAgB;WAChB,SAAS;;KAGR;EACV,SAAS;EACT;;KAGU;EACV;;KAGU;EACV,KAAK,SAAS,8BAA8B,QAAQ;EAEpD,OAAO,kBAAkB,mBAAmB;EAC5C,cACE,kBACA,QAAQ,sCACP;EACH,QAAQ,mBAAmB;EAC3B,UAAU,mBAAmB;EAC7B,OAAO,mBAAmB;EAC1B,WAAW,mBAAmB,QAAQ;EACtC,cACE,kBACA,4BAA4B,kBAC3B,QAAQ;EACX,MAAM,mBAAmB,QAAQ;;;;;;;;;;;EAYjC,oBAAoB,cAAc;;KAGxB;EACV,mBAAmB;EACnB,SAAS;;;;;;;;EAST;;;;;;EAOA;;;;;;;;;;;;EAaA,qBAAqB;;;;;;EAOrB"}
|