@assistant-ui/react 0.11.2 → 0.11.4
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/client/types/Composer.d.ts +2 -0
- package/dist/client/types/Composer.d.ts.map +1 -1
- package/dist/client/types/Message.d.ts +2 -0
- package/dist/client/types/Message.d.ts.map +1 -1
- package/dist/client/util-hooks/tapLookupResources.d.ts.map +1 -0
- package/dist/{legacy-runtime → client}/util-hooks/tapLookupResources.js +1 -1
- package/dist/client/util-hooks/tapLookupResources.js.map +1 -0
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.js +1 -1
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.js +9 -3
- package/dist/legacy-runtime/client/ComposerRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/MessageRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/MessageRuntimeClient.js +8 -2
- package/dist/legacy-runtime/client/MessageRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.js +1 -1
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.js +5 -10
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/package.json +1 -1
- package/src/client/types/Composer.ts +1 -1
- package/src/client/types/Message.ts +1 -1
- package/src/legacy-runtime/client/AttachmentRuntimeClient.ts +1 -1
- package/src/legacy-runtime/client/ComposerRuntimeClient.ts +10 -3
- package/src/legacy-runtime/client/MessageRuntimeClient.ts +8 -2
- package/src/legacy-runtime/client/ThreadListRuntimeClient.ts +1 -1
- package/src/legacy-runtime/client/ThreadRuntimeClient.ts +1 -1
- package/src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +7 -11
- package/dist/legacy-runtime/util-hooks/tapLookupResources.d.ts.map +0 -1
- package/dist/legacy-runtime/util-hooks/tapLookupResources.js.map +0 -1
- /package/dist/{legacy-runtime → client}/util-hooks/tapLookupResources.d.ts +0 -0
- /package/src/{legacy-runtime → client}/util-hooks/tapLookupResources.ts +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/client/types/Composer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,IAAI,mBAAmB,CAAC;IAEhC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/client/types/Composer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,IAAI,mBAAmB,CAAC;IAEhC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB,CAAC;IAC9E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,IAAI,CAAC;IACf,SAAS,IAAI,IAAI,CAAC;CAInB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/client/types/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAEtE,OAAO,EACL,WAAW,EACX,iBAAiB,EAClB,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAE1D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAElD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,QAAQ,IAAI,kBAAkB,CAAC;IAE/B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAErC,MAAM,CAAC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,cAAc,CAAC,OAAO,EAAE;QACtB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IACT,WAAW,IAAI,MAAM,CAAC;IAEtB,IAAI,EAAE,CACJ,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KACjD,oBAAoB,CAAC;IAC1B,UAAU,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/client/types/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAEtE,OAAO,EACL,WAAW,EACX,iBAAiB,EAClB,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAE1D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAElD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,QAAQ,IAAI,kBAAkB,CAAC;IAE/B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAErC,MAAM,CAAC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,cAAc,CAAC,OAAO,EAAE;QACtB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IACT,WAAW,IAAI,MAAM,CAAC;IAEtB,IAAI,EAAE,CACJ,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KACjD,oBAAoB,CAAC;IAC1B,UAAU,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB,CAAC;IAE9E,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAIrC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"tapLookupResources.d.ts","sourceRoot":"","sources":["../../../src/client/util-hooks/tapLookupResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,eAAO,MAAM,kBAAkB,GAAI,MAAM,EAAE,IAAI,SAAS,SAAS,EAC/D,UAAU,eAAe,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,IAAI,CAAC;CACX,CAAC,EAAE;;kBAMY;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CAepD,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/client/util-hooks/tapLookupResources.ts"],"sourcesContent":["import { ResourceElement, tapResources } from \"@assistant-ui/tap\";\nimport { ApiObject } from \"../../utils/tap-store\";\n\nexport const tapLookupResources = <TState, TApi extends ApiObject>(\n elements: ResourceElement<{\n key: string | undefined;\n state: TState;\n api: TApi;\n }>[],\n) => {\n const resources = tapResources(elements);\n\n return {\n state: resources.map((r) => r.state),\n api: (lookup: { index: number } | { key: string }) => {\n const value =\n \"index\" in lookup\n ? resources[lookup.index]?.api\n : resources.find((r) => r.key === lookup.key)?.api;\n\n if (!value) {\n throw new Error(\n `tapLookupResources: Resource not found for lookup: ${JSON.stringify(lookup)}`,\n );\n }\n\n return value;\n },\n };\n};\n"],"mappings":";AAAA,SAA0B,oBAAoB;AAGvC,IAAM,qBAAqB,CAChC,aAKG;AACH,QAAM,YAAY,aAAa,QAAQ;AAEvC,SAAO;AAAA,IACL,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,IACnC,KAAK,CAAC,WAAgD;AACpD,YAAM,QACJ,WAAW,SACP,UAAU,OAAO,KAAK,GAAG,MACzB,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,OAAO,GAAG,GAAG;AAEnD,UAAI,CAAC,OAAO;AACV,cAAM,IAAI;AAAA,UACR,sDAAsD,KAAK,UAAU,MAAM,CAAC;AAAA,QAC9E;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/AttachmentRuntimeClient.ts"],"sourcesContent":["import { resource } from \"../../../../tap/dist/core/resource\";\nimport { AttachmentClientApi } from \"../../client/types/Attachment\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { AttachmentRuntime } from \"../runtime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\n\nexport const AttachmentRuntimeClient = resource(\n ({ runtime }: { runtime: AttachmentRuntime }) => {\n const state = tapSubscribable(runtime);\n const api = tapApi<AttachmentClientApi>({\n getState: () => state,\n remove: runtime.remove,\n __internal_getRuntime: () => runtime,\n });\n\n return {\n state: state,\n api,\n key:
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/AttachmentRuntimeClient.ts"],"sourcesContent":["import { resource } from \"../../../../tap/dist/core/resource\";\nimport { AttachmentClientApi } from \"../../client/types/Attachment\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { AttachmentRuntime } from \"../runtime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\n\nexport const AttachmentRuntimeClient = resource(\n ({ runtime }: { runtime: AttachmentRuntime }) => {\n const state = tapSubscribable(runtime);\n const api = tapApi<AttachmentClientApi>({\n getState: () => state,\n remove: runtime.remove,\n __internal_getRuntime: () => runtime,\n });\n\n return {\n state: state,\n api,\n key: state.id,\n };\n },\n);\n"],"mappings":";AAAA,SAAS,gBAAgB;AAEzB,SAAS,cAAc;AAEvB,SAAS,uBAAuB;AAEzB,IAAM,0BAA0B;AAAA,EACrC,CAAC,EAAE,QAAQ,MAAsC;AAC/C,UAAM,QAAQ,gBAAgB,OAAO;AACrC,UAAM,MAAM,OAA4B;AAAA,MACtC,UAAU,MAAM;AAAA,MAChB,QAAQ,QAAQ;AAAA,MAChB,uBAAuB,MAAM;AAAA,IAC/B,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK,MAAM;AAAA,IACb;AAAA,EACF;AACF;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ComposerRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/ComposerRuntimeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EAEhB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;
|
1
|
+
{"version":3,"file":"ComposerRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/ComposerRuntimeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EAEhB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAoBrC,eAAO,MAAM,cAAc;;;;iBAMV,SAAS,CAAC,MAAM,CAAC;mBACf,SAAS,CAAC,MAAM,CAAC;aACvB,eAAe;EAuF3B,CAAC"}
|
@@ -5,11 +5,11 @@ import {
|
|
5
5
|
tapEffect,
|
6
6
|
tapInlineResource
|
7
7
|
} from "@assistant-ui/tap";
|
8
|
-
import { tapSubscribable } from "../util-hooks/tapSubscribable.js";
|
9
8
|
import { tapApi } from "../../utils/tap-store/index.js";
|
10
9
|
import { tapEvents } from "../../client/EventContext.js";
|
11
|
-
import { tapLookupResources } from "
|
10
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources.js";
|
12
11
|
import { AttachmentRuntimeClient } from "./AttachmentRuntimeClient.js";
|
12
|
+
import { tapSubscribable } from "../util-hooks/tapSubscribable.js";
|
13
13
|
var ComposerAttachmentClientByIndex = resource(
|
14
14
|
({ runtime, index }) => {
|
15
15
|
const attachmentRuntime = tapMemo(
|
@@ -84,7 +84,13 @@ var ComposerClient = resource(
|
|
84
84
|
beginEdit: runtime.beginEdit ?? (() => {
|
85
85
|
throw new Error("beginEdit is not supported in this runtime");
|
86
86
|
}),
|
87
|
-
attachment:
|
87
|
+
attachment: (selector) => {
|
88
|
+
if ("id" in selector) {
|
89
|
+
return attachments.api({ key: selector.id });
|
90
|
+
} else {
|
91
|
+
return attachments.api(selector);
|
92
|
+
}
|
93
|
+
},
|
88
94
|
__internal_getRuntime: () => runtime
|
89
95
|
});
|
90
96
|
return {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/ComposerRuntimeClient.ts"],"sourcesContent":["import {\n resource,\n tapMemo,\n tapEffect,\n RefObject,\n tapInlineResource,\n} from \"@assistant-ui/tap\";\nimport {\n ComposerRuntime,\n EditComposerRuntime,\n} from \"../runtime/ComposerRuntime\";\nimport { Unsubscribe } from \"../../types\";\
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/ComposerRuntimeClient.ts"],"sourcesContent":["import {\n resource,\n tapMemo,\n tapEffect,\n RefObject,\n tapInlineResource,\n} from \"@assistant-ui/tap\";\nimport {\n ComposerRuntime,\n EditComposerRuntime,\n} from \"../runtime/ComposerRuntime\";\nimport { Unsubscribe } from \"../../types\";\n\nimport { tapApi } from \"../../utils/tap-store\";\nimport { ComposerRuntimeEventType } from \"../runtime-cores/core/ComposerRuntimeCore\";\nimport { tapEvents } from \"../../client/EventContext\";\nimport {\n ComposerClientState,\n ComposerClientApi,\n} from \"../../client/types/Composer\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport { AttachmentRuntimeClient } from \"./AttachmentRuntimeClient\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\n\nconst ComposerAttachmentClientByIndex = resource(\n ({ runtime, index }: { runtime: ComposerRuntime; index: number }) => {\n const attachmentRuntime = tapMemo(\n () => runtime.getAttachmentByIndex(index),\n [runtime, index],\n );\n\n return tapInlineResource(\n AttachmentRuntimeClient({\n runtime: attachmentRuntime,\n }),\n );\n },\n);\n\nexport const ComposerClient = resource(\n ({\n threadIdRef,\n messageIdRef,\n runtime,\n }: {\n threadIdRef: RefObject<string>;\n messageIdRef?: RefObject<string>;\n runtime: ComposerRuntime;\n }) => {\n const runtimeState = tapSubscribable(runtime);\n const events = tapEvents();\n\n // Bind composer events to event manager\n tapEffect(() => {\n const unsubscribers: Unsubscribe[] = [];\n\n // Subscribe to composer events\n const composerEvents: ComposerRuntimeEventType[] = [\n \"send\",\n \"attachment-add\",\n ];\n\n for (const event of composerEvents) {\n const unsubscribe = runtime.unstable_on(event, () => {\n events.emit(`composer.${event}`, {\n threadId: threadIdRef.current,\n ...(messageIdRef && { messageId: messageIdRef.current }),\n });\n });\n unsubscribers.push(unsubscribe);\n }\n\n return () => {\n for (const unsub of unsubscribers) unsub();\n };\n }, [runtime, events, threadIdRef, messageIdRef]);\n\n const attachments = tapLookupResources(\n runtimeState.attachments.map((_, idx) =>\n ComposerAttachmentClientByIndex(\n { runtime: runtime, index: idx },\n { key: idx },\n ),\n ),\n );\n\n const state = tapMemo<ComposerClientState>(() => {\n return {\n text: runtimeState.text,\n role: runtimeState.role,\n attachments: attachments.state,\n runConfig: runtimeState.runConfig,\n isEditing: runtimeState.isEditing,\n canCancel: runtimeState.canCancel,\n attachmentAccept: runtimeState.attachmentAccept,\n isEmpty: runtimeState.isEmpty,\n type: runtimeState.type ?? \"thread\",\n };\n }, [runtimeState, attachments.state]);\n\n const api = tapApi<ComposerClientApi>({\n getState: () => state,\n\n setText: runtime.setText,\n setRole: runtime.setRole,\n setRunConfig: runtime.setRunConfig,\n addAttachment: runtime.addAttachment,\n reset: runtime.reset,\n\n clearAttachments: runtime.clearAttachments,\n send: runtime.send,\n cancel: runtime.cancel,\n beginEdit:\n (runtime as EditComposerRuntime).beginEdit ??\n (() => {\n throw new Error(\"beginEdit is not supported in this runtime\");\n }),\n\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachments.api({ key: selector.id });\n } else {\n return attachments.api(selector);\n }\n },\n\n __internal_getRuntime: () => runtime,\n });\n\n return {\n state,\n api,\n };\n },\n);\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAOP,SAAS,cAAc;AAEvB,SAAS,iBAAiB;AAK1B,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEhC,IAAM,kCAAkC;AAAA,EACtC,CAAC,EAAE,SAAS,MAAM,MAAmD;AACnE,UAAM,oBAAoB;AAAA,MACxB,MAAM,QAAQ,qBAAqB,KAAK;AAAA,MACxC,CAAC,SAAS,KAAK;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,wBAAwB;AAAA,QACtB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB;AAAA,EAC5B,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAIM;AACJ,UAAM,eAAe,gBAAgB,OAAO;AAC5C,UAAM,SAAS,UAAU;AAGzB,cAAU,MAAM;AACd,YAAM,gBAA+B,CAAC;AAGtC,YAAM,iBAA6C;AAAA,QACjD;AAAA,QACA;AAAA,MACF;AAEA,iBAAW,SAAS,gBAAgB;AAClC,cAAM,cAAc,QAAQ,YAAY,OAAO,MAAM;AACnD,iBAAO,KAAK,YAAY,KAAK,IAAI;AAAA,YAC/B,UAAU,YAAY;AAAA,YACtB,GAAI,gBAAgB,EAAE,WAAW,aAAa,QAAQ;AAAA,UACxD,CAAC;AAAA,QACH,CAAC;AACD,sBAAc,KAAK,WAAW;AAAA,MAChC;AAEA,aAAO,MAAM;AACX,mBAAW,SAAS,cAAe,OAAM;AAAA,MAC3C;AAAA,IACF,GAAG,CAAC,SAAS,QAAQ,aAAa,YAAY,CAAC;AAE/C,UAAM,cAAc;AAAA,MAClB,aAAa,YAAY;AAAA,QAAI,CAAC,GAAG,QAC/B;AAAA,UACE,EAAE,SAAkB,OAAO,IAAI;AAAA,UAC/B,EAAE,KAAK,IAAI;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,QAA6B,MAAM;AAC/C,aAAO;AAAA,QACL,MAAM,aAAa;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,aAAa,YAAY;AAAA,QACzB,WAAW,aAAa;AAAA,QACxB,WAAW,aAAa;AAAA,QACxB,WAAW,aAAa;AAAA,QACxB,kBAAkB,aAAa;AAAA,QAC/B,SAAS,aAAa;AAAA,QACtB,MAAM,aAAa,QAAQ;AAAA,MAC7B;AAAA,IACF,GAAG,CAAC,cAAc,YAAY,KAAK,CAAC;AAEpC,UAAM,MAAM,OAA0B;AAAA,MACpC,UAAU,MAAM;AAAA,MAEhB,SAAS,QAAQ;AAAA,MACjB,SAAS,QAAQ;AAAA,MACjB,cAAc,QAAQ;AAAA,MACtB,eAAe,QAAQ;AAAA,MACvB,OAAO,QAAQ;AAAA,MAEf,kBAAkB,QAAQ;AAAA,MAC1B,MAAM,QAAQ;AAAA,MACd,QAAQ,QAAQ;AAAA,MAChB,WACG,QAAgC,cAChC,MAAM;AACL,cAAM,IAAI,MAAM,4CAA4C;AAAA,MAC9D;AAAA,MAEF,YAAY,CAAC,aAAa;AACxB,YAAI,QAAQ,UAAU;AACpB,iBAAO,YAAY,IAAI,EAAE,KAAK,SAAS,GAAG,CAAC;AAAA,QAC7C,OAAO;AACL,iBAAO,YAAY,IAAI,QAAQ;AAAA,QACjC;AAAA,MACF;AAAA,MAEA,uBAAuB,MAAM;AAAA,IAC/B,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessageRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/MessageRuntimeClient.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAyBpC,eAAO,MAAM,aAAa;;;;;aAKb,cAAc;iBACV,SAAS,CAAC,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"MessageRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/MessageRuntimeClient.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAyBpC,eAAO,MAAM,aAAa;;;;;aAKb,cAAc;iBACV,SAAS,CAAC,MAAM,CAAC;EA8FjC,CAAC"}
|
@@ -9,7 +9,7 @@ import { tapApi } from "../../utils/tap-store/index.js";
|
|
9
9
|
import { tapSubscribable } from "../util-hooks/tapSubscribable.js";
|
10
10
|
import { ComposerClient } from "./ComposerRuntimeClient.js";
|
11
11
|
import { MessagePartClient } from "./MessagePartRuntimeClient.js";
|
12
|
-
import { tapLookupResources } from "
|
12
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources.js";
|
13
13
|
import { AttachmentRuntimeClient } from "./AttachmentRuntimeClient.js";
|
14
14
|
var MessageAttachmentClientByIndex = resource(
|
15
15
|
({ runtime, index }) => {
|
@@ -95,7 +95,13 @@ var MessageClient = resource(
|
|
95
95
|
return parts.api({ key: "toolCallId-" + selector.toolCallId });
|
96
96
|
}
|
97
97
|
},
|
98
|
-
attachment:
|
98
|
+
attachment: (selector) => {
|
99
|
+
if ("id" in selector) {
|
100
|
+
return attachments.api({ key: selector.id });
|
101
|
+
} else {
|
102
|
+
return attachments.api(selector);
|
103
|
+
}
|
104
|
+
},
|
99
105
|
setIsCopied,
|
100
106
|
setIsHovering,
|
101
107
|
__internal_getRuntime: () => runtime
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/MessageRuntimeClient.ts"],"sourcesContent":["import {\n resource,\n tapInlineResource,\n tapMemo,\n tapState,\n} from \"@assistant-ui/tap\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { MessageRuntime } from \"../runtime/MessageRuntime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { ComposerClient } from \"./ComposerRuntimeClient\";\nimport { MessagePartClient } from \"./MessagePartRuntimeClient\";\nimport { tapLookupResources } from \"
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/MessageRuntimeClient.ts"],"sourcesContent":["import {\n resource,\n tapInlineResource,\n tapMemo,\n tapState,\n} from \"@assistant-ui/tap\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { MessageRuntime } from \"../runtime/MessageRuntime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { ComposerClient } from \"./ComposerRuntimeClient\";\nimport { MessagePartClient } from \"./MessagePartRuntimeClient\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport { RefObject } from \"react\";\nimport {\n MessageClientState,\n MessageClientApi,\n} from \"../../client/types/Message\";\nimport { AttachmentRuntimeClient } from \"./AttachmentRuntimeClient\";\n\nconst MessageAttachmentClientByIndex = resource(\n ({ runtime, index }: { runtime: MessageRuntime; index: number }) => {\n const attachmentRuntime = tapMemo(\n () => runtime.getAttachmentByIndex(index),\n [runtime, index],\n );\n return tapInlineResource(\n AttachmentRuntimeClient({ runtime: attachmentRuntime }),\n );\n },\n);\n\nconst MessagePartByIndex = resource(\n ({ runtime, index }: { runtime: MessageRuntime; index: number }) => {\n const partRuntime = tapMemo(\n () => runtime.getMessagePartByIndex(index),\n [runtime, index],\n );\n return tapInlineResource(MessagePartClient({ runtime: partRuntime }));\n },\n);\n\nexport const MessageClient = resource(\n ({\n runtime,\n threadIdRef,\n }: {\n runtime: MessageRuntime;\n threadIdRef: RefObject<string>;\n }) => {\n const runtimeState = tapSubscribable(runtime);\n\n const [isCopiedState, setIsCopied] = tapState(false);\n const [isHoveringState, setIsHovering] = tapState(false);\n\n const messageIdRef = tapMemo(\n () => ({\n get current() {\n return runtime.getState().id;\n },\n }),\n [runtime],\n );\n\n const composer = tapInlineResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n messageIdRef,\n }),\n );\n\n const parts = tapLookupResources(\n runtimeState.content.map((_, idx) =>\n MessagePartByIndex({ runtime, index: idx }, { key: idx }),\n ),\n );\n\n const attachments = tapLookupResources(\n runtimeState.attachments?.map((_, idx) =>\n MessageAttachmentClientByIndex({ runtime, index: idx }, { key: idx }),\n ) ?? [],\n );\n\n const state = tapMemo<MessageClientState>(() => {\n return {\n ...(runtimeState as MessageClientState),\n\n parts: parts.state,\n composer: composer.state,\n\n isCopied: isCopiedState,\n isHovering: isHoveringState,\n };\n }, [\n runtimeState,\n parts.state,\n composer.state,\n isCopiedState,\n isHoveringState,\n ]);\n\n const api = tapApi<MessageClientApi>({\n getState: () => state,\n\n composer: composer.api,\n\n reload: (config) => runtime.reload(config),\n speak: () => runtime.speak(),\n stopSpeaking: () => runtime.stopSpeaking(),\n submitFeedback: (feedback) => runtime.submitFeedback(feedback),\n switchToBranch: (options) => runtime.switchToBranch(options),\n getCopyText: () => runtime.unstable_getCopyText(),\n\n part: (selector) => {\n if (\"index\" in selector) {\n return parts.api({ index: selector.index });\n } else {\n return parts.api({ key: \"toolCallId-\" + selector.toolCallId });\n }\n },\n\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachments.api({ key: selector.id });\n } else {\n return attachments.api(selector);\n }\n },\n\n setIsCopied,\n setIsHovering,\n\n __internal_getRuntime: () => runtime,\n });\n\n return {\n key: runtimeState.id,\n state,\n api,\n };\n },\n);\n"],"mappings":"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","names":[]}
|
@@ -4,7 +4,7 @@ import { resource, tapInlineResource, tapMemo } from "@assistant-ui/tap";
|
|
4
4
|
import { tapSubscribable } from "../util-hooks/tapSubscribable.js";
|
5
5
|
import { ThreadListItemClient } from "./ThreadListItemRuntimeClient.js";
|
6
6
|
import { ThreadClient } from "./ThreadRuntimeClient.js";
|
7
|
-
import { tapLookupResources } from "
|
7
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources.js";
|
8
8
|
var ThreadListItemClientById = resource(
|
9
9
|
({ runtime, id }) => {
|
10
10
|
const threadListItemRuntime = tapMemo(
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/ThreadListRuntimeClient.ts"],"sourcesContent":["import { tapApi } from \"../../utils/tap-store\";\nimport { resource, tapInlineResource, tapMemo } from \"@assistant-ui/tap\";\nimport { ThreadListRuntime } from \"../runtime/ThreadListRuntime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { ThreadListItemClient } from \"./ThreadListItemRuntimeClient\";\nimport { ThreadClient } from \"./ThreadRuntimeClient\";\nimport { tapLookupResources } from \"
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/ThreadListRuntimeClient.ts"],"sourcesContent":["import { tapApi } from \"../../utils/tap-store\";\nimport { resource, tapInlineResource, tapMemo } from \"@assistant-ui/tap\";\nimport { ThreadListRuntime } from \"../runtime/ThreadListRuntime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { ThreadListItemClient } from \"./ThreadListItemRuntimeClient\";\nimport { ThreadClient } from \"./ThreadRuntimeClient\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport {\n ThreadListClientState,\n ThreadListClientApi,\n} from \"../../client/types/ThreadList\";\n\nconst ThreadListItemClientById = resource(\n ({ runtime, id }: { runtime: ThreadListRuntime; id: string }) => {\n const threadListItemRuntime = tapMemo(\n () => runtime.getItemById(id),\n [runtime, id],\n );\n return tapInlineResource(\n ThreadListItemClient({\n runtime: threadListItemRuntime,\n }),\n );\n },\n);\n\nexport const ThreadListClient = resource(\n ({ runtime }: { runtime: ThreadListRuntime }) => {\n const runtimeState = tapSubscribable(runtime);\n\n const main = tapInlineResource(\n ThreadClient({\n runtime: runtime.main,\n }),\n );\n\n const threadItems = tapLookupResources(\n Object.keys(runtimeState.threadItems).map((id) =>\n ThreadListItemClientById({ runtime, id }, { key: id }),\n ),\n );\n\n const state = tapMemo<ThreadListClientState>(() => {\n return {\n mainThreadId: runtimeState.mainThreadId,\n newThreadId: runtimeState.newThread,\n isLoading: runtimeState.isLoading,\n threadIds: runtimeState.threads,\n archivedThreadIds: runtimeState.archivedThreads,\n threadItems: threadItems.state,\n\n main: main.state,\n };\n }, [runtimeState, threadItems.state, main.state]);\n\n const api = tapApi<ThreadListClientApi>({\n getState: () => state,\n\n thread: () => main.api,\n\n item: (threadIdOrOptions) => {\n if (threadIdOrOptions === \"main\") {\n return threadItems.api({ key: state.mainThreadId });\n }\n\n if (\"id\" in threadIdOrOptions) {\n return threadItems.api({ key: threadIdOrOptions.id });\n }\n\n const { index, archived = false } = threadIdOrOptions;\n const id = archived\n ? state.archivedThreadIds[index]!\n : state.threadIds[index]!;\n return threadItems.api({ key: id });\n },\n\n switchToThread: (threadId) => {\n runtime.switchToThread(threadId);\n },\n switchToNewThread: () => {\n runtime.switchToNewThread();\n },\n });\n\n return {\n state,\n api,\n };\n },\n);\n"],"mappings":";AAAA,SAAS,cAAc;AACvB,SAAS,UAAU,mBAAmB,eAAe;AAErD,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AAMnC,IAAM,2BAA2B;AAAA,EAC/B,CAAC,EAAE,SAAS,GAAG,MAAkD;AAC/D,UAAM,wBAAwB;AAAA,MAC5B,MAAM,QAAQ,YAAY,EAAE;AAAA,MAC5B,CAAC,SAAS,EAAE;AAAA,IACd;AACA,WAAO;AAAA,MACL,qBAAqB;AAAA,QACnB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,mBAAmB;AAAA,EAC9B,CAAC,EAAE,QAAQ,MAAsC;AAC/C,UAAM,eAAe,gBAAgB,OAAO;AAE5C,UAAM,OAAO;AAAA,MACX,aAAa;AAAA,QACX,SAAS,QAAQ;AAAA,MACnB,CAAC;AAAA,IACH;AAEA,UAAM,cAAc;AAAA,MAClB,OAAO,KAAK,aAAa,WAAW,EAAE;AAAA,QAAI,CAAC,OACzC,yBAAyB,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,UAAM,QAAQ,QAA+B,MAAM;AACjD,aAAO;AAAA,QACL,cAAc,aAAa;AAAA,QAC3B,aAAa,aAAa;AAAA,QAC1B,WAAW,aAAa;AAAA,QACxB,WAAW,aAAa;AAAA,QACxB,mBAAmB,aAAa;AAAA,QAChC,aAAa,YAAY;AAAA,QAEzB,MAAM,KAAK;AAAA,MACb;AAAA,IACF,GAAG,CAAC,cAAc,YAAY,OAAO,KAAK,KAAK,CAAC;AAEhD,UAAM,MAAM,OAA4B;AAAA,MACtC,UAAU,MAAM;AAAA,MAEhB,QAAQ,MAAM,KAAK;AAAA,MAEnB,MAAM,CAAC,sBAAsB;AAC3B,YAAI,sBAAsB,QAAQ;AAChC,iBAAO,YAAY,IAAI,EAAE,KAAK,MAAM,aAAa,CAAC;AAAA,QACpD;AAEA,YAAI,QAAQ,mBAAmB;AAC7B,iBAAO,YAAY,IAAI,EAAE,KAAK,kBAAkB,GAAG,CAAC;AAAA,QACtD;AAEA,cAAM,EAAE,OAAO,WAAW,MAAM,IAAI;AACpC,cAAM,KAAK,WACP,MAAM,kBAAkB,KAAK,IAC7B,MAAM,UAAU,KAAK;AACzB,eAAO,YAAY,IAAI,EAAE,KAAK,GAAG,CAAC;AAAA,MACpC;AAAA,MAEA,gBAAgB,CAAC,aAAa;AAC5B,gBAAQ,eAAe,QAAQ;AAAA,MACjC;AAAA,MACA,mBAAmB,MAAM;AACvB,gBAAQ,kBAAkB;AAAA,MAC5B;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
@@ -9,7 +9,7 @@ import { ComposerClient } from "./ComposerRuntimeClient.js";
|
|
9
9
|
import { MessageClient } from "./MessageRuntimeClient.js";
|
10
10
|
import { tapSubscribable } from "../util-hooks/tapSubscribable.js";
|
11
11
|
import { tapApi } from "../../utils/tap-store/index.js";
|
12
|
-
import { tapLookupResources } from "
|
12
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources.js";
|
13
13
|
import { tapEvents } from "../../client/EventContext.js";
|
14
14
|
var MessageClientById = resource(
|
15
15
|
({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/ThreadRuntimeClient.ts"],"sourcesContent":["import { ThreadRuntimeEventType } from \"../runtime-cores/core/ThreadRuntimeCore\";\nimport { ThreadRuntime } from \"../runtime/ThreadRuntime\";\nimport {\n resource,\n tapInlineResource,\n tapMemo,\n tapEffect,\n RefObject,\n} from \"@assistant-ui/tap\";\nimport { ComposerClient } from \"./ComposerRuntimeClient\";\nimport { MessageClient } from \"./MessageRuntimeClient\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { tapLookupResources } from \"
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/ThreadRuntimeClient.ts"],"sourcesContent":["import { ThreadRuntimeEventType } from \"../runtime-cores/core/ThreadRuntimeCore\";\nimport { ThreadRuntime } from \"../runtime/ThreadRuntime\";\nimport {\n resource,\n tapInlineResource,\n tapMemo,\n tapEffect,\n RefObject,\n} from \"@assistant-ui/tap\";\nimport { ComposerClient } from \"./ComposerRuntimeClient\";\nimport { MessageClient } from \"./MessageRuntimeClient\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport { Unsubscribe } from \"../../types\";\nimport { tapEvents } from \"../../client/EventContext\";\nimport { ThreadClientState, ThreadClientApi } from \"../../client/types/Thread\";\n\nconst MessageClientById = resource(\n ({\n runtime,\n id,\n threadIdRef,\n }: {\n runtime: ThreadRuntime;\n id: string;\n threadIdRef: RefObject<string>;\n }) => {\n const messageRuntime = tapMemo(\n () => runtime.getMessageById(id),\n [runtime, id],\n );\n\n return tapInlineResource(\n MessageClient({ runtime: messageRuntime, threadIdRef }),\n );\n },\n);\n\nexport const ThreadClient = resource(\n ({ runtime }: { runtime: ThreadRuntime }) => {\n const runtimeState = tapSubscribable(runtime);\n\n const events = tapEvents();\n\n // Bind thread events to event manager\n tapEffect(() => {\n const unsubscribers: Unsubscribe[] = [];\n\n // Subscribe to thread events\n const threadEvents: ThreadRuntimeEventType[] = [\n \"run-start\",\n \"run-end\",\n \"initialize\",\n \"model-context-update\",\n ];\n\n for (const event of threadEvents) {\n const unsubscribe = runtime.unstable_on(event, () => {\n const threadId = runtime.getState()?.threadId || \"unknown\";\n events.emit(`thread.${event}`, {\n threadId,\n });\n });\n unsubscribers.push(unsubscribe);\n }\n\n return () => {\n for (const unsub of unsubscribers) unsub();\n };\n }, [runtime]);\n\n const threadIdRef = tapMemo(\n () => ({\n get current() {\n return runtime.getState()!.threadId;\n },\n }),\n [runtime],\n );\n\n const composer = tapInlineResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n }),\n );\n\n const messages = tapLookupResources(\n runtimeState.messages.map((m) =>\n MessageClientById(\n { runtime: runtime, id: m.id, threadIdRef },\n { key: m.id },\n ),\n ),\n );\n\n const state = tapMemo<ThreadClientState>(() => {\n return {\n isDisabled: runtimeState.isDisabled,\n isLoading: runtimeState.isLoading,\n isRunning: runtimeState.isRunning,\n capabilities: runtimeState.capabilities,\n state: runtimeState.state,\n suggestions: runtimeState.suggestions,\n extras: runtimeState.extras,\n speech: runtimeState.speech,\n\n composer: composer.state,\n messages: messages.state,\n };\n }, [runtimeState, messages, composer.state]);\n\n const api = tapApi<ThreadClientApi>({\n getState: () => state,\n\n composer: composer.api,\n\n append: runtime.append,\n startRun: runtime.startRun,\n unstable_resumeRun: runtime.unstable_resumeRun,\n cancelRun: runtime.cancelRun,\n getModelContext: runtime.getModelContext,\n export: runtime.export,\n import: runtime.import,\n reset: runtime.reset,\n stopSpeaking: runtime.stopSpeaking,\n\n message: (selector) => {\n if (\"id\" in selector) {\n return messages.api({ key: selector.id });\n } else {\n return messages.api(selector);\n }\n },\n\n __internal_getRuntime: () => runtime,\n });\n\n return {\n state,\n api,\n };\n },\n);\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RemoteThreadListHookInstanceManager.d.ts","sourceRoot":"","sources":["../../../../src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,EAAE,EAKF,iBAAiB,EACjB,aAAa,EACd,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"RemoteThreadListHookInstanceManager.d.ts","sourceRoot":"","sources":["../../../../src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,EAAE,EAKF,iBAAiB,EACjB,aAAa,EACd,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,KAAK,oBAAoB,GAAG,MAAM,gBAAgB,CAAC;AAKnD,qBAAa,mCAAoC,SAAQ,gBAAgB;IACvE,OAAO,CAAC,cAAc,CAEpB;IACF,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,0BAA0B,CAAsB;gBAE5C,WAAW,EAAE,oBAAoB;IAKtC,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwBnC,oBAAoB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMrC,iBAAiB,CAAC,QAAQ,EAAE,MAAM;IAKlC,cAAc,CAAC,cAAc,EAAE,oBAAoB;IAO1D,OAAO,CAAC,0BAA0B,CAmDhC;IAEF,OAAO,CAAC,0BAA0B,CAc/B;IAEI,+BAA+B,EAAE,EAAE,CAAC;QACzC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;KAC5C,CAAC,CAUA;CACH"}
|
package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.js
CHANGED
@@ -8,11 +8,7 @@ import {
|
|
8
8
|
memo
|
9
9
|
} from "react";
|
10
10
|
import { create } from "zustand";
|
11
|
-
import {
|
12
|
-
useAssistantState,
|
13
|
-
useAssistantApi,
|
14
|
-
ThreadListItemByIdProvider
|
15
|
-
} from "../../../context/index.js";
|
11
|
+
import { useAssistantApi, ThreadListItemByIdProvider } from "../../../context/index.js";
|
16
12
|
import { BaseSubscribable } from "./BaseSubscribable.js";
|
17
13
|
import { jsx } from "react/jsx-runtime";
|
18
14
|
var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
@@ -60,20 +56,19 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
60
56
|
this.useRuntimeHook.setState({ useRuntime: newRuntimeHook }, true);
|
61
57
|
}
|
62
58
|
}
|
63
|
-
_InnerActiveThreadProvider = () => {
|
64
|
-
const id = useAssistantState(({ threadListItem }) => threadListItem.id);
|
59
|
+
_InnerActiveThreadProvider = ({ threadId }) => {
|
65
60
|
const { useRuntime } = this.useRuntimeHook();
|
66
61
|
const runtime = useRuntime();
|
67
62
|
const threadBinding = runtime.thread.__internal_threadBinding;
|
68
63
|
const updateRuntime = useCallback(() => {
|
69
|
-
const aliveThread = this.instances.get(
|
64
|
+
const aliveThread = this.instances.get(threadId);
|
70
65
|
if (!aliveThread)
|
71
66
|
throw new Error("Thread not found. This is a bug in assistant-ui.");
|
72
67
|
aliveThread.runtime = threadBinding.getState();
|
73
68
|
if (isMounted) {
|
74
69
|
this._notifySubscribers();
|
75
70
|
}
|
76
|
-
}, [
|
71
|
+
}, [threadId, threadBinding]);
|
77
72
|
const isMounted = useRef(false);
|
78
73
|
if (!isMounted.current) {
|
79
74
|
updateRuntime();
|
@@ -99,7 +94,7 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
99
94
|
return null;
|
100
95
|
};
|
101
96
|
_OuterActiveThreadProvider = memo(({ threadId, provider: Provider }) => {
|
102
|
-
return /* @__PURE__ */ jsx(ThreadListItemByIdProvider, { id: threadId, children: /* @__PURE__ */ jsx(Provider, { children: /* @__PURE__ */ jsx(this._InnerActiveThreadProvider, {}) }) });
|
97
|
+
return /* @__PURE__ */ jsx(ThreadListItemByIdProvider, { id: threadId, children: /* @__PURE__ */ jsx(Provider, { children: /* @__PURE__ */ jsx(this._InnerActiveThreadProvider, { threadId }) }) });
|
103
98
|
});
|
104
99
|
__internal_RenderThreadRuntimes = ({ provider }) => {
|
105
100
|
this.useAliveThreadsKeysChanged();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\n\"use client\";\n\nimport {\n FC,\n useCallback,\n useRef,\n useEffect,\n memo,\n PropsWithChildren,\n ComponentType,\n} from \"react\";\nimport { UseBoundStore, StoreApi, create } from \"zustand\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../../src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\n\"use client\";\n\nimport {\n FC,\n useCallback,\n useRef,\n useEffect,\n memo,\n PropsWithChildren,\n ComponentType,\n} from \"react\";\nimport { UseBoundStore, StoreApi, create } from \"zustand\";\nimport { useAssistantApi, ThreadListItemByIdProvider } from \"../../../context\";\nimport { ThreadRuntimeCore, ThreadRuntimeImpl } from \"../../../internal\";\nimport { BaseSubscribable } from \"./BaseSubscribable\";\nimport { AssistantRuntime } from \"../../runtime\";\n\ntype RemoteThreadListHook = () => AssistantRuntime;\n\ntype RemoteThreadListHookInstance = {\n runtime?: ThreadRuntimeCore;\n};\nexport class RemoteThreadListHookInstanceManager extends BaseSubscribable {\n private useRuntimeHook: UseBoundStore<\n StoreApi<{ useRuntime: RemoteThreadListHook }>\n >;\n private instances = new Map<string, RemoteThreadListHookInstance>();\n private useAliveThreadsKeysChanged = create(() => ({}));\n\n constructor(runtimeHook: RemoteThreadListHook) {\n super();\n this.useRuntimeHook = create(() => ({ useRuntime: runtimeHook }));\n }\n\n public startThreadRuntime(threadId: string) {\n if (!this.instances.has(threadId)) {\n this.instances.set(threadId, {});\n this.useAliveThreadsKeysChanged.setState({}, true);\n }\n\n return new Promise<ThreadRuntimeCore>((resolve, reject) => {\n const callback = () => {\n const instance = this.instances.get(threadId);\n if (!instance) {\n dispose();\n reject(new Error(\"Thread was deleted before runtime was started\"));\n } else if (!instance.runtime) {\n return; // misc update\n } else {\n dispose();\n resolve(instance.runtime);\n }\n };\n const dispose = this.subscribe(callback);\n callback();\n });\n }\n\n public getThreadRuntimeCore(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance) return undefined;\n return instance.runtime;\n }\n\n public stopThreadRuntime(threadId: string) {\n this.instances.delete(threadId);\n this.useAliveThreadsKeysChanged.setState({}, true);\n }\n\n public setRuntimeHook(newRuntimeHook: RemoteThreadListHook) {\n const prevRuntimeHook = this.useRuntimeHook.getState().useRuntime;\n if (prevRuntimeHook !== newRuntimeHook) {\n this.useRuntimeHook.setState({ useRuntime: newRuntimeHook }, true);\n }\n }\n\n private _InnerActiveThreadProvider: FC<{\n threadId: string;\n }> = ({ threadId }) => {\n const { useRuntime } = this.useRuntimeHook();\n const runtime = useRuntime();\n\n const threadBinding = (runtime.thread as ThreadRuntimeImpl)\n .__internal_threadBinding;\n\n const updateRuntime = useCallback(() => {\n const aliveThread = this.instances.get(threadId);\n if (!aliveThread)\n throw new Error(\"Thread not found. This is a bug in assistant-ui.\");\n\n aliveThread.runtime = threadBinding.getState();\n\n if (isMounted) {\n this._notifySubscribers();\n }\n }, [threadId, threadBinding]);\n\n const isMounted = useRef(false);\n if (!isMounted.current) {\n updateRuntime();\n }\n\n useEffect(() => {\n isMounted.current = true;\n updateRuntime();\n return threadBinding.outerSubscribe(updateRuntime);\n }, [threadBinding, updateRuntime]);\n\n // auto initialize thread\n const api = useAssistantApi();\n useEffect(() => {\n return runtime.threads.main.unstable_on(\"initialize\", () => {\n const state = api.threadListItem().getState();\n if (state.status === \"new\") {\n api.threadListItem().initialize();\n\n // auto generate a title after first run\n const dispose = runtime.thread.unstable_on(\"run-end\", () => {\n dispose();\n\n api.threadListItem().generateTitle();\n });\n }\n });\n }, [runtime, api]);\n\n return null;\n };\n\n private _OuterActiveThreadProvider: FC<{\n threadId: string;\n provider: ComponentType<PropsWithChildren>;\n // eslint-disable-next-line react/display-name\n }> = memo(({ threadId, provider: Provider }) => {\n // Runtime is provided by ThreadListItemByIdProvider\n\n return (\n <ThreadListItemByIdProvider id={threadId}>\n <Provider>\n <this._InnerActiveThreadProvider threadId={threadId} />\n </Provider>\n </ThreadListItemByIdProvider>\n );\n });\n\n public __internal_RenderThreadRuntimes: FC<{\n provider: ComponentType<PropsWithChildren>;\n }> = ({ provider }) => {\n this.useAliveThreadsKeysChanged(); // trigger re-render on alive threads change\n\n return Array.from(this.instances.keys()).map((threadId) => (\n <this._OuterActiveThreadProvider\n key={threadId}\n threadId={threadId}\n provider={provider}\n />\n ));\n };\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
@@ -23,7 +23,7 @@ export type ComposerClientApi = {
|
|
23
23
|
setRunConfig(runConfig: RunConfig): void;
|
24
24
|
addAttachment(file: File): Promise<void>;
|
25
25
|
clearAttachments(): Promise<void>;
|
26
|
-
attachment(selector: { index: number }): AttachmentClientApi;
|
26
|
+
attachment(selector: { index: number } | { id: string }): AttachmentClientApi;
|
27
27
|
reset(): Promise<void>;
|
28
28
|
send(): void;
|
29
29
|
cancel(): void;
|
@@ -56,7 +56,7 @@ export type MessageClientApi = {
|
|
56
56
|
part: (
|
57
57
|
selector: { index: number } | { toolCallId: string },
|
58
58
|
) => MessagePartClientApi;
|
59
|
-
attachment(selector: { index: number }): AttachmentClientApi;
|
59
|
+
attachment(selector: { index: number } | { id: string }): AttachmentClientApi;
|
60
60
|
|
61
61
|
setIsCopied(value: boolean): void;
|
62
62
|
setIsHovering(value: boolean): void;
|
@@ -10,7 +10,7 @@ import {
|
|
10
10
|
EditComposerRuntime,
|
11
11
|
} from "../runtime/ComposerRuntime";
|
12
12
|
import { Unsubscribe } from "../../types";
|
13
|
-
|
13
|
+
|
14
14
|
import { tapApi } from "../../utils/tap-store";
|
15
15
|
import { ComposerRuntimeEventType } from "../runtime-cores/core/ComposerRuntimeCore";
|
16
16
|
import { tapEvents } from "../../client/EventContext";
|
@@ -18,8 +18,9 @@ import {
|
|
18
18
|
ComposerClientState,
|
19
19
|
ComposerClientApi,
|
20
20
|
} from "../../client/types/Composer";
|
21
|
-
import { tapLookupResources } from "
|
21
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources";
|
22
22
|
import { AttachmentRuntimeClient } from "./AttachmentRuntimeClient";
|
23
|
+
import { tapSubscribable } from "../util-hooks/tapSubscribable";
|
23
24
|
|
24
25
|
const ComposerAttachmentClientByIndex = resource(
|
25
26
|
({ runtime, index }: { runtime: ComposerRuntime; index: number }) => {
|
@@ -115,7 +116,13 @@ export const ComposerClient = resource(
|
|
115
116
|
throw new Error("beginEdit is not supported in this runtime");
|
116
117
|
}),
|
117
118
|
|
118
|
-
attachment:
|
119
|
+
attachment: (selector) => {
|
120
|
+
if ("id" in selector) {
|
121
|
+
return attachments.api({ key: selector.id });
|
122
|
+
} else {
|
123
|
+
return attachments.api(selector);
|
124
|
+
}
|
125
|
+
},
|
119
126
|
|
120
127
|
__internal_getRuntime: () => runtime,
|
121
128
|
});
|
@@ -9,7 +9,7 @@ import { MessageRuntime } from "../runtime/MessageRuntime";
|
|
9
9
|
import { tapSubscribable } from "../util-hooks/tapSubscribable";
|
10
10
|
import { ComposerClient } from "./ComposerRuntimeClient";
|
11
11
|
import { MessagePartClient } from "./MessagePartRuntimeClient";
|
12
|
-
import { tapLookupResources } from "
|
12
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources";
|
13
13
|
import { RefObject } from "react";
|
14
14
|
import {
|
15
15
|
MessageClientState,
|
@@ -119,7 +119,13 @@ export const MessageClient = resource(
|
|
119
119
|
}
|
120
120
|
},
|
121
121
|
|
122
|
-
attachment:
|
122
|
+
attachment: (selector) => {
|
123
|
+
if ("id" in selector) {
|
124
|
+
return attachments.api({ key: selector.id });
|
125
|
+
} else {
|
126
|
+
return attachments.api(selector);
|
127
|
+
}
|
128
|
+
},
|
123
129
|
|
124
130
|
setIsCopied,
|
125
131
|
setIsHovering,
|
@@ -4,7 +4,7 @@ import { ThreadListRuntime } from "../runtime/ThreadListRuntime";
|
|
4
4
|
import { tapSubscribable } from "../util-hooks/tapSubscribable";
|
5
5
|
import { ThreadListItemClient } from "./ThreadListItemRuntimeClient";
|
6
6
|
import { ThreadClient } from "./ThreadRuntimeClient";
|
7
|
-
import { tapLookupResources } from "
|
7
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources";
|
8
8
|
import {
|
9
9
|
ThreadListClientState,
|
10
10
|
ThreadListClientApi,
|
@@ -11,7 +11,7 @@ import { ComposerClient } from "./ComposerRuntimeClient";
|
|
11
11
|
import { MessageClient } from "./MessageRuntimeClient";
|
12
12
|
import { tapSubscribable } from "../util-hooks/tapSubscribable";
|
13
13
|
import { tapApi } from "../../utils/tap-store";
|
14
|
-
import { tapLookupResources } from "
|
14
|
+
import { tapLookupResources } from "../../client/util-hooks/tapLookupResources";
|
15
15
|
import { Unsubscribe } from "../../types";
|
16
16
|
import { tapEvents } from "../../client/EventContext";
|
17
17
|
import { ThreadClientState, ThreadClientApi } from "../../client/types/Thread";
|
package/src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx
CHANGED
@@ -11,11 +11,7 @@ import {
|
|
11
11
|
ComponentType,
|
12
12
|
} from "react";
|
13
13
|
import { UseBoundStore, StoreApi, create } from "zustand";
|
14
|
-
import {
|
15
|
-
useAssistantState,
|
16
|
-
useAssistantApi,
|
17
|
-
ThreadListItemByIdProvider,
|
18
|
-
} from "../../../context";
|
14
|
+
import { useAssistantApi, ThreadListItemByIdProvider } from "../../../context";
|
19
15
|
import { ThreadRuntimeCore, ThreadRuntimeImpl } from "../../../internal";
|
20
16
|
import { BaseSubscribable } from "./BaseSubscribable";
|
21
17
|
import { AssistantRuntime } from "../../runtime";
|
@@ -79,9 +75,9 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
79
75
|
}
|
80
76
|
}
|
81
77
|
|
82
|
-
private _InnerActiveThreadProvider: FC
|
83
|
-
|
84
|
-
|
78
|
+
private _InnerActiveThreadProvider: FC<{
|
79
|
+
threadId: string;
|
80
|
+
}> = ({ threadId }) => {
|
85
81
|
const { useRuntime } = this.useRuntimeHook();
|
86
82
|
const runtime = useRuntime();
|
87
83
|
|
@@ -89,7 +85,7 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
89
85
|
.__internal_threadBinding;
|
90
86
|
|
91
87
|
const updateRuntime = useCallback(() => {
|
92
|
-
const aliveThread = this.instances.get(
|
88
|
+
const aliveThread = this.instances.get(threadId);
|
93
89
|
if (!aliveThread)
|
94
90
|
throw new Error("Thread not found. This is a bug in assistant-ui.");
|
95
91
|
|
@@ -98,7 +94,7 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
98
94
|
if (isMounted) {
|
99
95
|
this._notifySubscribers();
|
100
96
|
}
|
101
|
-
}, [
|
97
|
+
}, [threadId, threadBinding]);
|
102
98
|
|
103
99
|
const isMounted = useRef(false);
|
104
100
|
if (!isMounted.current) {
|
@@ -142,7 +138,7 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
142
138
|
return (
|
143
139
|
<ThreadListItemByIdProvider id={threadId}>
|
144
140
|
<Provider>
|
145
|
-
<this._InnerActiveThreadProvider />
|
141
|
+
<this._InnerActiveThreadProvider threadId={threadId} />
|
146
142
|
</Provider>
|
147
143
|
</ThreadListItemByIdProvider>
|
148
144
|
);
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"tapLookupResources.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/util-hooks/tapLookupResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,eAAO,MAAM,kBAAkB,GAAI,MAAM,EAAE,IAAI,SAAS,SAAS,EAC/D,UAAU,eAAe,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,IAAI,CAAC;CACX,CAAC,EAAE;;kBAMY;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CAepD,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/util-hooks/tapLookupResources.ts"],"sourcesContent":["import { ResourceElement, tapResources } from \"@assistant-ui/tap\";\nimport { ApiObject } from \"../../utils/tap-store\";\n\nexport const tapLookupResources = <TState, TApi extends ApiObject>(\n elements: ResourceElement<{\n key: string | undefined;\n state: TState;\n api: TApi;\n }>[],\n) => {\n const resources = tapResources(elements);\n\n return {\n state: resources.map((r) => r.state),\n api: (lookup: { index: number } | { key: string }) => {\n const value =\n \"index\" in lookup\n ? resources[lookup.index]?.api\n : resources.find((r) => r.key === lookup.key)?.api;\n\n if (!value) {\n throw new Error(\n `tapLookupResources: Resource not found for lookup: ${JSON.stringify(lookup)}`,\n );\n }\n\n return value;\n },\n };\n};\n"],"mappings":";AAAA,SAA0B,oBAAoB;AAGvC,IAAM,qBAAqB,CAChC,aAKG;AACH,QAAM,YAAY,aAAa,QAAQ;AAEvC,SAAO;AAAA,IACL,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,IACnC,KAAK,CAAC,WAAgD;AACpD,YAAM,QACJ,WAAW,SACP,UAAU,OAAO,KAAK,GAAG,MACzB,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,OAAO,GAAG,GAAG;AAEnD,UAAI,CAAC,OAAO;AACV,cAAM,IAAI;AAAA,UACR,sDAAsD,KAAK,UAAU,MAAM,CAAC;AAAA,QAC9E;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
|
File without changes
|
File without changes
|