UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

1 lines 3.36 kB
{"version":3,"sources":["../../src/cloud/AssistantCloudThreadHistoryAdapter.tsx"],"sourcesContent":["import { RefObject, useState } from \"react\";\nimport { useThreadListItemRuntime } from \"../context\";\nimport { ThreadHistoryAdapter } from \"../runtimes/adapters/thread-history/ThreadHistoryAdapter\";\nimport { ExportedMessageRepositoryItem } from \"../runtimes/utils/MessageRepository\";\nimport { AssistantCloud } from \"./AssistantCloud\";\nimport { auiV0Decode, auiV0Encode } from \"./auiV0\";\nimport { ThreadListItemRuntime } from \"../api\";\n\nclass AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {\n constructor(\n private cloudRef: RefObject<AssistantCloud>,\n private threadListItemRuntime: ThreadListItemRuntime,\n ) {}\n\n private _getIdForLocalId: Record<string, string | Promise<string>> = {};\n\n async append({ parentId, message }: ExportedMessageRepositoryItem) {\n const { remoteId } = await this.threadListItemRuntime.initialize();\n const task = this.cloudRef.current.threads.messages\n .create(remoteId, {\n parent_id: parentId\n ? ((await this._getIdForLocalId[parentId]) ?? parentId)\n : null,\n format: \"aui/v0\",\n content: auiV0Encode(message),\n })\n .then(({ message_id }) => {\n this._getIdForLocalId[message.id] = message_id;\n return message_id;\n });\n\n this._getIdForLocalId[message.id] = task;\n\n return task.then(() => {});\n }\n\n async load() {\n const remoteId = this.threadListItemRuntime.getState().remoteId;\n if (!remoteId) return { messages: [] };\n const { messages } =\n await this.cloudRef.current.threads.messages.list(remoteId);\n const payload = {\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 return payload;\n }\n}\n\nexport const useAssistantCloudThreadHistoryAdapter = (\n cloudRef: RefObject<AssistantCloud>,\n): ThreadHistoryAdapter => {\n const threadListItemRuntime = useThreadListItemRuntime();\n const [adapter] = useState(\n () =>\n new AssistantCloudThreadHistoryAdapter(cloudRef, threadListItemRuntime),\n );\n\n return adapter;\n};\n"],"mappings":";AAAA,SAAoB,gBAAgB;AACpC,SAAS,gCAAgC;AAIzC,SAAS,aAAa,mBAAmB;AAGzC,IAAM,qCAAN,MAAyE;AAAA,EACvE,YACU,UACA,uBACR;AAFQ;AACA;AAAA,EACP;AAAA,EAEK,mBAA6D,CAAC;AAAA,EAEtE,MAAM,OAAO,EAAE,UAAU,QAAQ,GAAkC;AACjE,UAAM,EAAE,SAAS,IAAI,MAAM,KAAK,sBAAsB,WAAW;AACjE,UAAM,OAAO,KAAK,SAAS,QAAQ,QAAQ,SACxC,OAAO,UAAU;AAAA,MAChB,WAAW,WACL,MAAM,KAAK,iBAAiB,QAAQ,KAAM,WAC5C;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS,YAAY,OAAO;AAAA,IAC9B,CAAC,EACA,KAAK,CAAC,EAAE,WAAW,MAAM;AACxB,WAAK,iBAAiB,QAAQ,EAAE,IAAI;AACpC,aAAO;AAAA,IACT,CAAC;AAEH,SAAK,iBAAiB,QAAQ,EAAE,IAAI;AAEpC,WAAO,KAAK,KAAK,MAAM;AAAA,IAAC,CAAC;AAAA,EAC3B;AAAA,EAEA,MAAM,OAAO;AACX,UAAM,WAAW,KAAK,sBAAsB,SAAS,EAAE;AACvD,QAAI,CAAC,SAAU,QAAO,EAAE,UAAU,CAAC,EAAE;AACrC,UAAM,EAAE,SAAS,IACf,MAAM,KAAK,SAAS,QAAQ,QAAQ,SAAS,KAAK,QAAQ;AAC5D,UAAM,UAAU;AAAA,MACd,UAAU,SACP;AAAA,QACC,CAAC,MAA4C,EAAE,WAAW;AAAA,MAC5D,EACC,IAAI,WAAW,EACf,QAAQ;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,wCAAwC,CACnD,aACyB;AACzB,QAAM,wBAAwB,yBAAyB;AACvD,QAAM,CAAC,OAAO,IAAI;AAAA,IAChB,MACE,IAAI,mCAAmC,UAAU,qBAAqB;AAAA,EAC1E;AAEA,SAAO;AACT;","names":[]}