@assistant-ui/core 0.3.17 → 0.3.18
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.map +1 -1
- package/dist/adapters/attachment.js +5 -4
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -2
- package/dist/internal.js +3 -2
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +10 -4
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +2 -0
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +30 -7
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +16 -9
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/registry.js +3 -5
- package/dist/model-context/registry.js.map +1 -1
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/model-context/types.js +5 -4
- package/dist/model-context/types.js.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.js +62 -56
- package/dist/react/client/InMemoryThreadList.js.map +1 -1
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +24 -27
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +1 -0
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +151 -141
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +18 -16
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +242 -121
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +11 -9
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +2 -2
- package/dist/react/model-context/makeAssistantTool.js +1 -1
- package/dist/react/model-context/makeAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +2 -2
- package/dist/react/model-context/useAssistantTool.js +1 -1
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.js +2 -1
- package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +16 -8
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +5 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +103 -103
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +1 -0
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +13 -11
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +4 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +401 -34
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +2 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +75 -46
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +63 -23
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +7 -3
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js +2 -2
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +3 -0
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js +18 -14
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +4 -0
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +1 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +16 -12
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +6 -5
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +12 -5
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +4 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +1 -1
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +1 -0
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +15 -6
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +1 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -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-list-runtime-core.js +21 -27
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/internal.d.ts +2 -2
- package/dist/runtimes/internal.js +2 -2
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +18 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +130 -42
- package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +49 -0
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/title-generation.js +197 -0
- package/dist/runtimes/remote-thread-list/title-generation.js.map +1 -0
- package/dist/runtimes/remote-thread-list/title.d.ts +3 -1
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.js +9 -1
- package/dist/runtimes/remote-thread-list/title.js.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +10 -0
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +19 -3
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/model-context-client.js +2 -1
- package/dist/store/clients/model-context-client.js.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.js +1 -0
- package/dist/store/clients/single-thread-list.js.map +1 -1
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/suggestions.js +5 -4
- package/dist/store/clients/suggestions.js.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -0
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +97 -61
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -0
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +221 -144
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.js +1 -1
- 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 +54 -52
- 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 +193 -121
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/scopes/composer.d.ts +10 -2
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +30 -1
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +2 -2
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +8 -0
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +1 -0
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/types/attachment.d.ts +2 -1
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/attachment.js +2 -1
- package/dist/types/attachment.js.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +19 -0
- package/dist/utils/abortable-iterable.d.ts.map +1 -0
- package/dist/utils/abortable-iterable.js +72 -0
- package/dist/utils/abortable-iterable.js.map +1 -0
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.js +20 -2
- package/dist/utils/composite-context-provider.js.map +1 -1
- package/dist/utils/record.d.ts +11 -0
- package/dist/utils/record.d.ts.map +1 -0
- package/dist/utils/record.js +12 -0
- package/dist/utils/record.js.map +1 -0
- package/package.json +10 -10
- package/src/adapters/attachment.test.ts +50 -1
- package/src/adapters/attachment.ts +7 -4
- package/src/index.ts +1 -0
- package/src/internal.ts +4 -0
- package/src/model-context/frame/host.test.ts +24 -0
- package/src/model-context/frame/host.ts +10 -4
- package/src/model-context/frame/provider.test.ts +71 -0
- package/src/model-context/frame/provider.ts +37 -7
- package/src/model-context/interactable-composer-metadata.test.ts +28 -0
- package/src/model-context/interactable-composer-metadata.ts +9 -3
- package/src/model-context/registry.test.ts +12 -0
- package/src/model-context/registry.ts +3 -2
- package/src/model-context/types.test.ts +25 -0
- package/src/model-context/types.ts +9 -4
- package/src/react/RuntimeAdapter.test.ts +34 -0
- package/src/react/client/InMemoryThreadList.ts +1 -0
- package/src/react/client/Interactables.test.ts +28 -0
- package/src/react/client/Interactables.ts +15 -13
- package/src/react/client/RemoteThreadList.background.test.ts +148 -6
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +42 -1
- package/src/react/client/RemoteThreadList.test.ts +345 -3
- package/src/react/client/RemoteThreadList.ts +166 -110
- package/src/react/client/Tools.ts +22 -11
- package/src/react/interactables-legacy/Interactables.ts +16 -16
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +9 -10
- package/src/react/model-context/makeAssistantTool.ts +2 -2
- package/src/react/model-context/useAssistantTool.ts +2 -2
- package/src/react/model-context/useToolArgsStatus.test.tsx +30 -0
- package/src/react/model-context/useToolArgsStatus.ts +2 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.destroy.test.tsx +172 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +33 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +7 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +28 -5
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.load-error.test.ts +132 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.switch-delete.test.ts +105 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +136 -111
- package/src/react/runtimes/RemoteThreadResource.test.ts +9 -0
- package/src/react/runtimes/RemoteThreadResource.ts +19 -12
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +483 -6
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +504 -68
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +15 -0
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +1 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +41 -0
- package/src/react/runtimes/useExternalStoreRuntime.ts +10 -4
- package/src/react/runtimes/useLocalRuntime.test.tsx +20 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.load-error.test.tsx +108 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +33 -0
- package/src/runtime/api/message-runtime.test.ts +75 -0
- package/src/runtime/api/thread-list-item-runtime.ts +10 -3
- package/src/runtime/api/thread-list-runtime.ts +21 -11
- package/src/runtime/api/thread-runtime.test.ts +78 -0
- package/src/runtime/api/thread-runtime.ts +8 -1
- package/src/runtime/base/base-composer-runtime-core.ts +36 -8
- package/src/runtime/base/base-thread-runtime-core.test.ts +55 -1
- package/src/runtime/base/base-thread-runtime-core.ts +6 -4
- package/src/runtime/interfaces/composer-runtime-core.ts +10 -5
- package/src/runtime/interfaces/thread-list-runtime-core.ts +5 -1
- package/src/runtime/utils/external-message-conversion.test.ts +68 -0
- package/src/runtime/utils/external-message-conversion.ts +1 -1
- package/src/runtime/utils/message-repository.ts +29 -17
- package/src/runtime/utils/thread-message-like.ts +1 -1
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +18 -13
- package/src/runtimes/internal.ts +1 -0
- package/src/runtimes/remote-thread-list/remote-thread-state.test.ts +128 -2
- package/src/runtimes/remote-thread-list/remote-thread-state.ts +182 -42
- package/src/runtimes/remote-thread-list/title-generation.test.ts +602 -0
- package/src/runtimes/remote-thread-list/title-generation.ts +329 -0
- package/src/runtimes/remote-thread-list/title.test.ts +62 -0
- package/src/runtimes/remote-thread-list/title.ts +13 -0
- package/src/runtimes/remote-thread-list/types.ts +10 -0
- package/src/store/clients/external-thread.ts +48 -3
- package/src/store/clients/model-context-client.ts +5 -1
- package/src/store/clients/single-thread-list.ts +1 -0
- package/src/store/clients/suggestions.test.ts +40 -0
- package/src/store/clients/suggestions.ts +13 -10
- package/src/store/runtime-clients/composer-runtime-client.ts +42 -9
- package/src/store/runtime-clients/message-runtime-client.ts +54 -6
- package/src/store/runtime-clients/thread-list-item-runtime-client.ts +4 -2
- package/src/store/runtime-clients/thread-list-runtime-client.ts +1 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +58 -10
- package/src/store/scopes/composer.ts +16 -4
- package/src/store/scopes/message.ts +14 -0
- package/src/store/scopes/thread-list-item.ts +5 -2
- package/src/store/scopes/thread.ts +4 -0
- package/src/store/scopes/threads.ts +1 -0
- package/src/tests/MessageRepository.test.ts +116 -0
- package/src/tests/OptimisticState-list-race.test.ts +1 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-initialize-adapter-change.test.ts +38 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-load-race.test.ts +47 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-title-race.test.ts +89 -0
- package/src/tests/attachment-adapters.test.ts +14 -0
- package/src/tests/base-composer-runtime-core.test.ts +39 -0
- package/src/tests/external-store-thread-list-runtime-core.test.ts +83 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +27 -18
- package/src/tests/external-thread-attachments.test.tsx +139 -0
- package/src/tests/external-thread-parity.test.tsx +23 -0
- package/src/tests/remote-thread-list-isLoading.test.ts +1 -0
- package/src/tests/thread-list-runtime-getLoadThreadsPromise.test.ts +1 -0
- package/src/tests/thread-switch-events.test.tsx +78 -0
- package/src/tests/tools-scope-migration.test.tsx +28 -0
- package/src/types/attachment.ts +4 -0
- package/src/utils/abortable-iterable.test.ts +213 -0
- package/src/utils/abortable-iterable.ts +93 -0
- package/src/utils/composite-context-provider.test.ts +25 -0
- package/src/utils/composite-context-provider.ts +23 -2
- package/src/utils/record.test.ts +48 -0
- package/src/utils/record.ts +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudThreadHistoryAdapter.js","names":["RefObject","useEffect","useRef","useState","GenericThreadHistoryAdapter","ThreadHistoryAdapter","MessageFormatAdapter","MessageFormatItem","MessageFormatRepository","ExportedMessageRepositoryItem","AssistantCloud","AssistantCloudRunReportToolCall","CloudMessagePersistence","createFormattedPersistence","createRunTelemetryToolCall","normalizeRunTelemetryUsage","RunTelemetryUsageInit","truncateRunTelemetryText","auiV0Decode","auiV0Encode","AssistantClient","getClientId","useAui","ThreadListItemMethods","CloudThreadListItem","Pick","globalPersistence","WeakMap","ClientId","AssistantCloudThreadHistoryAdapter","cloudRef","getAui","constructor","aui","getPersistence","threadListItem","key","has","set","current","get","_persistence","tryGetKeyedThreadListItem","live","source","undefined","id","getState","listed","threads","threadItems","some","item","remoteId","withFormat","Record","formatAdapter","TMessage","TStorageFormat","adapter","pinCurrent","next","resolvePinned","getTargetFormatted","pin","append","pinned","Error","initialize","update","localMessageId","delete","reportTelemetry","items","options","durationMs","stepTimestamps","StepTimestamp","encodedRunMessages","map","encode","_reportRunTelemetry","format","load","Promise","messages","parentId","message","encoded","telemetry","enabled","_maybeReportRun","isPersisted","filter","m","reverse","runMessages","T","extracted","extractRunTelemetry","_sendReport","content","extractTelemetry","data","TelemetryData","mergedSteps","mergeStepTimestamps","steps","initial","Parameters","this","runs","report","thread_id","status","totalSteps","total_steps","toolCalls","tool_calls","inputTokens","input_tokens","outputTokens","output_tokens","reasoningTokens","reasoning_tokens","cachedInputTokens","cached_input_tokens","duration_ms","outputText","output_text","metadata","modelId","model_id","beforeReport","catch","TelemetryStepData","start_ms","end_ms","timestamps","t","len","Math","min","length","s","i","extractAuiV0","extractAiSdkV6","aggregateAiSdkV6RunSteps","result","AUI_STATUS_MAP","error","incomplete","msg","role","type","text","toolName","toolCallId","args","argsText","usage","custom","p","textParts","join","totalInput","totalOutput","totalReasoning","totalCachedInput","hasInput","hasOutput","hasReasoning","hasCachedInput","step","statusType","telemetrySteps","AiSdkV6Part","input","output","AiSdkV6Message","parts","isToolCallPart","startsWith","isDynamicToolPart","partToToolCall","toolSource","slice","collectAiSdkV6Parts","stepsData","currentStepToolCalls","push","tc","extractModelId","buildAiSdkV6Result","hasText","extractAiSdkV6Usage","normalized","hasAny","n","stepMessages","allTextParts","allToolCalls","allStepsData","hasAssistant","useAssistantCloudThreadHistoryAdapter","auiRef"],"sources":["../../../../src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts"],"sourcesContent":["import { type RefObject, useEffect, useRef, useState } from \"react\";\nimport type {\n GenericThreadHistoryAdapter,\n ThreadHistoryAdapter,\n MessageFormatAdapter,\n MessageFormatItem,\n MessageFormatRepository,\n} from \"../../../adapters/thread-history\";\nimport type { ExportedMessageRepositoryItem } from \"../../../runtime/utils/message-repository\";\nimport {\n type AssistantCloud,\n type AssistantCloudRunReportToolCall,\n CloudMessagePersistence,\n createFormattedPersistence,\n createRunTelemetryToolCall,\n normalizeRunTelemetryUsage,\n type RunTelemetryUsageInit,\n truncateRunTelemetryText,\n} from \"assistant-cloud\";\nimport { auiV0Decode, auiV0Encode } from \"./auiV0\";\nimport { type AssistantClient, getClientId, useAui } from \"@assistant-ui/store\";\nimport type { ThreadListItemMethods } from \"../../../store/scopes/thread-list-item\";\n\ntype CloudThreadListItem = Pick<\n ThreadListItemMethods,\n \"getState\" | \"initialize\"\n>;\n\nconst globalPersistence = new WeakMap<\n getClientId.ClientId,\n CloudMessagePersistence\n>();\n\nclass AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {\n private cloudRef: RefObject<AssistantCloud>;\n private getAui: () => AssistantClient;\n\n constructor(\n cloudRef: RefObject<AssistantCloud>,\n getAui: () => AssistantClient,\n ) {\n this.cloudRef = cloudRef;\n this.getAui = getAui;\n }\n\n private get aui(): AssistantClient {\n return this.getAui();\n }\n\n private getPersistence(\n threadListItem: CloudThreadListItem = this.aui.threadListItem,\n ): CloudMessagePersistence {\n const key = getClientId(threadListItem);\n if (!globalPersistence.has(key)) {\n globalPersistence.set(\n key,\n new CloudMessagePersistence(() => this.cloudRef.current),\n );\n }\n return globalPersistence.get(key)!;\n }\n\n private get _persistence(): CloudMessagePersistence {\n return this.getPersistence();\n }\n\n private tryGetKeyedThreadListItem(): CloudThreadListItem | undefined {\n const live = this.aui.threadListItem;\n if (!live.source) return undefined;\n const id = live.getState().id;\n if (id === undefined) return undefined;\n // A body can resolve before the list's committed items include its\n // thread; the live item is already the per-thread anchor in that window.\n const listed = this.aui.threads\n .getState()\n .threadItems.some((item) => item.id === id || item.remoteId === id);\n return listed ? this.aui.threads.item({ id }) : live;\n }\n\n withFormat<TMessage, TStorageFormat extends Record<string, unknown>>(\n formatAdapter: MessageFormatAdapter<TMessage, TStorageFormat>,\n ): GenericThreadHistoryAdapter<TMessage> {\n const adapter = this;\n let threadListItem: CloudThreadListItem | undefined;\n const pinCurrent = () => {\n const next = adapter.tryGetKeyedThreadListItem();\n if (next) threadListItem = next;\n return threadListItem;\n };\n const resolvePinned = () => threadListItem ?? pinCurrent();\n const getTargetFormatted = (item: CloudThreadListItem) =>\n createFormattedPersistence(adapter.getPersistence(item), formatAdapter);\n return {\n pin() {\n pinCurrent();\n },\n async append(item: MessageFormatItem<TMessage>) {\n const pinned = resolvePinned();\n if (!pinned) {\n throw new Error(\n \"Cannot persist cloud history without a thread list item.\",\n );\n }\n const remoteId =\n pinned.getState().remoteId ?? (await pinned.initialize()).remoteId;\n await getTargetFormatted(pinned).append(remoteId, item);\n },\n async update(item: MessageFormatItem<TMessage>, localMessageId: string) {\n const pinned = resolvePinned();\n const remoteId = pinned?.getState().remoteId;\n if (!remoteId || !pinned) return;\n await getTargetFormatted(pinned).update?.(\n remoteId,\n item,\n localMessageId,\n );\n },\n async delete() {\n throw new Error(\n \"Assistant Cloud does not support deleting thread messages yet.\",\n );\n },\n reportTelemetry(\n items: MessageFormatItem<TMessage>[],\n options?: {\n durationMs?: number;\n stepTimestamps?: StepTimestamp[];\n },\n ) {\n const encodedRunMessages = items.map((item) =>\n formatAdapter.encode(item),\n );\n adapter._reportRunTelemetry(\n formatAdapter.format,\n encodedRunMessages,\n options,\n resolvePinned(),\n );\n },\n async load(): Promise<MessageFormatRepository<TMessage>> {\n // Loads re-pin and resolve through the pinned item, so the id mapping\n // they populate lives on the same persistence instance later writes\n // resolve, whichever of the list item or the live graft won the pin.\n const pinned = pinCurrent();\n const live = adapter.aui.threadListItem;\n const remoteId = live.source ? live.getState().remoteId : undefined;\n if (!remoteId) return { messages: [] };\n return getTargetFormatted(pinned ?? live).load(remoteId);\n },\n };\n }\n\n async append({ parentId, message }: ExportedMessageRepositoryItem) {\n const { remoteId } = await this.aui.threadListItem.initialize();\n const encoded = auiV0Encode(message);\n await this._persistence.append(\n remoteId,\n message.id,\n parentId,\n \"aui/v0\",\n encoded,\n );\n\n if (this.cloudRef.current.telemetry.enabled) {\n this._maybeReportRun(remoteId, \"aui/v0\", encoded);\n }\n }\n\n async update(item: ExportedMessageRepositoryItem) {\n if (!this._persistence.isPersisted(item.message.id)) {\n return this.append(item);\n }\n const { message } = item;\n const remoteId = this.aui.threadListItem.getState().remoteId;\n if (!remoteId) return;\n const encoded = auiV0Encode(message);\n await this._persistence.update(remoteId, message.id, \"aui/v0\", encoded);\n\n if (this.cloudRef.current.telemetry.enabled) {\n this._maybeReportRun(remoteId, \"aui/v0\", encoded);\n }\n }\n\n async delete() {\n throw new Error(\n \"Assistant Cloud does not support deleting thread messages yet.\",\n );\n }\n\n async load() {\n const remoteId = this.aui.threadListItem.getState().remoteId;\n if (!remoteId) return { messages: [] };\n const messages = await this._persistence.load(remoteId, \"aui/v0\");\n return {\n messages: messages\n .filter(\n (m): m is typeof m & { format: \"aui/v0\" } => m.format === \"aui/v0\",\n )\n .map(auiV0Decode)\n .reverse(),\n };\n }\n\n private _reportRunTelemetry<T>(\n format: string,\n runMessages: T[],\n options?: {\n durationMs?: number;\n stepTimestamps?: StepTimestamp[];\n },\n threadListItem?: CloudThreadListItem,\n ) {\n if (!this.cloudRef.current.telemetry.enabled) return;\n\n const remoteId = (threadListItem ?? this.aui.threadListItem).getState()\n .remoteId;\n if (!remoteId) return;\n\n const extracted = extractRunTelemetry(format, runMessages);\n if (!extracted) return;\n\n this._sendReport(\n remoteId,\n extracted,\n options?.durationMs,\n options?.stepTimestamps,\n );\n }\n\n private _maybeReportRun<T>(remoteId: string, format: string, content: T) {\n const extracted = extractTelemetry(format, content);\n if (!extracted) return;\n\n this._sendReport(remoteId, extracted);\n }\n\n private _sendReport(\n remoteId: string,\n data: TelemetryData,\n durationMs?: number,\n stepTimestamps?: StepTimestamp[],\n ) {\n const mergedSteps = mergeStepTimestamps(data.steps, stepTimestamps);\n // Keep in sync with assistant-cloud createRunSchema\n // (apps/aui-cloud-api/src/endpoints/runs/create.ts).\n const initial: Parameters<typeof this.cloudRef.current.runs.report>[0] = {\n thread_id: remoteId,\n status: data.status,\n ...(data.totalSteps != null\n ? { total_steps: data.totalSteps }\n : undefined),\n ...(data.toolCalls ? { tool_calls: data.toolCalls } : undefined),\n ...(mergedSteps ? { steps: mergedSteps } : undefined),\n ...(data.inputTokens != null\n ? { input_tokens: data.inputTokens }\n : undefined),\n ...(data.outputTokens != null\n ? { output_tokens: data.outputTokens }\n : undefined),\n ...(data.reasoningTokens != null\n ? { reasoning_tokens: data.reasoningTokens }\n : undefined),\n ...(data.cachedInputTokens != null\n ? { cached_input_tokens: data.cachedInputTokens }\n : undefined),\n ...(durationMs != null ? { duration_ms: durationMs } : undefined),\n ...(data.outputText != null\n ? { output_text: data.outputText }\n : undefined),\n ...(data.metadata ? { metadata: data.metadata } : undefined),\n ...(data.modelId ? { model_id: data.modelId } : undefined),\n };\n\n const { beforeReport } = this.cloudRef.current.telemetry;\n const report = beforeReport ? beforeReport(initial) : initial;\n if (!report) return;\n\n this.cloudRef.current.runs.report(report).catch(() => {});\n }\n}\n\ntype TelemetryStepData = {\n input_tokens?: number;\n output_tokens?: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n tool_calls?: AssistantCloudRunReportToolCall[];\n start_ms?: number;\n end_ms?: number;\n};\n\ntype StepTimestamp = { start_ms: number; end_ms: number };\n\nfunction mergeStepTimestamps(\n steps: TelemetryStepData[] | undefined,\n timestamps: StepTimestamp[] | undefined,\n): TelemetryStepData[] | undefined {\n if (!timestamps) return steps;\n if (!steps) return timestamps.map((t) => ({ ...t }));\n\n const len = Math.min(steps.length, timestamps.length);\n return steps.map((s, i) => ({\n ...s,\n ...(i < len ? timestamps[i] : undefined),\n }));\n}\n\ntype TelemetryData = {\n status: \"completed\" | \"incomplete\" | \"error\";\n toolCalls?: AssistantCloudRunReportToolCall[];\n totalSteps?: number;\n inputTokens?: number;\n outputTokens?: number;\n reasoningTokens?: number;\n cachedInputTokens?: number;\n outputText?: string;\n metadata?: Record<string, unknown>;\n steps?: TelemetryStepData[];\n modelId?: string;\n};\n\nfunction extractTelemetry<T>(format: string, content: T): TelemetryData | null {\n switch (format) {\n case \"aui/v0\":\n return extractAuiV0(content);\n case \"ai-sdk/v6\":\n return extractAiSdkV6(content);\n default:\n return null;\n }\n}\n\nfunction extractRunTelemetry<T>(\n format: string,\n runMessages: T[],\n): TelemetryData | null {\n if (format === \"ai-sdk/v6\") {\n return aggregateAiSdkV6RunSteps(runMessages);\n }\n for (let i = runMessages.length - 1; i >= 0; i--) {\n const result = extractTelemetry(format, runMessages[i]!);\n if (result) return result;\n }\n return null;\n}\n\nconst AUI_STATUS_MAP: Record<string, TelemetryData[\"status\"]> = {\n error: \"error\",\n incomplete: \"incomplete\",\n};\n\nexport function extractAuiV0<T>(content: T): TelemetryData | null {\n const msg = content as {\n role?: string;\n status?: { type: string };\n content?: readonly {\n type: string;\n text?: string;\n toolName?: string;\n toolCallId?: string;\n args?: unknown;\n argsText?: string;\n result?: unknown;\n }[];\n metadata?: {\n modelId?: string;\n steps?: readonly { usage?: RunTelemetryUsageInit }[];\n custom?: Record<string, unknown> & { modelId?: string };\n };\n };\n\n if (msg.role !== \"assistant\") return null;\n // A paused (requires-action) write is not a finished run; reporting it would\n // mislabel it \"completed\" and double-count steps once the terminal write reports.\n if (msg.status?.type === \"requires-action\") return null;\n\n const toolCalls = msg.content\n ?.filter((p) => p.type === \"tool-call\" && p.toolName && p.toolCallId)\n .map((p) =>\n createRunTelemetryToolCall({\n toolName: p.toolName!,\n toolCallId: p.toolCallId!,\n args: p.args,\n result: p.result,\n argsText: p.argsText,\n }),\n );\n\n const textParts = msg.content?.filter((p) => p.type === \"text\" && p.text);\n const outputText =\n textParts && textParts.length > 0\n ? truncateRunTelemetryText(textParts.map((p) => p.text).join(\"\"))\n : undefined;\n\n const steps = msg.metadata?.steps;\n let inputTokens: number | undefined;\n let outputTokens: number | undefined;\n let reasoningTokens: number | undefined;\n let cachedInputTokens: number | undefined;\n if (steps && steps.length > 0) {\n let totalInput = 0;\n let totalOutput = 0;\n let totalReasoning = 0;\n let totalCachedInput = 0;\n let hasInput = false;\n let hasOutput = false;\n let hasReasoning = false;\n let hasCachedInput = false;\n for (const step of steps) {\n if (!step.usage) continue;\n const usage = normalizeRunTelemetryUsage(step.usage);\n if (!usage) continue;\n if (usage.inputTokens != null) {\n totalInput += usage.inputTokens;\n hasInput = true;\n }\n if (usage.outputTokens != null) {\n totalOutput += usage.outputTokens;\n hasOutput = true;\n }\n if (usage.reasoningTokens != null) {\n totalReasoning += usage.reasoningTokens;\n hasReasoning = true;\n }\n if (usage.cachedInputTokens != null) {\n totalCachedInput += usage.cachedInputTokens;\n hasCachedInput = true;\n }\n }\n inputTokens = hasInput ? totalInput : undefined;\n outputTokens = hasOutput ? totalOutput : undefined;\n reasoningTokens = hasReasoning ? totalReasoning : undefined;\n cachedInputTokens = hasCachedInput ? totalCachedInput : undefined;\n }\n\n const statusType = msg.status?.type;\n const status: TelemetryData[\"status\"] =\n (statusType && AUI_STATUS_MAP[statusType]) || \"completed\";\n\n const metadata = msg.metadata?.custom as Record<string, unknown> | undefined;\n const modelId =\n msg.metadata?.modelId ??\n (typeof msg.metadata?.custom?.modelId === \"string\"\n ? msg.metadata.custom.modelId\n : undefined);\n\n const telemetrySteps: TelemetryStepData[] | undefined =\n steps && steps.length > 1\n ? steps.map((s) => {\n const usage = s.usage\n ? normalizeRunTelemetryUsage(s.usage)\n : undefined;\n return {\n ...(usage?.inputTokens != null\n ? { input_tokens: usage.inputTokens }\n : undefined),\n ...(usage?.outputTokens != null\n ? { output_tokens: usage.outputTokens }\n : undefined),\n ...(usage?.reasoningTokens != null\n ? { reasoning_tokens: usage.reasoningTokens }\n : undefined),\n ...(usage?.cachedInputTokens != null\n ? { cached_input_tokens: usage.cachedInputTokens }\n : undefined),\n };\n })\n : undefined;\n\n return {\n status,\n ...(toolCalls && toolCalls.length > 0 ? { toolCalls } : undefined),\n ...(steps?.length ? { totalSteps: steps.length } : undefined),\n ...(inputTokens != null ? { inputTokens } : undefined),\n ...(outputTokens != null ? { outputTokens } : undefined),\n ...(reasoningTokens != null ? { reasoningTokens } : undefined),\n ...(cachedInputTokens != null ? { cachedInputTokens } : undefined),\n ...(outputText != null ? { outputText } : undefined),\n ...(metadata ? { metadata } : undefined),\n ...(telemetrySteps ? { steps: telemetrySteps } : undefined),\n ...(modelId ? { modelId } : undefined),\n };\n}\n\ntype AiSdkV6Part = {\n type: string;\n text?: string;\n toolName?: string;\n toolCallId?: string;\n args?: unknown;\n result?: unknown;\n input?: unknown;\n output?: unknown;\n};\n\ntype AiSdkV6Message = {\n role?: string;\n parts?: readonly AiSdkV6Part[];\n metadata?: Record<string, unknown>;\n};\n\nfunction isToolCallPart(p: AiSdkV6Part): boolean {\n if (!p.toolCallId) return false;\n if (p.type === \"tool-call\" || p.type === \"dynamic-tool\") return !!p.toolName;\n return p.type.startsWith(\"tool-\") || p.type.startsWith(\"dynamic-tool-\");\n}\n\nfunction isDynamicToolPart(p: AiSdkV6Part): boolean {\n return p.type === \"dynamic-tool\" || p.type.startsWith(\"dynamic-tool-\");\n}\n\nfunction partToToolCall(p: AiSdkV6Part): AssistantCloudRunReportToolCall {\n const toolSource: \"mcp\" | \"frontend\" = isDynamicToolPart(p)\n ? \"mcp\"\n : \"frontend\";\n return createRunTelemetryToolCall({\n toolName: p.toolName ?? p.type.slice(5),\n toolCallId: p.toolCallId!,\n args: p.args ?? p.input,\n result: p.result ?? p.output,\n toolSource,\n });\n}\n\nfunction collectAiSdkV6Parts(parts: readonly AiSdkV6Part[]): {\n textParts: string[];\n toolCalls: AssistantCloudRunReportToolCall[];\n stepsData: { tool_calls: AssistantCloudRunReportToolCall[] }[];\n} {\n const textParts: string[] = [];\n const toolCalls: AssistantCloudRunReportToolCall[] = [];\n const stepsData: { tool_calls: AssistantCloudRunReportToolCall[] }[] = [];\n let currentStepToolCalls: AssistantCloudRunReportToolCall[] | null = null;\n\n for (const p of parts) {\n if (p.type === \"step-start\") {\n if (currentStepToolCalls !== null) {\n stepsData.push({ tool_calls: currentStepToolCalls });\n }\n currentStepToolCalls = [];\n } else if (p.type === \"text\" && p.text) {\n textParts.push(p.text);\n } else if (isToolCallPart(p)) {\n const tc = partToToolCall(p);\n toolCalls.push(tc);\n if (currentStepToolCalls !== null) {\n currentStepToolCalls.push(tc);\n }\n }\n }\n\n if (currentStepToolCalls !== null) {\n stepsData.push({ tool_calls: currentStepToolCalls });\n }\n\n return { textParts, toolCalls, stepsData };\n}\n\nfunction extractModelId(\n metadata?: Record<string, unknown>,\n): string | undefined {\n if (!metadata) return undefined;\n if (typeof metadata.modelId === \"string\") return metadata.modelId;\n const custom = metadata.custom as Record<string, unknown> | undefined;\n if (typeof custom?.modelId === \"string\") return custom.modelId;\n return undefined;\n}\n\nfunction buildAiSdkV6Result(\n textParts: string[],\n toolCalls: AssistantCloudRunReportToolCall[],\n totalSteps: number,\n metadata?: Record<string, unknown>,\n stepsData?: { tool_calls: AssistantCloudRunReportToolCall[] }[],\n usage?: {\n inputTokens?: number;\n outputTokens?: number;\n reasoningTokens?: number;\n cachedInputTokens?: number;\n },\n): TelemetryData {\n const hasText = textParts.length > 0;\n const outputText = hasText\n ? truncateRunTelemetryText(textParts.join(\"\"))\n : undefined;\n const modelId = extractModelId(metadata);\n\n const steps: TelemetryStepData[] | undefined =\n stepsData && stepsData.length > 1\n ? stepsData.map((s) => ({\n ...(s.tool_calls.length > 0\n ? { tool_calls: s.tool_calls }\n : undefined),\n }))\n : undefined;\n\n return {\n status: hasText ? \"completed\" : \"incomplete\",\n ...(toolCalls.length > 0 ? { toolCalls } : undefined),\n ...(totalSteps > 0 ? { totalSteps } : undefined),\n ...(usage?.inputTokens != null\n ? { inputTokens: usage.inputTokens }\n : undefined),\n ...(usage?.outputTokens != null\n ? { outputTokens: usage.outputTokens }\n : undefined),\n ...(usage?.reasoningTokens != null\n ? { reasoningTokens: usage.reasoningTokens }\n : undefined),\n ...(usage?.cachedInputTokens != null\n ? { cachedInputTokens: usage.cachedInputTokens }\n : undefined),\n ...(outputText != null ? { outputText } : undefined),\n ...(metadata ? { metadata } : undefined),\n ...(steps ? { steps } : undefined),\n ...(modelId ? { modelId } : undefined),\n };\n}\n\nfunction extractAiSdkV6Usage(metadata?: Record<string, unknown>):\n | {\n inputTokens?: number;\n outputTokens?: number;\n reasoningTokens?: number;\n cachedInputTokens?: number;\n }\n | undefined {\n // Try top-level metadata.usage\n const usage = metadata?.usage as RunTelemetryUsageInit | undefined;\n if (usage) {\n const normalized = normalizeRunTelemetryUsage(usage);\n if (normalized) return normalized;\n }\n\n // Try aggregating from metadata.steps[].usage\n const steps = metadata?.steps as\n | readonly { usage?: RunTelemetryUsageInit }[]\n | undefined;\n if (steps && steps.length > 0) {\n let inputTokens = 0;\n let outputTokens = 0;\n let reasoningTokens = 0;\n let cachedInputTokens = 0;\n let hasInput = false;\n let hasOutput = false;\n let hasReasoning = false;\n let hasCachedInput = false;\n let hasAny = false;\n for (const s of steps) {\n if (!s.usage) continue;\n const n = normalizeRunTelemetryUsage(s.usage);\n if (n) {\n if (n.inputTokens != null) {\n inputTokens += n.inputTokens;\n hasInput = true;\n }\n if (n.outputTokens != null) {\n outputTokens += n.outputTokens;\n hasOutput = true;\n }\n if (n.reasoningTokens != null) {\n reasoningTokens += n.reasoningTokens;\n hasReasoning = true;\n }\n if (n.cachedInputTokens != null) {\n cachedInputTokens += n.cachedInputTokens;\n hasCachedInput = true;\n }\n hasAny = true;\n }\n }\n if (hasAny) {\n return {\n ...(hasInput ? { inputTokens } : undefined),\n ...(hasOutput ? { outputTokens } : undefined),\n ...(hasReasoning ? { reasoningTokens } : undefined),\n ...(hasCachedInput ? { cachedInputTokens } : undefined),\n };\n }\n }\n\n return undefined;\n}\n\nfunction extractAiSdkV6<T>(content: T): TelemetryData | null {\n const msg = content as AiSdkV6Message;\n if (msg.role !== \"assistant\") return null;\n\n const { textParts, toolCalls, stepsData } = collectAiSdkV6Parts(\n msg.parts ?? [],\n );\n return buildAiSdkV6Result(\n textParts,\n toolCalls,\n stepsData.length,\n msg.metadata,\n stepsData,\n extractAiSdkV6Usage(msg.metadata),\n );\n}\n\nfunction aggregateAiSdkV6RunSteps<T>(stepMessages: T[]): TelemetryData | null {\n const allTextParts: string[] = [];\n const allToolCalls: AssistantCloudRunReportToolCall[] = [];\n const allStepsData: { tool_calls: AssistantCloudRunReportToolCall[] }[] = [];\n let hasAssistant = false;\n let metadata: Record<string, unknown> | undefined;\n let inputTokens = 0;\n let outputTokens = 0;\n let reasoningTokens = 0;\n let cachedInputTokens = 0;\n let hasInput = false;\n let hasOutput = false;\n let hasReasoning = false;\n let hasCachedInput = false;\n\n for (const content of stepMessages) {\n const msg = content as AiSdkV6Message;\n if (msg.role !== \"assistant\") continue;\n hasAssistant = true;\n\n const { textParts, toolCalls, stepsData } = collectAiSdkV6Parts(\n msg.parts ?? [],\n );\n allTextParts.push(...textParts);\n allToolCalls.push(...toolCalls);\n allStepsData.push(...stepsData);\n if (msg.metadata) metadata = msg.metadata;\n\n const usage = extractAiSdkV6Usage(msg.metadata);\n if (usage) {\n if (usage.inputTokens != null) {\n inputTokens += usage.inputTokens;\n hasInput = true;\n }\n if (usage.outputTokens != null) {\n outputTokens += usage.outputTokens;\n hasOutput = true;\n }\n if (usage.reasoningTokens != null) {\n reasoningTokens += usage.reasoningTokens;\n hasReasoning = true;\n }\n if (usage.cachedInputTokens != null) {\n cachedInputTokens += usage.cachedInputTokens;\n hasCachedInput = true;\n }\n }\n }\n\n if (!hasAssistant) return null;\n return buildAiSdkV6Result(\n allTextParts,\n allToolCalls,\n allStepsData.length,\n metadata,\n allStepsData,\n {\n ...(hasInput ? { inputTokens } : undefined),\n ...(hasOutput ? { outputTokens } : undefined),\n ...(hasReasoning ? { reasoningTokens } : undefined),\n ...(hasCachedInput ? { cachedInputTokens } : undefined),\n },\n );\n}\n\nexport function useAssistantCloudThreadHistoryAdapter(\n cloudRef: RefObject<AssistantCloud>,\n): ThreadHistoryAdapter {\n const aui = useAui();\n // Not useEffectEvent: history adapter methods run during render (SSR load).\n const auiRef = useRef(aui);\n useEffect(() => {\n auiRef.current = aui;\n });\n const [adapter] = useState(\n () =>\n new AssistantCloudThreadHistoryAdapter(cloudRef, () => auiRef.current),\n );\n return adapter;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AssistantCloudThreadHistoryAdapter.js","names":["RefObject","useEffect","useRef","useState","GenericThreadHistoryAdapter","ThreadHistoryAdapter","MessageFormatAdapter","MessageFormatItem","MessageFormatRepository","ExportedMessageRepositoryItem","AssistantCloud","AssistantCloudEvent","AssistantCloudRunReportToolCall","CloudMessagePersistence","createFormattedPersistence","createRunReport","createRunTelemetryToolCall","deriveRunOutcome","describeRunError","extractRunTelemetryModelId","normalizeRunTelemetryUsage","RunReportOutcome","RunReportStepInit","RunTelemetryUsage","RunTelemetryUsageInit","truncateRunTelemetryText","auiV0Decode","auiV0Encode","AssistantClient","getClientId","useAui","ThreadListItemMethods","FeedbackAdapter","CloudThreadListItem","Pick","globalPersistence","WeakMap","ClientId","AssistantCloudThreadHistoryAdapter","cloudRef","getAui","constructor","aui","getPersistence","threadListItem","key","has","set","current","get","_persistence","resolveEngagementEventIds","threadId","messageId","options","awaitThread","Promise","getThreadListItem","remoteThreadId","getState","remoteId","initialize","then","result","catch","undefined","remoteMessageId","getResolvedRemoteId","thread_id","message_id","feedback","submit","message","type","tryGetKeyedThreadListItem","console","warn","id","cloudMessageId","getRemoteId","threads","messages","error","live","source","listed","threadItems","some","item","currentState","find","withFormat","Record","formatAdapter","TMessage","TStorageFormat","adapter","pinCurrent","next","resolvePinned","getTargetFormatted","pin","append","pinned","Error","update","localMessageId","delete","reportTelemetry","items","durationMs","stepTimestamps","StepTimestamp","encodedRunMessages","map","encode","_reportRunTelemetry","format","extractLastRunMessageInfo","load","parentId","encoded","telemetry","enabled","_maybeReportRun","extractRunMessageInfo","isPersisted","filter","m","reverse","runMessages","T","messageInfo","RunMessageInfo","extracted","extractRunTelemetry","_sendReport","content","extractTelemetry","data","TelemetryData","persistence","mergedSteps","mergeStepTimestamps","steps","initial","status","outcome","outcomeType","errorCode","traceId","modelId","provider","usage","inputTokens","outputTokens","reasoningTokens","cachedInputTokens","toRunReportSteps","totalSteps","toolCalls","firstTokenMs","outputText","metadata","beforeReport","report","runs","TelemetryStepData","input_tokens","output_tokens","reasoning_tokens","cached_input_tokens","tool_calls","start_ms","end_ms","step","startMs","endMs","timestamps","t","len","Math","min","length","s","i","info","getId","isRecord","role","custom","timing","streamStartTime","firstTokenTime","Number","isFinite","round","finishReason","reason","failed","isError","failure","const","value","extractAuiV0","extractAiSdkV6","aggregateAiSdkV6RunSteps","AUI_STATUS_MAP","incomplete","msg","text","toolName","toolCallId","args","argsText","p","textParts","join","totalInput","totalOutput","totalReasoning","totalCachedInput","hasInput","hasOutput","hasReasoning","hasCachedInput","statusType","telemetrySteps","AiSdkV6Part","input","output","AiSdkV6Message","parts","isToolCallPart","startsWith","isDynamicToolPart","partToToolCall","toolSource","slice","collectAiSdkV6Parts","stepsData","currentStepToolCalls","push","tc","buildAiSdkV6Result","hasText","extractAiSdkV6Usage","normalized","hasAny","n","stepMessages","allTextParts","allToolCalls","allStepsData","hasAssistant","useAssistantCloudThreadHistoryAdapter","auiRef","useAssistantCloudEngagementEvents","RootEngagementTracker","count","dispose","rootEngagementTrackers","useRootEngagementEvents","$","_c","t0","t1","tracker","created","_temp","on","scope","event","payload","ids","events","track","kind","_temp2","active","Symbol","for","Map","runStartedAt","runEndedAt","t2","Set","shownSuggestions","t3","t4","_temp3","trackRunStopped","threadId_0","startedAt","max","Date","now","unsubscribers","previousRunEndedAt","props","chars","attachments","suggestion","payload_0","contentType","payload_1","payload_2","payload_3","payload_4","payload_5","payload_6","payload_7","payload_8","payload_9","payload_10","payload_11","unsubscribe","t5","t6","reportSuggestions","mainThreadId","isEmpty","suggestions","thread","add","ids_0","subscribe"],"sources":["../../../../src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts"],"sourcesContent":["import { type RefObject, useEffect, useRef, useState } from \"react\";\nimport type {\n GenericThreadHistoryAdapter,\n ThreadHistoryAdapter,\n MessageFormatAdapter,\n MessageFormatItem,\n MessageFormatRepository,\n} from \"../../../adapters/thread-history\";\nimport type { ExportedMessageRepositoryItem } from \"../../../runtime/utils/message-repository\";\nimport {\n type AssistantCloud,\n type AssistantCloudEvent,\n type AssistantCloudRunReportToolCall,\n CloudMessagePersistence,\n createFormattedPersistence,\n createRunReport,\n createRunTelemetryToolCall,\n deriveRunOutcome,\n describeRunError,\n extractRunTelemetryModelId,\n normalizeRunTelemetryUsage,\n type RunReportOutcome,\n type RunReportStepInit,\n type RunTelemetryUsage,\n type RunTelemetryUsageInit,\n truncateRunTelemetryText,\n} from \"assistant-cloud\";\nimport { auiV0Decode, auiV0Encode } from \"./auiV0\";\nimport { type AssistantClient, getClientId, useAui } from \"@assistant-ui/store\";\nimport type { ThreadListItemMethods } from \"../../../store/scopes/thread-list-item\";\nimport type { FeedbackAdapter } from \"../../../adapters/feedback\";\n\ntype CloudThreadListItem = Pick<\n ThreadListItemMethods,\n \"getState\" | \"initialize\"\n>;\n\nconst globalPersistence = new WeakMap<\n getClientId.ClientId,\n CloudMessagePersistence\n>();\n\nclass AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {\n private cloudRef: RefObject<AssistantCloud>;\n private getAui: () => AssistantClient;\n\n constructor(\n cloudRef: RefObject<AssistantCloud>,\n getAui: () => AssistantClient,\n ) {\n this.cloudRef = cloudRef;\n this.getAui = getAui;\n }\n\n private get aui(): AssistantClient {\n return this.getAui();\n }\n\n private getPersistence(\n threadListItem: CloudThreadListItem = this.aui.threadListItem,\n ): CloudMessagePersistence {\n const key = getClientId(threadListItem);\n if (!globalPersistence.has(key)) {\n globalPersistence.set(\n key,\n new CloudMessagePersistence(() => this.cloudRef.current),\n );\n }\n return globalPersistence.get(key)!;\n }\n\n private get _persistence(): CloudMessagePersistence {\n return this.getPersistence();\n }\n\n /**\n * A send is the moment the runtime creates the remote thread, so that one\n * event waits for the id; every other event reads the id that already\n * exists, because initializing a thread nobody has written to would create\n * an empty remote thread just to attribute an event.\n */\n public async resolveEngagementEventIds(\n threadId: string,\n messageId?: string,\n options?: { awaitThread?: boolean },\n ): Promise<Pick<AssistantCloudEvent, \"thread_id\" | \"message_id\">> {\n const threadListItem = this.getThreadListItem(threadId);\n if (!threadListItem) return {};\n\n let remoteThreadId = threadListItem.getState().remoteId;\n if (!remoteThreadId && options?.awaitThread) {\n remoteThreadId = await threadListItem\n .initialize()\n .then((result) => result.remoteId)\n .catch(() => undefined);\n }\n const remoteMessageId = messageId\n ? this.getPersistence(threadListItem).getResolvedRemoteId(messageId)\n : undefined;\n return {\n ...(remoteThreadId ? { thread_id: remoteThreadId } : undefined),\n ...(remoteMessageId ? { message_id: remoteMessageId } : undefined),\n };\n }\n\n public readonly feedback: FeedbackAdapter = {\n submit: ({ message, type }) => {\n void (async () => {\n const threadListItem = this.tryGetKeyedThreadListItem();\n const remoteThreadId = threadListItem?.getState().remoteId;\n if (!threadListItem || !remoteThreadId) {\n console.warn(\n `[assistant-ui] Skipping feedback for message ${message.id}: the thread has no remote id.`,\n );\n return;\n }\n\n const cloudMessageId = await this.getPersistence(\n threadListItem,\n ).getRemoteId(message.id);\n if (!cloudMessageId) {\n console.warn(\n `[assistant-ui] Skipping feedback for message ${message.id}: no cloud message id is mapped.`,\n );\n return;\n }\n\n await this.cloudRef.current.threads.messages.feedback(\n remoteThreadId,\n cloudMessageId,\n { type },\n );\n })().catch((error: unknown) => {\n console.error(\n \"[assistant-ui] Cloud feedback submission failed:\",\n error,\n );\n });\n },\n };\n\n private tryGetKeyedThreadListItem(): CloudThreadListItem | undefined {\n const live = this.aui.threadListItem;\n if (!live.source) return undefined;\n const id = live.getState().id;\n if (id === undefined) return undefined;\n // A body can resolve before the list's committed items include its\n // thread; the live item is already the per-thread anchor in that window.\n const listed = this.aui.threads\n .getState()\n .threadItems.some((item) => item.id === id || item.remoteId === id);\n return listed ? this.aui.threads.item({ id }) : live;\n }\n\n private getThreadListItem(threadId: string): CloudThreadListItem | undefined {\n const current = this.aui.threadListItem;\n const currentState = current.getState();\n if (currentState.id === threadId || currentState.remoteId === threadId) {\n return current;\n }\n\n const listed = this.aui.threads\n .getState()\n .threadItems.find(\n (item) => item.id === threadId || item.remoteId === threadId,\n );\n return listed ? this.aui.threads.item({ id: listed.id }) : undefined;\n }\n\n withFormat<TMessage, TStorageFormat extends Record<string, unknown>>(\n formatAdapter: MessageFormatAdapter<TMessage, TStorageFormat>,\n ): GenericThreadHistoryAdapter<TMessage> {\n const adapter = this;\n let threadListItem: CloudThreadListItem | undefined;\n const pinCurrent = () => {\n const next = adapter.tryGetKeyedThreadListItem();\n if (next) threadListItem = next;\n return threadListItem;\n };\n const resolvePinned = () => threadListItem ?? pinCurrent();\n const getTargetFormatted = (item: CloudThreadListItem) =>\n createFormattedPersistence(adapter.getPersistence(item), formatAdapter);\n return {\n pin() {\n pinCurrent();\n },\n async append(item: MessageFormatItem<TMessage>) {\n const pinned = resolvePinned();\n if (!pinned) {\n throw new Error(\n \"Cannot persist cloud history without a thread list item.\",\n );\n }\n const remoteId =\n pinned.getState().remoteId ?? (await pinned.initialize()).remoteId;\n await getTargetFormatted(pinned).append(remoteId, item);\n },\n async update(item: MessageFormatItem<TMessage>, localMessageId: string) {\n const pinned = resolvePinned();\n const remoteId = pinned?.getState().remoteId;\n if (!remoteId || !pinned) return;\n await getTargetFormatted(pinned).update?.(\n remoteId,\n item,\n localMessageId,\n );\n },\n async delete() {\n throw new Error(\n \"Assistant Cloud does not support deleting thread messages yet.\",\n );\n },\n reportTelemetry(\n items: MessageFormatItem<TMessage>[],\n options?: {\n durationMs?: number;\n stepTimestamps?: StepTimestamp[];\n },\n ) {\n const encodedRunMessages = items.map((item) =>\n formatAdapter.encode(item),\n );\n adapter._reportRunTelemetry(\n formatAdapter.format,\n encodedRunMessages,\n options,\n resolvePinned(),\n extractLastRunMessageInfo(items, formatAdapter),\n );\n },\n async load(): Promise<MessageFormatRepository<TMessage>> {\n // Loads re-pin and resolve through the pinned item, so the id mapping\n // they populate lives on the same persistence instance later writes\n // resolve, whichever of the list item or the live graft won the pin.\n const pinned = pinCurrent();\n const live = adapter.aui.threadListItem;\n const remoteId = live.source ? live.getState().remoteId : undefined;\n if (!remoteId) return { messages: [] };\n return getTargetFormatted(pinned ?? live).load(remoteId);\n },\n };\n }\n\n async append({ parentId, message }: ExportedMessageRepositoryItem) {\n const { remoteId } = await this.aui.threadListItem.initialize();\n const encoded = auiV0Encode(message);\n await this._persistence.append(\n remoteId,\n message.id,\n parentId,\n \"aui/v0\",\n encoded,\n );\n\n if (this.cloudRef.current.telemetry.enabled) {\n this._maybeReportRun(\n remoteId,\n \"aui/v0\",\n encoded,\n extractRunMessageInfo(message, \"aui/v0\"),\n );\n }\n }\n\n async update(item: ExportedMessageRepositoryItem) {\n if (!this._persistence.isPersisted(item.message.id)) {\n return this.append(item);\n }\n const { message } = item;\n const remoteId = this.aui.threadListItem.getState().remoteId;\n if (!remoteId) return;\n const encoded = auiV0Encode(message);\n await this._persistence.update(remoteId, message.id, \"aui/v0\", encoded);\n\n if (this.cloudRef.current.telemetry.enabled) {\n this._maybeReportRun(\n remoteId,\n \"aui/v0\",\n encoded,\n extractRunMessageInfo(message, \"aui/v0\"),\n );\n }\n }\n\n async delete() {\n throw new Error(\n \"Assistant Cloud does not support deleting thread messages yet.\",\n );\n }\n\n async load() {\n const remoteId = this.aui.threadListItem.getState().remoteId;\n if (!remoteId) return { messages: [] };\n const messages = await this._persistence.load(remoteId, \"aui/v0\");\n return {\n messages: messages\n .filter(\n (m): m is typeof m & { format: \"aui/v0\" } => m.format === \"aui/v0\",\n )\n .map(auiV0Decode)\n .reverse(),\n };\n }\n\n private _reportRunTelemetry<T>(\n format: string,\n runMessages: T[],\n options?: {\n durationMs?: number;\n stepTimestamps?: StepTimestamp[];\n },\n threadListItem?: CloudThreadListItem,\n messageInfo?: RunMessageInfo,\n ) {\n if (!this.cloudRef.current.telemetry.enabled) return;\n\n const item = threadListItem ?? this.aui.threadListItem;\n const remoteId = item.getState().remoteId;\n if (!remoteId) return;\n\n const extracted = extractRunTelemetry(format, runMessages);\n if (!extracted) return;\n\n this._sendReport(\n remoteId,\n extracted,\n options?.durationMs,\n options?.stepTimestamps,\n messageInfo,\n this.getPersistence(item),\n );\n }\n\n private _maybeReportRun<T>(\n remoteId: string,\n format: string,\n content: T,\n messageInfo?: RunMessageInfo,\n ) {\n const extracted = extractTelemetry(format, content);\n if (!extracted) return;\n\n this._sendReport(remoteId, extracted, undefined, undefined, messageInfo);\n }\n\n private _sendReport(\n remoteId: string,\n data: TelemetryData,\n durationMs?: number,\n stepTimestamps?: StepTimestamp[],\n messageInfo?: RunMessageInfo,\n persistence = this._persistence,\n ) {\n const mergedSteps = mergeStepTimestamps(data.steps, stepTimestamps);\n const messageId = messageInfo?.localMessageId\n ? persistence.getResolvedRemoteId(messageInfo.localMessageId)\n : undefined;\n const initial = createRunReport({\n threadId: remoteId,\n status: messageInfo?.status ?? data.status,\n outcome: messageInfo?.outcomeType,\n error: messageInfo?.error,\n errorCode: messageInfo?.errorCode,\n messageId,\n traceId: messageInfo?.traceId,\n modelId: data.modelId,\n provider: messageInfo?.provider,\n usage: {\n inputTokens: data.inputTokens,\n outputTokens: data.outputTokens,\n reasoningTokens: data.reasoningTokens,\n cachedInputTokens: data.cachedInputTokens,\n },\n steps: toRunReportSteps(mergedSteps),\n totalSteps: data.totalSteps,\n toolCalls: data.toolCalls,\n durationMs,\n firstTokenMs: messageInfo?.firstTokenMs,\n outputText: data.outputText,\n metadata: data.metadata,\n telemetry: this.cloudRef.current.telemetry,\n });\n\n const { beforeReport } = this.cloudRef.current.telemetry;\n const report = beforeReport ? beforeReport(initial) : initial;\n if (!report) return;\n\n this.cloudRef.current.runs.report(report).catch(() => {});\n }\n}\n\ntype TelemetryStepData = {\n input_tokens?: number;\n output_tokens?: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n tool_calls?: AssistantCloudRunReportToolCall[];\n start_ms?: number;\n end_ms?: number;\n};\n\ntype StepTimestamp = { start_ms: number; end_ms: number };\n\nfunction toRunReportSteps(\n steps: TelemetryStepData[] | undefined,\n): RunReportStepInit[] | undefined {\n if (!steps) return undefined;\n return steps.map((step) => ({\n usage: {\n inputTokens: step.input_tokens,\n outputTokens: step.output_tokens,\n reasoningTokens: step.reasoning_tokens,\n cachedInputTokens: step.cached_input_tokens,\n },\n toolCalls: step.tool_calls,\n startMs: step.start_ms,\n endMs: step.end_ms,\n }));\n}\n\nfunction mergeStepTimestamps(\n steps: TelemetryStepData[] | undefined,\n timestamps: StepTimestamp[] | undefined,\n): TelemetryStepData[] | undefined {\n if (!timestamps) return steps;\n if (!steps) return timestamps.map((t) => ({ ...t }));\n\n const len = Math.min(steps.length, timestamps.length);\n return steps.map((s, i) => ({\n ...s,\n ...(i < len ? timestamps[i] : undefined),\n }));\n}\n\ntype TelemetryData = {\n status: \"completed\" | \"incomplete\" | \"error\";\n toolCalls?: AssistantCloudRunReportToolCall[];\n totalSteps?: number;\n inputTokens?: number;\n outputTokens?: number;\n reasoningTokens?: number;\n cachedInputTokens?: number;\n outputText?: string;\n metadata?: Record<string, unknown>;\n steps?: TelemetryStepData[];\n modelId?: string;\n};\n\ntype RunMessageInfo = {\n localMessageId?: string;\n status?: \"error\";\n outcomeType?: RunReportOutcome;\n error?: string;\n errorCode?: string;\n firstTokenMs?: number;\n traceId?: string;\n provider?: string;\n};\n\nfunction extractLastRunMessageInfo<\n TMessage,\n TStorageFormat extends Record<string, unknown>,\n>(\n items: MessageFormatItem<TMessage>[],\n formatAdapter: MessageFormatAdapter<TMessage, TStorageFormat>,\n): RunMessageInfo | undefined {\n for (let i = items.length - 1; i >= 0; i--) {\n const item = items[i]!;\n const info = extractRunMessageInfo(\n item.message,\n formatAdapter.format,\n formatAdapter.getId(item.message),\n );\n if (info) return info;\n }\n return undefined;\n}\n\nfunction extractRunMessageInfo(\n message: unknown,\n format: string,\n localMessageId?: string,\n): RunMessageInfo | undefined {\n if (!isRecord(message) || message.role !== \"assistant\") return undefined;\n\n const status = isRecord(message.status) ? message.status : undefined;\n const metadata = isRecord(message.metadata) ? message.metadata : undefined;\n const custom = isRecord(metadata?.custom) ? metadata.custom : undefined;\n const timing = isRecord(metadata?.timing) ? metadata.timing : undefined;\n const streamStartTime = timing?.streamStartTime;\n const firstTokenTime = timing?.firstTokenTime;\n const firstTokenMs =\n typeof streamStartTime === \"number\" &&\n Number.isFinite(streamStartTime) &&\n typeof firstTokenTime === \"number\" &&\n Number.isFinite(firstTokenTime)\n ? Math.round(firstTokenTime - streamStartTime)\n : undefined;\n const finishReason =\n status?.type === \"incomplete\"\n ? status.reason\n : typeof metadata?.finishReason === \"string\"\n ? metadata.finishReason\n : undefined;\n const failed = status?.type === \"incomplete\" && status.reason === \"error\";\n const outcome = deriveRunOutcome({\n finishReason: typeof finishReason === \"string\" ? finishReason : undefined,\n isError: failed,\n });\n const outcomeType = outcome.outcome;\n const failure = failed ? describeRunError(status.error) : {};\n const messageId =\n localMessageId ?? (typeof message.id === \"string\" ? message.id : undefined);\n const traceId =\n format === \"aui/v0\"\n ? custom?.traceId\n : format === \"ai-sdk/v6\"\n ? metadata?.traceId\n : undefined;\n const provider =\n typeof custom?.provider === \"string\"\n ? custom.provider\n : typeof metadata?.provider === \"string\"\n ? metadata.provider\n : undefined;\n\n return {\n ...(messageId ? { localMessageId: messageId } : undefined),\n ...(outcome.status === \"error\" ? { status: \"error\" as const } : undefined),\n ...(outcomeType ? { outcomeType } : undefined),\n ...failure,\n ...(firstTokenMs != null && firstTokenMs >= 0\n ? { firstTokenMs }\n : undefined),\n ...(typeof traceId === \"string\" ? { traceId } : undefined),\n ...(provider !== undefined ? { provider } : undefined),\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\";\n}\n\nfunction extractTelemetry<T>(format: string, content: T): TelemetryData | null {\n switch (format) {\n case \"aui/v0\":\n return extractAuiV0(content);\n case \"ai-sdk/v6\":\n return extractAiSdkV6(content);\n default:\n return null;\n }\n}\n\nfunction extractRunTelemetry<T>(\n format: string,\n runMessages: T[],\n): TelemetryData | null {\n if (format === \"ai-sdk/v6\") {\n return aggregateAiSdkV6RunSteps(runMessages);\n }\n for (let i = runMessages.length - 1; i >= 0; i--) {\n const result = extractTelemetry(format, runMessages[i]!);\n if (result) return result;\n }\n return null;\n}\n\nconst AUI_STATUS_MAP: Record<string, TelemetryData[\"status\"]> = {\n error: \"error\",\n incomplete: \"incomplete\",\n};\n\nexport function extractAuiV0<T>(content: T): TelemetryData | null {\n const msg = content as {\n role?: string;\n status?: { type: string; reason?: string };\n content?: readonly {\n type: string;\n text?: string;\n toolName?: string;\n toolCallId?: string;\n args?: unknown;\n argsText?: string;\n result?: unknown;\n }[];\n metadata?: {\n modelId?: string;\n steps?: readonly { usage?: RunTelemetryUsageInit }[];\n custom?: Record<string, unknown> & { modelId?: string };\n };\n };\n\n if (msg.role !== \"assistant\") return null;\n // A paused (requires-action) write is not a finished run; reporting it would\n // mislabel it \"completed\" and double-count steps once the terminal write reports.\n if (msg.status?.type === \"requires-action\") return null;\n\n const toolCalls = msg.content\n ?.filter((p) => p.type === \"tool-call\" && p.toolName && p.toolCallId)\n .map((p) =>\n createRunTelemetryToolCall({\n toolName: p.toolName!,\n toolCallId: p.toolCallId!,\n args: p.args,\n result: p.result,\n argsText: p.argsText,\n }),\n );\n\n const textParts = msg.content?.filter((p) => p.type === \"text\" && p.text);\n const outputText =\n textParts && textParts.length > 0\n ? truncateRunTelemetryText(textParts.map((p) => p.text).join(\"\"))\n : undefined;\n\n const steps = msg.metadata?.steps;\n let inputTokens: number | undefined;\n let outputTokens: number | undefined;\n let reasoningTokens: number | undefined;\n let cachedInputTokens: number | undefined;\n if (steps && steps.length > 0) {\n let totalInput = 0;\n let totalOutput = 0;\n let totalReasoning = 0;\n let totalCachedInput = 0;\n let hasInput = false;\n let hasOutput = false;\n let hasReasoning = false;\n let hasCachedInput = false;\n for (const step of steps) {\n if (!step.usage) continue;\n const usage = normalizeRunTelemetryUsage(step.usage);\n if (!usage) continue;\n if (usage.inputTokens != null) {\n totalInput += usage.inputTokens;\n hasInput = true;\n }\n if (usage.outputTokens != null) {\n totalOutput += usage.outputTokens;\n hasOutput = true;\n }\n if (usage.reasoningTokens != null) {\n totalReasoning += usage.reasoningTokens;\n hasReasoning = true;\n }\n if (usage.cachedInputTokens != null) {\n totalCachedInput += usage.cachedInputTokens;\n hasCachedInput = true;\n }\n }\n inputTokens = hasInput ? totalInput : undefined;\n outputTokens = hasOutput ? totalOutput : undefined;\n reasoningTokens = hasReasoning ? totalReasoning : undefined;\n cachedInputTokens = hasCachedInput ? totalCachedInput : undefined;\n }\n\n const statusType = msg.status?.type;\n const status: TelemetryData[\"status\"] =\n statusType === \"incomplete\" && msg.status?.reason === \"error\"\n ? \"error\"\n : (statusType && AUI_STATUS_MAP[statusType]) || \"completed\";\n\n const metadata = msg.metadata?.custom as Record<string, unknown> | undefined;\n const modelId = extractRunTelemetryModelId(\n msg.metadata as Record<string, unknown> | undefined,\n );\n\n const telemetrySteps: TelemetryStepData[] | undefined =\n steps && steps.length > 1\n ? steps.map((s) => {\n const usage = s.usage\n ? normalizeRunTelemetryUsage(s.usage)\n : undefined;\n return {\n ...(usage?.inputTokens != null\n ? { input_tokens: usage.inputTokens }\n : undefined),\n ...(usage?.outputTokens != null\n ? { output_tokens: usage.outputTokens }\n : undefined),\n ...(usage?.reasoningTokens != null\n ? { reasoning_tokens: usage.reasoningTokens }\n : undefined),\n ...(usage?.cachedInputTokens != null\n ? { cached_input_tokens: usage.cachedInputTokens }\n : undefined),\n };\n })\n : undefined;\n\n return {\n status,\n ...(toolCalls && toolCalls.length > 0 ? { toolCalls } : undefined),\n ...(steps?.length ? { totalSteps: steps.length } : undefined),\n ...(inputTokens != null ? { inputTokens } : undefined),\n ...(outputTokens != null ? { outputTokens } : undefined),\n ...(reasoningTokens != null ? { reasoningTokens } : undefined),\n ...(cachedInputTokens != null ? { cachedInputTokens } : undefined),\n ...(outputText != null ? { outputText } : undefined),\n ...(metadata ? { metadata } : undefined),\n ...(telemetrySteps ? { steps: telemetrySteps } : undefined),\n ...(modelId ? { modelId } : undefined),\n };\n}\n\ntype AiSdkV6Part = {\n type: string;\n text?: string;\n toolName?: string;\n toolCallId?: string;\n args?: unknown;\n result?: unknown;\n input?: unknown;\n output?: unknown;\n};\n\ntype AiSdkV6Message = {\n role?: string;\n parts?: readonly AiSdkV6Part[];\n metadata?: Record<string, unknown>;\n};\n\nfunction isToolCallPart(p: AiSdkV6Part): boolean {\n if (!p.toolCallId) return false;\n if (p.type === \"tool-call\" || p.type === \"dynamic-tool\") return !!p.toolName;\n return p.type.startsWith(\"tool-\") || p.type.startsWith(\"dynamic-tool-\");\n}\n\nfunction isDynamicToolPart(p: AiSdkV6Part): boolean {\n return p.type === \"dynamic-tool\" || p.type.startsWith(\"dynamic-tool-\");\n}\n\nfunction partToToolCall(p: AiSdkV6Part): AssistantCloudRunReportToolCall {\n const toolSource: \"mcp\" | \"frontend\" = isDynamicToolPart(p)\n ? \"mcp\"\n : \"frontend\";\n return createRunTelemetryToolCall({\n toolName: p.toolName ?? p.type.slice(5),\n toolCallId: p.toolCallId!,\n args: p.args ?? p.input,\n result: p.result ?? p.output,\n toolSource,\n });\n}\n\nfunction collectAiSdkV6Parts(parts: readonly AiSdkV6Part[]): {\n textParts: string[];\n toolCalls: AssistantCloudRunReportToolCall[];\n stepsData: { tool_calls: AssistantCloudRunReportToolCall[] }[];\n} {\n const textParts: string[] = [];\n const toolCalls: AssistantCloudRunReportToolCall[] = [];\n const stepsData: { tool_calls: AssistantCloudRunReportToolCall[] }[] = [];\n let currentStepToolCalls: AssistantCloudRunReportToolCall[] | null = null;\n\n for (const p of parts) {\n if (p.type === \"step-start\") {\n if (currentStepToolCalls !== null) {\n stepsData.push({ tool_calls: currentStepToolCalls });\n }\n currentStepToolCalls = [];\n } else if (p.type === \"text\" && p.text) {\n textParts.push(p.text);\n } else if (isToolCallPart(p)) {\n const tc = partToToolCall(p);\n toolCalls.push(tc);\n if (currentStepToolCalls !== null) {\n currentStepToolCalls.push(tc);\n }\n }\n }\n\n if (currentStepToolCalls !== null) {\n stepsData.push({ tool_calls: currentStepToolCalls });\n }\n\n return { textParts, toolCalls, stepsData };\n}\n\nfunction buildAiSdkV6Result(\n textParts: string[],\n toolCalls: AssistantCloudRunReportToolCall[],\n totalSteps: number,\n metadata?: Record<string, unknown>,\n stepsData?: { tool_calls: AssistantCloudRunReportToolCall[] }[],\n usage?: RunTelemetryUsage,\n): TelemetryData {\n const hasText = textParts.length > 0;\n const outputText = hasText\n ? truncateRunTelemetryText(textParts.join(\"\"))\n : undefined;\n const modelId = extractRunTelemetryModelId(metadata);\n\n const steps: TelemetryStepData[] | undefined =\n stepsData && stepsData.length > 1\n ? stepsData.map((s) => ({\n ...(s.tool_calls.length > 0\n ? { tool_calls: s.tool_calls }\n : undefined),\n }))\n : undefined;\n\n return {\n status: hasText ? \"completed\" : \"incomplete\",\n ...(toolCalls.length > 0 ? { toolCalls } : undefined),\n ...(totalSteps > 0 ? { totalSteps } : undefined),\n ...(usage?.inputTokens != null\n ? { inputTokens: usage.inputTokens }\n : undefined),\n ...(usage?.outputTokens != null\n ? { outputTokens: usage.outputTokens }\n : undefined),\n ...(usage?.reasoningTokens != null\n ? { reasoningTokens: usage.reasoningTokens }\n : undefined),\n ...(usage?.cachedInputTokens != null\n ? { cachedInputTokens: usage.cachedInputTokens }\n : undefined),\n ...(outputText != null ? { outputText } : undefined),\n ...(metadata ? { metadata } : undefined),\n ...(steps ? { steps } : undefined),\n ...(modelId ? { modelId } : undefined),\n };\n}\n\nfunction extractAiSdkV6Usage(\n metadata?: Record<string, unknown>,\n): RunTelemetryUsage | undefined {\n // Try top-level metadata.usage\n const usage = metadata?.usage as RunTelemetryUsageInit | undefined;\n if (usage) {\n const normalized = normalizeRunTelemetryUsage(usage);\n if (normalized) return normalized;\n }\n\n // Try aggregating from metadata.steps[].usage\n const steps = metadata?.steps as\n | readonly { usage?: RunTelemetryUsageInit }[]\n | undefined;\n if (steps && steps.length > 0) {\n let inputTokens = 0;\n let outputTokens = 0;\n let reasoningTokens = 0;\n let cachedInputTokens = 0;\n let hasInput = false;\n let hasOutput = false;\n let hasReasoning = false;\n let hasCachedInput = false;\n let hasAny = false;\n for (const s of steps) {\n if (!s.usage) continue;\n const n = normalizeRunTelemetryUsage(s.usage);\n if (n) {\n if (n.inputTokens != null) {\n inputTokens += n.inputTokens;\n hasInput = true;\n }\n if (n.outputTokens != null) {\n outputTokens += n.outputTokens;\n hasOutput = true;\n }\n if (n.reasoningTokens != null) {\n reasoningTokens += n.reasoningTokens;\n hasReasoning = true;\n }\n if (n.cachedInputTokens != null) {\n cachedInputTokens += n.cachedInputTokens;\n hasCachedInput = true;\n }\n hasAny = true;\n }\n }\n if (hasAny) {\n return {\n ...(hasInput ? { inputTokens } : undefined),\n ...(hasOutput ? { outputTokens } : undefined),\n ...(hasReasoning ? { reasoningTokens } : undefined),\n ...(hasCachedInput ? { cachedInputTokens } : undefined),\n };\n }\n }\n\n return undefined;\n}\n\nfunction extractAiSdkV6<T>(content: T): TelemetryData | null {\n const msg = content as AiSdkV6Message;\n if (msg.role !== \"assistant\") return null;\n\n const { textParts, toolCalls, stepsData } = collectAiSdkV6Parts(\n msg.parts ?? [],\n );\n return buildAiSdkV6Result(\n textParts,\n toolCalls,\n stepsData.length,\n msg.metadata,\n stepsData,\n extractAiSdkV6Usage(msg.metadata),\n );\n}\n\nfunction aggregateAiSdkV6RunSteps<T>(stepMessages: T[]): TelemetryData | null {\n const allTextParts: string[] = [];\n const allToolCalls: AssistantCloudRunReportToolCall[] = [];\n const allStepsData: { tool_calls: AssistantCloudRunReportToolCall[] }[] = [];\n let hasAssistant = false;\n let metadata: Record<string, unknown> | undefined;\n let inputTokens = 0;\n let outputTokens = 0;\n let reasoningTokens = 0;\n let cachedInputTokens = 0;\n let hasInput = false;\n let hasOutput = false;\n let hasReasoning = false;\n let hasCachedInput = false;\n\n for (const content of stepMessages) {\n const msg = content as AiSdkV6Message;\n if (msg.role !== \"assistant\") continue;\n hasAssistant = true;\n\n const { textParts, toolCalls, stepsData } = collectAiSdkV6Parts(\n msg.parts ?? [],\n );\n allTextParts.push(...textParts);\n allToolCalls.push(...toolCalls);\n allStepsData.push(...stepsData);\n if (msg.metadata) metadata = msg.metadata;\n\n const usage = extractAiSdkV6Usage(msg.metadata);\n if (usage) {\n if (usage.inputTokens != null) {\n inputTokens += usage.inputTokens;\n hasInput = true;\n }\n if (usage.outputTokens != null) {\n outputTokens += usage.outputTokens;\n hasOutput = true;\n }\n if (usage.reasoningTokens != null) {\n reasoningTokens += usage.reasoningTokens;\n hasReasoning = true;\n }\n if (usage.cachedInputTokens != null) {\n cachedInputTokens += usage.cachedInputTokens;\n hasCachedInput = true;\n }\n }\n }\n\n if (!hasAssistant) return null;\n return buildAiSdkV6Result(\n allTextParts,\n allToolCalls,\n allStepsData.length,\n metadata,\n allStepsData,\n {\n ...(hasInput ? { inputTokens } : undefined),\n ...(hasOutput ? { outputTokens } : undefined),\n ...(hasReasoning ? { reasoningTokens } : undefined),\n ...(hasCachedInput ? { cachedInputTokens } : undefined),\n },\n );\n}\n\nexport function useAssistantCloudThreadHistoryAdapter(\n cloudRef: RefObject<AssistantCloud>,\n): ThreadHistoryAdapter & { readonly feedback: FeedbackAdapter } {\n const aui = useAui();\n // Not useEffectEvent: history adapter methods run during render (SSR load).\n const auiRef = useRef(aui);\n useEffect(() => {\n auiRef.current = aui;\n });\n const [adapter] = useState(\n () =>\n new AssistantCloudThreadHistoryAdapter(cloudRef, () => auiRef.current),\n );\n useAssistantCloudEngagementEvents(cloudRef, adapter, aui);\n return adapter;\n}\n\ntype RootEngagementTracker = {\n count: number;\n adapter: AssistantCloudThreadHistoryAdapter;\n cloudRef: RefObject<AssistantCloud>;\n dispose: () => void;\n};\n\nconst rootEngagementTrackers = new WeakMap<\n AssistantClient,\n RootEngagementTracker\n>();\n\n/**\n * Thread switches are a thread list event, so one subscription per assistant\n * client reports them; every thread runtime mounted under it shares the\n * subscription and the last one to unmount removes it.\n */\nconst useRootEngagementEvents = (\n cloudRef: RefObject<AssistantCloud>,\n adapter: AssistantCloudThreadHistoryAdapter,\n aui: AssistantClient,\n) => {\n useEffect(() => {\n let tracker = rootEngagementTrackers.get(aui);\n if (!tracker) {\n const created: RootEngagementTracker = {\n count: 0,\n adapter,\n cloudRef,\n dispose: () => {},\n };\n created.dispose = aui.on(\n { scope: \"*\", event: \"threads.selectionChanged\" },\n (payload) => {\n void created.adapter\n .resolveEngagementEventIds(payload.threadId)\n .then((ids) => {\n if (!ids.thread_id) return;\n created.cloudRef.current.events?.track({\n kind: \"thread_switched\",\n ...ids,\n });\n })\n .catch(() => {});\n },\n );\n rootEngagementTrackers.set(aui, created);\n tracker = created;\n }\n const active = tracker;\n active.adapter = adapter;\n active.cloudRef = cloudRef;\n active.count += 1;\n return () => {\n active.count -= 1;\n if (active.count === 0) {\n active.dispose();\n rootEngagementTrackers.delete(aui);\n }\n };\n }, [adapter, aui, cloudRef]);\n};\n\nconst useAssistantCloudEngagementEvents = (\n cloudRef: RefObject<AssistantCloud>,\n adapter: AssistantCloudThreadHistoryAdapter,\n aui: AssistantClient,\n) => {\n useRootEngagementEvents(cloudRef, adapter, aui);\n const runStartedAt = useRef(new Map<string, number>());\n const runEndedAt = useRef(new Map<string, number>());\n const shownSuggestions = useRef(new Set<string>());\n\n useEffect(() => {\n const track = (\n event: AssistantCloudEvent,\n threadId: string,\n messageId?: string,\n options?: { awaitThread?: boolean },\n ) => {\n void adapter\n .resolveEngagementEventIds(threadId, messageId, options)\n .then((ids) => {\n cloudRef.current.events?.track({ ...event, ...ids });\n })\n .catch(() => {});\n };\n const trackRunStopped = (threadId: string) => {\n const startedAt = runStartedAt.current.get(threadId);\n if (startedAt === undefined) return;\n runStartedAt.current.delete(threadId);\n track(\n { kind: \"run_stopped\", value: Math.max(0, Date.now() - startedAt) },\n threadId,\n );\n };\n\n const unsubscribers = [\n aui.on({ scope: \"thread\", event: \"composer.send\" }, (payload) => {\n const previousRunEndedAt = runEndedAt.current.get(payload.threadId);\n track(\n {\n kind: payload.messageId ? \"message_edited\" : \"message_sent\",\n ...(payload.messageId\n ? { props: { chars: payload.chars } }\n : {\n props: {\n chars: payload.chars,\n attachments: payload.attachments,\n },\n }),\n ...(!payload.messageId && previousRunEndedAt !== undefined\n ? { value: Math.max(0, Date.now() - previousRunEndedAt) }\n : undefined),\n },\n payload.threadId,\n payload.messageId,\n { awaitThread: !payload.messageId },\n );\n if (payload.suggestion) {\n track({ kind: \"suggestion_clicked\" }, payload.threadId);\n }\n }),\n aui.on(\n { scope: \"thread\", event: \"composer.attachmentAdd\" },\n (payload) => {\n track(\n {\n kind: \"attachment_added\",\n ...(payload.contentType\n ? { props: { type: payload.contentType } }\n : undefined),\n },\n payload.threadId,\n payload.messageId,\n );\n },\n ),\n aui.on(\n { scope: \"thread\", event: \"composer.attachmentAddError\" },\n (payload) => {\n track(\n {\n kind: \"attachment_failed\",\n ...(payload.contentType\n ? { props: { type: payload.contentType } }\n : undefined),\n },\n payload.threadId,\n payload.messageId,\n );\n },\n ),\n aui.on({ scope: \"thread\", event: \"composer.cancel\" }, (payload) => {\n trackRunStopped(payload.threadId);\n }),\n aui.on({ scope: \"thread\", event: \"thread.runStart\" }, (payload) => {\n runStartedAt.current.set(payload.threadId, Date.now());\n }),\n aui.on({ scope: \"thread\", event: \"thread.runEnd\" }, (payload) => {\n runStartedAt.current.delete(payload.threadId);\n runEndedAt.current.set(payload.threadId, Date.now());\n }),\n aui.on({ scope: \"thread\", event: \"thread.cancelRun\" }, (payload) => {\n trackRunStopped(payload.threadId);\n }),\n aui.on({ scope: \"thread\", event: \"thread.voiceStarted\" }, (payload) => {\n track({ kind: \"voice_started\" }, payload.threadId);\n }),\n aui.on({ scope: \"thread\", event: \"message.reload\" }, (payload) => {\n track(\n { kind: \"message_regenerated\" },\n payload.threadId,\n payload.messageId,\n );\n }),\n aui.on(\n { scope: \"thread\", event: \"message.branchSwitched\" },\n (payload) => {\n track(\n { kind: \"branch_switched\" },\n payload.threadId,\n payload.messageId,\n );\n },\n ),\n aui.on({ scope: \"thread\", event: \"message.copied\" }, (payload) => {\n track({ kind: \"message_copied\" }, payload.threadId, payload.messageId);\n }),\n aui.on({ scope: \"thread\", event: \"message.speak\" }, (payload) => {\n track({ kind: \"speech_started\" }, payload.threadId, payload.messageId);\n }),\n aui.on({ scope: \"thread\", event: \"message.error\" }, (payload) => {\n track(\n { kind: \"error_shown\", props: { reason: payload.reason } },\n payload.threadId,\n payload.messageId,\n );\n }),\n ];\n\n return () => {\n for (const unsubscribe of unsubscribers) unsubscribe();\n };\n }, [adapter, aui, cloudRef]);\n\n useEffect(() => {\n const reportSuggestions = () => {\n const { mainThreadId } = aui.threads.getState();\n if (aui.threadListItem.getState().id !== mainThreadId) return;\n const { isEmpty, suggestions } = aui.thread.getState();\n if (\n !isEmpty ||\n suggestions.length === 0 ||\n shownSuggestions.current.has(mainThreadId)\n ) {\n return;\n }\n shownSuggestions.current.add(mainThreadId);\n void adapter.resolveEngagementEventIds(mainThreadId).then((ids) => {\n cloudRef.current.events?.track({\n kind: \"suggestions_shown\",\n value: suggestions.length,\n ...ids,\n });\n });\n };\n\n reportSuggestions();\n return aui.subscribe(reportSuggestions);\n }, [adapter, aui, cloudRef]);\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCloudThreadListAdapter.d.ts","names":[],"sources":["../../../../src/react/runtimes/cloud/createCloudThreadListAdapter.ts"],"mappings":";;;;KAaK;EACH;;KAGU;EACV,QAAQ;EAER,gBAAgB,QAAQ;EACxB,WAAW,qBAAqB;;cASrB,WAAS;cAIT,0BACX,UAAU,UAAU,oBACnB;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createCloudThreadListAdapter.d.ts","names":[],"sources":["../../../../src/react/runtimes/cloud/createCloudThreadListAdapter.ts"],"mappings":";;;;KAaK;EACH;;KAGU;EACV,QAAQ;EAER,gBAAgB,QAAQ;EACxB,WAAW,qBAAqB;;cASrB,WAAS;cAIT,0BACX,UAAU,UAAU,oBACnB;;;;;;;;;;;;cAyDU,+BACX,SACI,uCACO,mCACV"}
|
|
@@ -16,7 +16,8 @@ const useCloudRuntimeAdapters = (cloudRef) => {
|
|
|
16
16
|
const [attachments] = useState(() => new CloudFileAttachmentAdapter(() => cloudRef.current));
|
|
17
17
|
return useMemo(() => ({
|
|
18
18
|
history,
|
|
19
|
-
attachments
|
|
19
|
+
attachments,
|
|
20
|
+
feedback: history.feedback
|
|
20
21
|
}), [history, attachments]);
|
|
21
22
|
};
|
|
22
23
|
const CLOUD_THREAD_PAGE_SIZE = 20;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCloudThreadListAdapter.js","names":["process","env","Record","RefObject","useMemo","useState","AssistantCloud","RemoteThreadListAdapter","RuntimeAdapters","InMemoryThreadListAdapter","useAssistantCloudThreadHistoryAdapter","CloudFileAttachmentAdapter","isRecord","ThreadData","externalId","CloudThreadListAdapterOptions","cloud","create","Promise","delete","threadId","toCustom","value","undefined","baseUrl","NEXT_PUBLIC_ASSISTANT_BASE_URL","autoCloud","anonymous","useCloudRuntimeAdapters","cloudRef","history","attachments","current","CLOUD_THREAD_PAGE_SIZE","CloudListCursor","activeCursor","archivedCursor","activeExhausted","archivedExhausted","parseListCursor","after","fallback","startsWith","parsed","JSON","parse","a","r","ae","re","createCloudThreadListAdapter","options","getOptions","unstable_useAdapters","useCloudAdapters","inMemory","initialize","result","remoteId","list","threads","activeThreads","archivedThreads","all","resolve","limit","is_archived","activeNext","length","at","id","archivedNext","map","t","status","const","title","lastMessageAt","last_message_at","Date","external_id","custom","metadata","nextCursor","stringify","createTask","thread_id","rename","newTitle","update","updateCustom","archive","unarchive","generateTitle","messages","filteredMessages","msg","content","filter","part","type","runs","stream","assistant_id","fetch","thread","get"],"sources":["../../../../src/react/runtimes/cloud/createCloudThreadListAdapter.ts"],"sourcesContent":["declare const process: { env: Record<string, string | undefined> };\n\nimport { type RefObject, useMemo, useState } from \"react\";\nimport { AssistantCloud } from \"assistant-cloud\";\nimport type {\n RemoteThreadListAdapter,\n RuntimeAdapters,\n} from \"../../../runtimes/remote-thread-list/types\";\nimport { InMemoryThreadListAdapter } from \"../../../runtimes/remote-thread-list/adapter/in-memory\";\nimport { useAssistantCloudThreadHistoryAdapter } from \"./AssistantCloudThreadHistoryAdapter\";\nimport { CloudFileAttachmentAdapter } from \"./CloudFileAttachmentAdapter\";\nimport { isRecord } from \"../../../utils/json/is-json\";\n\ntype ThreadData = {\n externalId: string | undefined;\n};\n\nexport type CloudThreadListAdapterOptions = {\n cloud?: AssistantCloud | undefined;\n\n create?: (() => Promise<ThreadData>) | undefined;\n delete?: ((threadId: string) => Promise<void>) | undefined;\n};\n\nconst toCustom = (value: unknown): Record<string, unknown> | undefined =>\n isRecord(value) ? value : undefined;\n\nconst baseUrl =\n typeof process !== \"undefined\" &&\n process?.env?.NEXT_PUBLIC_ASSISTANT_BASE_URL;\nexport const autoCloud = baseUrl\n ? new AssistantCloud({ baseUrl, anonymous: true })\n : undefined;\n\nexport const useCloudRuntimeAdapters = (\n cloudRef: RefObject<AssistantCloud>,\n): RuntimeAdapters => {\n const history = useAssistantCloudThreadHistoryAdapter(cloudRef);\n const [attachments] = useState(\n () => new CloudFileAttachmentAdapter(() => cloudRef.current),\n );\n return useMemo(\n () => ({\n history,\n attachments,\n }),\n [history, attachments],\n );\n};\n\nconst CLOUD_THREAD_PAGE_SIZE = 20;\n\ntype CloudListCursor = {\n activeCursor: string | undefined;\n archivedCursor: string | undefined;\n activeExhausted: boolean;\n archivedExhausted: boolean;\n};\n\nconst parseListCursor = (after: string | undefined): CloudListCursor => {\n const fallback: CloudListCursor = {\n activeCursor: after,\n archivedCursor: undefined,\n activeExhausted: false,\n archivedExhausted: false,\n };\n if (!after || !after.startsWith(\"{\")) return fallback;\n try {\n const parsed = JSON.parse(after);\n if (!isRecord(parsed)) return fallback;\n return {\n activeCursor: typeof parsed.a === \"string\" ? parsed.a : undefined,\n archivedCursor: typeof parsed.r === \"string\" ? parsed.r : undefined,\n activeExhausted: parsed.ae === true,\n archivedExhausted: parsed.re === true,\n };\n } catch {\n return fallback;\n }\n};\n\n/**\n * Builds the `RemoteThreadListAdapter` for an assistant-cloud backend without\n * requiring a hook call site, so plain code (a Vue or Svelte setup function,\n * a module-level config) can construct it. Options are read through the\n * getter on every call, so a stable adapter can follow changing `create` and\n * `delete` callbacks; swapping to a different `cloud` instance requires a new\n * adapter (and `reload()` on the list). Without a `cloud` instance (and\n * without `NEXT_PUBLIC_ASSISTANT_BASE_URL`), the adapter falls back to an\n * in-memory list. `useCloudThreadListAdapter` wraps this for the React\n * hook signature.\n */\nexport const createCloudThreadListAdapter = (\n options:\n | CloudThreadListAdapterOptions\n | (() => CloudThreadListAdapterOptions),\n): RemoteThreadListAdapter => {\n const getOptions = typeof options === \"function\" ? options : () => options;\n\n const unstable_useAdapters = function useCloudAdapters(): RuntimeAdapters {\n return useCloudRuntimeAdapters({\n get current() {\n return getOptions().cloud ?? autoCloud!;\n },\n });\n };\n\n const cloud = getOptions().cloud ?? autoCloud;\n if (!cloud) {\n const inMemory = new InMemoryThreadListAdapter();\n inMemory.initialize = async (threadId: string) => {\n const result = await getOptions().create?.();\n return { remoteId: threadId, externalId: result?.externalId };\n };\n return inMemory;\n }\n\n return {\n list: async ({ after } = {}) => {\n const {\n activeCursor,\n archivedCursor,\n activeExhausted,\n archivedExhausted,\n } = parseListCursor(after);\n const [{ threads: activeThreads }, { threads: archivedThreads }] =\n await Promise.all([\n activeExhausted\n ? Promise.resolve({ threads: [] })\n : cloud.threads.list({\n limit: CLOUD_THREAD_PAGE_SIZE,\n ...(activeCursor ? { after: activeCursor } : {}),\n }),\n archivedExhausted\n ? Promise.resolve({ threads: [] })\n : cloud.threads.list({\n is_archived: true,\n limit: CLOUD_THREAD_PAGE_SIZE,\n ...(archivedCursor ? { after: archivedCursor } : {}),\n }),\n ]);\n const activeNext =\n !activeExhausted && activeThreads.length === CLOUD_THREAD_PAGE_SIZE\n ? activeThreads.at(-1)?.id\n : undefined;\n const archivedNext =\n !archivedExhausted && archivedThreads.length === CLOUD_THREAD_PAGE_SIZE\n ? archivedThreads.at(-1)?.id\n : undefined;\n const threads = [...activeThreads, ...archivedThreads];\n return {\n threads: threads.map((t) => ({\n status: t.is_archived ? (\"archived\" as const) : (\"regular\" as const),\n remoteId: t.id,\n title: t.title,\n lastMessageAt: t.last_message_at\n ? new Date(t.last_message_at)\n : undefined,\n externalId: t.external_id ?? undefined,\n custom: toCustom(t.metadata),\n })),\n nextCursor:\n activeNext || archivedNext\n ? JSON.stringify({\n a: activeNext,\n r: archivedNext,\n ...(activeNext === undefined ? { ae: true } : {}),\n ...(archivedNext === undefined ? { re: true } : {}),\n })\n : undefined,\n };\n },\n\n initialize: async () => {\n const createTask = getOptions().create?.() ?? Promise.resolve();\n const t = await createTask;\n const external_id = t ? t.externalId : undefined;\n const { thread_id: remoteId } = await cloud.threads.create({\n last_message_at: new Date(),\n external_id,\n });\n\n return { externalId: external_id, remoteId: remoteId };\n },\n\n rename: async (threadId, newTitle) => {\n return cloud.threads.update(threadId, { title: newTitle });\n },\n updateCustom: async (threadId, custom) => {\n return cloud.threads.update(threadId, { metadata: custom ?? null });\n },\n archive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: true });\n },\n unarchive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: false });\n },\n delete: async (threadId) => {\n await getOptions().delete?.(threadId);\n return cloud.threads.delete(threadId);\n },\n\n generateTitle: async (threadId, messages) => {\n const filteredMessages = messages.map((msg) => ({\n ...msg,\n content: msg.content.filter(\n (part) => part.type === \"text\" || part.type === \"tool-call\",\n ),\n }));\n\n return cloud.runs.stream({\n thread_id: threadId,\n assistant_id: \"system/thread_title\",\n messages: filteredMessages,\n });\n },\n\n fetch: async (threadId: string) => {\n const thread = await cloud.threads.get(threadId);\n return {\n status: thread.is_archived\n ? (\"archived\" as const)\n : (\"regular\" as const),\n remoteId: thread.id,\n title: thread.title,\n lastMessageAt: thread.last_message_at\n ? new Date(thread.last_message_at)\n : undefined,\n externalId: thread.external_id ?? undefined,\n custom: toCustom(thread.metadata),\n };\n },\n\n unstable_useAdapters,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createCloudThreadListAdapter.js","names":["process","env","Record","RefObject","useMemo","useState","AssistantCloud","RemoteThreadListAdapter","RuntimeAdapters","InMemoryThreadListAdapter","useAssistantCloudThreadHistoryAdapter","CloudFileAttachmentAdapter","isRecord","ThreadData","externalId","CloudThreadListAdapterOptions","cloud","create","Promise","delete","threadId","toCustom","value","undefined","baseUrl","NEXT_PUBLIC_ASSISTANT_BASE_URL","autoCloud","anonymous","useCloudRuntimeAdapters","cloudRef","history","attachments","current","feedback","CLOUD_THREAD_PAGE_SIZE","CloudListCursor","activeCursor","archivedCursor","activeExhausted","archivedExhausted","parseListCursor","after","fallback","startsWith","parsed","JSON","parse","a","r","ae","re","createCloudThreadListAdapter","options","getOptions","unstable_useAdapters","useCloudAdapters","inMemory","initialize","result","remoteId","list","threads","activeThreads","archivedThreads","all","resolve","limit","is_archived","activeNext","length","at","id","archivedNext","map","t","status","const","title","lastMessageAt","last_message_at","Date","external_id","custom","metadata","nextCursor","stringify","createTask","thread_id","rename","newTitle","update","updateCustom","archive","unarchive","generateTitle","messages","filteredMessages","msg","content","filter","part","type","runs","stream","assistant_id","fetch","thread","get"],"sources":["../../../../src/react/runtimes/cloud/createCloudThreadListAdapter.ts"],"sourcesContent":["declare const process: { env: Record<string, string | undefined> };\n\nimport { type RefObject, useMemo, useState } from \"react\";\nimport { AssistantCloud } from \"assistant-cloud\";\nimport type {\n RemoteThreadListAdapter,\n RuntimeAdapters,\n} from \"../../../runtimes/remote-thread-list/types\";\nimport { InMemoryThreadListAdapter } from \"../../../runtimes/remote-thread-list/adapter/in-memory\";\nimport { useAssistantCloudThreadHistoryAdapter } from \"./AssistantCloudThreadHistoryAdapter\";\nimport { CloudFileAttachmentAdapter } from \"./CloudFileAttachmentAdapter\";\nimport { isRecord } from \"../../../utils/json/is-json\";\n\ntype ThreadData = {\n externalId: string | undefined;\n};\n\nexport type CloudThreadListAdapterOptions = {\n cloud?: AssistantCloud | undefined;\n\n create?: (() => Promise<ThreadData>) | undefined;\n delete?: ((threadId: string) => Promise<void>) | undefined;\n};\n\nconst toCustom = (value: unknown): Record<string, unknown> | undefined =>\n isRecord(value) ? value : undefined;\n\nconst baseUrl =\n typeof process !== \"undefined\" &&\n process?.env?.NEXT_PUBLIC_ASSISTANT_BASE_URL;\nexport const autoCloud = baseUrl\n ? new AssistantCloud({ baseUrl, anonymous: true })\n : undefined;\n\nexport const useCloudRuntimeAdapters = (\n cloudRef: RefObject<AssistantCloud>,\n): RuntimeAdapters => {\n const history = useAssistantCloudThreadHistoryAdapter(cloudRef);\n const [attachments] = useState(\n () => new CloudFileAttachmentAdapter(() => cloudRef.current),\n );\n return useMemo(\n () => ({\n history,\n attachments,\n feedback: history.feedback,\n }),\n [history, attachments],\n );\n};\n\nconst CLOUD_THREAD_PAGE_SIZE = 20;\n\ntype CloudListCursor = {\n activeCursor: string | undefined;\n archivedCursor: string | undefined;\n activeExhausted: boolean;\n archivedExhausted: boolean;\n};\n\nconst parseListCursor = (after: string | undefined): CloudListCursor => {\n const fallback: CloudListCursor = {\n activeCursor: after,\n archivedCursor: undefined,\n activeExhausted: false,\n archivedExhausted: false,\n };\n if (!after || !after.startsWith(\"{\")) return fallback;\n try {\n const parsed = JSON.parse(after);\n if (!isRecord(parsed)) return fallback;\n return {\n activeCursor: typeof parsed.a === \"string\" ? parsed.a : undefined,\n archivedCursor: typeof parsed.r === \"string\" ? parsed.r : undefined,\n activeExhausted: parsed.ae === true,\n archivedExhausted: parsed.re === true,\n };\n } catch {\n return fallback;\n }\n};\n\n/**\n * Builds the `RemoteThreadListAdapter` for an assistant-cloud backend without\n * requiring a hook call site, so plain code (a Vue or Svelte setup function,\n * a module-level config) can construct it. Options are read through the\n * getter on every call, so a stable adapter can follow changing `create` and\n * `delete` callbacks; swapping to a different `cloud` instance requires a new\n * adapter (and `reload()` on the list). Without a `cloud` instance (and\n * without `NEXT_PUBLIC_ASSISTANT_BASE_URL`), the adapter falls back to an\n * in-memory list. `useCloudThreadListAdapter` wraps this for the React\n * hook signature.\n */\nexport const createCloudThreadListAdapter = (\n options:\n | CloudThreadListAdapterOptions\n | (() => CloudThreadListAdapterOptions),\n): RemoteThreadListAdapter => {\n const getOptions = typeof options === \"function\" ? options : () => options;\n\n const unstable_useAdapters = function useCloudAdapters(): RuntimeAdapters {\n return useCloudRuntimeAdapters({\n get current() {\n return getOptions().cloud ?? autoCloud!;\n },\n });\n };\n\n const cloud = getOptions().cloud ?? autoCloud;\n if (!cloud) {\n const inMemory = new InMemoryThreadListAdapter();\n inMemory.initialize = async (threadId: string) => {\n const result = await getOptions().create?.();\n return { remoteId: threadId, externalId: result?.externalId };\n };\n return inMemory;\n }\n\n return {\n list: async ({ after } = {}) => {\n const {\n activeCursor,\n archivedCursor,\n activeExhausted,\n archivedExhausted,\n } = parseListCursor(after);\n const [{ threads: activeThreads }, { threads: archivedThreads }] =\n await Promise.all([\n activeExhausted\n ? Promise.resolve({ threads: [] })\n : cloud.threads.list({\n limit: CLOUD_THREAD_PAGE_SIZE,\n ...(activeCursor ? { after: activeCursor } : {}),\n }),\n archivedExhausted\n ? Promise.resolve({ threads: [] })\n : cloud.threads.list({\n is_archived: true,\n limit: CLOUD_THREAD_PAGE_SIZE,\n ...(archivedCursor ? { after: archivedCursor } : {}),\n }),\n ]);\n const activeNext =\n !activeExhausted && activeThreads.length === CLOUD_THREAD_PAGE_SIZE\n ? activeThreads.at(-1)?.id\n : undefined;\n const archivedNext =\n !archivedExhausted && archivedThreads.length === CLOUD_THREAD_PAGE_SIZE\n ? archivedThreads.at(-1)?.id\n : undefined;\n const threads = [...activeThreads, ...archivedThreads];\n return {\n threads: threads.map((t) => ({\n status: t.is_archived ? (\"archived\" as const) : (\"regular\" as const),\n remoteId: t.id,\n title: t.title,\n lastMessageAt: t.last_message_at\n ? new Date(t.last_message_at)\n : undefined,\n externalId: t.external_id ?? undefined,\n custom: toCustom(t.metadata),\n })),\n nextCursor:\n activeNext || archivedNext\n ? JSON.stringify({\n a: activeNext,\n r: archivedNext,\n ...(activeNext === undefined ? { ae: true } : {}),\n ...(archivedNext === undefined ? { re: true } : {}),\n })\n : undefined,\n };\n },\n\n initialize: async () => {\n const createTask = getOptions().create?.() ?? Promise.resolve();\n const t = await createTask;\n const external_id = t ? t.externalId : undefined;\n const { thread_id: remoteId } = await cloud.threads.create({\n last_message_at: new Date(),\n external_id,\n });\n\n return { externalId: external_id, remoteId: remoteId };\n },\n\n rename: async (threadId, newTitle) => {\n return cloud.threads.update(threadId, { title: newTitle });\n },\n updateCustom: async (threadId, custom) => {\n return cloud.threads.update(threadId, { metadata: custom ?? null });\n },\n archive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: true });\n },\n unarchive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: false });\n },\n delete: async (threadId) => {\n await getOptions().delete?.(threadId);\n return cloud.threads.delete(threadId);\n },\n\n generateTitle: async (threadId, messages) => {\n const filteredMessages = messages.map((msg) => ({\n ...msg,\n content: msg.content.filter(\n (part) => part.type === \"text\" || part.type === \"tool-call\",\n ),\n }));\n\n return cloud.runs.stream({\n thread_id: threadId,\n assistant_id: \"system/thread_title\",\n messages: filteredMessages,\n });\n },\n\n fetch: async (threadId: string) => {\n const thread = await cloud.threads.get(threadId);\n return {\n status: thread.is_archived\n ? (\"archived\" as const)\n : (\"regular\" as const),\n remoteId: thread.id,\n title: thread.title,\n lastMessageAt: thread.last_message_at\n ? new Date(thread.last_message_at)\n : undefined,\n externalId: thread.external_id ?? undefined,\n custom: toCustom(thread.metadata),\n };\n },\n\n unstable_useAdapters,\n };\n};\n"],"mappings":"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"}
|
|
@@ -7,64 +7,93 @@ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
|
7
7
|
import { useEffect, useState } from "@assistant-ui/tap/react-shim";
|
|
8
8
|
//#region src/react/runtimes/useExternalStoreRuntime.ts
|
|
9
9
|
const useExternalStoreRuntime = (store) => {
|
|
10
|
-
const $ = c(
|
|
10
|
+
const $ = c(21);
|
|
11
|
+
const { modelContext, feedback } = useRuntimeAdapters() ?? {};
|
|
11
12
|
let t0;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
bb0: {
|
|
14
|
+
if (!feedback || store.adapters?.feedback) {
|
|
15
|
+
t0 = store;
|
|
16
|
+
break bb0;
|
|
17
|
+
}
|
|
18
|
+
let t1;
|
|
19
|
+
if ($[0] !== feedback || $[1] !== store.adapters) {
|
|
20
|
+
t1 = {
|
|
21
|
+
...store.adapters,
|
|
22
|
+
feedback
|
|
23
|
+
};
|
|
24
|
+
$[0] = feedback;
|
|
25
|
+
$[1] = store.adapters;
|
|
26
|
+
$[2] = t1;
|
|
27
|
+
} else t1 = $[2];
|
|
28
|
+
let t2;
|
|
29
|
+
if ($[3] !== store || $[4] !== t1) {
|
|
30
|
+
t2 = {
|
|
31
|
+
...store,
|
|
32
|
+
adapters: t1
|
|
33
|
+
};
|
|
34
|
+
$[3] = store;
|
|
35
|
+
$[4] = t1;
|
|
36
|
+
$[5] = t2;
|
|
37
|
+
} else t2 = $[5];
|
|
38
|
+
t0 = t2;
|
|
39
|
+
}
|
|
40
|
+
const adaptedStore = t0;
|
|
18
41
|
let t1;
|
|
19
|
-
if ($[
|
|
20
|
-
t1 = () => ()
|
|
42
|
+
if ($[6] !== adaptedStore) {
|
|
43
|
+
t1 = () => new ExternalStoreRuntimeCore(adaptedStore);
|
|
44
|
+
$[6] = adaptedStore;
|
|
45
|
+
$[7] = t1;
|
|
46
|
+
} else t1 = $[7];
|
|
47
|
+
const [runtime] = useState(t1);
|
|
48
|
+
let t2;
|
|
49
|
+
if ($[8] !== runtime.threads) {
|
|
50
|
+
t2 = () => () => {
|
|
21
51
|
invalidateThreadRuntime(runtime.threads.getMainThreadRuntimeCore());
|
|
22
52
|
};
|
|
23
|
-
$[
|
|
24
|
-
$[
|
|
25
|
-
} else
|
|
26
|
-
let t2;
|
|
27
|
-
if ($[4] !== runtime) {
|
|
28
|
-
t2 = [runtime];
|
|
29
|
-
$[4] = runtime;
|
|
30
|
-
$[5] = t2;
|
|
31
|
-
} else t2 = $[5];
|
|
32
|
-
useEffect(t1, t2);
|
|
53
|
+
$[8] = runtime.threads;
|
|
54
|
+
$[9] = t2;
|
|
55
|
+
} else t2 = $[9];
|
|
33
56
|
let t3;
|
|
34
|
-
if ($[
|
|
35
|
-
t3 =
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
$[8] = t3;
|
|
41
|
-
} else t3 = $[8];
|
|
42
|
-
useEffect(t3);
|
|
43
|
-
const { modelContext } = useRuntimeAdapters() ?? {};
|
|
57
|
+
if ($[10] !== runtime) {
|
|
58
|
+
t3 = [runtime];
|
|
59
|
+
$[10] = runtime;
|
|
60
|
+
$[11] = t3;
|
|
61
|
+
} else t3 = $[11];
|
|
62
|
+
useEffect(t2, t3);
|
|
44
63
|
let t4;
|
|
45
|
-
|
|
46
|
-
if ($[9] !== modelContext || $[10] !== runtime) {
|
|
64
|
+
if ($[12] !== adaptedStore || $[13] !== runtime) {
|
|
47
65
|
t4 = () => {
|
|
66
|
+
runtime.setAdapter(adaptedStore);
|
|
67
|
+
};
|
|
68
|
+
$[12] = adaptedStore;
|
|
69
|
+
$[13] = runtime;
|
|
70
|
+
$[14] = t4;
|
|
71
|
+
} else t4 = $[14];
|
|
72
|
+
useEffect(t4);
|
|
73
|
+
let t5;
|
|
74
|
+
let t6;
|
|
75
|
+
if ($[15] !== modelContext || $[16] !== runtime) {
|
|
76
|
+
t5 = () => {
|
|
48
77
|
if (!modelContext) return;
|
|
49
78
|
return runtime.registerModelContextProvider(modelContext);
|
|
50
79
|
};
|
|
51
|
-
|
|
52
|
-
$[
|
|
53
|
-
$[
|
|
54
|
-
$[
|
|
55
|
-
$[
|
|
80
|
+
t6 = [modelContext, runtime];
|
|
81
|
+
$[15] = modelContext;
|
|
82
|
+
$[16] = runtime;
|
|
83
|
+
$[17] = t5;
|
|
84
|
+
$[18] = t6;
|
|
56
85
|
} else {
|
|
57
|
-
|
|
58
|
-
|
|
86
|
+
t5 = $[17];
|
|
87
|
+
t6 = $[18];
|
|
59
88
|
}
|
|
60
|
-
useEffect(
|
|
61
|
-
let
|
|
62
|
-
if ($[
|
|
63
|
-
|
|
64
|
-
$[
|
|
65
|
-
$[
|
|
66
|
-
} else
|
|
67
|
-
return
|
|
89
|
+
useEffect(t5, t6);
|
|
90
|
+
let t7;
|
|
91
|
+
if ($[19] !== runtime) {
|
|
92
|
+
t7 = new AssistantRuntimeImpl(runtime);
|
|
93
|
+
$[19] = runtime;
|
|
94
|
+
$[20] = t7;
|
|
95
|
+
} else t7 = $[20];
|
|
96
|
+
return t7;
|
|
68
97
|
};
|
|
69
98
|
//#endregion
|
|
70
99
|
export { useExternalStoreRuntime };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExternalStoreRuntime.js","names":["c","_c","useEffect","useMemo","useState","ExternalStoreRuntimeCore","ExternalStoreAdapter","AssistantRuntime","AssistantRuntimeImpl","invalidateThreadRuntime","useRuntimeAdapters","useExternalStoreRuntime","store","$","t0","
|
|
1
|
+
{"version":3,"file":"useExternalStoreRuntime.js","names":["c","_c","useEffect","useMemo","useState","ExternalStoreRuntimeCore","ExternalStoreAdapter","AssistantRuntime","AssistantRuntimeImpl","invalidateThreadRuntime","useRuntimeAdapters","useExternalStoreRuntime","store","$","modelContext","feedback","t0","bb0","adapters","t1","t2","adaptedStore","runtime","threads","getMainThreadRuntimeCore","t3","t4","setAdapter","t5","t6","registerModelContextProvider","t7"],"sources":["../../../src/react/runtimes/useExternalStoreRuntime.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { ExternalStoreRuntimeCore } from \"../../runtimes/internal\";\nimport type { ExternalStoreAdapter } from \"../../runtimes/external-store/external-store-adapter\";\nimport type { AssistantRuntime } from \"../../runtime/api/assistant-runtime\";\nimport { AssistantRuntimeImpl } from \"../../runtime/internal\";\nimport { invalidateThreadRuntime } from \"../../runtime/utils/thread-runtime-lifecycle\";\nimport { useRuntimeAdapters } from \"./RuntimeAdapterProvider\";\n\nexport const useExternalStoreRuntime = <T>(\n store: ExternalStoreAdapter<T>,\n): AssistantRuntime => {\n const { modelContext, feedback } = useRuntimeAdapters() ?? {};\n const adaptedStore = useMemo(() => {\n if (!feedback || store.adapters?.feedback) return store;\n return {\n ...store,\n adapters: { ...store.adapters, feedback },\n };\n }, [feedback, store]);\n const [runtime] = useState(() => new ExternalStoreRuntimeCore(adaptedStore));\n\n useEffect(() => {\n return () => {\n invalidateThreadRuntime(runtime.threads.getMainThreadRuntimeCore());\n };\n }, [runtime]);\n\n useEffect(() => {\n runtime.setAdapter(adaptedStore);\n });\n\n useEffect(() => {\n if (!modelContext) return undefined;\n return runtime.registerModelContextProvider(modelContext);\n }, [modelContext, runtime]);\n\n return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);\n};\n"],"mappings":";;;;;;;;AAUA,MAAaW,2BAA0BC,UAAA;CAAA,MAAAC,IAAAZ,EAAA,EAAA;CAGrC,MAAA,EAAAa,cAAAC,aAAmCL,mBAAyB,KAAzB,CAAyB;CAAE,IAAAM;CAAAC,KAAA;EAE5D,IAAI,CAACF,YAAYH,MAAKM,UAAmBH,UAAA;GAAEC,KAAOJ;GAAP,MAAAK;EAAa;EAAA,IAAAE;EAAA,IAAAN,EAAA,OAAAE,YAAAF,EAAA,OAAAD,MAAAM,UAAA;GAG5CC,KAAA;IAAA,GAAKP,MAAKM;IAASH;GAAW;GAACF,EAAA,KAAAE;GAAAF,EAAA,KAAAD,MAAAM;GAAAL,EAAA,KAAAM;EAAA,OAAAA,KAAAN,EAAA;EAAA,IAAAO;EAAA,IAAAP,EAAA,OAAAD,SAAAC,EAAA,OAAAM,IAAA;GAFpCC,KAAA;IAAA,GACFR;IAAKM,UACEC;GACZ;GAACN,EAAA,KAAAD;GAAAC,EAAA,KAAAM;GAAAN,EAAA,KAAAO;EAAA,OAAAA,KAAAP,EAAA;EAHDG,KAAOI;CAGL;CALJ,MAAAC,eAAqBL;CAMC,IAAAG;CAAA,IAAAN,EAAA,OAAAQ,cAAA;EACKF,WAAM,IAAId,yBAAyBgB,YAAY;EAACR,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAA3E,MAAA,CAAAS,WAAkBlB,SAASe,EAAgD;CAAE,IAAAC;CAAA,IAAAP,EAAA,OAAAS,QAAAC,SAAA;EAEnEH,iBACD;GACLX,wBAAwBa,QAAOC,QAAQC,yBAA0B,CAAC;EAAC;EAEtEX,EAAA,KAAAS,QAAAC;EAAAV,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAS,SAAA;EAAEG,KAAA,CAACH,OAAO;EAACT,EAAA,MAAAS;EAAAT,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAJZX,UAAUkB,IAIPK,EAAS;CAAC,IAAAC;CAAA,IAAAb,EAAA,QAAAQ,gBAAAR,EAAA,QAAAS,SAAA;EAEHI,WAAA;GACRJ,QAAOK,WAAYN,YAAY;EAAC;EACjCR,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;EAAAT,EAAA,MAAAa;CAAA,OAAAA,KAAAb,EAAA;CAFDX,UAAUwB,EAET;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAAhB,EAAA,QAAAC,gBAAAD,EAAA,QAAAS,SAAA;EAEQM,WAAA;GACR,IAAI,CAACd,cAAY;GAAmB,OAC7BQ,QAAOQ,6BAA8BhB,YAAY;EAAC;EACxDe,KAAA,CAACf,cAAcQ,OAAO;EAACT,EAAA,MAAAC;EAAAD,EAAA,MAAAS;EAAAT,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAA;EAAAD,KAAAf,EAAA;EAAAgB,KAAAhB,EAAA;CAAA;CAH1BX,UAAU0B,IAGPC,EAAuB;CAAC,IAAAE;CAAA,IAAAlB,EAAA,QAAAS,SAAA;EAENS,KAAA,IAAIvB,qBAAqBc,OAAO;EAACT,EAAA,MAAAS;EAAAT,EAAA,MAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,OAAjCkB;AAAiC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRemoteThreadListRuntime.d.ts","names":[],"sources":["../../../src/react/runtimes/useRemoteThreadListRuntime.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"useRemoteThreadListRuntime.d.ts","names":[],"sources":["../../../src/react/runtimes/useRemoteThreadListRuntime.ts"],"mappings":";;;cAkFa,6BACX,SAAS,4BACR"}
|