@assistant-ui/core 0.2.14 → 0.2.15
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.js.map +1 -1
- package/dist/adapters/directive-formatter.js.map +1 -1
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.js.map +1 -1
- package/dist/internal.d.ts +2 -1
- package/dist/internal.js +2 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.js.map +1 -1
- package/dist/model-context/registry.js.map +1 -1
- package/dist/model-context/tool.js.map +1 -1
- package/dist/model-context/types.d.ts +1 -0
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/model-context/types.js.map +1 -1
- package/dist/react/AssistantProvider.js +1 -0
- package/dist/react/AssistantProvider.js.map +1 -1
- package/dist/react/AssistantRuntimeProvider.js +18 -6
- package/dist/react/AssistantRuntimeProvider.js.map +1 -1
- package/dist/react/RuntimeAdapter.js +26 -7
- package/dist/react/RuntimeAdapter.js.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +29 -7
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.js.map +1 -1
- package/dist/react/client/DataRenderers.js +54 -35
- package/dist/react/client/DataRenderers.js.map +1 -1
- package/dist/react/client/Interactables.js +67 -67
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +118 -55
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.js.map +1 -1
- package/dist/react/model-context/define-toolkit.js.map +1 -1
- package/dist/react/model-context/external-tool.js.map +1 -1
- package/dist/react/model-context/human-tool.js.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.js.map +1 -1
- package/dist/react/model-context/makeAssistantTool.js.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/provider-tool.js.map +1 -1
- package/dist/react/model-context/stub-tool.js.map +1 -1
- package/dist/react/model-context/toolbox.js.map +1 -1
- package/dist/react/model-context/useAssistantContext.js.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.js +27 -8
- package/dist/react/model-context/useAssistantDataUI.js.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.js +33 -10
- package/dist/react/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/react/model-context/useAssistantInteractable.js.map +1 -1
- package/dist/react/model-context/useAssistantTool.js +59 -17
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.js +30 -9
- package/dist/react/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
- package/dist/react/model-context/useInlineRender.js +35 -8
- package/dist/react/model-context/useInlineRender.js.map +1 -1
- package/dist/react/model-context/useInteractableState.js +65 -19
- package/dist/react/model-context/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.js +42 -14
- package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.js +59 -22
- package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js +25 -7
- package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.js +49 -13
- package/dist/react/primitive-hooks/useActionBarFeedback.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js +25 -7
- package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js +28 -9
- package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +25 -7
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js +27 -11
- package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js +27 -11
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js +24 -8
- package/dist/react/primitive-hooks/useComposerAddAttachment.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js +25 -7
- package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js +25 -7
- package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js +25 -7
- package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js +18 -4
- package/dist/react/primitive-hooks/useEditComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js +25 -7
- package/dist/react/primitive-hooks/useEditComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.js +41 -9
- package/dist/react/primitive-hooks/useMessageBranching.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.js +4 -1
- package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js +25 -7
- package/dist/react/primitive-hooks/useMessageReload.js.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +31 -13
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.js +4 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.js +4 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js +25 -7
- package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js +18 -4
- package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.js +4 -1
- package/dist/react/primitive-hooks/useThreadMessages.js.map +1 -1
- package/dist/react/primitive-hooks/useVoice.js +63 -13
- package/dist/react/primitive-hooks/useVoice.js.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +42 -7
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js +67 -16
- package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.js +30 -9
- package/dist/react/primitives/composer/ComposerIf.js.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +55 -13
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +68 -16
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +649 -181
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.js +18 -2
- package/dist/react/primitives/message/MessageQuote.js.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.js +6 -2
- package/dist/react/primitives/messagePart/MessagePartInProgress.js.map +1 -1
- package/dist/react/primitives/part/PartMessages.js +46 -14
- package/dist/react/primitives/part/PartMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +67 -10
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +50 -10
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js +55 -14
- package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.js +15 -2
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.js.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.js +57 -12
- package/dist/react/providers/AttachmentByIndexProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js +33 -11
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +29 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.js +49 -19
- package/dist/react/providers/MessageByIndexProvider.js.map +1 -1
- package/dist/react/providers/PartByIndexProvider.js +29 -6
- package/dist/react/providers/PartByIndexProvider.js.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.js +29 -6
- package/dist/react/providers/QueueItemByIndexProvider.js.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js +83 -28
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.js +29 -6
- package/dist/react/providers/SuggestionByIndexProvider.js.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +73 -25
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.js +30 -6
- package/dist/react/providers/ThreadListItemByIndexProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.js +28 -5
- package/dist/react/providers/ThreadListItemRuntimeProvider.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +19 -4
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.js +27 -10
- package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +10 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +17 -17
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +67 -30
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +44 -10
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.js +17 -12
- package/dist/react/runtimes/useExternalStoreSharedOptions.js.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +34 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +5 -6
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.js.map +1 -1
- package/dist/react/utils/groupParts.js.map +1 -1
- package/dist/runtime/api/assistant-runtime.js.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +3 -9
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +3 -6
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +2 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/external-store-message.js.map +1 -1
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +15 -0
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -0
- package/dist/runtime/utils/resolveToolApprovalResponse.js +35 -0
- package/dist/runtime/utils/resolveToolApprovalResponse.js.map +1 -0
- package/dist/runtime/utils/thread-message-like.d.ts +5 -1
- 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.js.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.js.map +1 -1
- package/dist/runtimes/local/local-runtime-core.js.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +1 -0
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +9 -7
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.js +1 -1
- package/dist/runtimes/local/should-continue.js.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.js.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.js +37 -19
- package/dist/store/clients/chain-of-thought-client.js.map +1 -1
- package/dist/store/clients/model-context-client.js +64 -14
- package/dist/store/clients/model-context-client.js.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +94 -53
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.js.map +1 -1
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/suggestions.js +59 -21
- package/dist/store/clients/suggestions.js.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +176 -69
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.js +29 -6
- package/dist/store/runtime-clients/attachment-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +188 -68
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +7 -0
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -0
- package/dist/store/runtime-clients/liveRef.js +8 -0
- package/dist/store/runtime-clients/liveRef.js.map +1 -0
- package/dist/store/runtime-clients/message-part-runtime-client.js +47 -8
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +214 -52
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.js +69 -25
- package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.js +137 -34
- package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +192 -71
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.js +2 -9
- package/dist/store/runtime-clients/useSubscribable.js.map +1 -1
- package/dist/store/scopes/part.d.ts +5 -6
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.js.map +1 -1
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
- package/dist/types/message.d.ts +38 -5
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/composite-context-provider.js.map +1 -1
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/json/is-json-equal.js.map +1 -1
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/text.js.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +4 -0
- package/src/internal.ts +1 -0
- package/src/model-context/types.ts +1 -0
- package/src/react/AssistantProvider.tsx +7 -0
- package/src/react/client/Tools.ts +3 -5
- package/src/react/runtimes/external-message-converter.ts +3 -1
- package/src/react/types/MessagePartComponentTypes.ts +5 -5
- package/src/runtime/api/message-part-runtime.ts +14 -11
- package/src/runtime/interfaces/thread-runtime-core.ts +2 -0
- package/src/runtime/utils/resolveToolApprovalResponse.test.ts +91 -0
- package/src/runtime/utils/resolveToolApprovalResponse.ts +55 -0
- package/src/runtime/utils/thread-message-like.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.test.ts +61 -2
- package/src/runtimes/local/local-thread-runtime-core.ts +17 -8
- package/src/runtimes/local/should-continue.ts +2 -1
- package/src/store/clients/suggestions.ts +3 -5
- package/src/store/clients/thread-message-client.ts +13 -14
- package/src/store/runtime-clients/composer-runtime-client.ts +18 -21
- package/src/store/runtime-clients/liveRef.ts +5 -0
- package/src/store/runtime-clients/message-runtime-client.ts +16 -21
- package/src/store/runtime-clients/thread-list-runtime-client.ts +3 -5
- package/src/store/runtime-clients/thread-runtime-client.ts +9 -10
- package/src/store/runtime-clients/useSubscribable.ts +2 -10
- package/src/store/scopes/part.ts +5 -2
- package/src/types/message.ts +45 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-list-runtime-client.js","names":[],"sources":["../../../src/store/runtime-clients/thread-list-runtime-client.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useResource, withKey, resource } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n useClientResource,\n} from \"@assistant-ui/store\";\nimport type { ThreadListRuntime } from \"../../runtime/api/thread-list-runtime\";\nimport type { AssistantRuntime } from \"../../runtime/api/assistant-runtime\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport { ThreadListItemClient } from \"./thread-list-item-runtime-client\";\nimport { ThreadClient } from \"./thread-runtime-client\";\nimport type { ThreadsState } from \"../scopes/threads\";\n\nconst useThreadListItemClientById = ({\n runtime,\n id,\n}: {\n runtime: ThreadListRuntime;\n id: string;\n}) => {\n const threadListItemRuntime = useMemo(\n () => runtime.getItemById(id),\n [runtime, id],\n );\n return useResource(\n ThreadListItemClient({\n runtime: threadListItemRuntime,\n }),\n );\n};\n\nconst ThreadListItemClientById = resource(useThreadListItemClientById);\n\nconst useThreadListClient = ({\n runtime,\n __internal_assistantRuntime,\n}: {\n runtime: ThreadListRuntime;\n __internal_assistantRuntime: AssistantRuntime;\n}): ClientOutput<\"threads\"> => {\n const runtimeState = useSubscribable(runtime);\n\n const main = useClientResource(\n ThreadClient({\n runtime: runtime.main,\n }),\n );\n const threadItems = useClientLookup(\n
|
|
1
|
+
{"version":3,"file":"thread-list-runtime-client.js","names":["useMemo","useResource","withKey","resource","ClientOutput","useClientLookup","useClientResource","ThreadListRuntime","AssistantRuntime","useSubscribable","ThreadListItemClient","ThreadClient","ThreadsState","useThreadListItemClientById","t0","$","_c","runtime","id","t1","getItemById","threadListItemRuntime","t2","ThreadListItemClientById","useThreadListClient","__internal_assistantRuntime","runtimeState","main","threadItems","Object","keys","map","t3","newThreadId","t4","state","archivedThreadIds","hasMore","isLoading","isLoadingMore","mainThreadId","threadIds","t5","t6","methods","t7","threadIdOrOptions","get","key","index","archived","t8","undefined","id_0","t10","t11","t12","t9","threadId","options","switchToThread","switchToNewThread","getLoadThreadsPromise","reload","loadMore","t13","t14","getState","thread","item","__internal_getAssistantRuntime","ThreadListClient"],"sources":["../../../src/store/runtime-clients/thread-list-runtime-client.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useResource, withKey, resource } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n useClientResource,\n} from \"@assistant-ui/store\";\nimport type { ThreadListRuntime } from \"../../runtime/api/thread-list-runtime\";\nimport type { AssistantRuntime } from \"../../runtime/api/assistant-runtime\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport { ThreadListItemClient } from \"./thread-list-item-runtime-client\";\nimport { ThreadClient } from \"./thread-runtime-client\";\nimport type { ThreadsState } from \"../scopes/threads\";\n\nconst useThreadListItemClientById = ({\n runtime,\n id,\n}: {\n runtime: ThreadListRuntime;\n id: string;\n}) => {\n const threadListItemRuntime = useMemo(\n () => runtime.getItemById(id),\n [runtime, id],\n );\n return useResource(\n ThreadListItemClient({\n runtime: threadListItemRuntime,\n }),\n );\n};\n\nconst ThreadListItemClientById = resource(useThreadListItemClientById);\n\nconst useThreadListClient = ({\n runtime,\n __internal_assistantRuntime,\n}: {\n runtime: ThreadListRuntime;\n __internal_assistantRuntime: AssistantRuntime;\n}): ClientOutput<\"threads\"> => {\n const runtimeState = useSubscribable(runtime);\n\n const main = useClientResource(\n ThreadClient({\n runtime: runtime.main,\n }),\n );\n const threadItems = useClientLookup(\n Object.keys(runtimeState.threadItems).map((id) =>\n withKey(id, ThreadListItemClientById({ runtime, id }), [runtime, id]),\n ),\n );\n\n const state = useMemo<ThreadsState>(() => {\n return {\n mainThreadId: runtimeState.mainThreadId,\n newThreadId: runtimeState.newThreadId ?? null,\n isLoading: runtimeState.isLoading,\n isLoadingMore: runtimeState.isLoadingMore,\n hasMore: runtimeState.hasMore,\n threadIds: runtimeState.threadIds,\n archivedThreadIds: runtimeState.archivedThreadIds,\n threadItems: threadItems.state,\n\n main: main.state,\n };\n }, [runtimeState, threadItems.state, main.state]);\n\n return {\n getState: () => state,\n thread: () => main.methods,\n item: (threadIdOrOptions) => {\n if (threadIdOrOptions === \"main\") {\n return threadItems.get({ key: state.mainThreadId });\n }\n\n if (\"id\" in threadIdOrOptions) {\n return threadItems.get({ key: threadIdOrOptions.id });\n }\n\n const { index, archived = false } = threadIdOrOptions;\n const id = archived\n ? state.archivedThreadIds[index]!\n : state.threadIds[index]!;\n return threadItems.get({ key: id });\n },\n switchToThread: async (threadId, options) => {\n await runtime.switchToThread(threadId, options);\n },\n switchToNewThread: async () => {\n await runtime.switchToNewThread();\n },\n getLoadThreadsPromise: () => runtime.getLoadThreadsPromise(),\n reload: () => runtime.reload(),\n loadMore: () => runtime.loadMore(),\n __internal_getAssistantRuntime: () => __internal_assistantRuntime,\n };\n};\n\nexport const ThreadListClient = resource(useThreadListClient);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-runtime-client.d.ts","names":[],"sources":["../../../src/store/runtime-clients/thread-runtime-client.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"thread-runtime-client.d.ts","names":[],"sources":["../../../src/store/runtime-clients/thread-runtime-client.ts"],"mappings":";;;;cA0Ia,YAAA,8BAAY,QAAA,CAAA,YAAA;WAnGd,aAAa;AAAA"}
|
|
@@ -1,57 +1,119 @@
|
|
|
1
1
|
import { useSubscribable } from "./useSubscribable.js";
|
|
2
2
|
import { ComposerClient } from "./composer-runtime-client.js";
|
|
3
|
+
import { liveRef } from "./liveRef.js";
|
|
3
4
|
import { MessageClient } from "./message-runtime-client.js";
|
|
4
|
-
import { useEffect
|
|
5
|
+
import { useEffect } from "@assistant-ui/tap/react-shim";
|
|
5
6
|
import { useAssistantEmit, useClientLookup, useClientResource } from "@assistant-ui/store";
|
|
7
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
6
8
|
import { resource, useResource, withKey } from "@assistant-ui/tap";
|
|
7
9
|
//#region src/store/runtime-clients/thread-runtime-client.ts
|
|
8
|
-
const useMessageClientById = (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const useMessageClientById = (t0) => {
|
|
11
|
+
const $ = c(6);
|
|
12
|
+
const { runtime, id, threadIdRef } = t0;
|
|
13
|
+
let t1;
|
|
14
|
+
if ($[0] !== id || $[1] !== runtime) {
|
|
15
|
+
t1 = runtime.getMessageById(id);
|
|
16
|
+
$[0] = id;
|
|
17
|
+
$[1] = runtime;
|
|
18
|
+
$[2] = t1;
|
|
19
|
+
} else t1 = $[2];
|
|
20
|
+
const messageRuntime = t1;
|
|
21
|
+
let t2;
|
|
22
|
+
if ($[3] !== messageRuntime || $[4] !== threadIdRef) {
|
|
23
|
+
t2 = MessageClient({
|
|
24
|
+
runtime: messageRuntime,
|
|
25
|
+
threadIdRef
|
|
26
|
+
});
|
|
27
|
+
$[3] = messageRuntime;
|
|
28
|
+
$[4] = threadIdRef;
|
|
29
|
+
$[5] = t2;
|
|
30
|
+
} else t2 = $[5];
|
|
31
|
+
return useResource(t2);
|
|
13
32
|
};
|
|
14
33
|
const MessageClientById = resource(useMessageClientById);
|
|
15
|
-
const useThreadClient = (
|
|
34
|
+
const useThreadClient = (t0) => {
|
|
35
|
+
const $ = c(58);
|
|
36
|
+
const { runtime } = t0;
|
|
16
37
|
const runtimeState = useSubscribable(runtime);
|
|
17
38
|
const emit = useAssistantEmit();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
let t1;
|
|
40
|
+
let t2;
|
|
41
|
+
if ($[0] !== emit || $[1] !== runtime) {
|
|
42
|
+
t1 = () => {
|
|
43
|
+
const unsubscribers = [];
|
|
44
|
+
for (const event of [
|
|
45
|
+
"runStart",
|
|
46
|
+
"runEnd",
|
|
47
|
+
"initialize",
|
|
48
|
+
"modelContextUpdate"
|
|
49
|
+
]) {
|
|
50
|
+
const unsubscribe = runtime.unstable_on(event, () => {
|
|
51
|
+
const threadId = runtime.getState()?.threadId || "unknown";
|
|
52
|
+
emit(`thread.${event}`, { threadId });
|
|
53
|
+
});
|
|
54
|
+
unsubscribers.push(unsubscribe);
|
|
55
|
+
}
|
|
56
|
+
return () => {
|
|
57
|
+
for (const unsub of unsubscribers) unsub();
|
|
58
|
+
};
|
|
34
59
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
t2 = [runtime, emit];
|
|
61
|
+
$[0] = emit;
|
|
62
|
+
$[1] = runtime;
|
|
63
|
+
$[2] = t1;
|
|
64
|
+
$[3] = t2;
|
|
65
|
+
} else {
|
|
66
|
+
t1 = $[2];
|
|
67
|
+
t2 = $[3];
|
|
68
|
+
}
|
|
69
|
+
useEffect(t1, t2);
|
|
70
|
+
let t3;
|
|
71
|
+
if ($[4] !== runtime) {
|
|
72
|
+
t3 = liveRef(() => runtime.getState().threadId);
|
|
73
|
+
$[4] = runtime;
|
|
74
|
+
$[5] = t3;
|
|
75
|
+
} else t3 = $[5];
|
|
76
|
+
const threadIdRef = t3;
|
|
77
|
+
let t4;
|
|
78
|
+
if ($[6] !== runtime.composer || $[7] !== threadIdRef) {
|
|
79
|
+
t4 = ComposerClient({
|
|
80
|
+
runtime: runtime.composer,
|
|
81
|
+
threadIdRef
|
|
82
|
+
});
|
|
83
|
+
$[6] = runtime.composer;
|
|
84
|
+
$[7] = threadIdRef;
|
|
85
|
+
$[8] = t4;
|
|
86
|
+
} else t4 = $[8];
|
|
87
|
+
const composer = useClientResource(t4);
|
|
88
|
+
let t5;
|
|
89
|
+
if ($[9] !== runtime || $[10] !== runtimeState.messages || $[11] !== threadIdRef) {
|
|
90
|
+
let t6;
|
|
91
|
+
if ($[13] !== runtime || $[14] !== threadIdRef) {
|
|
92
|
+
t6 = (m) => withKey(m.id, MessageClientById({
|
|
93
|
+
runtime,
|
|
94
|
+
id: m.id,
|
|
95
|
+
threadIdRef
|
|
96
|
+
}), [
|
|
97
|
+
runtime,
|
|
98
|
+
m.id,
|
|
99
|
+
threadIdRef
|
|
100
|
+
]);
|
|
101
|
+
$[13] = runtime;
|
|
102
|
+
$[14] = threadIdRef;
|
|
103
|
+
$[15] = t6;
|
|
104
|
+
} else t6 = $[15];
|
|
105
|
+
t5 = runtimeState.messages.map(t6);
|
|
106
|
+
$[9] = runtime;
|
|
107
|
+
$[10] = runtimeState.messages;
|
|
108
|
+
$[11] = threadIdRef;
|
|
109
|
+
$[12] = t5;
|
|
110
|
+
} else t5 = $[12];
|
|
111
|
+
const messages = useClientLookup(t5);
|
|
112
|
+
const t6 = messages.state.length === 0 && !runtimeState.isLoading;
|
|
113
|
+
let t7;
|
|
114
|
+
if ($[16] !== composer.state || $[17] !== messages.state || $[18] !== runtimeState.capabilities || $[19] !== runtimeState.extras || $[20] !== runtimeState.isDisabled || $[21] !== runtimeState.isLoading || $[22] !== runtimeState.isRunning || $[23] !== runtimeState.speech || $[24] !== runtimeState.state || $[25] !== runtimeState.suggestions || $[26] !== runtimeState.voice || $[27] !== t6) {
|
|
115
|
+
t7 = {
|
|
116
|
+
isEmpty: t6,
|
|
55
117
|
isDisabled: runtimeState.isDisabled,
|
|
56
118
|
isLoading: runtimeState.isLoading,
|
|
57
119
|
isRunning: runtimeState.isRunning,
|
|
@@ -64,36 +126,95 @@ const useThreadClient = ({ runtime }) => {
|
|
|
64
126
|
composer: composer.state,
|
|
65
127
|
messages: messages.state
|
|
66
128
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
129
|
+
$[16] = composer.state;
|
|
130
|
+
$[17] = messages.state;
|
|
131
|
+
$[18] = runtimeState.capabilities;
|
|
132
|
+
$[19] = runtimeState.extras;
|
|
133
|
+
$[20] = runtimeState.isDisabled;
|
|
134
|
+
$[21] = runtimeState.isLoading;
|
|
135
|
+
$[22] = runtimeState.isRunning;
|
|
136
|
+
$[23] = runtimeState.speech;
|
|
137
|
+
$[24] = runtimeState.state;
|
|
138
|
+
$[25] = runtimeState.suggestions;
|
|
139
|
+
$[26] = runtimeState.voice;
|
|
140
|
+
$[27] = t6;
|
|
141
|
+
$[28] = t7;
|
|
142
|
+
} else t7 = $[28];
|
|
143
|
+
const state = t7;
|
|
144
|
+
let t8;
|
|
145
|
+
if ($[29] !== state) {
|
|
146
|
+
t8 = () => state;
|
|
147
|
+
$[29] = state;
|
|
148
|
+
$[30] = t8;
|
|
149
|
+
} else t8 = $[30];
|
|
150
|
+
let t9;
|
|
151
|
+
if ($[31] !== composer.methods) {
|
|
152
|
+
t9 = () => composer.methods;
|
|
153
|
+
$[31] = composer.methods;
|
|
154
|
+
$[32] = t9;
|
|
155
|
+
} else t9 = $[32];
|
|
156
|
+
let t10;
|
|
157
|
+
if ($[33] !== messages) {
|
|
158
|
+
t10 = (selector) => {
|
|
92
159
|
if ("id" in selector) return messages.get({ key: selector.id });
|
|
93
160
|
else return messages.get(selector);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
161
|
+
};
|
|
162
|
+
$[33] = messages;
|
|
163
|
+
$[34] = t10;
|
|
164
|
+
} else t10 = $[34];
|
|
165
|
+
let t11;
|
|
166
|
+
if ($[35] !== runtime) {
|
|
167
|
+
t11 = () => runtime;
|
|
168
|
+
$[35] = runtime;
|
|
169
|
+
$[36] = t11;
|
|
170
|
+
} else t11 = $[36];
|
|
171
|
+
let t12;
|
|
172
|
+
if ($[37] !== runtime.append || $[38] !== runtime.cancelRun || $[39] !== runtime.connectVoice || $[40] !== runtime.deleteMessage || $[41] !== runtime.disconnectVoice || $[42] !== runtime.export || $[43] !== runtime.getModelContext || $[44] !== runtime.getVoiceVolume || $[45] !== runtime.import || $[46] !== runtime.muteVoice || $[47] !== runtime.reset || $[48] !== runtime.resumeRun || $[49] !== runtime.startRun || $[50] !== runtime.stopSpeaking || $[51] !== runtime.subscribeVoiceVolume || $[52] !== runtime.unmuteVoice || $[53] !== t10 || $[54] !== t11 || $[55] !== t8 || $[56] !== t9) {
|
|
173
|
+
t12 = {
|
|
174
|
+
getState: t8,
|
|
175
|
+
composer: t9,
|
|
176
|
+
append: runtime.append,
|
|
177
|
+
deleteMessage: runtime.deleteMessage,
|
|
178
|
+
startRun: runtime.startRun,
|
|
179
|
+
resumeRun: runtime.resumeRun,
|
|
180
|
+
cancelRun: runtime.cancelRun,
|
|
181
|
+
getModelContext: runtime.getModelContext,
|
|
182
|
+
export: runtime.export,
|
|
183
|
+
import: runtime.import,
|
|
184
|
+
reset: runtime.reset,
|
|
185
|
+
stopSpeaking: runtime.stopSpeaking,
|
|
186
|
+
connectVoice: runtime.connectVoice,
|
|
187
|
+
disconnectVoice: runtime.disconnectVoice,
|
|
188
|
+
getVoiceVolume: runtime.getVoiceVolume,
|
|
189
|
+
subscribeVoiceVolume: runtime.subscribeVoiceVolume,
|
|
190
|
+
muteVoice: runtime.muteVoice,
|
|
191
|
+
unmuteVoice: runtime.unmuteVoice,
|
|
192
|
+
message: t10,
|
|
193
|
+
__internal_getRuntime: t11
|
|
194
|
+
};
|
|
195
|
+
$[37] = runtime.append;
|
|
196
|
+
$[38] = runtime.cancelRun;
|
|
197
|
+
$[39] = runtime.connectVoice;
|
|
198
|
+
$[40] = runtime.deleteMessage;
|
|
199
|
+
$[41] = runtime.disconnectVoice;
|
|
200
|
+
$[42] = runtime.export;
|
|
201
|
+
$[43] = runtime.getModelContext;
|
|
202
|
+
$[44] = runtime.getVoiceVolume;
|
|
203
|
+
$[45] = runtime.import;
|
|
204
|
+
$[46] = runtime.muteVoice;
|
|
205
|
+
$[47] = runtime.reset;
|
|
206
|
+
$[48] = runtime.resumeRun;
|
|
207
|
+
$[49] = runtime.startRun;
|
|
208
|
+
$[50] = runtime.stopSpeaking;
|
|
209
|
+
$[51] = runtime.subscribeVoiceVolume;
|
|
210
|
+
$[52] = runtime.unmuteVoice;
|
|
211
|
+
$[53] = t10;
|
|
212
|
+
$[54] = t11;
|
|
213
|
+
$[55] = t8;
|
|
214
|
+
$[56] = t9;
|
|
215
|
+
$[57] = t12;
|
|
216
|
+
} else t12 = $[57];
|
|
217
|
+
return t12;
|
|
97
218
|
};
|
|
98
219
|
const ThreadClient = resource(useThreadClient);
|
|
99
220
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-runtime-client.js","names":[],"sources":["../../../src/store/runtime-clients/thread-runtime-client.ts"],"sourcesContent":["import type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { ThreadRuntimeEventType } from \"../../runtime/interfaces/thread-runtime-core\";\nimport type { ThreadRuntime } from \"../../runtime/api/thread-runtime\";\nimport { useMemo, useEffect, RefObject } from \"react\";\nimport { useResource, resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useAssistantEmit,\n useClientLookup,\n useClientResource,\n} from \"@assistant-ui/store\";\nimport { ComposerClient } from \"./composer-runtime-client\";\nimport { MessageClient } from \"./message-runtime-client\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport type { ThreadState } from \"../scopes/thread\";\n\nconst useMessageClientById = ({\n runtime,\n id,\n threadIdRef,\n}: {\n runtime: ThreadRuntime;\n id: string;\n threadIdRef: RefObject<string>;\n}) => {\n const messageRuntime = useMemo(\n () => runtime.getMessageById(id),\n [runtime, id],\n );\n\n return useResource(MessageClient({ runtime: messageRuntime, threadIdRef }));\n};\n\nconst MessageClientById = resource(useMessageClientById);\n\nconst useThreadClient = ({\n runtime,\n}: {\n runtime: ThreadRuntime;\n}): ClientOutput<\"thread\"> => {\n const runtimeState = useSubscribable(runtime);\n const emit = useAssistantEmit();\n\n useEffect(() => {\n const unsubscribers: Unsubscribe[] = [];\n\n const threadEvents: ThreadRuntimeEventType[] = [\n \"runStart\",\n \"runEnd\",\n \"initialize\",\n \"modelContextUpdate\",\n ];\n\n for (const event of threadEvents) {\n const unsubscribe = runtime.unstable_on(event, () => {\n const threadId = runtime.getState()?.threadId || \"unknown\";\n emit(`thread.${event}`, {\n threadId,\n });\n });\n unsubscribers.push(unsubscribe);\n }\n\n return () => {\n for (const unsub of unsubscribers) unsub();\n };\n }, [runtime, emit]);\n\n const threadIdRef = useMemo(\n () => ({\n get current() {\n return runtime.getState()!.threadId;\n },\n }),\n [runtime],\n );\n\n const composer = useClientResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n }),\n );\n const messages = useClientLookup(\n () =>\n runtimeState.messages.map((m) =>\n withKey(m.id, MessageClientById({ runtime, id: m.id, threadIdRef })),\n ),\n [runtimeState.messages, runtime, threadIdRef],\n );\n\n const state = useMemo<ThreadState>(() => {\n return {\n isEmpty: messages.state.length === 0 && !runtimeState.isLoading,\n isDisabled: runtimeState.isDisabled,\n isLoading: runtimeState.isLoading,\n isRunning: runtimeState.isRunning,\n capabilities: runtimeState.capabilities,\n state: runtimeState.state,\n suggestions: runtimeState.suggestions,\n extras: runtimeState.extras,\n speech: runtimeState.speech,\n voice: runtimeState.voice,\n\n composer: composer.state,\n messages: messages.state,\n };\n }, [runtimeState, messages, composer.state]);\n\n return {\n getState: () => state,\n composer: () => composer.methods,\n append: runtime.append,\n deleteMessage: runtime.deleteMessage,\n startRun: runtime.startRun,\n resumeRun: runtime.resumeRun,\n cancelRun: runtime.cancelRun,\n getModelContext: runtime.getModelContext,\n export: runtime.export,\n import: runtime.import,\n reset: runtime.reset,\n stopSpeaking: runtime.stopSpeaking,\n connectVoice: runtime.connectVoice,\n disconnectVoice: runtime.disconnectVoice,\n getVoiceVolume: runtime.getVoiceVolume,\n subscribeVoiceVolume: runtime.subscribeVoiceVolume,\n muteVoice: runtime.muteVoice,\n unmuteVoice: runtime.unmuteVoice,\n message: (selector) => {\n if (\"id\" in selector) {\n return messages.get({ key: selector.id });\n } else {\n return messages.get(selector);\n }\n },\n __internal_getRuntime: () => runtime,\n };\n};\n\nexport const ThreadClient = resource(useThreadClient);\n"],"mappings":";;;;;;;AAgBA,MAAM,wBAAwB,EAC5B,SACA,IACA,kBAKI;CAMJ,OAAO,YAAY,cAAc;EAAE,SALZ,cACf,QAAQ,eAAe,EAAE,GAC/B,CAAC,SAAS,EAAE,CAG2C;EAAG;CAAY,CAAC,CAAC;AAC5E;AAEA,MAAM,oBAAoB,SAAS,oBAAoB;AAEvD,MAAM,mBAAmB,EACvB,cAG4B;CAC5B,MAAM,eAAe,gBAAgB,OAAO;CAC5C,MAAM,OAAO,iBAAiB;CAE9B,gBAAgB;EACd,MAAM,gBAA+B,CAAC;EAStC,KAAK,MAAM,SAAS;GANlB;GACA;GACA;GACA;EAG6B,GAAG;GAChC,MAAM,cAAc,QAAQ,YAAY,aAAa;IACnD,MAAM,WAAW,QAAQ,SAAS,CAAC,EAAE,YAAY;IACjD,KAAK,UAAU,SAAS,EACtB,SACF,CAAC;GACH,CAAC;GACD,cAAc,KAAK,WAAW;EAChC;EAEA,aAAa;GACX,KAAK,MAAM,SAAS,eAAe,MAAM;EAC3C;CACF,GAAG,CAAC,SAAS,IAAI,CAAC;CAElB,MAAM,cAAc,eACX,EACL,IAAI,UAAU;EACZ,OAAO,QAAQ,SAAS,CAAC,CAAE;CAC7B,EACF,IACA,CAAC,OAAO,CACV;CAEA,MAAM,WAAW,kBACf,eAAe;EACb,SAAS,QAAQ;EACjB;CACF,CAAC,CACH;CACA,MAAM,WAAW,sBAEb,aAAa,SAAS,KAAK,MACzB,QAAQ,EAAE,IAAI,kBAAkB;EAAE;EAAS,IAAI,EAAE;EAAI;CAAY,CAAC,CAAC,CACrE,GACF;EAAC,aAAa;EAAU;EAAS;CAAW,CAC9C;CAEA,MAAM,QAAQ,cAA2B;EACvC,OAAO;GACL,SAAS,SAAS,MAAM,WAAW,KAAK,CAAC,aAAa;GACtD,YAAY,aAAa;GACzB,WAAW,aAAa;GACxB,WAAW,aAAa;GACxB,cAAc,aAAa;GAC3B,OAAO,aAAa;GACpB,aAAa,aAAa;GAC1B,QAAQ,aAAa;GACrB,QAAQ,aAAa;GACrB,OAAO,aAAa;GAEpB,UAAU,SAAS;GACnB,UAAU,SAAS;EACrB;CACF,GAAG;EAAC;EAAc;EAAU,SAAS;CAAK,CAAC;CAE3C,OAAO;EACL,gBAAgB;EAChB,gBAAgB,SAAS;EACzB,QAAQ,QAAQ;EAChB,eAAe,QAAQ;EACvB,UAAU,QAAQ;EAClB,WAAW,QAAQ;EACnB,WAAW,QAAQ;EACnB,iBAAiB,QAAQ;EACzB,QAAQ,QAAQ;EAChB,QAAQ,QAAQ;EAChB,OAAO,QAAQ;EACf,cAAc,QAAQ;EACtB,cAAc,QAAQ;EACtB,iBAAiB,QAAQ;EACzB,gBAAgB,QAAQ;EACxB,sBAAsB,QAAQ;EAC9B,WAAW,QAAQ;EACnB,aAAa,QAAQ;EACrB,UAAU,aAAa;GACrB,IAAI,QAAQ,UACV,OAAO,SAAS,IAAI,EAAE,KAAK,SAAS,GAAG,CAAC;QAExC,OAAO,SAAS,IAAI,QAAQ;EAEhC;EACA,6BAA6B;CAC/B;AACF;AAEA,MAAa,eAAe,SAAS,eAAe"}
|
|
1
|
+
{"version":3,"file":"thread-runtime-client.js","names":["Unsubscribe","ThreadRuntimeEventType","ThreadRuntime","useMemo","useEffect","RefObject","useResource","resource","withKey","liveRef","ClientOutput","useAssistantEmit","useClientLookup","useClientResource","ComposerClient","MessageClient","useSubscribable","ThreadState","useMessageClientById","t0","$","_c","runtime","id","threadIdRef","t1","getMessageById","messageRuntime","t2","MessageClientById","useThreadClient","runtimeState","emit","unsubscribers","threadEvents","event","unsubscribe","unstable_on","threadId","getState","push","unsub","t3","t4","composer","t5","messages","t6","m","map","state","length","isLoading","t7","capabilities","extras","isDisabled","isRunning","speech","suggestions","voice","isEmpty","t8","t9","methods","t10","selector","get","key","t11","t12","append","cancelRun","connectVoice","deleteMessage","disconnectVoice","export","getModelContext","getVoiceVolume","import","muteVoice","reset","resumeRun","startRun","stopSpeaking","subscribeVoiceVolume","unmuteVoice","message","__internal_getRuntime","ThreadClient"],"sources":["../../../src/store/runtime-clients/thread-runtime-client.ts"],"sourcesContent":["import type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { ThreadRuntimeEventType } from \"../../runtime/interfaces/thread-runtime-core\";\nimport type { ThreadRuntime } from \"../../runtime/api/thread-runtime\";\nimport { useMemo, useEffect, RefObject } from \"react\";\nimport { useResource, resource, withKey } from \"@assistant-ui/tap\";\nimport { liveRef } from \"./liveRef\";\nimport {\n type ClientOutput,\n useAssistantEmit,\n useClientLookup,\n useClientResource,\n} from \"@assistant-ui/store\";\nimport { ComposerClient } from \"./composer-runtime-client\";\nimport { MessageClient } from \"./message-runtime-client\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport type { ThreadState } from \"../scopes/thread\";\n\nconst useMessageClientById = ({\n runtime,\n id,\n threadIdRef,\n}: {\n runtime: ThreadRuntime;\n id: string;\n threadIdRef: RefObject<string>;\n}) => {\n const messageRuntime = useMemo(\n () => runtime.getMessageById(id),\n [runtime, id],\n );\n\n return useResource(MessageClient({ runtime: messageRuntime, threadIdRef }));\n};\n\nconst MessageClientById = resource(useMessageClientById);\n\nconst useThreadClient = ({\n runtime,\n}: {\n runtime: ThreadRuntime;\n}): ClientOutput<\"thread\"> => {\n const runtimeState = useSubscribable(runtime);\n const emit = useAssistantEmit();\n\n useEffect(() => {\n const unsubscribers: Unsubscribe[] = [];\n\n const threadEvents: ThreadRuntimeEventType[] = [\n \"runStart\",\n \"runEnd\",\n \"initialize\",\n \"modelContextUpdate\",\n ];\n\n for (const event of threadEvents) {\n const unsubscribe = runtime.unstable_on(event, () => {\n const threadId = runtime.getState()?.threadId || \"unknown\";\n emit(`thread.${event}`, {\n threadId,\n });\n });\n unsubscribers.push(unsubscribe);\n }\n\n return () => {\n for (const unsub of unsubscribers) unsub();\n };\n }, [runtime, emit]);\n\n const threadIdRef = useMemo(\n () => liveRef(() => runtime.getState()!.threadId),\n [runtime],\n );\n\n const composer = useClientResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n }),\n );\n const messages = useClientLookup(\n runtimeState.messages.map((m) =>\n withKey(m.id, MessageClientById({ runtime, id: m.id, threadIdRef }), [\n runtime,\n m.id,\n threadIdRef,\n ]),\n ),\n );\n\n const state = useMemo<ThreadState>(() => {\n return {\n isEmpty: messages.state.length === 0 && !runtimeState.isLoading,\n isDisabled: runtimeState.isDisabled,\n isLoading: runtimeState.isLoading,\n isRunning: runtimeState.isRunning,\n capabilities: runtimeState.capabilities,\n state: runtimeState.state,\n suggestions: runtimeState.suggestions,\n extras: runtimeState.extras,\n speech: runtimeState.speech,\n voice: runtimeState.voice,\n\n composer: composer.state,\n messages: messages.state,\n };\n }, [runtimeState, messages, composer.state]);\n\n return {\n getState: () => state,\n composer: () => composer.methods,\n append: runtime.append,\n deleteMessage: runtime.deleteMessage,\n startRun: runtime.startRun,\n resumeRun: runtime.resumeRun,\n cancelRun: runtime.cancelRun,\n getModelContext: runtime.getModelContext,\n export: runtime.export,\n import: runtime.import,\n reset: runtime.reset,\n stopSpeaking: runtime.stopSpeaking,\n connectVoice: runtime.connectVoice,\n disconnectVoice: runtime.disconnectVoice,\n getVoiceVolume: runtime.getVoiceVolume,\n subscribeVoiceVolume: runtime.subscribeVoiceVolume,\n muteVoice: runtime.muteVoice,\n unmuteVoice: runtime.unmuteVoice,\n message: (selector) => {\n if (\"id\" in selector) {\n return messages.get({ key: selector.id });\n } else {\n return messages.get(selector);\n }\n },\n __internal_getRuntime: () => runtime,\n };\n};\n\nexport const ThreadClient = resource(useThreadClient);\n"],"mappings":"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"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
|
|
2
2
|
//#region src/store/runtime-clients/useSubscribable.ts
|
|
3
3
|
const useSubscribable = (subscribable) => {
|
|
4
|
-
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
setState(subscribable.getState());
|
|
7
|
-
return subscribable.subscribe(() => {
|
|
8
|
-
setState(subscribable.getState());
|
|
9
|
-
});
|
|
10
|
-
}, [subscribable]);
|
|
11
|
-
return subscribable.getState();
|
|
4
|
+
return useSyncExternalStore(subscribable.subscribe, subscribable.getState);
|
|
12
5
|
};
|
|
13
6
|
//#endregion
|
|
14
7
|
export { useSubscribable };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubscribable.js","names":[],"sources":["../../../src/store/runtime-clients/useSubscribable.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useSubscribable.js","names":["useSyncExternalStore","SubscribableWithState","useSubscribable","subscribable","subscribe","getState"],"sources":["../../../src/store/runtime-clients/useSubscribable.ts"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\nimport type { SubscribableWithState } from \"../../subscribable/subscribable\";\n\nexport const useSubscribable = <T>(\n subscribable: Omit<SubscribableWithState<T, any>, \"path\">,\n) => {\n return useSyncExternalStore(subscribable.subscribe, subscribable.getState);\n};\n"],"mappings":";;AAGA,MAAaE,mBAAkBC,iBAAA;CAAA,OAGtBH,qBAAqBG,aAAYC,WAAYD,aAAYE,QAAS;AAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MessagePartStatus, ThreadAssistantMessagePart, ThreadUserMessagePart, ToolCallMessagePartStatus } from "../../types/message.js";
|
|
1
|
+
import { MessagePartStatus, ThreadAssistantMessagePart, ThreadUserMessagePart, ToolApprovalResponse, ToolCallMessagePartStatus } from "../../types/message.js";
|
|
2
2
|
import { MessagePartRuntime } from "../../runtime/api/message-part-runtime.js";
|
|
3
3
|
import { ToolResponse } from "assistant-stream";
|
|
4
4
|
|
|
@@ -22,12 +22,11 @@ type PartMethods = {
|
|
|
22
22
|
*/
|
|
23
23
|
resumeToolCall(payload: unknown): void;
|
|
24
24
|
/**
|
|
25
|
-
* Respond to a server-side tool approval gate. The approval id is read from
|
|
25
|
+
* Respond to a server-side tool approval gate. The approval id is read from
|
|
26
|
+
* the part. Accepts a boolean decision or the id of one of the approval's
|
|
27
|
+
* options.
|
|
26
28
|
*/
|
|
27
|
-
respondToToolApproval(response:
|
|
28
|
-
approved: boolean;
|
|
29
|
-
reason?: string;
|
|
30
|
-
}): void;
|
|
29
|
+
respondToToolApproval(response: ToolApprovalResponse): void;
|
|
31
30
|
__internal_getRuntime?(): MessagePartRuntime;
|
|
32
31
|
};
|
|
33
32
|
type PartMeta = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part.d.ts","names":[],"sources":["../../../src/store/scopes/part.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"part.d.ts","names":[],"sources":["../../../src/store/scopes/part.ts"],"mappings":";;;;;KAUY,SAAA,IAAa,qBAAA,GAAwB,0BAAA;EAAA,SACtC,MAAA,EAAQ,iBAAA,GAAoB,yBAAA;AAAA;AAAA,KAG3B,WAAA;EAJa;;;EAQvB,QAAA,IAAY,SAAA;EAPkD;;;;EAY9D,aAAA,CAAc,MAAA,YAAkB,YAAA;EAZf;;;AAA6C;EAiB9D,cAAA,CAAe,OAAA;EAdM;;;;;EAoBrB,qBAAA,CAAsB,QAAA,EAAU,oBAAA;EAChC,qBAAA,KAA0B,kBAAA;AAAA;AAAA,KAGhB,QAAA;EAEN,MAAA;EACA,KAAA;IACM,IAAA;IAAe,KAAA;EAAA;IACf,IAAA;IAAoB,UAAA;EAAA;AAAA;EAG1B,MAAA;EACA,KAAA;IAAS,IAAA;IAAe,KAAA;EAAA;AAAA;AAAA,KAGlB,gBAAA;EACV,OAAA,EAAS,WAAA;EACT,IAAA,EAAM,QAAQ;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-item.js","names":[],"sources":["../../../src/store/scopes/queue-item.ts"],"sourcesContent":["export type QueueItemState = {\n readonly id: string;\n readonly prompt: string;\n};\n\nexport const EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = Object.freeze([]);\n\nexport type QueueItemMethods = {\n getState(): QueueItemState;\n steer(): void;\n remove(): void;\n};\n\nexport type QueueItemMeta = {\n source: \"composer\";\n query: { index: number };\n};\n\nexport type QueueItemClientSchema = {\n methods: QueueItemMethods;\n meta: QueueItemMeta;\n};\n"],"mappings":";AAKA,
|
|
1
|
+
{"version":3,"file":"queue-item.js","names":["QueueItemState","id","prompt","EMPTY_QUEUE_ITEMS","Object","freeze","QueueItemMethods","getState","steer","remove","QueueItemMeta","source","query","index","QueueItemClientSchema","methods","meta"],"sources":["../../../src/store/scopes/queue-item.ts"],"sourcesContent":["export type QueueItemState = {\n readonly id: string;\n readonly prompt: string;\n};\n\nexport const EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = Object.freeze([]);\n\nexport type QueueItemMethods = {\n getState(): QueueItemState;\n steer(): void;\n remove(): void;\n};\n\nexport type QueueItemMeta = {\n source: \"composer\";\n query: { index: number };\n};\n\nexport type QueueItemClientSchema = {\n methods: QueueItemMethods;\n meta: QueueItemMeta;\n};\n"],"mappings":";AAKA,MAAaG,oBAA+CC,OAAOC,OAAO,CAAA,CAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribable.js","names":[],"sources":["../../src/subscribable/subscribable.ts"],"sourcesContent":["import type { Unsubscribe } from \"../types/unsubscribe\";\n\nexport const SKIP_UPDATE = Symbol(\"skip-update\");\nexport type SKIP_UPDATE = typeof SKIP_UPDATE;\n\nexport type Subscribable = {\n subscribe: (callback: () => void) => Unsubscribe;\n};\n\nexport type SubscribableWithState<TState, TPath> = Subscribable & {\n path: TPath;\n getState: () => TState;\n};\n\nexport type NestedSubscribable<\n TState extends Subscribable | undefined,\n TPath,\n> = SubscribableWithState<TState, TPath>;\n\nexport type EventSubscribable<TEvent extends string> = {\n event: TEvent;\n binding: SubscribableWithState<\n | {\n unstable_on: (\n event: TEvent,\n callback: (payload?: unknown) => void,\n ) => Unsubscribe;\n }\n | undefined,\n unknown\n >;\n};\n\nfunction shallowEqual<T extends object>(\n objA: T | undefined,\n objB: T | undefined,\n) {\n if (objA === undefined && objB === undefined) return true;\n if (objA === undefined) return false;\n if (objB === undefined) return false;\n\n for (const key of Object.keys(objA)) {\n const valueA = objA[key as keyof T];\n const valueB = objB[key as keyof T];\n if (!Object.is(valueA, valueB)) return false;\n }\n\n return true;\n}\n\nexport class BaseSubscribable {\n private _subscribers = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscribers.add(callback);\n return () => this._subscribers.delete(callback);\n }\n\n public waitForUpdate() {\n return new Promise<void>((resolve) => {\n const unsubscribe = this.subscribe(() => {\n unsubscribe();\n resolve();\n });\n });\n }\n\n protected _notifySubscribers() {\n const errors = [];\n for (const callback of this._subscribers) {\n try {\n callback();\n } catch (error) {\n errors.push(error);\n }\n }\n\n if (errors.length > 0) {\n if (errors.length === 1) {\n throw errors[0];\n } else {\n for (const error of errors) {\n console.error(error);\n }\n throw new AggregateError(errors);\n }\n }\n }\n}\n\n// lazy connect/disconnect: only opens upstream subscription while it has subscribers\nexport abstract class BaseSubject {\n private _subscriptions = new Set<(payload?: unknown) => void>();\n private _connection: Unsubscribe | undefined;\n\n protected get isConnected() {\n return !!this._connection;\n }\n\n protected abstract _connect(): Unsubscribe;\n\n protected notifySubscribers(payload?: unknown) {\n for (const callback of this._subscriptions) callback(payload);\n }\n\n private _updateConnection() {\n if (this._subscriptions.size > 0) {\n if (this._connection) return;\n this._connection = this._connect();\n } else {\n this._connection?.();\n this._connection = undefined;\n }\n }\n\n public subscribe(callback: (payload?: unknown) => void) {\n this._subscriptions.add(callback);\n this._updateConnection();\n\n return () => {\n this._subscriptions.delete(callback);\n this._updateConnection();\n };\n }\n}\n\nexport class ShallowMemoizeSubject<TState extends object, TPath>\n extends BaseSubject\n implements SubscribableWithState<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(\n private binding: SubscribableWithState<TState | SKIP_UPDATE, TPath>,\n ) {\n super();\n const state = binding.getState();\n if (state === SKIP_UPDATE)\n throw new Error(\"Entry not available in the store\");\n this._previousState = state;\n }\n\n private _previousState: TState;\n public getState = () => {\n if (!this.isConnected) this._syncState();\n return this._previousState;\n };\n\n private _syncState() {\n const state = this.binding.getState();\n if (state === SKIP_UPDATE) return false;\n if (shallowEqual(state, this._previousState)) return false;\n this._previousState = state;\n return true;\n }\n\n protected _connect() {\n const callback = () => {\n if (this._syncState()) {\n this.notifySubscribers();\n }\n };\n\n return this.binding.subscribe(callback);\n }\n}\n\nexport class LazyMemoizeSubject<TState extends object, TPath>\n extends BaseSubject\n implements SubscribableWithState<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(\n private binding: SubscribableWithState<TState | SKIP_UPDATE, TPath>,\n ) {\n super();\n }\n\n private _previousStateDirty = true;\n private _previousState: TState | undefined;\n public getState = () => {\n if (!this.isConnected || this._previousStateDirty) {\n const newState = this.binding.getState();\n if (newState !== SKIP_UPDATE) {\n this._previousState = newState;\n }\n this._previousStateDirty = false;\n }\n if (this._previousState === undefined)\n throw new Error(\"Entry not available in the store\");\n return this._previousState;\n };\n\n protected _connect() {\n const callback = () => {\n this._previousStateDirty = true;\n this.notifySubscribers();\n };\n\n return this.binding.subscribe(callback);\n }\n}\n\nexport class NestedSubscriptionSubject<\n TState extends Subscribable | undefined,\n TPath,\n>\n extends BaseSubject\n implements\n SubscribableWithState<TState, TPath>,\n NestedSubscribable<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(private binding: NestedSubscribable<TState, TPath>) {\n super();\n }\n\n public getState() {\n return this.binding.getState();\n }\n\n public outerSubscribe(callback: () => void) {\n return this.binding.subscribe(callback);\n }\n\n protected _connect(): Unsubscribe {\n const callback = () => {\n this.notifySubscribers();\n };\n\n let lastState = this.binding.getState();\n let innerUnsubscribe = lastState?.subscribe(callback);\n const onRuntimeUpdate = () => {\n const newState = this.binding.getState();\n if (newState === lastState) return;\n lastState = newState;\n\n innerUnsubscribe?.();\n innerUnsubscribe = newState?.subscribe(callback);\n\n callback();\n };\n\n const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);\n return () => {\n outerUnsubscribe?.();\n innerUnsubscribe?.();\n };\n }\n}\n\nexport class EventSubscriptionSubject<\n TEvent extends string,\n> extends BaseSubject {\n constructor(private config: EventSubscribable<TEvent>) {\n super();\n }\n\n public getState() {\n return this.config.binding.getState();\n }\n\n public outerSubscribe(callback: () => void) {\n return this.config.binding.subscribe(callback);\n }\n\n protected _connect(): Unsubscribe {\n const callback = (payload?: unknown) => {\n this.notifySubscribers(payload);\n };\n\n let lastState = this.config.binding.getState();\n let innerUnsubscribe = lastState?.unstable_on(this.config.event, callback);\n const onRuntimeUpdate = () => {\n const newState = this.config.binding.getState();\n if (newState === lastState) return;\n lastState = newState;\n\n innerUnsubscribe?.();\n innerUnsubscribe = newState?.unstable_on(this.config.event, callback);\n };\n\n const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);\n return () => {\n outerUnsubscribe?.();\n innerUnsubscribe?.();\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscribable.js","names":["Unsubscribe","SKIP_UPDATE","Symbol","Subscribable","subscribe","callback","SubscribableWithState","path","TPath","getState","TState","NestedSubscribable","EventSubscribable","event","TEvent","binding","unstable_on","payload","shallowEqual","objA","T","objB","undefined","key","Object","keys","valueA","valueB","is","BaseSubscribable","_subscribers","Set","add","delete","waitForUpdate","Promise","resolve","unsubscribe","_notifySubscribers","errors","error","push","length","console","AggregateError","BaseSubject","_subscriptions","_connection","isConnected","_connect","notifySubscribers","_updateConnection","size","ShallowMemoizeSubject","constructor","state","Error","_previousState","_syncState","LazyMemoizeSubject","_previousStateDirty","newState","NestedSubscriptionSubject","outerSubscribe","lastState","innerUnsubscribe","onRuntimeUpdate","outerUnsubscribe","EventSubscriptionSubject","config"],"sources":["../../src/subscribable/subscribable.ts"],"sourcesContent":["import type { Unsubscribe } from \"../types/unsubscribe\";\n\nexport const SKIP_UPDATE = Symbol(\"skip-update\");\nexport type SKIP_UPDATE = typeof SKIP_UPDATE;\n\nexport type Subscribable = {\n subscribe: (callback: () => void) => Unsubscribe;\n};\n\nexport type SubscribableWithState<TState, TPath> = Subscribable & {\n path: TPath;\n getState: () => TState;\n};\n\nexport type NestedSubscribable<\n TState extends Subscribable | undefined,\n TPath,\n> = SubscribableWithState<TState, TPath>;\n\nexport type EventSubscribable<TEvent extends string> = {\n event: TEvent;\n binding: SubscribableWithState<\n | {\n unstable_on: (\n event: TEvent,\n callback: (payload?: unknown) => void,\n ) => Unsubscribe;\n }\n | undefined,\n unknown\n >;\n};\n\nfunction shallowEqual<T extends object>(\n objA: T | undefined,\n objB: T | undefined,\n) {\n if (objA === undefined && objB === undefined) return true;\n if (objA === undefined) return false;\n if (objB === undefined) return false;\n\n for (const key of Object.keys(objA)) {\n const valueA = objA[key as keyof T];\n const valueB = objB[key as keyof T];\n if (!Object.is(valueA, valueB)) return false;\n }\n\n return true;\n}\n\nexport class BaseSubscribable {\n private _subscribers = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscribers.add(callback);\n return () => this._subscribers.delete(callback);\n }\n\n public waitForUpdate() {\n return new Promise<void>((resolve) => {\n const unsubscribe = this.subscribe(() => {\n unsubscribe();\n resolve();\n });\n });\n }\n\n protected _notifySubscribers() {\n const errors = [];\n for (const callback of this._subscribers) {\n try {\n callback();\n } catch (error) {\n errors.push(error);\n }\n }\n\n if (errors.length > 0) {\n if (errors.length === 1) {\n throw errors[0];\n } else {\n for (const error of errors) {\n console.error(error);\n }\n throw new AggregateError(errors);\n }\n }\n }\n}\n\n// lazy connect/disconnect: only opens upstream subscription while it has subscribers\nexport abstract class BaseSubject {\n private _subscriptions = new Set<(payload?: unknown) => void>();\n private _connection: Unsubscribe | undefined;\n\n protected get isConnected() {\n return !!this._connection;\n }\n\n protected abstract _connect(): Unsubscribe;\n\n protected notifySubscribers(payload?: unknown) {\n for (const callback of this._subscriptions) callback(payload);\n }\n\n private _updateConnection() {\n if (this._subscriptions.size > 0) {\n if (this._connection) return;\n this._connection = this._connect();\n } else {\n this._connection?.();\n this._connection = undefined;\n }\n }\n\n public subscribe(callback: (payload?: unknown) => void) {\n this._subscriptions.add(callback);\n this._updateConnection();\n\n return () => {\n this._subscriptions.delete(callback);\n this._updateConnection();\n };\n }\n}\n\nexport class ShallowMemoizeSubject<TState extends object, TPath>\n extends BaseSubject\n implements SubscribableWithState<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(\n private binding: SubscribableWithState<TState | SKIP_UPDATE, TPath>,\n ) {\n super();\n const state = binding.getState();\n if (state === SKIP_UPDATE)\n throw new Error(\"Entry not available in the store\");\n this._previousState = state;\n }\n\n private _previousState: TState;\n public getState = () => {\n if (!this.isConnected) this._syncState();\n return this._previousState;\n };\n\n private _syncState() {\n const state = this.binding.getState();\n if (state === SKIP_UPDATE) return false;\n if (shallowEqual(state, this._previousState)) return false;\n this._previousState = state;\n return true;\n }\n\n protected _connect() {\n const callback = () => {\n if (this._syncState()) {\n this.notifySubscribers();\n }\n };\n\n return this.binding.subscribe(callback);\n }\n}\n\nexport class LazyMemoizeSubject<TState extends object, TPath>\n extends BaseSubject\n implements SubscribableWithState<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(\n private binding: SubscribableWithState<TState | SKIP_UPDATE, TPath>,\n ) {\n super();\n }\n\n private _previousStateDirty = true;\n private _previousState: TState | undefined;\n public getState = () => {\n if (!this.isConnected || this._previousStateDirty) {\n const newState = this.binding.getState();\n if (newState !== SKIP_UPDATE) {\n this._previousState = newState;\n }\n this._previousStateDirty = false;\n }\n if (this._previousState === undefined)\n throw new Error(\"Entry not available in the store\");\n return this._previousState;\n };\n\n protected _connect() {\n const callback = () => {\n this._previousStateDirty = true;\n this.notifySubscribers();\n };\n\n return this.binding.subscribe(callback);\n }\n}\n\nexport class NestedSubscriptionSubject<\n TState extends Subscribable | undefined,\n TPath,\n>\n extends BaseSubject\n implements\n SubscribableWithState<TState, TPath>,\n NestedSubscribable<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(private binding: NestedSubscribable<TState, TPath>) {\n super();\n }\n\n public getState() {\n return this.binding.getState();\n }\n\n public outerSubscribe(callback: () => void) {\n return this.binding.subscribe(callback);\n }\n\n protected _connect(): Unsubscribe {\n const callback = () => {\n this.notifySubscribers();\n };\n\n let lastState = this.binding.getState();\n let innerUnsubscribe = lastState?.subscribe(callback);\n const onRuntimeUpdate = () => {\n const newState = this.binding.getState();\n if (newState === lastState) return;\n lastState = newState;\n\n innerUnsubscribe?.();\n innerUnsubscribe = newState?.subscribe(callback);\n\n callback();\n };\n\n const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);\n return () => {\n outerUnsubscribe?.();\n innerUnsubscribe?.();\n };\n }\n}\n\nexport class EventSubscriptionSubject<\n TEvent extends string,\n> extends BaseSubject {\n constructor(private config: EventSubscribable<TEvent>) {\n super();\n }\n\n public getState() {\n return this.config.binding.getState();\n }\n\n public outerSubscribe(callback: () => void) {\n return this.config.binding.subscribe(callback);\n }\n\n protected _connect(): Unsubscribe {\n const callback = (payload?: unknown) => {\n this.notifySubscribers(payload);\n };\n\n let lastState = this.config.binding.getState();\n let innerUnsubscribe = lastState?.unstable_on(this.config.event, callback);\n const onRuntimeUpdate = () => {\n const newState = this.config.binding.getState();\n if (newState === lastState) return;\n lastState = newState;\n\n innerUnsubscribe?.();\n innerUnsubscribe = newState?.unstable_on(this.config.event, callback);\n };\n\n const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);\n return () => {\n outerUnsubscribe?.();\n innerUnsubscribe?.();\n };\n }\n}\n"],"mappings":";AAEA,MAAaC,cAAcC,OAAO,aAAa;AA+B/C,SAASgB,aACPC,MACAE,MACA;CACA,IAAIF,SAASG,KAAAA,KAAaD,SAASC,KAAAA,GAAW,OAAO;CACrD,IAAIH,SAASG,KAAAA,GAAW,OAAO;CAC/B,IAAID,SAASC,KAAAA,GAAW,OAAO;CAE/B,KAAK,MAAMC,OAAOC,OAAOC,KAAKN,IAAI,GAAG;EACnC,MAAMO,SAASP,KAAKI;EACpB,MAAMI,SAASN,KAAKE;EACpB,IAAI,CAACC,OAAOI,GAAGF,QAAQC,MAAM,GAAG,OAAO;CACzC;CAEA,OAAO;AACT;AAEA,IAAaE,mBAAb,MAA8B;CAC5B,+BAAuB,IAAIE,IAAgB;CAE3C,UAAiB1B,UAAmC;EAClD,KAAKyB,aAAaE,IAAI3B,QAAQ;EAC9B,aAAa,KAAKyB,aAAaG,OAAO5B,QAAQ;CAChD;CAEA,gBAAuB;EACrB,OAAO,IAAI8B,SAAeC,YAAY;GACpC,MAAMC,cAAc,KAAKjC,gBAAgB;IACvCiC,YAAY;IACZD,QAAQ;GACV,CAAC;EACH,CAAC;CACH;CAEA,qBAA+B;EAC7B,MAAMG,SAAS,CAAA;EACf,KAAK,MAAMlC,YAAY,KAAKyB,cAC1B,IAAI;GACFzB,SAAS;EACX,SAASmC,OAAO;GACdD,OAAOE,KAAKD,KAAK;EACnB;EAGF,IAAID,OAAOG,SAAS,GAClB,IAAIH,OAAOG,WAAW,GACpB,MAAMH,OAAO;OACR;GACL,KAAK,MAAMC,SAASD,QAClBI,QAAQH,MAAMA,KAAK;GAErB,MAAM,IAAII,eAAeL,MAAM;EACjC;CAEJ;AACF;AAGA,IAAsBM,cAAtB,MAAkC;CAChC,iCAAyB,IAAId,IAAiC;CAC9D;CAEA,IAAciB,cAAc;EAC1B,OAAO,CAAC,CAAC,KAAKD;CAChB;CAIA,kBAA4B9B,SAAmB;EAC7C,KAAK,MAAMZ,YAAY,KAAKyC,gBAAgBzC,SAASY,OAAO;CAC9D;CAEA,oBAA4B;EAC1B,IAAI,KAAK6B,eAAeM,OAAO,GAAG;GAChC,IAAI,KAAKL,aAAa;GACtB,KAAKA,cAAc,KAAKE,SAAS;EACnC,OAAO;GACL,KAAKF,cAAc;GACnB,KAAKA,cAAczB,KAAAA;EACrB;CACF;CAEA,UAAiBjB,UAAuC;EACtD,KAAKyC,eAAed,IAAI3B,QAAQ;EAChC,KAAK8C,kBAAkB;EAEvB,aAAa;GACX,KAAKL,eAAeb,OAAO5B,QAAQ;GACnC,KAAK8C,kBAAkB;EACzB;CACF;AACF;AAEA,IAAaE,wBAAb,cACUR,YAEV;CAMY9B;CALV,IAAWR,OAAO;EAChB,OAAO,KAAKQ,QAAQR;CACtB;CAEA+C,YACE,SACA;EACA,MAAM;EAFEvC,KAAAA,UAAAA;EAGR,MAAMwC,QAAQxC,QAAQN,SAAS;EAC/B,IAAI8C,UAAUtD,aACZ,MAAM,IAAIuD,MAAM,kCAAkC;EACpD,KAAKC,iBAAiBF;CACxB;CAEA;CACA,iBAAwB;EACtB,IAAI,CAAC,KAAKP,aAAa,KAAKU,WAAW;EACvC,OAAO,KAAKD;CACd;CAEA,aAAqB;EACnB,MAAMF,QAAQ,KAAKxC,QAAQN,SAAS;EACpC,IAAI8C,UAAUtD,aAAa,OAAO;EAClC,IAAIiB,aAAaqC,OAAO,KAAKE,cAAc,GAAG,OAAO;EACrD,KAAKA,iBAAiBF;EACtB,OAAO;CACT;CAEA,WAAqB;EACnB,MAAMlD,iBAAiB;GACrB,IAAI,KAAKqD,WAAW,GAClB,KAAKR,kBAAkB;EAE3B;EAEA,OAAO,KAAKnC,QAAQX,UAAUC,QAAQ;CACxC;AACF;AAEA,IAAasD,qBAAb,cACUd,YAEV;CAMY9B;CALV,IAAWR,OAAO;EAChB,OAAO,KAAKQ,QAAQR;CACtB;CAEA+C,YACE,SACA;EACA,MAAM;EAFEvC,KAAAA,UAAAA;CAGV;CAEA,sBAA8B;CAC9B;CACA,iBAAwB;EACtB,IAAI,CAAC,KAAKiC,eAAe,KAAKY,qBAAqB;GACjD,MAAMC,WAAW,KAAK9C,QAAQN,SAAS;GACvC,IAAIoD,aAAa5D,aACf,KAAKwD,iBAAiBI;GAExB,KAAKD,sBAAsB;EAC7B;EACA,IAAI,KAAKH,mBAAmBnC,KAAAA,GAC1B,MAAM,IAAIkC,MAAM,kCAAkC;EACpD,OAAO,KAAKC;CACd;CAEA,WAAqB;EACnB,MAAMpD,iBAAiB;GACrB,KAAKuD,sBAAsB;GAC3B,KAAKV,kBAAkB;EACzB;EAEA,OAAO,KAAKnC,QAAQX,UAAUC,QAAQ;CACxC;AACF;AAEA,IAAayD,4BAAb,cAIUjB,YAIV;CAKsB9B;CAJpB,IAAWR,OAAO;EAChB,OAAO,KAAKQ,QAAQR;CACtB;CAEA+C,YAAY,SAAoD;EAC9D,MAAM;EADYvC,KAAAA,UAAAA;CAEpB;CAEA,WAAkB;EAChB,OAAO,KAAKA,QAAQN,SAAS;CAC/B;CAEA,eAAsBJ,UAAsB;EAC1C,OAAO,KAAKU,QAAQX,UAAUC,QAAQ;CACxC;CAEA,WAAkC;EAChC,MAAMA,iBAAiB;GACrB,KAAK6C,kBAAkB;EACzB;EAEA,IAAIc,YAAY,KAAKjD,QAAQN,SAAS;EACtC,IAAIwD,mBAAmBD,WAAW5D,UAAUC,QAAQ;EACpD,MAAM6D,wBAAwB;GAC5B,MAAML,WAAW,KAAK9C,QAAQN,SAAS;GACvC,IAAIoD,aAAaG,WAAW;GAC5BA,YAAYH;GAEZI,mBAAmB;GACnBA,mBAAmBJ,UAAUzD,UAAUC,QAAQ;GAE/CA,SAAS;EACX;EAEA,MAAM8D,mBAAmB,KAAKJ,eAAeG,eAAe;EAC5D,aAAa;GACXC,mBAAmB;GACnBF,mBAAmB;EACrB;CACF;AACF;AAEA,IAAaG,2BAAb,cAEUvB,YAAY;CACAwB;CAApBf,YAAY,QAA2C;EACrD,MAAM;EADYe,KAAAA,SAAAA;CAEpB;CAEA,WAAkB;EAChB,OAAO,KAAKA,OAAOtD,QAAQN,SAAS;CACtC;CAEA,eAAsBJ,UAAsB;EAC1C,OAAO,KAAKgE,OAAOtD,QAAQX,UAAUC,QAAQ;CAC/C;CAEA,WAAkC;EAChC,MAAMA,YAAYY,YAAsB;GACtC,KAAKiC,kBAAkBjC,OAAO;EAChC;EAEA,IAAI+C,YAAY,KAAKK,OAAOtD,QAAQN,SAAS;EAC7C,IAAIwD,mBAAmBD,WAAWhD,YAAY,KAAKqD,OAAOxD,OAAOR,QAAQ;EACzE,MAAM6D,wBAAwB;GAC5B,MAAML,WAAW,KAAKQ,OAAOtD,QAAQN,SAAS;GAC9C,IAAIoD,aAAaG,WAAW;GAC5BA,YAAYH;GAEZI,mBAAmB;GACnBA,mBAAmBJ,UAAU7C,YAAY,KAAKqD,OAAOxD,OAAOR,QAAQ;EACtE;EAEA,MAAM8D,mBAAmB,KAAKJ,eAAeG,eAAe;EAC5D,aAAa;GACXC,mBAAmB;GACnBF,mBAAmB;EACrB;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-thread-list-test-helpers.js","names":[],"sources":["../../src/tests/remote-thread-list-test-helpers.ts"],"sourcesContent":["import { vi } from \"vitest\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"../react/runtimes/RemoteThreadListThreadListRuntimeCore\";\nimport type { RemoteThreadListAdapter } from \"../runtimes/remote-thread-list/types\";\nimport type { ModelContextProvider } from \"../model-context/types\";\n\nexport function deferred<T>() {\n let resolve!: (value: T) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nexport const contextProvider: ModelContextProvider = {\n getModelContext: () => ({}),\n subscribe: () => () => {},\n};\n\nexport function makeAdapter(\n overrides: Partial<RemoteThreadListAdapter> = {},\n): RemoteThreadListAdapter {\n return {\n list: vi.fn(async () => ({ threads: [] })),\n initialize: vi.fn(async (threadId: string) => ({\n remoteId: threadId,\n externalId: threadId,\n })),\n rename: vi.fn(async () => {}),\n archive: vi.fn(async () => {}),\n unarchive: vi.fn(async () => {}),\n delete: vi.fn(async () => {}),\n generateTitle: vi.fn(\n async () =>\n new ReadableStream({\n start(c) {\n c.close();\n },\n }) as never,\n ),\n fetch: vi.fn(async (id: string) => ({\n status: \"regular\" as const,\n remoteId: id,\n externalId: id,\n title: \"Test\",\n })),\n ...overrides,\n };\n}\n\nexport function createCore(\n adapter: RemoteThreadListAdapter,\n threadId?: string,\n): RemoteThreadListThreadListRuntimeCore {\n const core = new RemoteThreadListThreadListRuntimeCore(\n { adapter, runtimeHook: () => ({}) as never, threadId },\n contextProvider,\n );\n // `startThreadRuntime` blocks until a React component attaches a runtime;\n // stub it so non-React unit tests don't hang.\n (\n core as unknown as {\n _hookManager: {\n startThreadRuntime: (id: string) => Promise<unknown>;\n };\n }\n )._hookManager.startThreadRuntime = async () => ({});\n return core;\n}\n"],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"file":"remote-thread-list-test-helpers.js","names":["vi","RemoteThreadListThreadListRuntimeCore","RemoteThreadListAdapter","ModelContextProvider","deferred","resolve","value","T","reject","reason","promise","Promise","res","rej","contextProvider","getModelContext","subscribe","makeAdapter","overrides","Partial","list","fn","threads","initialize","threadId","remoteId","externalId","rename","archive","unarchive","delete","generateTitle","ReadableStream","start","c","close","fetch","id","status","const","title","createCore","adapter","core","runtimeHook","_hookManager","startThreadRuntime"],"sources":["../../src/tests/remote-thread-list-test-helpers.ts"],"sourcesContent":["import { vi } from \"vitest\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"../react/runtimes/RemoteThreadListThreadListRuntimeCore\";\nimport type { RemoteThreadListAdapter } from \"../runtimes/remote-thread-list/types\";\nimport type { ModelContextProvider } from \"../model-context/types\";\n\nexport function deferred<T>() {\n let resolve!: (value: T) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nexport const contextProvider: ModelContextProvider = {\n getModelContext: () => ({}),\n subscribe: () => () => {},\n};\n\nexport function makeAdapter(\n overrides: Partial<RemoteThreadListAdapter> = {},\n): RemoteThreadListAdapter {\n return {\n list: vi.fn(async () => ({ threads: [] })),\n initialize: vi.fn(async (threadId: string) => ({\n remoteId: threadId,\n externalId: threadId,\n })),\n rename: vi.fn(async () => {}),\n archive: vi.fn(async () => {}),\n unarchive: vi.fn(async () => {}),\n delete: vi.fn(async () => {}),\n generateTitle: vi.fn(\n async () =>\n new ReadableStream({\n start(c) {\n c.close();\n },\n }) as never,\n ),\n fetch: vi.fn(async (id: string) => ({\n status: \"regular\" as const,\n remoteId: id,\n externalId: id,\n title: \"Test\",\n })),\n ...overrides,\n };\n}\n\nexport function createCore(\n adapter: RemoteThreadListAdapter,\n threadId?: string,\n): RemoteThreadListThreadListRuntimeCore {\n const core = new RemoteThreadListThreadListRuntimeCore(\n { adapter, runtimeHook: () => ({}) as never, threadId },\n contextProvider,\n );\n // `startThreadRuntime` blocks until a React component attaches a runtime;\n // stub it so non-React unit tests don't hang.\n (\n core as unknown as {\n _hookManager: {\n startThreadRuntime: (id: string) => Promise<unknown>;\n };\n }\n )._hookManager.startThreadRuntime = async () => ({});\n return core;\n}\n"],"mappings":";;;AAKA,SAAgBI,WAAc;CAC5B,IAAIC;CACJ,IAAIG;CAKJ,OAAO;EAAEE,SAAAA,IAJWC,SAAYC,KAAKC,QAAQ;GAC3CR,UAAUO;GACVJ,SAASK;EACX,CACSH;EAASL;EAASG;CAAO;AACpC;AAEA,MAAaM,kBAAwC;CACnDC,wBAAwB,CAAC;CACzBC,uBAAuB,CAAC;AAC1B;AAEA,SAAgBC,YACdC,YAA8C,CAAC,GACtB;CACzB,OAAO;EACLE,MAAMpB,GAAGqB,GAAG,aAAa,EAAEC,SAAS,CAAA,EAAG,EAAE;EACzCC,YAAYvB,GAAGqB,GAAG,OAAOG,cAAsB;GAC7CC,UAAUD;GACVE,YAAYF;EACd,EAAE;EACFG,QAAQ3B,GAAGqB,GAAG,YAAY,CAAC,CAAC;EAC5BO,SAAS5B,GAAGqB,GAAG,YAAY,CAAC,CAAC;EAC7BQ,WAAW7B,GAAGqB,GAAG,YAAY,CAAC,CAAC;EAC/BS,QAAQ9B,GAAGqB,GAAG,YAAY,CAAC,CAAC;EAC5BU,eAAe/B,GAAGqB,GAChB,YACE,IAAIW,eAAe,EACjBC,MAAMC,GAAG;GACPA,EAAEC,MAAM;EACV,EACF,CAAC,CACL;EACAC,OAAOpC,GAAGqB,GAAG,OAAOgB,QAAgB;GAClCC,QAAQ;GACRb,UAAUY;GACVX,YAAYW;GACZG,OAAO;EACT,EAAE;EACF,GAAGtB;CACL;AACF;AAEA,SAAgBuB,WACdC,SACAlB,UACuC;CACvC,MAAMmB,OAAO,IAAI1C,sCACf;EAAEyC;EAASE,oBAAoB,CAAC;EAAapB;CAAS,GACtDV,eACF;CAGA,KAME+B,aAAaC,qBAAqB,aAAa,CAAC;CAClD,OAAOH;AACT"}
|
package/dist/types/message.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CompleteAttachment } from "./attachment.js";
|
|
2
|
-
import { ToolModelContentPart } from "assistant-stream";
|
|
2
|
+
import { ToolCallTiming, ToolModelContentPart } from "assistant-stream";
|
|
3
3
|
import { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
|
|
4
4
|
|
|
5
5
|
//#region src/types/message.d.ts
|
|
@@ -104,6 +104,35 @@ declare const isMcpAppUri: (uri: string | undefined) => boolean;
|
|
|
104
104
|
type ToolCallMessagePartMcpMetadata = {
|
|
105
105
|
readonly app?: McpAppMetadata;
|
|
106
106
|
};
|
|
107
|
+
type ToolApprovalOptionKind = "allow-once" | "allow-always" | "reject-once" | "reject-always";
|
|
108
|
+
type ToolApprovalOption = {
|
|
109
|
+
/** Opaque, host-defined identifier. Scope semantics (session vs project vs global) belong to the option supplier. */readonly id: string;
|
|
110
|
+
/**
|
|
111
|
+
* Decision class. Drives approved-resolution and default rendering.
|
|
112
|
+
* Open union: `_`-prefixed custom kinds are never auto-resolved and the
|
|
113
|
+
* default kit skips them; they must be answered with an explicit
|
|
114
|
+
* `approved` value (optionally alongside the `optionId`).
|
|
115
|
+
*/
|
|
116
|
+
readonly kind: ToolApprovalOptionKind | (string & {}); /** Human label. Renderers supply defaults per kind when omitted. */
|
|
117
|
+
readonly label?: string;
|
|
118
|
+
readonly description?: string; /** Patterns or rules this option would persist, shown before the user commits. Supplied by the host; never derived by the library. */
|
|
119
|
+
readonly grants?: readonly string[]; /** Opt-in confirmation step before this option resolves. */
|
|
120
|
+
readonly confirm?: boolean | {
|
|
121
|
+
title?: string;
|
|
122
|
+
description?: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
type ToolApprovalResponse = {
|
|
126
|
+
readonly approved: boolean;
|
|
127
|
+
readonly reason?: string;
|
|
128
|
+
} | {
|
|
129
|
+
readonly optionId: string;
|
|
130
|
+
readonly reason?: string;
|
|
131
|
+
} | {
|
|
132
|
+
readonly approved: boolean;
|
|
133
|
+
readonly optionId: string;
|
|
134
|
+
readonly reason?: string;
|
|
135
|
+
};
|
|
107
136
|
type ToolCallMessagePart<TArgs = ReadonlyJSONObject, TResult = unknown> = {
|
|
108
137
|
/** Identifies this part as a tool call. */readonly type: "tool-call"; /** Stable identifier for this invocation of the tool. */
|
|
109
138
|
readonly toolCallId: string; /** Name of the tool requested by the model. */
|
|
@@ -117,18 +146,22 @@ type ToolCallMessagePart<TArgs = ReadonlyJSONObject, TResult = unknown> = {
|
|
|
117
146
|
readonly result?: TResult | undefined; /** Whether the result represents a tool execution error. */
|
|
118
147
|
readonly isError?: boolean | undefined; /** Raw JSON argument text streamed by the model. */
|
|
119
148
|
readonly argsText: string; /** UI-only artifact associated with the tool result. */
|
|
120
|
-
readonly artifact?: unknown; /**
|
|
149
|
+
readonly artifact?: unknown; /** Wall-clock timing for this call, when the runtime or host tracks it. */
|
|
150
|
+
readonly timing?: ToolCallTiming; /** MCP app metadata associated with this tool call, when present. */
|
|
121
151
|
readonly mcp?: ToolCallMessagePartMcpMetadata; /** Content returned to the model for this tool result. */
|
|
122
152
|
readonly modelContent?: readonly ToolModelContentPart[] | undefined; /** Human-input request that must be resolved before the run can continue. */
|
|
123
153
|
readonly interrupt?: {
|
|
124
154
|
type: "human";
|
|
125
155
|
payload: unknown;
|
|
126
|
-
}; /** Server-side approval gate. `
|
|
156
|
+
}; /** Server-side approval gate. `respondToApproval` may only be called while `approved` is undefined and no `resolution` is recorded. */
|
|
127
157
|
readonly approval?: {
|
|
128
158
|
readonly id: string;
|
|
129
159
|
readonly approved?: boolean;
|
|
130
160
|
readonly reason?: string;
|
|
131
|
-
readonly isAutomatic?: boolean;
|
|
161
|
+
readonly isAutomatic?: boolean; /** Available decisions for this call. Absent: a plain allow / deny pair. */
|
|
162
|
+
readonly options?: readonly ToolApprovalOption[]; /** The option chosen at resolution, when options were present. */
|
|
163
|
+
readonly optionId?: string; /** Terminal non-decision state: the request was cancelled or expired without a user decision. Set by the host. */
|
|
164
|
+
readonly resolution?: "cancelled" | "expired";
|
|
132
165
|
}; /** Parent message-part ID when this part belongs to a nested structure. */
|
|
133
166
|
readonly parentId?: string;
|
|
134
167
|
/**
|
|
@@ -262,5 +295,5 @@ type AppendMessage = Omit<ThreadMessage, "id"> & {
|
|
|
262
295
|
steer?: boolean | undefined;
|
|
263
296
|
};
|
|
264
297
|
//#endregion
|
|
265
|
-
export { AppendMessage, DataMessagePart, FileMessagePart, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, ImageMessagePart, MCP_APP_URI_SCHEME, McpAppMetadata, MessagePartStatus, MessageRole, MessageStatus, MessageTiming, ReasoningMessagePart, RunConfig, SourceMessagePart, SourceProviderMetadata, TextMessagePart, ThreadAssistantMessage, ThreadAssistantMessagePart, ThreadMessage, ThreadStep, ThreadSystemMessage, ThreadUserMessage, ThreadUserMessagePart, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolCallMessagePartStatus, type ToolModelContentPart, Unstable_AudioMessagePart, isMcpAppUri };
|
|
298
|
+
export { AppendMessage, DataMessagePart, FileMessagePart, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, ImageMessagePart, MCP_APP_URI_SCHEME, McpAppMetadata, MessagePartStatus, MessageRole, MessageStatus, MessageTiming, ReasoningMessagePart, RunConfig, SourceMessagePart, SourceProviderMetadata, TextMessagePart, ThreadAssistantMessage, ThreadAssistantMessagePart, ThreadMessage, ThreadStep, ThreadSystemMessage, ThreadUserMessage, ThreadUserMessagePart, ToolApprovalOption, ToolApprovalOptionKind, ToolApprovalResponse, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolCallMessagePartStatus, type ToolCallTiming, type ToolModelContentPart, Unstable_AudioMessagePart, isMcpAppUri };
|
|
266
299
|
//# sourceMappingURL=message.d.ts.map
|